@@ -106,7 +106,7 @@ Claude Code = 一个 agent loop
106106
107107就这些。这就是全部架构。每一个组件都是 harness 机制 -- 为 agent 构建的栖居世界的一部分。Agent 本身呢?是 Claude。一个模型。由 Anthropic 在人类推理和代码的全部广度上训练而成。Harness 没有让 Claude 变聪明。Claude 本来就聪明。Harness 给了 Claude 双手、双眼和一个工作空间。
108108
109- 这就是 Claude Code 作为教学标本的意义:** 它展示了当你信任模型、把工程精力集中在 harness 上时会发生什么。** 本仓库的每一个课程(s01-s12 )都在逆向工程 Claude Code 架构中的一个 harness 机制。学完之后,你理解的不只是 Claude Code 怎么工作,而是适用于任何领域、任何 agent 的 harness 工程通用原则。
109+ 这就是 Claude Code 作为教学标本的意义:** 它展示了当你信任模型、把工程精力集中在 harness 上时会发生什么。** 本仓库的每一个课程(s01-s19 )都在逆向工程 Claude Code 架构中的一个 harness 机制。学完之后,你理解的不只是 Claude Code 怎么工作,而是适用于任何领域、任何 agent 的 harness 工程通用原则。
110110
111111启示不是 "复制 Claude Code"。启示是:** 最好的 agent 产品,出自那些明白自己的工作是 harness 而非 intelligence 的工程师之手。**
112112
@@ -159,32 +159,46 @@ Claude Code = 一个 agent loop
159159 让 agent 在特定领域高效工作的 harness。
160160```
161161
162- ** 12 个递进式课程, 从简单循环到隔离化的自治执行 。**
162+ ** 19 个递进式课程, 从简单循环到外接插件 。**
163163** 每个课程添加一个 harness 机制。每个机制有一句格言。**
164164
165165> ** s01**   ; * "One loop & Bash is all you need"* &mdash ; 一个工具 + 一个循环 = 一个 Agent
166166>
167167> ** s02**   ; * "加一个工具, 只加一个 handler"* &mdash ; 循环不用动, 新工具注册进 dispatch map 就行
168168>
169- > ** s03**   ; * "没有计划的 agent 走哪算哪 "* &mdash ; 先列步骤再动手, 完成率翻倍
169+ > ** s03**   ; * "先划边界, 再给自由 "* &mdash ; 权限管线决定哪些操作需要审批
170170>
171- > ** s04**   ; * "大任务拆小, 每个小任务干净的上下文 "* &mdash ; Subagent 用独立 messages [ ] , 不污染主对话
171+ > ** s04**   ; * "挂在循环上, 不写进循环里 "* &mdash ; 钩子在工具执行前后注入扩展逻辑
172172>
173- > ** s05**   ; * "用到什么知识, 临时加载什么知识 "* &mdash ; 通过 tool_result 注入, 不塞 system prompt
173+ > ** s05**   ; * "没有计划的 agent 走哪算哪 "* &mdash ; 先列步骤再动手, 完成率翻倍
174174>
175- > ** s06**   ; * "上下文总会满, 要有办法腾地方 "* &mdash ; 三层压缩策略, 换来无限会话
175+ > ** s06**   ; * "大任务拆小, 每个小任务干净的上下文 "* &mdash ; Subagent 用独立 messages [ ] , 不污染主对话
176176>
177- > ** s07**   ; * "大目标要拆成小任务, 排好序, 记在磁盘上 "* &mdash ; 文件持久化的任务图, 为多 agent 协作打基础
177+ > ** s07**   ; * "用到时再加载, 别全塞 prompt 里 "* &mdash ; 通过 tool_result 注入, 不塞 system prompt
178178>
179- > ** s08**   ; * "慢操作丢后台, agent 继续想下一步 "* &mdash ; 后台线程跑命令, 完成后注入通知
179+ > ** s08**   ; * "上下文总会满, 要有办法腾地方 "* &mdash ; 四层压缩策略, 便宜的先跑贵的后跑
180180>
181- > ** s09**   ; * "任务太大一个人干不完, 要能分给队友 "* &mdash ; 持久化队友 + 异步邮箱
181+ > ** s09**   ; * "记住该记的, 忘掉该忘的 "* &mdash ; 三个子系统: 筛选、提取、整理
182182>
183- > ** s10**   ; * "队友之间要有统一的沟通规矩 "* &mdash ; 一个 request-response 模式驱动所有协商
183+ > ** s10**   ; * "prompt 是组装出来的, 不是写死的 "* &mdash ; 分段 + 按需拼接
184184>
185- > ** s11**   ; * "队友自己看看板, 有活就认领 "* &mdash ; 不需要领导逐个分配, 自组织
185+ > ** s11**   ; * "错误不是终点, 是重试的起点 "* &mdash ; 升级 token、压缩上下文、切换模型
186186>
187- > ** s12**   ; * "各干各的目录, 互不干扰"* &mdash ; 任务管目标, worktree 管目录, 按 ID 绑定
187+ > ** s12**   ; * "大目标拆成小任务, 排好序, 持久化"* &mdash ; 文件持久化的任务图, 多 agent 协作的基础
188+ >
189+ > ** s13**   ; * "慢操作丢后台, agent 继续思考"* &mdash ; 后台线程跑命令, 完成后注入通知
190+ >
191+ > ** s14**   ; * "定时触发, 不需要人推"* &mdash ; cron 调度, 持久化或会话级
192+ >
193+ > ** s15**   ; * "一个搞不定, 组队来"* &mdash ; 持久化队友 + 异步邮箱
194+ >
195+ > ** s16**   ; * "队友之间要有约定"* &mdash ; 一个 request-response 模式驱动所有协商
196+ >
197+ > ** s17**   ; * "队友自己看板, 有活就认领"* &mdash ; 不需要领导逐个分配, 自组织
198+ >
199+ > ** s18**   ; * "各干各的目录, 互不干扰"* &mdash ; 任务管目标, worktree 管目录, 按 ID 绑定
200+ >
201+ > ** s19**   ; * "能力不够? 插上 MCP"* &mdash ; 多传输、通道路由、工具池合并
188202
189203---
190204
@@ -238,9 +252,9 @@ cd learn-claude-code
238252pip install -r requirements.txt
239253cp .env.example .env # 编辑 .env 填入你的 ANTHROPIC_API_KEY
240254
241- python agents/ s01_agent_loop.py # 从这里开始
242- python agents/s12_worktree_task_isolation .py # 完整递进终点
243- python agents/ s_full.py # 总纲: 全部机制合一
255+ python s01_agent_loop/code .py # 起点 — 一个循环 + bash
256+ python s08_context_compact/code .py # 上下文压缩(最复杂章)
257+ python s_full/code .py # 总纲: 全部 19 个机制合一
244258```
245259
246260### Web 平台
@@ -251,75 +265,64 @@ python agents/s_full.py # 总纲: 全部机制合一
251265cd web && npm install && npm run dev # http://localhost:3000
252266```
253267
254- ## 学习路径
255-
256- ```
257- 第一阶段: 循环 第二阶段: 规划与知识
258- ================== ==============================
259- s01 Agent Loop [1] s03 TodoWrite [5]
260- while + stop_reason TodoManager + nag 提醒
261- | |
262- +-> s02 Tool Use [4] s04 Subagent [5]
263- dispatch map: name->handler 每个 Subagent 独立 messages[]
264- |
265- s05 Skills [5]
266- SKILL.md 通过 tool_result 注入
267- |
268- s06 Context Compact [5]
269- 三层 Context Compact
270-
271- 第三阶段: 持久化 第四阶段: 团队
272- ================== =====================
273- s07 Task System [8] s09 Agent Teams [9]
274- 文件持久化 CRUD + 依赖图 队友 + JSONL 邮箱
275- | |
276- s08 Background Tasks [6] s10 Team Protocols [12]
277- 守护线程 + 通知队列 关机 + 计划审批 FSM
278- |
279- s11 Autonomous Agents [14]
280- 空闲轮询 + 自动认领
281- |
282- s12 Worktree Isolation [16]
283- Task 协调 + 按需隔离执行通道
284-
285- [N] = 工具数量
286- ```
268+ ## 五个阶段
269+
270+ | 阶段 | 章节 | 你在构建什么 |
271+ | ---| ---| ---|
272+ | ** 工具管线** | ` s01-s04 ` | loop → dispatch → permission → hooks |
273+ | ** 单 Agent 能力** | ` s05-s08 ` | planning → subagent → skill → context compact |
274+ | ** 知识与韧性** | ` s09-s11 ` | memory → prompt assembly → error recovery |
275+ | ** 持久化工作** | ` s12-s14 ` | task graph → background → cron |
276+ | ** 多 Agent 平台** | ` s15-s19 ` | teams → protocols → autonomy → worktree → MCP |
277+
278+ ## 全部章节
279+
280+ | 章节 | 主题 | 关键概念 |
281+ | ---| ---| ---|
282+ | [ s01] ( ./s01_agent_loop/ ) | Agent Loop | ` messages ` / ` while True ` / ` stop_reason ` |
283+ | [ s02] ( ./s02_tool_use/ ) | Tool Use | ` TOOL_HANDLERS ` / dispatch map / 并发 |
284+ | [ s03] ( ./s03_permission/ ) | Permission | ` PermissionRule ` / 审批管线 |
285+ | [ s04] ( ./s04_hooks/ ) | Hooks | ` PreToolUse ` / ` PostToolUse ` / 扩展点 |
286+ | [ s05] ( ./s05_todo_write/ ) | TodoWrite | ` TodoItem ` / 先计划后执行 |
287+ | [ s06] ( ./s06_subagent/ ) | Subagent | ` fresh messages[] ` / 上下文隔离 |
288+ | [ s07] ( ./s07_skill_loading/ ) | Skill Loading | ` SkillManifest ` / 按需注入 |
289+ | [ s08] ( ./s08_context_compact/ ) | Context Compact | snip / micro / budget / auto 四层压缩 |
290+ | [ s09] ( ./s09_memory/ ) | Memory | selection / extraction / consolidation |
291+ | [ s10] ( ./s10_system_prompt/ ) | System Prompt | 运行时组装 / 分段拼接 |
292+ | [ s11] ( ./s11_error_recovery/ ) | Error Recovery | token 升级 / fallback 模型 / 重试策略 |
293+ | [ s12] ( ./s12_task_system/ ) | Task System | ` TaskRecord ` / ` blockedBy ` / 磁盘持久化 |
294+ | [ s13] ( ./s13_background_tasks/ ) | Background Tasks | 线程执行 / 通知队列 |
295+ | [ s14] ( ./s14_cron_scheduler/ ) | Cron Scheduler | 持久化调度 / 会话级触发 |
296+ | [ s15] ( ./s15_agent_teams/ ) | Agent Teams | ` MessageBus ` / 收件箱 / 权限冒泡 |
297+ | [ s16] ( ./s16_team_protocols/ ) | Team Protocols | 关机握手 / 计划审批 |
298+ | [ s17] ( ./s17_autonomous_agents/ ) | Autonomous Agents | 空闲循环 / 自动认领 |
299+ | [ s18] ( ./s18_worktree_isolation/ ) | Worktree Isolation | ` WorktreeRecord ` / 任务-目录绑定 |
300+ | [ s19] ( ./s19_mcp_plugin/ ) | MCP Plugin | 多传输 / 通道路由 / 工具池合并 |
301+ | [ s_full] ( ./s_full/ ) | 总纲 | s01-s19 全部机制合并 |
287302
288303## 项目结构
289304
290305```
291306learn-claude-code/
292- |
293- |-- agents/ # Python 参考实现 (s01-s12 + s_full 总纲)
294- |-- docs/{en,zh,ja}/ # 心智模型优先的文档 (3 种语言)
295- |-- web/ # 交互式学习平台 (Next.js)
296- |-- skills/ # s05 的 Skill 文件
297- +-- .github/workflows/ci.yml # CI: 类型检查 + 构建
298- ```
299-
300- ## 文档
301-
302- 心智模型优先: 问题、方案、ASCII 图、最小化代码。
303- [ English] ( ./docs/en/ ) | [ 中文] ( ./docs/zh/ ) | [ 日本語] ( ./docs/ja/ )
304-
305- | 课程 | 主题 | 格言 |
306- | ------| ------| ------|
307- | [ s01] ( ./docs/zh/s01-the-agent-loop.md ) | Agent Loop | * One loop & Bash is all you need* |
308- | [ s02] ( ./docs/zh/s02-tool-use.md ) | Tool Use | * 加一个工具, 只加一个 handler* |
309- | [ s03] ( ./docs/zh/s03-todo-write.md ) | TodoWrite | * 没有计划的 agent 走哪算哪* |
310- | [ s04] ( ./docs/zh/s04-subagent.md ) | Subagent | * 大任务拆小, 每个小任务干净的上下文* |
311- | [ s05] ( ./docs/zh/s05-skill-loading.md ) | Skills | * 用到什么知识, 临时加载什么知识* |
312- | [ s06] ( ./docs/zh/s06-context-compact.md ) | Context Compact | * 上下文总会满, 要有办法腾地方* |
313- | [ s07] ( ./docs/zh/s07-task-system.md ) | Task System | * 大目标要拆成小任务, 排好序, 记在磁盘上* |
314- | [ s08] ( ./docs/zh/s08-background-tasks.md ) | Background Tasks | * 慢操作丢后台, agent 继续想下一步* |
315- | [ s09] ( ./docs/zh/s09-agent-teams.md ) | Agent Teams | * 任务太大一个人干不完, 要能分给队友* |
316- | [ s10] ( ./docs/zh/s10-team-protocols.md ) | Team Protocols | * 队友之间要有统一的沟通规矩* |
317- | [ s11] ( ./docs/zh/s11-autonomous-agents.md ) | Autonomous Agents | * 队友自己看看板, 有活就认领* |
318- | [ s12] ( ./docs/zh/s12-worktree-task-isolation.md ) | Worktree + Task Isolation | * 各干各的目录, 互不干扰* |
307+ s01_agent_loop/ # 每章一个文件夹
308+ README.md # 中文源文档(完整叙事)
309+ README.en.md # 英文译本
310+ README.ja.md # 日文译本
311+ code.py # 独立可运行代码
312+ images/ # SVG 流程图
313+ s02_tool_use/
314+ ...
315+ s19_mcp_plugin/
316+ s_full/ # 总纲
317+ agents/ # 扁平副本,方便 python agents/sXX.py 快速运行
318+ skills/ # s07 使用的 skill 文件
319+ docs/ # 旧版线上文档(已归档)
320+ web/ # Web 教学平台
321+ tests/
319322
320323## 学完之后 -- 从理解到落地
321324
322- 12 个课程走完, 你已经从内到外理解了 harness 工程的运作原理。两种方式把知识变成产品:
325+ 19 个课程走完, 你已经从内到外理解了 harness 工程的运作原理。两种方式把知识变成产品:
323326
324327### Kode Agent CLI -- 开源 Coding Agent CLI
325328
0 commit comments