基于李博杰《深入理解 AI Agent:设计原理与工程实践》第8章学习笔记

今天的 Agent 面临一个鲜明的能力悖论:它可以零样本解决从未见过的复杂任务,却可能在处理了一万次相似任务之后,第二天仍然犯下第一天的错误。

前几章讲的都是”会完成任务”:上下文工程让 Agent 在当前任务内适应,记忆库让它记得用户与世界是什么样的。第 8 章要回答更本质的问题——如何让 Agent 从”会完成任务”走向”能够可靠工作”。核心是四个字:持续进化

先划清一个容易混淆的界限:保存经历 ≠ 从经历中学习。 把一百条轨迹放进长上下文或向量库,只帮助模型找回某个案例,却不会自动完成跨案例比较。学习,发生在系统主动完成”评价、对照、归纳、验证”之后,而不是日志写入磁盘的那一刻。

更重要的是:模型自身还不能可靠地持续学习。 部署后的模型不会因为一次推理自动改变参数;生产环境又很少提供干净的学习信号。因此现阶段最可行的路径,是在模型外围构造一套自主学习系统:记录运行证据 → 验证结果与过程 → 从多条轨迹提取共性 → 决定更新什么 → 经回归验证后发布。


一、起点不是”总结”,而是”评价”

持续进化的第一步不是让模型反思,而是先判断:这次运行到底好在哪里、错在哪里?

有的任务结果容易验证(Coding Agent 跑测试、退款 Agent 查订单状态),但结果正确并不代表过程正确。可靠评价既要看结果,也要检查达成结果的路径。图 8-2 给出了三层验证结构:

层级 验证器 回答的问题 主要证据来源
底层 结果验证器 事情是否真的办成 测试结果、数据库状态、工具返回
中层 过程验证器 是否以允许的方式办成 业务规则、权限、动作序列
上层 质量验证器 是否办得合适 LLM Rubric 逐项评分

越靠下的指标越应依赖代码和环境真值,只有难以形式化的部分才交给语言模型。 用 LLM-as-a-Judge 时不能只给模糊总分,要预先定义 Rubric(评价量表),逐项给分、引用轨迹证据、证据不足时明确表示”不确定”。

以客服为例,一套有用的 Rubric 至少覆盖:任务结果、规则遵从、隐私边界、事实可靠性、承诺—行动一致性、表达质量、合规变通。其中”承诺—行动一致性“尤其适合 Agent 场景——传统文本评价只读最终回复,容易把”我已经为你提交退款”当作良好服务;轨迹评价则继续检查是否真的调用了退款工具、订单状态是否改变。

验证结果不应压缩成一个标量。 维度化信号保留了问题性质和证据位置,后续模块才能判断该补知识、改提示词,还是在 Harness 里加一致性检查。同时,验证器负责给评价和证据,修改 Agent 哪个部分应由独立的诊断模块决定,避免同一个模型既当裁判又直接改写规则。


二、持续进化的四种方法:把经验写到哪里?

学习信号说明了”应当改变”,但没说改变发生在哪里。选择更新方式的首要依据是目标能力能否被某种载体自然表达。

更新方式 适合承载 主要优势 主要局限
经验知识库 事实、经验规律、例外与来源 更新快、可追溯、按需检索 依赖检索和模型正确应用
Prompt 与 Skill 可语言化的判断原则和操作规范 可解释、作用范围可控 容易膨胀、冲突或被忽略
程序与 Harness 确定性流程、工具和强约束 可测试、执行稳定、成本低 开发与维护成本较高
模型参数 高维感知、生成风格和隐式策略 泛化能力强、推理开销低 更新与回归成本高

关键认知:四种方式并不互斥,而是把每种能力放到最适合表达和治理它的位置。

将经验沉淀为知识

最轻量方式是把反复出现的经验整理成可检索知识文档。它与第三章的记忆库共享技术,但来源和验证目标不同:第三章提取”用户与世界是什么样的”,本章提取”在什么条件下应该怎样做”。

