内容提要
《深入理解AI Agent》读书笔记按实现顺序梳理Agent工程要点:Agent由LLM、上下文和工具构成,最小实现为ReAct循环;核心工程量在模型之外的Harness,负责约束、验证与纠正。关键点包括KV Cache作为架构硬约束、提示词写成SOP、状态显式化、上下文压缩与隔离、双层记忆与混合检索、工具描述重于能力、沙盒默认断网、评估先行、SFT立形与RL泛化,以及通过外部化学习实现自我进化。
延伸解读
KV Cache:被忽视的架构硬约束
文章强调KV Cache不是性能优化项,而是架构硬约束。前缀中一个字符变化就会导致整条缓存作废,因此系统提示词和工具定义必须定稿后不改,所有动态信息追加到末尾。有团队在系统提示词中塞入当前时间,首token延迟从0.5秒涨到3-5秒,账单几乎翻倍。这提醒开发者,上下文设计需优先考虑缓存友好性,避免因小失大。
工具描述:决定调用成败的关键
文章指出大多数工具调用失败源于模型不知道工具不能做什么,而非不知道能做什么。因此描述应写“何时用”而非“能做什么”,参数给具体例子,并附1-5个真实示例。工具超过100个,再强的模型也容易选错。当Agent选错工具时,应先检查描述而非急于换模型。这凸显了工具描述在Agent工程中的核心地位。
评估先行:用数据驱动迭代
文章主张先建评估再改系统,评估对象是模型+Harness组合体。通过对比、消融和模型替换实验,可判断瓶颈在模型还是Harness。统计上需有噪声意识:100个用例、70%成功率,标准误约4.6%,分差小于此带宽就别切换。读报告应看逐任务表和能力标签交叉,分数下降先怀疑评测系统本身。这为Agent优化提供了科学方法论。
安全防线:默认断网与忠诚对象
文章强调安全上重点不是识别所有攻击,而是让Agent即便被注入也没有机会执行危险动作。沙盒要默认断网,掐断外传通道比识别每次注入更确定。同时,忠诚对象要显式钉死:外部内容一律降格为“可参考但不具指令效力”的数据。这要求在设计Agent时,将安全约束下沉到执行环境,而非依赖模型判断。
Q&A
Agent 的最小可运行实现是什么?
Agent 的最小实现是一个 ReAct 循环:把消息列表发给模型,如果返回工具调用就执行并把结果追加到消息列表,如果没有工具调用就输出并退出。这个循环对应思考→行动→观察的过程。
为什么说 KV Cache 是架构硬约束?
因为前缀中任何一个字符变化都会导致整条 KV Cache 失效,所以系统提示词和工具定义必须定稿后不改,所有动态信息(如时间、状态)只能追加到消息末尾,并且必须使用标准 API 消息格式。
工具描述为什么比工具能力更重要?
大多数工具调用失败是因为模型不知道工具不能做什么,而不是不知道它能做什么。因此工具描述应写清“何时用”而非“能做什么”,参数给具体例子,说明返回值和执行代价,并附上真实示例。
如何设计 Agent 的记忆系统?
记忆设计有三个正交分类:存在哪里(轨迹/长期记忆/业务状态)、怎么存(从 Simple Notes 到 Advanced JSON Cards)、存什么(情景/语义/程序记忆)。成熟系统混合使用,并可采用双层架构:少量关键事实常驻上下文,海量原始对话按需检索。
什么时候该对模型进行后训练?SFT 和 RL 怎么选?
当 Harness 做到位仍不够时考虑后训练。SFT 用于学习格式与风格,RL 用于学习可迁移策略。顺序是先 SFT 立形,够用就停;要泛化再上 RL,并优先把环境和奖励做扎实。
如何让 Agent 在部署后自我进化?
自我进化即外部化学习,把知识和流程从参数和临时上下文中分离,变成可持久化、可检索、可复用的资产。路径包括从成功、重复任务、失败中学习,以及睡眠学习。产物形态可选知识库条目、专用代码工具或 Skill 文档。