Skip to content

Commit a1db892

Browse files
committed
Add Lecture 13 + Project 07: Loop Engineering
新增 Lecture 13(从手动驱动到自动循环)和 Project 07(搭建你的第一个自动循环)。 核心内容: - L13: 从 /goal 到六原语,generator/evaluator 分离,四种沉默成本,从零搭建第一个 loop - P07: 三个递进实验 — goal loop、timer loop、maker-checker loop - 配套代码模板:goal-template.md、loop-state-template.md、maker-prompt.md、checker-prompt.md - Reference 页新增 Addy Osmani Loop Engineering (2026-06-07) 到 2026 扩展参考 - README 更新徽章(13 lectures / 7 projects),学习路径图、syllabus、project 表格、changelog Build: ✓
1 parent 2fdc46b commit a1db892

20 files changed

Lines changed: 1888 additions & 19 deletions

File tree

README.md

Lines changed: 45 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@
2121
<p align="center"><strong>A project-based course on building the environment, state management, verification, and control mechanisms that make AI coding agents work reliably.</strong></p>
2222

2323
<p align="center">
24-
<img src="https://img.shields.io/badge/Lectures-12-blue?style=flat-square" alt="12 Lectures">
25-
<img src="https://img.shields.io/badge/Projects-6-green?style=flat-square" alt="6 Projects">
24+
<img src="https://img.shields.io/badge/Lectures-13-blue?style=flat-square" alt="13 Lectures">
25+
<img src="https://img.shields.io/badge/Projects-7-green?style=flat-square" alt="7 Projects">
2626
<img src="https://img.shields.io/badge/Languages-15-yellow?style=flat-square" alt="15 Languages">
2727
<img src="https://img.shields.io/badge/License-MIT-lightgrey?style=flat-square" alt="MIT License">
2828
<a href="https://discord.gg/XU7DQmpqk"><img src="https://img.shields.io/badge/Discord-Join_Community-5865F2?style=flat-square&logo=discord&logoColor=white" alt="Join the Discord community"></a>
@@ -205,15 +205,15 @@ For the full course materials, please visit the **[Documentation Website](https:
205205

206206
The curriculum is divided into three parts:
207207

208-
1. **Lectures**: 12 conceptual units explaining the theory behind harness engineering.
209-
2. **Projects**: 6 hands-on projects where you build an agentic workspace from scratch.
208+
1. **Lectures**: 13 conceptual units explaining the theory behind harness engineering.
209+
2. **Projects**: 7 hands-on projects where you build an agentic workspace from scratch.
210210
3. **Resource Library**: Copy-ready templates (`AGENTS.md`, `feature_list.json`, `init.sh`, etc.) to use in your own repositories today.
211211

212212
---
213213

214214
## Quick Start: Improve Your Agent Today
215215

216-
You don't need to read all 12 lectures before you start getting value. If you're already using a coding agent on a real project, here's how to improve it right now.
216+
You don't need to read all 13 lectures before you start getting value. If you're already using a coding agent on a real project, here's how to improve it right now.
217217

218218
The idea is simple: instead of just writing prompts, give your agent a set of structured files that define what to do, what's been done, and how to verify the work. These files live inside your repo, so every session starts from the same state.
219219

@@ -313,6 +313,17 @@ The course is designed to be done in order. Each phase builds on the last.
313313
v v
314314
P05 Agent verifies its own work P06 Build a complete harness
315315
(capstone project)
316+
317+
Phase 7: AUTOMATE THE LOOP
318+
==========================
319+
320+
L13 Stop prompting your agent —
321+
design loops instead
322+
323+
|
324+
v
325+
P07 Build your first automated loop
326+
(goal loop, timer loop, maker-checker)
316327
```
317328

318329
Each phase takes about a week if you're going part-time. If you want to go faster, phases 1–3 can be done in a long weekend.
@@ -321,7 +332,7 @@ Each phase takes about a week if you're going part-time. If you want to go faste
321332

322333
## Syllabus
323334

324-
### Lectures — 12 conceptual units, each answering one core question
335+
### Lectures — 13 conceptual units, each answering one core question
325336

326337
*Read the full text for each lecture on the [Documentation Website](https://walkinglabs.github.io/learn-harness-engineering/).*
327338

@@ -339,8 +350,9 @@ Each phase takes about a week if you're going part-time. If you want to go faste
339350
| [L10](./docs/en/lectures/lecture-10-why-end-to-end-testing-changes-results/index.md) | Why does end-to-end testing change results? | Only a full-pipeline run counts as real verification |
340351
| [L11](./docs/en/lectures/lecture-11-why-observability-belongs-inside-the-harness/index.md) | Why does observability belong inside the harness? | If you can't see what the agent did, you can't fix what it broke |
341352
| [L12](./docs/en/lectures/lecture-12-why-every-session-must-leave-a-clean-state/index.md) | Why must every session leave a clean state? | The next session's success depends on this session's cleanup |
353+
| [L13](./docs/en/lectures/lecture-13-loop-engineering/index.md) | Why do you need to stop prompting your agent? | From manual driving to automated loops — goal loops, timer loops, and maker-checker separation |
342354

343-
### Projects — 6 hands-on projects applying lecture methods to the same Electron app
355+
### Projects — 7 hands-on projects applying lecture methods to the same Electron app
344356

345357
| Project | What You Do | Harness Mechanism |
346358
|---------|------------|-------------------|
@@ -350,6 +362,7 @@ Each phase takes about a week if you're going part-time. If you want to go faste
350362
| [P04](./docs/en/projects/project-04-incremental-indexing/index.md) | Stop the agent from doing too much or too little | Runtime feedback + scope control + incremental indexing |
351363
| [P05](./docs/en/projects/project-05-grounded-qa-verification/index.md) | Make the agent verify its own work | Self-verification + grounded Q&A + evidence-based completion |
352364
| [P06](./docs/en/projects/project-06-runtime-observability-and-debugging/index.md) | Build a complete harness from scratch (capstone) | Full harness: all mechanisms + observability + ablation study |
365+
| [P07](./docs/en/projects/project-07-loop-engineering-first-loop/index.md) | Build your first automated loop | Goal loops, timer loops, maker-checker separation, loop state management |
353366

354367
```text
355368
PROJECT EVOLUTION
@@ -371,6 +384,9 @@ Each phase takes about a week if you're going part-time. If you want to go faste
371384
|
372385
v
373386
P06 Complete harness (capstone) You build the full system
387+
|
388+
v
389+
P07 Your first automated loop You step outside the loop
374390
375391
Each project's solution becomes the next project's starter.
376392
The app evolves. Your harness skills grow with it.
@@ -533,12 +549,12 @@ See the full layered reference list in [`docs/en/resources/reference/`](./docs/e
533549
```text
534550
learn-harness-engineering/
535551
├── docs/ # VitePress documentation site
536-
│ ├── lectures/ # 12 lectures (index.md + code/ examples)
552+
│ ├── lectures/ # 13 lectures (index.md + code/ examples)
537553
│ │ ├── lecture-01-*/
538-
│ │ └── ... (12 total)
539-
│ ├── projects/ # 6 project descriptions
554+
│ │ └── ... (13 total)
555+
│ ├── projects/ # 7 project descriptions
540556
│ │ ├── project-01-*/
541-
│ │ └── ... (6 total)
557+
│ │ └── ... (7 total)
542558
│ └── resources/ # Multilingual templates & references (14 languages)
543559
│ ├── en/
544560
│ └── ... (14 total)
@@ -558,7 +574,7 @@ learn-harness-engineering/
558574
## How the Course Is Organized
559575

560576
- Each lecture focuses on one question
561-
- The course includes 6 projects
577+
- The course includes 7 projects
562578
- Every project requires the agent to do real work
563579
- Every project compares weak vs. strong harness results
564580
- What matters is the measured difference, not how many docs were written
@@ -587,6 +603,23 @@ bash tools/audit-harness.sh /path/to/your/repo
587603

588604
---
589605

606+
## Changelog
607+
608+
### 2026-07-09 — Loop Engineering Update
609+
610+
Added **Lecture 13** and **Project 07** on **Loop Engineering** — the next layer beyond harness engineering.
611+
612+
**New content:**
613+
614+
- **Lecture 13: Why You Need to Stop Prompting Your Agent** — From `/goal` to the six primitives of loop engineering (automations, worktrees, skills, connectors, sub-agents, external state), the generator/evaluator split, four silent costs, and a step-by-step guide to building your first loop.
615+
- **Project 07: Build Your First Automated Loop** — Three progressive experiments: goal loop, timer loop, and maker-checker loop. Compare manual vs. automated, measure intervention reduction, and learn to step outside the loop.
616+
- **Code templates**`goal-template.md`, `loop-state-template.md`, `maker-prompt.md`, `checker-prompt.md` for building loops immediately.
617+
- **Reference update** — Added Addy Osmani's [Loop Engineering](https://addyosmani.com/blog/loop-engineering/) (2026-06-07) to the 2026 extended reference list.
618+
619+
**Key idea:** Harness engineering builds the vehicle. Loop engineering designs the road it drives on — and you design the road from outside the car.
620+
621+
---
622+
590623
## Other Courses
591624

592625
Our team has also created other courses! Check them out:

docs/.vitepress/config.mts

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,8 @@ const zhLectureItems = [
2424
{ text: "防止 agent 提前宣告完成", link: "/zh/lectures/lecture-09-why-agents-declare-victory-too-early/" },
2525
{ text: "跑通完整流程才算真正验证", link: "/zh/lectures/lecture-10-why-end-to-end-testing-changes-results/" },
2626
{ text: "让 agent 的运行过程可观测", link: "/zh/lectures/lecture-11-why-observability-belongs-inside-the-harness/" },
27-
{ text: "每次会话结束前都做好交接", link: "/zh/lectures/lecture-12-why-every-session-must-leave-a-clean-state/" }
27+
{ text: "每次会话结束前都做好交接", link: "/zh/lectures/lecture-12-why-every-session-must-leave-a-clean-state/" },
28+
{ text: "从手动驱动到自动循环", link: "/zh/lectures/lecture-13-loop-engineering/" }
2829
];
2930

3031
const zhProjectItems = [
@@ -34,7 +35,8 @@ const zhProjectItems = [
3435
{ text: "跨会话工作连续性", link: "/zh/projects/project-03-multi-session-continuity/" },
3536
{ text: "运行反馈与行为修正", link: "/zh/projects/project-04-incremental-indexing/" },
3637
{ text: "工作评审与自我验证", link: "/zh/projects/project-05-grounded-qa-verification/" },
37-
{ text: "综合 Agent 工作环境", link: "/zh/projects/project-06-runtime-observability-and-debugging/" }
38+
{ text: "综合 Agent 工作环境", link: "/zh/projects/project-06-runtime-observability-and-debugging/" },
39+
{ text: "第一个自动循环", link: "/zh/projects/project-07-loop-engineering-first-loop/" }
3840
];
3941

4042
const zhResourceItems = [
@@ -61,7 +63,8 @@ const enLectureItems = [
6163
{ text: "Why Agents Declare Victory Too Early", link: "/en/lectures/lecture-09-why-agents-declare-victory-too-early/" },
6264
{ text: "Why End-to-End Testing Changes Results", link: "/en/lectures/lecture-10-why-end-to-end-testing-changes-results/" },
6365
{ text: "Why Observability Belongs Inside the Harness", link: "/en/lectures/lecture-11-why-observability-belongs-inside-the-harness/" },
64-
{ text: "Why Every Session Must Leave a Clean State", link: "/en/lectures/lecture-12-why-every-session-must-leave-a-clean-state/" }
66+
{ text: "Why Every Session Must Leave a Clean State", link: "/en/lectures/lecture-12-why-every-session-must-leave-a-clean-state/" },
67+
{ text: "From Manual Prompting to Autonomous Loops", link: "/en/lectures/lecture-13-loop-engineering/" }
6568
];
6669

6770
const enProjectItems = [
@@ -71,7 +74,8 @@ const enProjectItems = [
7174
{ text: "Multi-Session Continuity", link: "/en/projects/project-03-multi-session-continuity/" },
7275
{ text: "Runtime Feedback and Scope Control", link: "/en/projects/project-04-incremental-indexing/" },
7376
{ text: "Self-Verification and Role Separation", link: "/en/projects/project-05-grounded-qa-verification/" },
74-
{ text: "Complete Harness (Capstone)", link: "/en/projects/project-06-runtime-observability-and-debugging/" }
77+
{ text: "Complete Harness (Capstone)", link: "/en/projects/project-06-runtime-observability-and-debugging/" },
78+
{ text: "Your First Automated Loop", link: "/en/projects/project-07-loop-engineering-first-loop/" }
7579
];
7680

7781
const enResourceItems = [
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
# Checker Agent Prompt
2+
3+
> For the verification agent.
4+
> Focus on "finding problems" — the stricter, the better.
5+
6+
## Your Role
7+
8+
You are the Checker. Your job is to verify what the Maker produced. Your goal is to find problems, not say nice things.
9+
10+
When you get an implementation from the Maker, your job is to:
11+
12+
1. Read through all changes
13+
2. Verify item by item against the checklist
14+
3. Run the full verification commands
15+
4. List every problem you find — each with evidence
16+
17+
**Remember: you're not here to praise, you're here to find fault.** Not finding problems is your failure.
18+
19+
## Checklist
20+
21+
### Functional Correctness
22+
- [ ] Does the implementation match the requirements?
23+
- [ ] Are there any edge cases missed?
24+
- [ ] Is error handling in place?
25+
26+
### Code Quality
27+
- [ ] Is the code clear? Are names clear?
28+
- [ ] Is there duplicate code?
29+
- [ ] Does it follow project coding standards?
30+
- [ ] Are there obvious performance issues?
31+
32+
### Testing
33+
- [ ] Do tests cover the main scenarios?
34+
- [ ] Are edge cases tested?
35+
- [ ] Are the tests actually testing something meaningful, or are they just going through the motions?
36+
37+
### Verification Commands
38+
- [ ] Does `npm test` pass fully?
39+
- [ ] Does `npm run lint` have zero errors?
40+
- [ ] Does TypeScript type check pass?
41+
- [ ] Does coverage meet the bar?
42+
43+
### Safety and Impact
44+
- [ ] Will this change affect anything else?
45+
- [ ] Are any new dependencies introduced? Are they justified?
46+
- [ ] Are config file changes correct?
47+
48+
## Output Requirements
49+
50+
Each issue must include:
51+
1. **Description**
52+
2. **Where** (file and line number)
53+
3. **Evidence** (what exactly is wrong, why it's a problem)
54+
4. **Severity** (Critical / Medium / Minor)
55+
56+
End with an overall verdict: Pass / Fail / Minor issues, acceptable
57+
58+
Output format:
59+
60+
```
61+
## Overall Verdict
62+
✅ Pass / ❌ Fail / ⚠️ Minor issues, acceptable
63+
64+
## Issues Found
65+
66+
### 1. [Critical] Issue title
67+
- Location: file:line
68+
- Description: ...
69+
- Evidence: ...
70+
- Suggestion: ...
71+
72+
### 2. [Medium] Issue title
73+
...
74+
75+
## Verification Command Results
76+
- Unit tests: X passed / Y total
77+
- Lint: pass / fail (X errors)
78+
- Type check: pass / fail
79+
- Coverage: XX%
80+
```
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
# Goal Loop Template
2+
3+
> Write your goal as a document like this, then hand it to `/goal` or a maker agent.
4+
> The more specific and verifiable, the higher the loop quality.
5+
6+
## Goal
7+
8+
<!-- One sentence describing what to do -->
9+
10+
Implement the XX feature with complete unit test coverage.
11+
12+
## Acceptance Criteria
13+
14+
<!-- Machine-verifiable completion conditions — each one can be checked with a command -->
15+
16+
- [ ] `npm test` passes fully
17+
- [ ] Coverage report shows XX module coverage ≥ 80%
18+
- [ ] `npm run lint` has zero errors
19+
- [ ] TypeScript type check passes (`npx tsc --noEmit`)
20+
- [ ] All new code follows project coding standards
21+
22+
## Scope
23+
24+
<!-- Be explicit about what NOT to touch -->
25+
26+
### Fair game
27+
28+
- All files under `src/xx/`
29+
- Test files under `tests/`
30+
- Related type definition files
31+
32+
### Hands off
33+
34+
- `src/main.ts` entry file
35+
- Database schema migrations
36+
- Dependency versions in `package.json` (unless explicitly needed)
37+
- CI/CD config files
38+
39+
## Verification Method
40+
41+
<!-- How to verify after each step -->
42+
43+
1. After implementation, run these commands in order:
44+
1. `npx tsc --noEmit` — type check
45+
2. `npm run lint` — code style
46+
3. `npm test` — unit tests
47+
4. `npx vitest --coverage` — coverage check
48+
49+
2. Fix any failures before moving to the next step.
50+
3. When everything passes, run the full end-to-end test suite (if available).
51+
52+
## Stop Conditions
53+
54+
- All acceptance criteria pass ✅
55+
- Max turns reached: 20
56+
- No progress for 3 consecutive rounds (same error keeps appearing)
57+
- Blocking issue that cannot be resolved independently (e.g., missing dependency, environment problem)
58+
59+
## How to Work
60+
61+
1. Read `AGENTS.md` and `feature_list.json` first to understand the project structure and existing features.
62+
2. Write out the design approach before touching code.
63+
3. Verify after each sub-task is done.
64+
4. If stuck for more than 2 rounds, switch approach or simplify.
65+
5. Update progress at the end of each round.
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# Lecture 13 Code Examples
2+
3+
Use this folder for examples of:
4+
5+
- goal.md goal description template
6+
- loop-state.md loop state template
7+
- Maker / Checker role prompt templates
8+
- Loop control script examples

0 commit comments

Comments
 (0)