原始轨迹不适合作为正式知识单元。 稳妥系统保留三层数据:不可变的原始轨迹(审计)、单次运行的结构化分析、多条轨迹跨轨迹归纳后的 Markdown 文档。真正有迁移价值的内容来自对照:成功轨迹做了什么、失败轨迹缺少什么。Reflexion 的自然语言反思可参与生成候选教训,但反思本身不是证据——只有与环境结果相符、得到跨轨迹支持并显示正向迁移的内容才应进入正式文档。

将经验写成指令

当规律能用自然语言清楚表达时,可把经验从”可参考”提升为”应遵守”的规则。修改不应表现为反复重写整份系统提示,而应根据一组同类失败生成最小 diff,注明作用域、检查矛盾、在边界案例和旧任务保留集上同时评估。

Andrej Karpathy 在 2025 年称之为系统提示学习(System Prompt Learning):预训练学知识、微调塑造习惯性行为,但人类还有一种学习——想通方法后用语言提醒未来的自己。他把缺少这种”记事本”的 LLM 比作电影《记忆碎片》的主角。提示词自动优化已有几条路线:DSPy(把多模型调用程序视为可优化对象)、OPRO(让 LLM 根据历史提示词和得分提出候选)、GEPA(用失败轨迹反思生成筛选候选)。

将经验写成程序

当经验描述稳定、重复、可验证的操作时,更合适的是把经验编译为工作流、工具或 Harness 代码——就像电子表格的宏录制。浏览器工作流编译有六步生命周期:捕获轨迹 → 参数化 → 定义状态检查 → 候选验证 → 匹配与回放 → 失效与重学。PreAct 实验中这类程序在重复任务上实现 8.5~13 倍端到端加速。

Agent 修改自己的代码,不意味着运行中进程直接覆盖自身。 生产系统应从稳定版本创建候选分支、生成最小补丁、依次通过静态检查/单元测试/安全扫描/失败重放/旧任务回归,再灰度部署。每个修改请求还应是一份可证伪的变更契约;候选生成器还应包含必须保留的成功行为和此前被拒绝的修改记录。

将经验写入参数

知识、指令和程序都建立在一个前提上:目标能力能被外部符号较完整表达。但医疗影像理解、自然语音韵律、长程规划等能力必须通过后训练写入参数。是否参数化不由”任务是否长期稳定”单独决定——稳定性影响更新频率和成本,但能力的表示性质决定主要载体

从更新产物到更新”更新方法”

优化对象可逐层扩大:单条规则/记忆 → 结构化上下文 → 工作流 → Harness 代码 → 优化器代码。这是五种不同的搜索尺度。最内层只改产物内容,易归因回滚,是默认选择。Agentic Context Engineering(ACE) 把上下文维护成带稳定标识符的条目集合,用增量更新合并去重;Meta Context Engineering(MCE) 拆成内外双循环,外层修改搜索、选择、过滤这些操作本身。

优化层级并非越高越好:更大候选空间、更高评估成本、更严重归因困难。应优先做局部补丁;无论上升到哪层,评价器、权限边界和留出测试都必须位于可修改范围之外——这个”可信根”越重要。


三、双循环:在线执行与离线进化

四种更新方式只有进入同一个自主循环,才会从单次优化变成持续进化:

1
2
3
4
5
6
7
8
9
10
在线执行循环              离线进化循环
稳定版Agent               聚合与诊断
   │                     寻找共同根因
   │ 记录轨迹与反馈           │
   ↓                     候选修改
版本化经验日志      ←→    知识·指令·程序·参数
   │                     回归与安全验证
   │                     保留旧能力
   ↓                     灰度、监控与回滚
通过验证的新版本  →        晋升为新稳定版

在线执行循环只完成任务并记录证据,不直接改写正式 Agent;离线进化循环聚合轨迹、诊断根因、生成候选修改,通过验证门槛发布新版本。

