这套课程最值得学习的不是某个 Python 文件,而是 Harness 如何逐步承担模型之外的工程责任:执行工具、控制权限、保存状态、调度异步事件、组织多个 Agent,最后判断是否真的可以停止。
当前主线共有 17 章,但它不是“每一章都把上一章全部代码复制过来再加一个功能”。一些章节是机制隔离样例,s15 才把累计能力重新接入一个集成宿主。
第一阶段:建立安全可扩展的循环
| 章节 | 主题 | 要回答的问题 |
|---|---|---|
| s01 | Agent Loop | 工具请求和结果如何形成反馈闭环? |
| s02 | Tool Use | 新工具如何只增加定义与 handler? |
| s03 | Permission | 工具执行前如何拒绝、匹配规则或确认? |
| s04 | Hooks | 权限、审计和停止逻辑如何脱离循环主体? |
这一阶段的稳定骨架是:模型生成 tool_use,宿主决定能否执行,结果以相同调用 ID 回到 messages[]。没有工具调用时,当前轮次准备结束。
第二阶段:管理计划、上下文与长期状态
| 章节 | 主题 | 状态载体 |
|---|---|---|
| s05 | TodoWrite | 当前会话中的轻量清单 |
| s06 | Subagent | 一次性隔离的 messages[] |
| s07 | Skill Loading | 目录加按需加载的完整指令 |
| s08 | Context Compact | 当前任务的压缩上下文与归档 |
| s09 | Memory | 跨会话召回的筛选后事实 |
| s10 | Task System | 可依赖、可认领的持久任务图 |
这些机制不能互相替代。Todo 不是任务数据库,Compact 不是长期记忆,Memory 也不是完整聊天记录。分清状态生命周期,系统才有清楚的恢复语义。
第三阶段:异步、团队与外部能力
| 章节 | 主题 | 关键边界 |
|---|---|---|
| s11 | Background Tasks | 已启动的 Bash 在后台完成,不会自行唤醒独立样例 |
| s12 | Cron Scheduler | 未来交付 prompt,本地进程存活才会调度 |
| s13 | Agent Teams | 持久队友、邮箱、原子认领和 task-bound worktree |
| s14 | MCP Tools | 动态发现外部工具,授权仍由宿主决定 |
s11、s12 和 s14 都从较小的 s04 内核分叉,用来单独讲清机制;s13 从 s10 的任务图继续扩展。不要据章节顺序推断 s12 一定包含后台命令,或 s14 已包含 Agent Teams。
Worktree 是 s13 中的重要任务目录机制,但不是当前官方 s12,也不是安全沙箱。本站另设《Git Worktree 任务隔离》作为横向专题,不占用官方章节号。
第四阶段:集成、编排与完成判断
| 章节 | 主题 | 解决的问题 |
|---|---|---|
| s15 | Integrated Harness | 把前面机制放回同一事件循环 |
| s16 | Workflow Runtime | 用可信脚本固定重复流程并支持续跑 |
| s17 | Goal Loop | Worker 想停时,目标是否真的达到? |
s16 不替代普通 Agent Loop:开放探索仍由模型逐轮决定,已知形状的流程才适合 Workflow。s17 也不是 s15 与 s16 的“全家桶终章”,而是从较小内核单独展示 Stop gate。Goal evaluator 只检查对话证据,不会自己运行测试。
推荐阅读顺序
第一次学习按 s01 到 s17 顺序读,重点观察每章新增了哪一条运行时责任。第二次可以按问题回看:
- 工具为什么能安全执行:s01–s04;
- 长任务为什么不容易漂移:s05–s10;
- 异步和多人如何回到主循环:s11–s15;
- 固定流程与完成标准如何外置:s16–s17。
阅读源码时,每章都问四个问题:机制接入循环的哪个位置?状态保存在哪里?失败后如何恢复?它明确没有保证什么?
不应从课程推出的结论
- 字符串规则不是完整命令沙箱;
- Worktree 隔离工作目录,不隔离系统权限;
- durable cron 不代表进程关闭后仍会运行;
- MCP mock 不代表实现了完整 transport、鉴权和能力协商;
- Workflow 的
async_launched不代表脱离工具调用后台执行; - Goal evaluator 的 allow 不是形式化完成证明。
课程的价值正来自这些边界:每个文件都用最少代码把一个设计缝隙暴露出来,方便理解,而不是假装已经达到生产级安全与可靠性。
小结
17 章主线可以看成四层:循环与政策、状态与上下文、异步与协作、集成与控制。按官方目录名组织文章能避免旧编号错位;把独立机制与累计集成区分开,则能避免把教学叙事误写成源码逐章继承。