Agent 原理与开发实战:从 30 行循环到多智能体 Harness
你大概已经调用过大模型 API:传一段 messages,拿回一段文本,很顺手。可一旦你想让它”帮我把这个项目跑起来”,事情就变了味——模型写出一条命令,你复制、粘贴到终端、执行、再把输出贴回去;它接着写下一条,你再复制一次。十几个来回之后你会发现一件尴尬的事:真正在干活的是你,模型只是在旁边出主意。你成了这套系统里的中间件。
Agent 要解决的就是这件事。但”Agent”这个词在过去两年被用得太滥了:有人说它是提示词工程,有人说它是工作流编排,有人说要靠一个更聪明的模型。这些说法都绕开了最关键的一句话——
智能来自模型,落地来自 harness。
Harness(承载层)就是模型和真实世界之间的那层代码:它把工具递给模型、执行模型的决定、把结果喂回去、在危险动作前踩刹车、在上下文塞满时腾地方、在任务变大时拆解和分工。这层代码里没有魔法,全是可以一行行读懂的工程。
这份教程会带你把这层代码从零建起来。它有一个不太寻常的结构:第1章写出的那段 while True 循环,到第20章一个字都不会变。中间的十九章,每一章都只做一件事——发现一个具体痛点,然后在循环外面挂上一个机制来解决它。到最后你手上会有二十个机制、一个循环,以及一张能自己判断”什么时候该加哪个机制”的地图。
读完之后你应该能做到:
你需要准备的: 会读会写基础 Python,知道大模型 API 大致长什么样。不需要任何 Agent 框架经验。所有示例都用 Anthropic 的 Messages API 与官方 Python SDK(pip install anthropic),模型统一用 claude-opus-5;换成别家的 SDK,循环结构是一样的。
一个安全提醒放在最前面: 后面的代码会让模型生成并执行 shell 命令。请始终在一个临时目录、或者容器 / 虚拟机里跑这些示例,不要在你的主目录或有重要数据的仓库里直接运行。第3章会教你怎么给它装刹车,但在装上刹车之前,请自己当刹车。
路线图。 全书按五层推进,越往后越接近生产:
| 层 | 章节 | 回答的问题 |
|---|---|---|
| 工具与执行 | 第1–4章 | 模型怎么真的动手,动手时怎么不闯祸 |
| 计划与控制 | 第5–8章 | 长任务怎么不跑偏,上下文怎么不塞爆 |
| 记忆与身份 | 第9–10章 | 换个会话怎么还记得,身份怎么按状态拼装 |
| 韧性、并发与调度 | 第11–14章 | 出错怎么恢复,慢活怎么并行,周期性工作谁来记 |
| 多智能体平台 | 第15–19章 | 一个 Agent 扛不动时怎么分工、怎么不互相踩 |
第20章把二十个机制装回同一个循环,第21章给你一套动手项目和自检清单。
读完之后你应该能够
- 用不到一页纸的代码写出一个真正能干活的 Agent,并说清它为什么能干活
- 逐个说出工具调度、权限、钩子、计划、子代理、技能、压缩、记忆、提示词组装、错误恢复、任务图、后台任务、定时、团队、协议、自治、隔离、MCP 这些机制各自由什么痛点触发
- 画出一次完整 Agent turn 的时序,指出每个机制挂在哪个位置
- 面对一个真实需求时,判断"这个功能现在该不该加",而不是把所有机制一股脑装上
章节目录
21 章 · 约 145 分钟- 01 一个 while 循环:Agent 的最小内核 让你变成中间件的那个瞬间:三十行 while 循环,加一个 stop_reason 判断,Agent 就能自己动手了。 8 min
- 02 工具调度表:从一把钥匙到一串钥匙 从一把 bash 到五把专用工具,循环只改一行——能力横向扩展,内核纵向不动。 6 min
- 03 三道权限闸门:把危险挡在执行之前 安全写在提示词里不管用:硬拒绝、规则匹配、人工确认三道闸门,以及为什么拒绝也要回传给模型。 6 min
- 04 钩子系统:把扩展挂在循环外面 挂在循环上,不要写进循环里:四个事件点承接权限、日志、审计与强制续跑。 7 min
- 05 计划可见性:让长任务不跑偏 一个不产生任何副作用的工具,为什么能显著提高长任务完成率。 7 min
- 06 子代理:用上下文隔离换取专注 把子任务丢进独立对话只带结论回来:一笔算得清的上下文收支账,以及你为此放弃了什么。 6 min
- 07 技能装载:目录常驻,正文按需 目录常驻一百 token,正文按需两千 token:二十个技能的常驻成本可以和两个一样低。 6 min
- 08 上下文压缩:先便宜的,后昂贵的 四层压缩先便宜后昂贵,其中有一处顺序调换就会永久丢数据。 6 min
- 09 记忆层:跨会话留住真正重要的事实 压缩是有损的,换个会话更是清零:四类记忆、两条装载路径,以及什么绝对不该记住。 8 min
- 10 系统提示词组装:按运行时状态拼装身份 把系统提示词从死字符串变成按运行时状态拼装的分段,条件依据是真实状态而不是关键词。 6 min
- 11 错误恢复:先分类,再决定重试什么 截断、超长、限流三类故障各有各的恢复动作和次数上限——不分类就重试,纯烧钱。 7 min
- 12 任务系统:把目标拆成可依赖、可跨会话的图 落盘的、带 blockedBy 依赖图的、可被认领的工作单元:完成一个任务要主动扫出被解锁的下游。 7 min
- 13 后台任务:让慢命令不再阻塞推理 慢命令丢进守护线程,结果用独立通知回注——它为什么不能挂回原来那个 tool_use。 7 min
- 14 定时调度:让 Agent 自己醒过来 周期性工作应由 harness 创建而不是让模型记住:四层调度通路,以及 durable 到底保证了什么。 9 min
- 15 Agent 团队:常驻队友与文件信箱 常驻队友加文件信箱:多智能体的收益来自通信省下的返工,不是人多力量大。 8 min
- 16 团队协议:请求-响应的显式契约 优雅关闭与方案审批是同一个东西:request_id 做关联、type 做校验、状态机记生命周期。 9 min
- 17 自治代理:从被指派到自己认领 做完一轮进入空闲而不是退出:队友自己扫任务板认领,Lead 一次指派都不用发。 5 min
- 18 Worktree 隔离:并行不打架 一任务一 worktree:冲突不会消失,但可以从静默覆盖变成合并时的显式报错。 6 min
- 19 MCP 工具:用一套协议接住外部世界 发现加调用两个动作接住整个外部世界,以及连接之后为什么必须重建工具池和提示词缓存。 7 min
- 20 综合装配:很多机制,一个循环 十九个机制按它在一次 turn 中的位置归位,中间那四步从第1章起一个字没变。 7 min
- 21 实战演练、自检清单与下一步 三个递进项目、三层自检清单、四档自评,以及一张「现在疼在哪里就加哪个机制」的对照表。 7 min
常见问题
需要先学某个 Agent 框架吗?
不需要,反而建议先别学。全篇只用官方 SDK 调 Messages API,二十个机制全是几十行可读的普通代码。先把这层看懂,你再去读任何框架时就知道它替你做了什么、以及它在哪里替你做了错误的决定。
这和「写好提示词」是什么关系?
基本无关,这是全书最反直觉的一点。跑偏靠计划清单解决,超限靠压缩解决,危险操作靠权限闸门解决,遗忘靠记忆层解决——二十章里几乎没有一个问题的答案是改提示词。提示词很重要,但它不是这些问题的解药。
二十个机制是不是都得做出来?
恰恰相反。每个机制都有代码复杂度、token 开销和新的失败模式,应该由一次真实的疼痛触发,而不是因为教程里有这一章。第21章给了一张「现在疼在哪里」的对照表,大多数场景三到五个机制就够了。
代码能直接用到生产吗?
不能。正文是教学实现,为了可读性做了大量简化:字符串匹配的权限规则、无锁的任务认领、无环检测的依赖图、模拟的 MCP 服务端。每章的「工程现实」小节标注了生产系统在该处额外要做的事,真正的隔离还得靠容器与网络白名单。
API 参数会不会很快过时?
会,所以正文刻意不依赖易变参数。思考模式、努力程度、服务端压缩这类参数近年多次变更,本书只依赖长期稳定的循环语义与消息结构——stop_reason、tool_use 与 tool_result 的配对关系。具体参数请以你动手时的官方文档为准。