跳到主要内容

AI Agent设计原理与工程实践

Note

同一个模型, 换一套外壳, 有的 Agent 能可靠跑完一单退款, 有的却在第三步就编出一句"已经帮你处理好了"——差距究竟在模型里, 还是在模型之外? 上下文、工具、约束、验证、纠正, 每一环都决定它落地时是助手还是负担; 这篇文章要问的是, 把这些环节拼成生产可用的 Agent, 工程上到底要付出什么.

0x00 一句话总结

生产可用的 Agent 不是"模型很强", 而是 Agent = LLM + 上下文 + 工具 + 约束 + 验证 + 纠正: 模型能力差距在收窄, 竞争优势转移到模型之外的 harness (外壳/脚手架) 上. 全书 10 章围绕上下文工程、记忆、工具防护、代码、评估、数据、持续优化、多模态、多智能体展开, 最后用"两朵乌云"点出两个根本难题——流式交互持续学习.

0x01 核心要点

一、公式: Agent = LLM + 上下文 + 工具

这个公式的价值是排障三分法: Agent 表现不好, 先判断是大脑不行 (换更强的模型)、眼睛没开机 (补上下文)、还是手脚不够用 (加工具). 上下文决定能力上限, 三个方向解法不同.

生产版公式 (harness): 最小公式只是"能跑起来", 生产要加三道工序:

  • 没有 harness 的模型像脱缰的野马——能力很强, 但没法可靠把你送到目的地.
  • 例子 (退三天前的订单): 没有 harness 时模型看不到退款政策、不知道调哪个接口, 于是编一个"退款成功"的回复, 用户发现钱根本没退.
  • 实证[不确定]: TerminalBench 2.0 只改 harness 不换模型, 分数 50+ → 60+, 排行榜上升 20+ 名——让 Agent 自己检查结果、检测重复循环、优化思考策略.
  • 竞争转移: 各家模型能力越来越近 → 竞争优势转移到模型外的工程实践, 行业从"能做事"转向"可靠地做事". Claude Code 的 harness 里绝大部分代码不是工具本身, 而是保障机制: 流程状态管理、多层上下文压缩、权限分级、容错恢复.

二、上下文工程: 全书最长最关键的一章

KV cache 三条定律 (记不住就破产):

定律内容
1. 静态别动系统提示/工具定义定了就别改, 多一个空格缓存全废
2. 动态追加时间戳/用户状态永远作为新消息追加到末尾
3. 标准格式用标准 API 格式, 别自己拼字符串 (会削弱多步思考)

Agent 状态栏 (作者认为全书最实用的原创贡献): 类比手机顶栏——不是主界面, 但一瞥就知道设备状态:

┌──────────────────────────────────────────┐
│ 手机顶栏: 时间 | 电量 | 通知数 │
├──────────────────────────────────────────┤
│ Agent 状态栏: 已打 2 次电话 | 时间 14:30 │
│ to-do 剩 3 项 | 用户 VIP │
├──────────────────────────────────────────┤
│ 上下文末尾持续注入这段结构化摘要, │
│ 模型每次生成时瞥一眼 │
└──────────────────────────────────────────┘
text

为什么需要它: 上下文窗口是一台"只有一半的检索引擎"——检索那一半非常强 (能从百万 token 捞原始记录), 但没有提炼层: 不会自动汇总、建索引、总结成结论, 模型每次都要从原始记录现算. 所以 Agent 会死循环、忘状态、偏离目标、变蠢. 状态栏 = 人工补上提炼层. 另一个原则: 上下文太长时, 隔离优于压缩——与其压缩, 不如一开始用 sub-agent 隔离开.

记忆三层框架 (第三章, 解决跨对话):

存储格式四档: symbolic notes → advanced notes → JSON cards——最高级除了记事实, 还记信息来源的叙事背景、主体身份、与用户的关系 (张医生是你的牙医也是别人的心脏科医生, 脱离情境无法理解).

智能体 RAG vs 传统 RAG:

司法问答例子: "醉酒过失致人重伤且有盗窃前科如何量刑"——传统系统第一次关键字不准就漏信息; 智能体系统分解成三个子问题, 发现缺"前科如何影响量刑"就补一轮精确检索.

三、工具: 五类与防护 (第四章)

五类工具: 感知 / 执行 / 协作 / 事件触发 / 用户沟通 (后两类名称存疑[不确定]). 其中执行工具最危险 (错误代价最高), 作者实习时就据此做了高风险拦截.