Voyager 展示了较完整的持续进化循环,由三个机制咬合:自动课程生成器、技能库、迭代提示机制。自动课程、可执行技能、环境验证缺一不可。

从问题定位到经验沉淀

同一个表面问题可能需要不同修改方式。进化模块应先定位根因,再选择最小、最容易验证和回滚的修改对象。 证据不足的偶发故障不应立即触发学习,而应继续积累样本。选择也随经验增加而变化:新策略先作经验文档,多案例验证后提升为知识,再按表达性质沉淀为 Skill、工具代码或参数。

验证、发布与回滚

所有修改首先产生候选能力或候选 Agent,而非直接覆盖生产版本。验证通过后仍要灰度发布,关键指标恶化时自动回滚。验证还要区分两种能力:Harness 更新能力(产生有价值的持久修改)与Harness 受益能力(任务 Agent 找到、激活并正确使用这些修改)——不能只用端到端分数反推更新器好坏,双向模型替换更容易定位瓶颈。长期评价至少观察五类结果:回退、泛化、Token 效率、安全性、长期工程质量。

可验证闭环的边界

开放式科研、战略规划、复杂产品设计评价信号来得慢、正确答案不唯一,此时 Harness 可能稳定地产出”像成果的东西”却没有推动真实目标。自动科研暴露三类问题:实现漂移、认识论过度乐观、隐性判断力不足。这类任务要改变证据和监督结构:结论与证据分离、保留负面结果、维护搜索多样性、让人类在更高层介入。持续进化的上限,取决于系统能否评价它真正关心的目标,而不只是最容易测量的代理指标。

持续进化的安全边界

三道安全边界:证据与指令隔离(不可信证据经 LLM 总结、PR 审阅后才能写入)、候选与正式能力隔离(新产物先入候选区,过安全检查后才服务真实流量)、安全机制不可自我修改(不能修改批准自身更新的验证器、测试用例、发布门槛、审计日志)——否则只需降低测试阈值就能把退化伪装成进步。

睡眠学习:整合、遗忘与能力保鲜

在线 Agent 完成当前任务并追加不可变证据;后台学习进程在空闲期读取新经历、合并重复、解决冲突、提出候选更新并运行回归。 典型周期五步:触发 → 定向 → 采集与整合 → 验证与审批 → 修剪与索引。Hermes 给出完整案例:有界 MEMORY.md、SQLite/FTS5 历史检索、按需 Skill,历史检索返回原始消息而非先由 LLM 摘要,后台复盘可创建或局部修订 Skill,Curator 空闲期执行确定性修剪。

持续进化也不是让知识无限增长,上下文腐化会在更长时间尺度上重现:经验冲突、Prompt 被边界规则淹没、Skill 库重复、灾难性遗忘。系统需周期性离线整理:合并重复经验、把局部规则移到领域 Skill、保持 Prompt 清晰、重新验证长期未用工具、删除被推翻知识、从原始基座重训 LoRA。


本章小结

  • 持续学习正在成为 Agent 最重要的能力之一,但今天的模型还无法自行完成可靠的持续学习。 现阶段更可行的路径是在模型外围建立可验证的学习系统
  • 更新方式由能力的表示性质决定;应优先采用可归因、可验证、可回滚的局部修改
  • 持续进化需要把在线执行与离线学习分开:在线记录证据,离线生成并验证候选更新。闭环在结果可自动验证的任务上最可靠;对目标模糊的开放任务,人仍需参与问题定义和评价标准的制定

第 8 章把前七章组装成一个完整闭环:第 2 章处理任务内状态,第 3 章提供知识基础设施,第 5 章赋予创造工具的元能力,第 6 章建立评估验证,第 7 章说明如何更新参数,第 8 章把这些部件组织成持续进化系统。 模型自身目前还不能可靠持续学习,但“在模型外围构造可验证的学习系统”这一工程路径,已在 Voyager、Hermes、PreAct 等系统中被证明可行——这或许就是下一代 Agent 从”聪明”走向”熟练”的关键一步。