feat: refresh course through workflow and goal loops

This commit is contained in:
Haoran
2026-07-30 19:14:04 +08:00
parent 2dd1852d9e
commit cb8fae1bdd
125 changed files with 10882 additions and 7661 deletions

View File

@@ -106,7 +106,7 @@ Claude Code = 一个 agent loop
就这些。这就是全部架构。每一个组件都是 harness 机制 -- 为 agent 构建的栖居世界的一部分。Agent 本身呢?是 Claude。一个模型。由 Anthropic 在人类推理和代码的全部广度上训练而成。Harness 没有让 Claude 变聪明。Claude 本来就聪明。Harness 给了 Claude 双手、双眼和一个工作空间。
这就是 Claude Code 作为教学标本的意义:**它展示了当你信任模型、把工程精力集中在 harness 上时会发生什么。** 本仓库的课程s01-s20)逐步拆解并重组 Claude Code 架构中的 harness 机制。学完之后,你理解的不只是 Claude Code 怎么工作,而是适用于任何领域、任何 agent 的 harness 工程通用原则。
这就是 Claude Code 作为教学标本的意义:**它展示了当你信任模型、把工程精力集中在 harness 上时会发生什么。** 本仓库的课程s01-s22)逐步拆解并重组 Claude Code 架构中的 harness 机制。学完之后,你理解的不只是 Claude Code 怎么工作,而是适用于任何领域、任何 agent 的 harness 工程通用原则。
启示不是 "复制 Claude Code"。启示是:**最好的 agent 产品,出自那些明白自己的工作是 harness 而非 intelligence 的工程师之手。**
@@ -159,7 +159,7 @@ Claude Code = 一个 agent loop
让 agent 在特定领域高效工作的 harness。
```
**20 个递进式课程, 从简单循环到完整 Harness**
**22 个递进式课程, 从简单循环到目标闭环**
**每个课程添加一个 harness 机制。每个机制有一句格言。**
> **s01**   *"One loop & Bash is all you need"* — 一个工具 + 一个循环 = 一个 Agent
@@ -190,9 +190,9 @@ Claude Code = 一个 agent loop
>
> **s14**   *"定时触发, 不需要人推"* — 按时间自动触发任务
>
> **s15**   *"一个搞不定, 组队来"* — 持久化队友 + 异步邮箱
> **s15**   *"一个搞不定, 组队来"* — Agent Teams 运行时实验:持久化队友 + 异步邮箱
>
> **s16**   *"队友之间要有约定"* — 用固定的请求-回复格式沟通
> **s16**   *"队友之间要有约定"* — Agent Teams 协议实验:带类型的请求-回复
>
> **s17**   *"队友自己看板, 有活就认领"* — 不需要领导逐个分配, 自组织
>
@@ -201,6 +201,10 @@ Claude Code = 一个 agent loop
> **s19**   *"能力不够? 插上 MCP"* — 把外部工具接进同一个工具池
>
> **s20**   *"机制很多,循环一个"* — 前面所有机制回到一个完整 harness
>
> **s21**   *"编排形状固定时,就把它写进代码"* — 可恢复 journal 支撑确定性 workflow
>
> **s22**   *"目标决定循环什么时候真正结束"* — 持续工作,直到可信证据满足目标
---
@@ -237,16 +241,16 @@ def agent_loop(messages):
本仓库现在同时保留两条教程线:
- **新版主线:根目录 `s01-s20`**
根目录下的 `s01_*``s20_*` 是新的主版本,也是当前推荐阅读路径。每章包含完整叙事 README、文/日文译本、可运行的 `code.py`,以及必要的图示。
- **旧版过渡:`docs/``agents/`、当前 `web/`**
这些仍保留旧 12 章体系,暂时用于已有读者旧链接和 Web 平台过渡。
- **新版主线:根目录 `s01-s22`**
根目录下的 `s01_*``s22_*` 是新的主版本,也是当前推荐阅读路径。每章包含默认英文 README、文/日文译本、可运行的 `code.py`,以及必要的图示。
- **旧版过渡:`docs/``agents/`**
这些仍保留旧 12 章体系,暂时用于已有读者旧链接过渡。
新读者请从根目录 `s01_agent_loop/` 读到 `s20_comprehensive/`。如果你是从旧链接或当前 Web 平台进入,大概率看到的是旧 12 章版本。旧版章节号和新版不完全一致,不要混用章节号。
新读者请从根目录 `s01_agent_loop/` 读到 `s22_goal_loop/`。旧版章节号和新版不完全一致,不要混用章节号。
### 旧版到新版的对应关系
| 旧 12 章版本 | 新 20 章版本 | 主题 |
| 旧 12 章版本 | 新 22 章版本 | 主题 |
|---|---|---|
| 旧 s01 | 新 s01 | Agent Loop |
| 旧 s02 | 新 s02 | Tool Use |
@@ -260,7 +264,7 @@ def agent_loop(messages):
| 旧 s10 | 新 s16 | Team Protocols |
| 旧 s11 | 新 s17 | Autonomous Agents |
| 旧 s12 | 新 s18 | Worktree Isolation |
| 新版新增 | s03、s04、s09、s10、s11、s14、s19、s20 | Permission、Hooks、Memory、System Prompt、Error Recovery、Cron、MCP、Comprehensive Agent |
| 新版新增 | s03、s04、s09、s10、s11、s14、s19、s20、s21、s22 | Permission、Hooks、Memory、Context Assembly、Error Recovery、Cron、MCP、Comprehensive Agent、Workflow Runtime、Goal Loop |
## 范围说明 (重要)
@@ -277,7 +281,7 @@ def agent_loop(messages):
## 快速开始
### 新版 20 章主线
### 新版 22 章主线
```sh
git clone https://github.com/shareAI-lab/learn-claude-code
@@ -287,7 +291,7 @@ cp .env.example .env # 编辑 .env 填入你的 ANTHROPIC_API_KEY
python s01_agent_loop/code.py # 起点 — 一个循环 + bash
python s08_context_compact/code.py # 上下文压缩(复杂章)
python s20_comprehensive/code.py # 终点章: 全部机制归到一个循环
python s22_goal_loop/code.py # 终点章:用目标闭合循环
```
### 旧版 12 章过渡线
@@ -300,7 +304,7 @@ python agents/s_full.py
### Web 平台
当前 Web 平台仍读取 `docs/` 中的旧 12 章内容。新版 20 章请直接阅读根目录 `s01-s20`
Web 平台从根目录课程生成内容。s21、s22 提供阅读、源码、模拟和架构视图;仅专用首屏可视化保持精简
```sh
cd web && npm install && npm run dev # http://localhost:3000
@@ -330,7 +334,7 @@ flowchart TD
S2["<b>第二阶段:做复杂任务</b><br/>━━━━━━━━━━━━━<br/><b>s05 TodoWrite</b><br/>└─ 先列计划,再执行<br/><br/><b>s06 Subagent</b><br/>└─ 子节点干活带回结果<br/><br/><b>s08 Context Compact</b><br/>└─ 长下文腾空间"]:::stage2
S3["<b>第三阶段:记住和恢复</b><br/>━━━━━━━━━━━━━<br/><b>s09 Memory</b><br/>└─ 该记记,该忘忘<br/><br/><b>s10 System Prompt</b><br/>└─ 运行时组装<br/><br/><b>s11 Error Recovery</b><br/>└─ 重试换路子"]:::stage3
S3["<b>第三阶段:记住和恢复</b><br/>━━━━━━━━━━━━━<br/><b>s09 Memory</b><br/>└─ 跨会话持久化与召回<br/><br/><b>s10 Context Assembly</b><br/>└─ 运行时状态组装模型输入<br/><br/><b>s11 Error Recovery</b><br/>└─ 重试换路子"]:::stage3
S1 ==> S2 ==> S3
end
@@ -340,18 +344,25 @@ flowchart TD
direction LR
S4["<b>第四阶段:让任务长期运行</b><br/>━━━━━━━━━━━━━<br/><b>s12 Task System</b><br/>└─ 任务落盘记依赖<br/><br/><b>s13 Background Tasks</b><br/>└─ 慢操作丢后台<br/><br/><b>s14 Cron Scheduler</b><br/>└─ 按时自动触发"]:::stage4
S5["<b>第五阶段:让多个 Agent 协作</b><br/>━━━━━━━━━━━━━<br/><b>s15 Agent Teams</b><br/>─ 队友 + 邮箱通信<br/><br/><b>s16 Team Protocols</b><br/>└─ 固定收发格式<br/><br/><b>s17 Autonomous Agents</b><br/>└─ 自己看板认领活<br/><br/><b>s18 Worktree Isolation</b><br/>└─ 隔离目录"]:::stage5
S5["<b>第五阶段:让多个 Agent 协作</b><br/>━━━━━━━━━━━━━<br/><b>Agent Teams 模块</b><br/>s15 运行时实验:队友 + 邮箱<br/>└─ s16 协议实验:带类型的请求-回复<br/><br/><b>s17 Autonomous Agents</b><br/>└─ 自己看板认领活<br/><br/><b>s18 Worktree Isolation</b><br/>└─ 隔离目录"]:::stage5
S6["<b>第六阶段:接外部能力合体</b><br/>━━━━━━━━━━━━━<br/><b>s07 Skill Loading</b><br/>└─ 技能按需展开<br/><br/><b>s19 MCP Plugin</b><br/>└─ 外部接进工具池<br/><br/><b>s20 Comprehensive Agent</b><br/>└─ 全机制回单循环"]:::stage6
S4 ==> S5 ==> S6
end
%% 将两个模块连接起来,形成 Z 字形阅读流
Phase1 ===> Phase2
%% 第三层:编排与目标闭环
subgraph Phase3 ["🎯 第七阶段:编排与目标闭环"]
direction LR
S7["<b>第七阶段:编排并完成</b><br/>━━━━━━━━━━━━━<br/><b>s21 Workflow Runtime</b><br/>└─ 脚本拥有固定编排<br/><br/><b>s22 Goal Loop</b><br/>└─ 可信证据决定何时停止"]:::stage1
S6 ==> S7
end
%% 将三个模块连接起来,形成 Z 字形阅读流
Phase1 ===> Phase2 ===> Phase3
%% 应用背景样式
class Phase1,Phase2 groupBox
class Phase1,Phase2,Phase3 groupBox
```
## 全部章节
@@ -367,42 +378,46 @@ flowchart TD
| [s07](./s07_skill_loading/) | Skill Loading | `SkillManifest` / 按需注入 |
| [s08](./s08_context_compact/) | Context Compact | snip / micro / budget / auto 四层压缩 |
| [s09](./s09_memory/) | Memory | selection / extraction / consolidation |
| [s10](./s10_system_prompt/) | System Prompt | 运行时组装 / 分段拼接 |
| [s10](./s10_system_prompt/) | Context Assembly | 运行时状态 / 稳定分段 / 模型输入 |
| [s11](./s11_error_recovery/) | Error Recovery | token 升级 / fallback 模型 / 重试策略 |
| [s12](./s12_task_system/) | Task System | `TaskRecord` / `blockedBy` / 磁盘持久化 |
| [s13](./s13_background_tasks/) | Background Tasks | 线程执行 / 通知队列 |
| [s14](./s14_cron_scheduler/) | Cron Scheduler | 持久化调度 / 会话级触发 |
| [s15](./s15_agent_teams/) | Agent Teams | `MessageBus` / 收件箱 / 权限冒泡 |
| [s16](./s16_team_protocols/) | Team Protocols | 关机握手 / 计划审批 |
| [s15](./s15_agent_teams/) | Agent Teams:运行时实验 | `MessageBus` / 收件箱 / 权限冒泡 |
| [s16](./s16_team_protocols/) | Agent Teams协议实验 | 类型消息 / 关机握手 / 计划审批 |
| [s17](./s17_autonomous_agents/) | Autonomous Agents | 空闲循环 / 自动认领 |
| [s18](./s18_worktree_isolation/) | Worktree Isolation | `WorktreeRecord` / 任务-目录绑定 |
| [s19](./s19_mcp_plugin/) | MCP Plugin | 多传输 / 通道路由 / 工具池组装 |
| [s20](./s20_comprehensive/) | Comprehensive Agent | 全部机制归到一个循环 |
| [s21](./s21_workflow_runtime/) | Workflow Runtime | 脚本编排 / 后台运行 / journal 续跑 |
| [s22](./s22_goal_loop/) | Goal Loop | 目标闸门 / 可信证据 / 自动续轮 |
## 项目结构
```
learn-claude-code/
s01_agent_loop/ # 每章一个文件夹
README.md # 中文源文档(完整叙事)
README.en.md # 文译本
README.md # 默认英文文档(完整叙事)
README.zh.md # 文译本
README.ja.md # 日文译本
code.py # 独立可运行代码
images/ # SVG 流程图
s02_tool_use/
...
s19_mcp_plugin/
s20_comprehensive/ # 终点章
s20_comprehensive/
s21_workflow_runtime/
s22_goal_loop/ # 终点章
agents/ # 旧 12 章可运行副本 + s_full.py
skills/ # s07 使用的 skill 文件
docs/ # 旧 12 章文档,过渡期保留
web/ # 当前仍基于 docs/ 旧版内容生成
web/ # 从根目录课程生成
tests/
```
## 学完之后 -- 从理解到落地
20 个课程走完, 你已经从内到外理解了 harness 工程的运作原理。两种方式把知识变成产品:
22 个课程走完, 你已经从内到外理解了 harness 工程的运作原理。两种方式把知识变成产品:
### Kode Agent CLI -- 开源 Coding Agent CLI