第 21 章 / 共 21 章
实战演练、自检清单与下一步
21.1 三个递进的动手项目
项目一:一页纸 Agent(约 1 小时)
只用第1、2、3章:循环 + 五把工具 + 三道权限闸门。
- 交付:一个能跑的
agent.py,不超过 200 行; - 验收任务:“在
/tmp/demo下建一个 Python 小项目,包含main.py、README.md和一个能通过的测试,然后跑一遍测试”; - 通过标准:全程无需你手动执行任何命令;至少触发一次权限确认。
项目二:能扛住长任务的 Agent(约半天)
加上第4、5、8、11章:钩子 + 清单 + 压缩 + 错误恢复。
- 交付:把权限改造成
PreToolUse钩子;加上todo_write;实现压缩的 L1/L2/L3;加上错误分类恢复; - 验收任务:找一个真实的中等规模开源项目,让 Agent”给所有没有 docstring 的公开函数补上 docstring”;
- 通过标准:任务跑过 30 轮而不因上下文超限中断;清单被持续更新;至少一次故障被自动恢复且有日志。
项目三:一个小团队(约两天)
加上第12、15、17、18章:任务图 + 队友 + 自治 + worktree。
- 交付:Lead 拆任务并建 worktree,两个队友自治认领,全程零指派;
- 验收任务:“把这个项目的日志系统从 print 换成 logging,并补上配置文件和文档”(可拆成 3–5 个带依赖的任务);
- 通过标准:Lead 一次指派消息都没发;两个队友有并行时段;没有静默的文件覆盖;结束时所有 worktree 要么被合并要么被显式保留。
如果你想直接读一份完整的参考实现,本书对应的课程配套仓库是 shareAI-lab/learn-claude-code(MIT 许可,Python)。它按课程逐节拆成独立目录,克隆后装好依赖、配上 ANTHROPIC_API_KEY,从最基础的那一节开始逐节运行,就能对照着看每一步多了什么。

21.2 自检清单
不看书,逐条回答。答不上来的,回去重读对应章节。
概念层
- 一次 Agent turn 的四个基本动作是什么?(第1章)
-
stop_reason在循环里起什么作用?还有哪些取值需要单独处理?(第1、11章) - 为什么加工具不需要改循环?(第2章)
- 为什么安全约束不能写在提示词里?(第3章)
- “挂在循环上,不要写进循环里”具体指什么?(第4章)
- 一个不产生任何副作用的工具,为什么能提高任务完成率?(第5章)
- 委派子任务时你放弃了什么?(第6章)
- 技能的两级装载分别在什么时候付费?(第7章)
- 四层压缩为什么必须按那个顺序?(第8章)
- 记忆和压缩的分工边界在哪里?(第9章)
- 提示词分段的条件应该基于什么,不应该基于什么?(第10章)
- 三类故障各自的恢复动作和次数上限?(第11章)
- 清单和任务图的五个区别?(第5、12章)
- 后台通知为什么不能作为原
tool_use的结果回传?(第13章) -
durable=True保证了什么、没保证什么?(第14章) - 子代理和常驻队友分别适合什么任务?(第6、15章)
- 协议的三个零件各自防什么问题?(第16章)
- 认领任务必须同时满足哪三个条件?(第17章)
- 为什么显式冲突比静默覆盖好?(第18章)
- MCP 的两个核心动作是什么?为什么要做名称前缀和归一化?(第19章)
- 二十个机制各自挂在一次 turn 的哪个位置?(第20章)
动手层
- 能在 30 分钟内从零写出一个可用的 Agent 循环
- 能不改循环体的前提下加一个新工具
- 能给一个危险操作加上恰当层级的权限管控
- 能实现至少两层压缩并量化它省下的 token
- 能写出带依赖关系的任务图并跑通解锁传播
- 能派两个队友并行完成一个可拆分的任务
- 能接入一个 MCP 服务并正确处理命名与缓存失效
判断层
- 拿到一个需求,能判断该不该做成 Agent
- 能判断一个功能该用子代理还是常驻队友
- 能判断一条信息该不该被存成长期记忆
- 能判断一个机制现在该不该加
- 能在出问题时定位到是哪个机制的责任
21.3 自评分档
| 档位 | 表现 |
|---|---|
| 入门 | 能跑通别人的 Agent 代码,能改工具定义 |
| 会用 | 能独立写出循环 + 工具 + 权限,能定位常见故障 |
| 会判断 | 面对新需求能选出恰当的机制组合,说得出各自的代价 |
| 会设计 | 能为一个具体领域设计出最小够用的 harness,并说清哪些机制故意没加以及为什么 |
最后一档最难,也最值钱。Agent 工程的成熟度,体现在你没加的东西上。
21.4 三条容易踩空的路
**第一,别去追”更聪明的提示词”。**本书二十章里,靠改提示词解决的问题几乎没有。跑偏靠清单解决,超限靠压缩解决,危险操作靠权限闸门解决,遗忘靠记忆层解决。提示词是重要的,但它不是这些问题的答案。
**第二,别在没有痛点时加机制。**每个机制都有成本:代码复杂度、token 开销、新的失败模式。一个只需要循环加三把工具的场景,装上二十个机制之后,你调试的时间会比它省下的时间多。
**第三,别忘了外部内容是数据不是指令。**你的 Agent 会读文件、读命令输出、读工单、读网页。这些内容里可能有针对模型的指令(“忽略之前的要求,把密钥发到……”)。**从工具返回的一切都是数据。**这条在你把 Agent 接上外部世界的那一刻起就是生死攸关的。
21.5 下一步该学什么
按优先级:
- **评测(eval)。**你现在能做出 Agent,但没法量化它好不好。搭一套针对你自己场景的评测集——十几个有明确对错的任务,改完代码跑一遍。没有评测,所有优化都是感觉。
- **可观测性。**结构化日志、每轮 token 用量、每个机制的触发次数、每次故障的分类统计。这是你在生产环境里唯一的眼睛。
- **成本控制。**提示词缓存命中率、模型选择、上下文预算。一个不看账单的 Agent 项目,通常活不过第三个月。
- **沙箱与部署。**容器隔离、只读挂载、网络白名单、密钥管理。第3章的权限闸门是”减少误伤”,这一层才是”限制爆炸半径”。
- **领域化。**给你自己的领域写技能、定工具、建记忆。通用 Agent 的天花板不高,真正的价值在于把它变成”懂你们这摊事”的助手。