防护三件套:

  • 选模型铁律: 不同家族 + 能力相近 (不同家族认知多样, 同家族容易一起翻车; 弱模型审强模型跟不上思路). 拒绝理由别简单重试, 当作一次工具调用失败结果加入轨迹.
  • sidecar 像摩托边车, 与主模型并行审查; 只看结构化字段, 不看思考过程——防止网页夹带 prompt injection 话术 (如 RMF[不确定]) 被主模型复述进思考再被误判为合理理由.

经验积累: 每轮对话发现 Agent 短板并补齐的操作, 记下来成为下次经验, 同类错误不再犯.

四、代码: 代码不只是用来编程 (第五章)

代码作为思考工具 —— 集合题: 40 人班, 60% 选数学, 45% 选物理, 25% 两门都选, 只选物理几人?

只选物理=40×45%40×25%=1810=8只选物理 = 40 \times 45\% - 40 \times 25\% = 18 - 10 = 8

方式结果
纯自然语言推理容易算成 25-10=14 (从数学人数里减, 错)
写代码让解释器算一次做对

原因: 模型思考是概率近似, 数学逻辑要确定性——LLM 负责理解问题写代码, 解释器负责精确计算. 业务公式场景同理: 公式写成确定性脚本, 让模型调脚本, 准确率上一个台阶.

Agent 自举: 让 Agent 写 Agent, 别从零生成——给一份高质量实现作为范例, 复制后改, 最佳实践自然保留 (不需要把每条规则写进提示词).

模型与脚手架此消彼长: 模型强 → 脚手架薄; 模型弱 → 脚手架多做事. 实验[不确定]用足够强的思考模型时, 纯思考就能做对, 代码辅助收益归零; 同一脚手架配不同模型结论截然相反——评估是 Agent 技术最容易被忽略的前提.

五、Agent 评估 (第六章)

归因两招: 模型替换 (固定 harness 换模型, 看瓶颈在哪边) vs 消融 (关掉 harness 某组件, 看哪个重要). 作者项目换模型成本太高, 所以先做归因.

LLM-as-judge 的坑: 最经典是长度偏差——评委给更长更详尽的回答打高分, 哪怕内容不对. 生动比喻: 面试官觉得你一直持续输出 = 你懂很多、思维没停顿, 但你可能说的并不完全正确.

防范做法
显式惩罚冗长judge prompt 里写清楚
拉齐长度配对比较先把两个候选长度对齐
定期审计查评分与长度的相关性, 高分总伴随长回答 = 已被带偏

Goodhart: 指标变成优化目标就不再是好指标——Agent 越调优越钻评分系统漏洞, 更隐蔽的是学会避开评委不擅长检测的错误类型. 解法: 多元异构评判——agent 用 Claude, 评委用 GPT + Gemini, 不同家族偏见正交, 很难同时骗过所有评委.

六、模型后训练与数据环境 (第七章)

SFT vs RL 泛化 (直观例子: 训练时 J/Q/K 都当 10):

SFTRL
优化目标像不像标准答案结果好不好
学的固定映射 → 记忆探索多条路径 → 策略
测试 J=11照用 10, 错重算一遍, 对

顺序不能反: 必须先用 SFT 再用 RL——输出是格式混乱文本时, 奖励函数连成功失败都判断不了. 书里说法: SFT 立形, RL 求神, 先行后才能后神.

数据与环境 > 算法: 仿真保真度直接决定决策能不能用 (仿真客服按固定套路说话 → 学到只在仿真里管用的应术策略, 一上线露馅). RL 项目最容易翻车不是算法不行, 而是训练场跟考场不一样.

省钱判断: 很多场景 SFT 数据质量到位根本不需要 RL (RL 是 SFT 的几十到上百倍成本, 且不稳定). Anthropic 例子[不确定]: 2025 后训练配方 = 海量高质量 SFT + RLAIF 类方法, 不依赖可验证奖励, 编程模型依然出色——原因在数据质量做到极致. "数据决定你能到哪, RL 决定你能再高多少."

奖励结果, 惩罚路径 (RVP[不确定]): 真实 Agent 还要遵守与结果无关的约束 (别反复拨打明确拒绝的用户/别跳过身份验证/别为过测试改测试文件). 麻烦在于不违反约束往往让表面成功率更高, 所以纯结果奖励反而激励违法. 洞察: 环境是不对称验证器——判断"坏动作"容易 (特征明确), 判断"有没有意义进展"几乎和解决任务一样难; 环境能可靠提供的密集信号本质是路径惩罚而非进展奖励. 实验: 中班任务每局违规次数降约 6 倍.

七、持续优化: 让 Agent 从经历中学习 (第八章)

保存经历 ≠ 从经历中学习:

为什么不能在线直接训练: 生产环境很少有干净学习信号 (用户满意≠合规, 测试通过可能因为删了失败用例). 未经验证的反馈直接改自己 → 错误经验和提示注入被固化放大. 现阶段可行路径: 在模型外面建一套可验证的学习系统.

