这套课程最值得学习的不是某个 Python 文件,而是 Harness 如何逐步承担模型之外的工程责任:执行工具、控制权限、保存状态、调度异步事件、组织多个 Agent,最后判断是否真的可以停止。

当前主线共有 17 章,但它不是“每一章都把上一章全部代码复制过来再加一个功能”。一些章节是机制隔离样例,s15 才把累计能力重新接入一个集成宿主。

第一阶段:建立安全可扩展的循环

章节主题要回答的问题
s01Agent Loop工具请求和结果如何形成反馈闭环?
s02Tool Use新工具如何只增加定义与 handler?
s03Permission工具执行前如何拒绝、匹配规则或确认?
s04Hooks权限、审计和停止逻辑如何脱离循环主体?

这一阶段的稳定骨架是:模型生成 tool_use,宿主决定能否执行,结果以相同调用 ID 回到 messages[]。没有工具调用时,当前轮次准备结束。

第二阶段:管理计划、上下文与长期状态

章节主题状态载体
s05TodoWrite当前会话中的轻量清单
s06Subagent一次性隔离的 messages[]
s07Skill Loading目录加按需加载的完整指令
s08Context Compact当前任务的压缩上下文与归档
s09Memory跨会话召回的筛选后事实
s10Task System可依赖、可认领的持久任务图

这些机制不能互相替代。Todo 不是任务数据库,Compact 不是长期记忆,Memory 也不是完整聊天记录。分清状态生命周期,系统才有清楚的恢复语义。

第三阶段:异步、团队与外部能力

章节主题关键边界
s11Background Tasks已启动的 Bash 在后台完成,不会自行唤醒独立样例
s12Cron Scheduler未来交付 prompt,本地进程存活才会调度
s13Agent Teams持久队友、邮箱、原子认领和 task-bound worktree
s14MCP Tools动态发现外部工具,授权仍由宿主决定

s11、s12 和 s14 都从较小的 s04 内核分叉,用来单独讲清机制;s13 从 s10 的任务图继续扩展。不要据章节顺序推断 s12 一定包含后台命令,或 s14 已包含 Agent Teams。

Worktree 是 s13 中的重要任务目录机制,但不是当前官方 s12,也不是安全沙箱。本站另设《Git Worktree 任务隔离》作为横向专题,不占用官方章节号。

第四阶段:集成、编排与完成判断

章节主题解决的问题
s15Integrated Harness把前面机制放回同一事件循环
s16Workflow Runtime用可信脚本固定重复流程并支持续跑
s17Goal LoopWorker 想停时,目标是否真的达到?

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 章主线可以看成四层:循环与政策、状态与上下文、异步与协作、集成与控制。按官方目录名组织文章能避免旧编号错位;把独立机制与累计集成区分开,则能避免把教学叙事误写成源码逐章继承。

参考资料