适用读者:要让 Agent 越用越顺手、又不敢让它自己改自己的人。
前置:S21-J14(评估)、J15(后训练)、J10(记忆)。
覆盖旧文:A-4575(Agent 的持续进化,第 9 章,26,935 字符)→ 13 小节 / 约 2.7 万字符。
扩展点:E-S21-050(三层轨迹验证:结果/过程/质量)、E-S21-051(经验沉淀四形态与边界)、E-S21-052("完成≠进步"与睡眠学习)。
上一篇:S21-J15 · 模型后训练:四阶段、SFT 与 RL 的分工
下一篇:S21-J17 · 多 Agent 协作。
1. 一句话结论
保存经历不等于从经历中学习。 把一百条轨迹塞进向量库,不会自动完成"跨案例比较"——学习发生在系统主动完成评价、对照、归纳、验证之后,而不在日志写盘那一刻。
出处:《AI Agent 深入理解》第 9 章(
A-4575)。
上下文学习(J09)→ 只在当前任务内适应
用户记忆(J10) → 沉淀"用户与世界是什么样的"
持续进化(本篇) → 沉淀"在什么条件下应该怎样行动"
2. 为什么不让模型"每次任务后自己训练"
| 风险 | 说明 |
|---|---|
| 学习信号脏 | 用户满意 ≠ 合规 |
| 能力遗忘 | 局部更新导致旧能力退化 |
| 策略漂移 / 安全退化 | 行为漂移出安全边界 |
| 错误经验被固化 | 提示注入可能被写进参数,持续放大 |
| 私有不进基础模型 | 基础模型周期性训练吸不到你的私有规则与工具变化 |
判据:"学习"要先做成模型外围的一套系统——记录证据 → 验证结果与过程 → 跨轨迹提取共性 → 决定更新哪一层 → 待验证版本 → 回归与安全检查 → 才允许改变下一轮运行。
3. 三层轨迹验证(E-S21-050)
问三个问题:办成了吗?是否以允许的方式办成?是否让用户舒服?
| 层 | 验证器 | 证据 | 可靠性 |
|---|---|---|---|
| 结果层 | 结果验证器(代码) | 测试结果、数据库状态、工具返回、退款金额 | 最高,最该先建 |
| 过程层 | 过程验证器(代码) | 业务规则、权限表、动作序列 | 高,可精确表达 |
| 质量层 | LLM-as-a-Judge + Rubric | 轨迹证据引用 + 逐项打分 | 中,需量表与抽检 |
客服 Agent 的七维展开:
| 层 | 维度 |
|---|---|
| 结果 | 任务结果 |
| 过程 | 规则遵从、隐私边界、承诺—行动一致性 |
| 质量 | 表达质量、合规变通 |
| 跨层 | 事实可靠性(可由工具返回核验的部分走代码,其余走 Rubric) |
两个经典反例:删掉失败的测试也能让测试通过(结果对、过程错);口头承诺"7 天内退款" 也能拿到一时满意(质量对、结果未达成)。
4. 经验沉淀四形态(E-S21-051)
| 形态 | 形式 | 生效速度 | 风险 | 适合 |
|---|---|---|---|---|
| 知识 | 文档、知识库条目 | 快(下一轮读入) | 污染知识库 | 事实、规则、术语 |
| 指令 | 提示词/项目指令文件(J12) | 快 | 指令膨胀、互相冲突 | 流程约定、禁区 |
| 程序 | 写工具、写脚本、改 Harness | 中 | 代码缺陷、越权 | 高频重复、确定性操作 |
| 参数 | SFT / RL 更新权重 | 慢(需训与验) | 遗忘、漂移、固化错误 | 通用行为策略 |
升级判据(从便宜到贵):
能写成知识 → 写知识
知识太长/太常触发 → 写成指令
指令复杂/需确定性 → 写成程序
跨任务普遍适用且程序解决不了 → 才考虑参数
原文强调"从更新产物到更新'更新方法'":不只沉淀结论,还要沉淀"如何发现并验证结论"的流程(元层面的进化)。
5. "完成 ≠ 进步"(E-S21-052)
| 陷阱 | 说明 | 防线 |
|---|---|---|
| 完成即算进步 | 任务过了,但靠捷径/降级 | 过程层验证 + 回归集 |
| 只加不减 | 知识/指令只增 → 上下文膨胀 | 定期淘汰、合并、去重 |
| 局部最优 | 单点提升、整体退化 | 全量回归 + 消融(J14 §8) |
| 不可追溯 | 不知道哪次改动导致退化 | 版本化 + 可回滚 + 变更记录 |
5.1 睡眠学习:整合、遗忘与能力保鲜
类比人类睡眠做三件事:
| 动作 | 在 Agent 上 |
|---|---|
| 整合 | 把碎片经验合并成更通用的规则,去掉重复 |
| 遗忘 | 淘汰过时/错误条目(接口变了、规则改了) |
| 保鲜 | 定期回归测试,确认老能力还在 |
判据:没有"遗忘"机制的知识库,最后一定会变成噪声源。
5.2 安全边界:哪些东西不能被进化
| 不能自动改 | 原因 |
|---|---|
| 权限与安全策略 | 自我放宽 = 越权 |
| 奖励函数 | 会学到钻空子 |
| 评估集 | 会"背答案" |
| 审计与日志开关 | 会失去可追溯性 |
6. 可长期运行的进化闭环
① 采集轨迹(含工具返回、环境状态)
② 三层验证打分(结果/过程/质量)
③ 定位首个错误 → 归因(模型 / Harness / 数据 / 环境)
④ 选形态沉淀(知识/指令/程序/参数)
⑤ 生成候选版本(不直接生效)
⑥ 回归测试 + 消融 + 安全检查
⑦ 灰度发布 → 观察 → 保留或回滚
⑧ 定期整合与遗忘
判据:每一步都要能回滚。 不能回滚的"进化",等于给自己埋故障。
7. 反例与排障
| 现象 | 根因 | 处理 |
|---|---|---|
| 越用越差 | 错误经验入库 | 过程层验证 + 定期回归 |
| 指令文件越来越长 | 只加不减 | 整合 + 遗忘(§5.1) |
| 某天开始大量越权 | 权限被"进化" | 权限列入不可自动改清单 |
| 改一处、坏三处 | 无回归集 | 建回归集(J14) |
| 归因错、修错层 | 只看最终结果 | 三层验证 + 首个错误定位 |
8. 自测
- "保存经历"与"从经历学习"差在哪一步?
- 三层验证各由什么实现?为什么结果层最该先建?
- 四形态的升级判据是什么?
- 哪些东西不能被自动进化?
答案
- 差在评价、对照、归纳、验证这四步主动处理。
- 结果层=代码断言;过程层=代码(规则/权限/动作序列);质量层=LLM-as-a-Judge。结果层证据最可靠。
- 知识 → 指令 → 程序 → 参数,能用便宜层解决就不用贵的。
- 权限与安全策略、奖励函数、评估集、审计开关。
9. 下一篇
S21-J17 · 多 Agent 协作 —— 什么时候真需要多个 Agent、六种失败模式、以及"Agent 社会"的实验能给工程什么启示。
本篇属于系列《S21 · Agent 工程与 MCP》。旧文来源:A-4575(第 9 章);扩展点 E-S21-050/051/052。思考题答案由原作者用 AI 生成并经人工审校,本文只做要点索引。