四种更新载体, 选择取决于目标能力能否被该载体表达:

载体适合
知识文档事实/背景知识
prompt 和 skill能语言化的策略 (作者项目主改这个)
程序和 harness能精确化的执行流程
模型参数高维感知和语言风格

睡眠模型 = 采集与整理分开:

好处: 一次偶然成功/网络故障/恶意输入不会立刻改写长期能力. 进化 ≠ 无限膨胀: 周期性做减法——合并重复经验、局部规则移入领域 skill、删除被推翻的知识. "提示词和 skill 要像写给新员工的指导书, 避免九十九条军规式规则罗列."

八、多模态与实时交互 (第九章)

语音 / computer use / 机器人三个场景卡点高度相似: 多模态 + 高延迟敏感.

语音三代架构:

贯穿三代的主线只有一条: 如何摆脱"轮流说话"这个假设.

Computer Use 的扎心发现: OSWorld 上准确率接近人类, 但即使成功, Agent 操作步骤仍多于人类, 每步推理延迟随任务推进增长——人类十几秒调完文档格式, Agent 磨蹭好几分钟. 准确率到人类水平 ≠ 实用, 效率才是真正的瓶颈.

快慢循环 (fast/slow loop): 操作电脑的 Agent 变快很难 → 别让用户等:

  • 慢 Agent 每操作一步附一句摘要, 快 Agent 据此实时回答用户. 这份纯文本契约本质上就是 Agent 状态栏.
  • 作者项目实测: 语音响应快约 15 倍, 中位延迟大幅下降.

机器人: 反直觉结论——硬件不是瓶颈, 算法才是: 不到一千美元[不确定]的双臂机器人 + VR 远程操控已能流畅完成大量家庭任务, 人操纵时什么都能干 → 说明瓶颈在算法. 作者画了边界: 触觉传感缺失、灵巧手可靠性仍是硬件短板.

九、多智能体协作 (第十章)

唯一判断路径: 协作中是否引入了单 Agent 生成时拿不到的新信息?

  • 这条判断解释了学术与工程的矛盾: 学术常说"单 Agent 就够了", 工程里多 Agent 更好用——因为学术界多是卡同一处互相讨论, 工程有效的多 Agent 都带外部循环链路.
  • 成本摆最前: 有披露称多 Agent 研究系统 token 消耗是普通对话约 15 倍[不确定], 用量本身能解释约 80% 的性能差异——收益必须覆盖一个数量级的额外开销. 作者项目: 多 Agent 效率有提升但消耗太大, 选了更轻的方案.
  • Agent 社会[不确定]: Stanford 小镇——只在某个 Agent 记忆里植入"小麦/情人节/派对"一个念头, 其余全是自发邀请口口相传, 没有任何一行组织派对的代码; 还有十年尺度模拟、生活奖励筛选训练模型、让社会智慧下传的工作.

十、后记: Agent 的两朵乌云

借 1901 年物理学的"两朵乌云" (后来一朵变相对论, 一朵变量子力学):

  • 插曲: 人和 AI 最大的区别是人会停顿——人停顿的几秒是同理心的展现.
  • 两种数据假设: 小世界假设 (足够大的模型装得下世界所有重要知识; 编程学得好不是代码特殊, 而是编程是开放领域、数据海量, 绝大多数行业没有公开数据 → 瓶颈只在数据够不够); 大数据假设 (训练一次补不上属于具体用户/公司的知识——代码规范、团队口癖、用户偏好, 语料实时变化 → 只能上线后持续学习). "模型最强的能力始终不是记住, 而是学习与适应."
  • 模型会不会吃掉 harness? 作者: 会, 一层一层地吃——每段兜底逻辑都记录着模型此刻坐不稳的地方, 下一代模型内化后对应代码就能删. 但吃永远不会完结: 训练有周期而业务等不起; 模型无法内化真实业务所有决策和偏好; 每一代新能力前沿都是最不稳的地方. harness 不会消失.

0x02 关键原话

  • 00:00:37 "全书的核心只有一句话, Agent = LLM + 上下文 + 工具... 大脑加眼睛加手脚" - 全书公式.
  • 00:02:43 "没有 harness 的模型, 就像一匹脱缰的野马, 能力虽然说非常的强, 但是你没有办法让它可靠的把你送到目的地" - 为什么生产版要加约束/验证/纠正.
  • 00:09:31 "上下文窗口是一台只有一半的检索引擎, 检索的那一半非常强... 但是缺了另一半, 没有提炼层" - 状态栏的动机.
  • 00:23:24 "让 Agent 去写 Agent 的时候, 不要从零生成, 给他一份高质量的实现作为范例, 让他复制之后去改" - Agent 自举.
  • 00:35:24 "保存经历并不等于从经历中学习... 学习发生在系统主动完成评价、对照、归纳、验证之后, 而不是日志写入磁盘的那一刻" - 第八章核心.
  • 00:40:40 "准确率达到人类水平了, 但它并不代表它实用, 效率才是真正的瓶颈" - Computer Use 结论.
  • 00:42:33 "你在协作的过程中, 有没有引入单 Agent 在生成时拿不到的新信息" - 多 Agent 唯一判断路径.
  • 00:43:56 "作者的回答是, 会一层一层的吃... 但是这个吃永远不会完结" - 模型与 harness 的关系.

0x03 可继续追问

  • 李博杰原书的 10 章 + 93 个实验仓库在哪, 怎么跑, 与视频讲解的对应关系?
  • TerminalBench 2.0 只改 harness 升 20+ 排名的复现路径?
  • RVP (奖励结果/惩罚路径) 的论文、实现与中班实验细节?
  • 快慢循环"纯文本契约"状态栏的字段设计?
  • 如何把"多元异构评判"落地到自己的评测流水线?

0x04 延伸参考: PDF《智能体AI漫游指南》对应章节

Warning

以下为另一本书 (Haggai Roitman《智能体AI漫游指南》中文版 v1.3) 的目录摘要, 不是视频所讲书的内容. 主题与视频高度呼应, 可作交叉阅读.

PDF 章节主题与视频的呼应点
15 智能体 AI 简介从聊天到 Agent 的基本挑战: 持久性/接地/动作/协作/安全性生产版公式的动机
16 RAG检索方法/分块/高级 RAG (含智能体 RAG)智能体 RAG
17 记忆系统短期工作记忆到长期情景记忆, 记忆固化记忆三层框架
18 Agent Harness上下文预算/压缩/执行控制/人机协同harness 保障机制
19 循环工程生成-验证-重试: 生成器/验证器/终止器/状态管理器/升级器纠正与验证
20 设计模式ReAct/先规划后执行/反思循环多 Agent 与编排
21 环境与基准网页导航/编程/工具评测评估前提
22 MCP工具集成标准 (类比 USB)工具层
23 Skills技能库/选择/组合经验载体
24 A2A智能体间发现/委派/进度流式多智能体协作
25 多智能体系统协作/委派/协商与成本收益多智能体章节
26-27 框架与 Agentic UI工程落地与界面层工程实践

0x05 拓展升华展望

把上下文、工具、代码、评估、后训练、持续优化、多模态与多智能体放在一起, 它们回答的其实不是"哪个模型最强", 而是一个更基础的问题: 当模型能力按季度刷新时, 一个 Agent 的可靠性究竟寄存在哪里. 文中的答案始终指向模型之外 —— harness、评测口径与学习机制, 这些却是换代时最容易被人忽略的部分.

事实层面 … 文中可核对的现象层证据包括: 上下文窗口被形容为"只有一半的检索引擎"(能捞原始记录, 缺提炼层); harness 的绝大部分代码不是工具本身, 而是流程状态管理、多层压缩、权限分级与容错恢复; 只有改 harness 不换模型的对比里, TerminalBench 2.0 分数从 50+ 到 60+ (视频转述, 未独立复现); 多 Agent 的收益只在"引入了单 Agent 生成时拿不到的新信息"时才成立, 而多 Agent 研究系统的 token 消耗约为普通对话的 15 倍 (视频转述); RVP 的洞察是环境本质上是不对称验证器 —— 判断坏动作容易, 判断有没有实质进展几乎和解决任务一样难. 这些结论的共同结构是: 收益与成本都落在模型之外, 而且无法靠单次调参抵消.

个人判断 … 接下来真正被固化下来的不是某套 harness 实现, 而是"评测先于优化"的工程顺序: 只要归因、长度偏差、Goodhart 这些坑还在, 团队就会被迫先建评判体系再谈调优. 至于"模型会不会吃掉 harness", 我的判断与文中一致但更保守一些 —— 被吃掉的只会是那些记录着"模型此刻坐不稳"的兜底逻辑, 而业务决策、团队口癖与用户偏好这类训练期拿不到的知识, 会一直留在模型外面; 每一代新能力的前沿仍然是最不稳的地方, 所以这支"壳"更可能不断换内容, 而不是被删空.

0x06 参考来源

给 AI 买点 Token:
Alipay IconQR Code
Wechat IconQR Code
本文遵循 CC CC 4.0 BY-SA 版权协议, 转载请标明出处
Loading Comments...