Skip to content

Agent 持续进化:从运行轨迹到可发布能力

Agent 持续进化不是让生产系统“边跑边改自己”,而是把运行轨迹转化为有来源的候选修改,再经过独立验证、灰度和回滚,晋升为新的稳定能力。面试中要同时讲清学习信号、更新载体、发布门禁和不可自改的可信根。

一、先划边界:记住不等于学会

很多系统把聊天记录写进向量库,就宣称 Agent 会“持续学习”。这最多解决了信息留存,不代表能力真的改善。

对象解决的问题典型载体生效范围关键风险
会话上下文当前任务下一步做什么messages、临时 state单次会话/任务上下文膨胀、旧指令干扰
用户记忆下次是否记得用户偏好与事实记忆条目、情景摘要用户/项目/租户错误记忆、隐私和越权
经验资产相似任务能否复用成功方法知识、Prompt、Skill、代码一类任务或一个 Agent 版本规则冲突、错误经验固化
模型参数是否获得跨任务的隐式行为能力SFT/RL/Adapter 权重模型服务范围遗忘、分布漂移、回滚昂贵

判断“系统是否在进化”,至少要看四件事:

  1. 更新:规则变化后能替换旧知识,而不是继续追加冲突条目。
  2. 迁移:经验能帮助没见过的新任务,而不是只记住原题答案。
  3. 保持:新能力上线后,旧任务和安全边界没有明显退化。
  4. 治理:每次变化都有证据、版本、验证结果和回滚路径。

三个容易混用的词也要分开:反馈回流只是让结果、纠正和投诉进入证据管道;在线学习描述能力在服务期间更新的时机,并不天然代表安全;持续进化则是从证据到候选隔离、验证、发布、回滚和淘汰的完整能力生命周期。线上反馈不得绕过这条生命周期,直接改写正式 Memory、Prompt、Skill、Harness 或模型参数。

因此,用户说“以后报告都先给结论”可以成为一条受控记忆;十次工单都因同一种工具参数错误而失败,才可能形成一个待验证的 Skill 或代码修改。两者不能混为一谈。

二、学习信号:从轨迹中提取什么

Agent 的轨迹包含输入、上下文版本、模型决策、工具调用、外部状态、人工修改和最终结果。持续进化不能只读最终回复,更不能把模型的“我完成了”当成成功证据。

证据层回答的问题高可信信号不能单独作为真相的信号
结果证据任务真的完成了吗数据库状态、测试结果、业务回执;用户对主观质量的明确确认模型自述、文风评分
过程证据为什么成功或失败工具参数、错误码、审批记录、重试与人工修改隐藏推理文本、无来源总结
质量证据这种做法值得推广吗成本、延迟、安全事件、返工率、可维护性评审单次点赞、代理指标短期上涨

推荐的证据处理管道:

text
原始轨迹 -> 脱敏与来源标记 -> 确定性结果校验 -> 聚类重复问题
        -> 根因假设 -> 候选修改 -> 独立验证

网页、邮件、RAG 文档和工具输出可能包含 Prompt Injection,只能作为“不可信事实材料”;模型反思可以提出假设,但不能批准自己的修改。只有外部状态、独立测试或经过授权的人类反馈,才能把候选经验推进到下一阶段。

还要保留失败和阴性结果。若日志只保存成功轨迹,离线学习会产生幸存者偏差:它可能反复采用一个“偶尔成功、经常超时”的策略,却看不到被丢弃的大量失败样本。

三、更新载体:知识、指令、程序还是参数

同一个 bad case 可以写到不同位置,但治理成本完全不同。默认原则是:选择影响面最小、最容易归因、验证和回滚的载体。

更新载体适合内容示例验证方式何时不要用
知识可引用事实、案例、外部规则新退款政策、已知故障解法检索命中、引用准确、时效检查事实需要确定性执行时
Prompt / Skill可用语言描述、需判断何时使用的策略“退款前先核对订单主体”激活率、遵循率、边界用例规则必须百分百强制时
程序 / Harness稳定流程、校验、权限和恢复逻辑金额上限、幂等键、熔断器单测、集成测试、沙箱回放任务仍高度开放且规则不稳定时
模型参数隐式、跨任务、规模化行为工具选择、复杂规划习惯留出集、对抗集、遗忘评估样本少、规则常变、需即时撤回时

一个实用的选型顺序

text
是外部事实吗?             -> 知识,并保留来源与有效期
能写成局部自然语言策略吗? -> Prompt/Skill,按场景加载
必须确定性执行吗?         -> 程序/Harness,模型无权绕过
是大量任务共有的隐式能力? -> 数据充分后再考虑参数更新

例如客服 Agent 多次超过退款上限:若只是政策变了,更新知识;若模型常忘记核对主体,新增局部 Skill;若退款金额绝不能越界,把校验写进 Tool Gateway;只有在大量不同业务中都表现出工具选择能力不足时,才考虑后训练。

不要每出现一个 bad case 就给全局 Prompt 加一条“军规”。规则会互相遮蔽、占用上下文,并破坏跨请求的稳定前缀,降低 Prefix/Prompt Cache 复用;是否影响单次推理中的 KV Cache,则取决于服务实现。规则堆叠到最后,往往没人说得清哪条规则产生了效果。

四、核心架构:在线执行与离线进化双循环

生产系统最重要的隔离是:在线循环完成任务,离线循环修改候选能力。 正式版本不在服务真实用户时直接改写自己。

text
                         ┌──────── 在线稳定执行 ────────┐
用户请求 -> Agent Gateway -> Stable Agent -> Tool/业务系统 -> 结果
                         │       |               |        │
                         └───────+---------------+────────┘
                                 v
               防篡改证据索引、回执、人工纠正、版本信息
                  (业务内容按保留与删除策略治理)
                                 |
                                 v
┌──────────────────────── 离线进化控制面 ────────────────────────┐
│ 聚合与脱敏 -> 根因诊断 -> 生成候选 -> 回归/安全/留出集验证       │
│                                      |                         │
│                           拒绝 <-----+-----> Canary -> 晋升/回滚 │
└──────────────────────────────────────+─────────────────────────┘
                                       |
                         Versioned Capability Registry
                       知识 / Prompt / Skill / Harness / 参数

两条循环通过三个版本化资产连接:

  • Evidence Store:保存脱敏轨迹、外部回执、人工纠正和来源引用。
  • Capability Registry:保存正式与候选知识、Skill、代码和模型版本。
  • Evaluation Registry:保存训练集之外的回归集、安全集、留出集和门槛版本。

在线 Agent 只读取 active 能力。离线控制面可以生成候选,但不能直接更改生产别名;发布服务依据独立评测结果和审批策略执行晋升。

五、候选能力的数据模型与生命周期

一条候选修改不应只是“把 Prompt 改成这样”,而应包含基线、证据、风险和验证结果:

json
{
  "candidate_id": "cand_01K...",
  "artifact_type": "skill",
  "base_version": "refund-agent@42",
  "evidence_refs": ["trace_188", "ticket_921"],
  "change": { "skill": "verify_refund_subject", "revision": 3 },
  "risk_level": "high",
  "evaluation": {
    "held_out_gain": 0.06,
    "regression_rate": 0.0,
    "safety_gate": "passed"
  },
  "status": "validated",
  "rollback_to": "refund-agent@42"
}

候选生命周期:

text
proposed -> validated -> canary -> active
    |           |          |         |
 rejected    rejected   rolled_back  deprecated
  • proposed:只有根因假设和候选 diff,不服务真实流量。
  • validated:通过离线回归、安全和留出验证,仍未证明线上有效。
  • canary:只进入受控租户或小比例流量,监测收益与副作用。
  • active:成为稳定版本,但继续保留基线、证据和回滚目标。
  • deprecated:被新规则替代或长期未使用;先停止激活,再按保留策略归档。

版本必须覆盖模型、系统 Prompt、Skill 集、工具 schema、策略、知识快照和评测门槛。只记录“模型版本变了”无法重放一次真实进化。

六、验证体系:既评更新器,也评任务 Agent

持续进化包含两个不同能力:

  1. 更新能力:离线更新器能否提出真正有价值的候选修改。
  2. 受益能力:任务 Agent 能否在正确场景激活并遵循新能力。

一个 Skill 写得正确但从未被路由命中,端到端结果仍不会变好;一个候选被频繁激活但本身错误,则会扩大事故。两者必须拆开评估。

指标计算口径主要诊断对象
候选修改有效率独立验证通过候选 / 全部候选更新器与根因诊断
产物激活率应激活样本中实际加载候选的比例检索、路由与上下文组装
规则遵循率激活后动作满足新约束的比例模型执行与 Tool Gateway
留出任务增益未参与候选生成的任务提升泛化而非记题
旧能力回归率原通过样本变失败的比例冲突、遗忘与规则覆盖
安全退化率越权、泄露、注入绕过的变化安全门禁与策略
成本/延迟变化token、工具次数、P95 延迟差值收益是否值得代价
在线业务收益任务解决率、投诉率、人工接管率相对稳定版的变化Canary 是否产生真实价值
回滚率Canary/Active 后回滚版本比例离线门禁有效性

评测集至少分四层:候选直接相关集、历史回归集、未见过的留出集和安全对抗集。生成候选使用的轨迹不能同时充当最终验收集,否则更新器很容易对已知 bad case 过拟合。

高风险修改的晋升门槛可以写成程序化策略:关键业务状态零回归、安全对抗不退化、收益达到最小阈值、成本不超过预算,并由独立 reviewer 或责任人批准。

七、安全边界:可信根不能参与自我修改

持续进化的危险不是一次回答错,而是把错误升级成长期规则。普通进化流程必须被限制在明确的写入集合内。

可生成候选但不能自行发布的对象:

  • 领域知识、Prompt、Skill 和工作流局部配置。
  • Harness 代码、工具描述、检索与路由策略。
  • 训练数据候选与模型 Adapter。

不可由普通进化流程修改的可信根:

  • 权限策略、审批规则和高风险动作边界。
  • 评测器、测试用例、发布阈值和样本隔离规则。
  • 防篡改的审计元数据、数据来源记录和版本签名;业务内容仍受保留与删除策略治理。
  • 稳定版本备份、回滚通道和紧急停止开关。

如果一个 Agent 可以修改批准自己的评分器,它只需降低门槛就能“证明进步”;如果它能删除失败轨迹,就能制造虚假的成功率。评价器、证据和发布权必须与候选生成器隔离。

八、失败模式与修复策略

失败模式典型表现根因修复
提示注入被固化网页里的恶意指令变成长期 Skill不可信内容直接进入写入链路来源分级、候选隔离、人工/安全审查
奖励投机指标上涨但用户问题没解决优化了代理指标引入外部业务结果与多指标门禁
幸存者偏差反复推广偶尔成功的高成本路径失败轨迹被丢弃保存阴性结果、停止原因和分母
自评自批生成器总能通过自己的 Judge职责未隔离独立 evaluator、确定性验证与抽检
Prompt/Skill 膨胀规则冲突、激活不稳定、成本上涨只追加不整理局部 diff、去重、作用域和过期策略
评测器污染留出集越来越高,线上无提升训练证据泄漏进验收集数据血缘、冻结留出集、定期换题
灾难性遗忘新场景提升,旧任务大幅退化参数或规则覆盖过宽分层回归、Adapter 隔离、快速回滚
版本不可复现无法解释哪个变化导致退化只保存最终文本全栈版本、证据引用和原子发布

开放式研究、战略和复杂设计还存在“完成不等于进步”的问题。流程跑完、文档生成、单元测试通过,只说明可测代理目标达成;问题价值、长期维护和真实业务收益仍需要更慢的人类判断与延迟指标。

九、离线整理:合并、遗忘与能力保鲜

能力库不能只增不减。可以按时间、轨迹数量、错误率或容量触发一次离线整理周期:

  1. 定向:加载正式能力清单、所有权、不可修改边界和当前版本。
  2. 采集:只读取已脱敏、已评价且有来源的近期轨迹。
  3. 整合:聚类重复经验,识别冲突,优先生成局部候选 diff。
  4. 验证:在回归、留出和安全集上评测,高风险候选等待审批。
  5. 修剪:标记过期知识、重复 Skill 和长期未使用工具,重建索引并保留回滚版本。

这类过程有时被称为“睡眠学习”,但它只是在线采集与离线整合的类比,不代表 Agent 可以无监督地自我升级。低使用率也不能直接等同于无价值:应结合业务关键度、替代能力、最近验证时间和所有者确认决定归档。

十、系统设计题:企业客服 Agent 持续改进平台

需求与边界

客服 Agent 处理退款、物流和账户问题。平台希望从线上失败、客服改写和用户投诉中持续改进,但必须满足:单次用户输入不能直接修改生产策略;退款等写操作始终受确定性政策约束;每次更新可解释、可灰度、可回滚。

参考架构

text
Channel -> Agent Gateway -> Version Resolver -> Stable Agent Runtime
                                            |-> Context/Skill Registry (read only)
                                            |-> Policy-aware Tool Gateway
                                            |-> Trace + Business Receipt Outbox

Evidence Pipeline -> Redaction -> Outcome Verifier -> Failure Cluster
                                                    -> Candidate Factory
                                                    -> Eval & Safety Lab
                                                    -> Approval/Release Controller
                                                    -> Version Registry

关键数据流

  1. Gateway 固定本次运行的 Agent 全栈版本,任务中途不漂移。
  2. Tool Gateway 返回结构化回执;客服改写保存为带主体和原因的反馈事件。
  3. Evidence Pipeline 脱敏并关联 trace_id、业务结果和版本,不把自由文本直接当规则。
  4. Failure Cluster 只对重复、可归因问题触发候选生成;孤立故障继续积累证据。
  5. Candidate Factory 先决定改知识、Skill、Harness 还是参数,再生成最小 diff。
  6. Eval Lab 使用隔离的回归、留出和安全集;发布控制器只接收签名结果。
  7. 高风险候选经人工批准后进入指定租户 Canary;监控退化则自动切回 rollback_to

上线门禁

门禁示例要求
正确性退款与身份核验关键样本零回归
泛化留出任务有稳定增益,而非只修复原始工单
安全注入、越权、敏感数据对抗集不退化
成本P95 token、延迟和工具次数在预算内
运维可观测、可停止、可回滚且责任人明确

事故处置

若 Canary 投诉率升高,先冻结新晋升和候选生成,流量切回稳定版本;再按版本、租户、证据来源定位影响范围,撤销受污染的 Skill/知识索引,保留审计记录。修复后用事故样本扩充回归集,但仍要保留独立留出集,避免只会修这一道题。

十一、项目讲法

项目讲法模板

我们没有让线上 Agent 直接改 Prompt,而是建设了在线执行和离线进化双循环。在线只运行固定的稳定版本,记录工具回执、人工纠正和成本等可审计证据;离线按重复根因生成知识、Skill、Harness 或参数候选。候选先跑历史回归、独立留出和安全对抗集,再经审批进入租户级 Canary。评测既看候选本身是否有效,也看任务 Agent 能否正确激活和遵循。权限策略、评测门槛、审计日志与回滚备份属于可信根,进化流程无权修改。这样改进可以持续发生,但每次变化仍可解释、可验证、可回滚。

十二、与已有专题的分工

本页只负责把这些能力串成“证据 -> 候选 -> 验证 -> 发布 -> 整理”的持续进化生命周期。

十三、参考资料

高频追问

Q:持续进化和 Agent Memory 有什么区别?

Memory 保存可再次读取的信息;持续进化还要从多次证据中诊断根因、选择更新载体,并经过验证和发布。记住用户喜欢表格是记忆;把反复成功的分析步骤晋升为 Skill,才是能力更新。

Q:为什么不让 Agent 每次失败后自动改 Prompt?

单次失败可能是外部故障、偶发采样或恶意输入。立即改 Prompt 会过拟合并固化注入,还可能破坏旧能力。应先积累可信证据,生成候选 diff,再走独立回归和灰度。

Q:如何选择 Skill、代码还是微调?

需要模型按场景判断的语言策略放 Skill;必须强制且可程序化验证的规则放代码/Harness;跨任务、隐式且有大量高质量数据支撑的能力才考虑微调。默认选最小、最好回滚的载体。

Q:如何证明 Agent 真的学会了,而不是记住评测题?

隔离候选证据与留出集,改变用户、表述和局部环境测试迁移;同时测试旧能力保持、规则变化后的替换和安全边界。只在原始 bad case 上提升不算学会。

Q:为什么要拆“候选有效率”和“产物激活率”?

前者衡量更新器有没有提出好修改,后者衡量运行时能否在正确场景加载它。混成总分后,检索失败、模型不遵循和候选本身错误会无法区分。

Q:哪些东西绝不能让 Agent 自己改?

批准它的评测器、发布门槛、权限策略、审计证据、稳定备份和紧急停止开关。否则系统可以通过删失败样本或降门槛伪造进步。

Q:何时应该停止继续进化?

证据不足、留出收益不稳定、旧能力或安全退化、成本超过收益,或者评价目标本身无法可靠测量时,应停止自动晋升并转人工决策。

Q:能力库越来越大怎么办?

为知识和 Skill 设置作用域、所有者、来源、最后验证时间和过期状态;离线合并重复项、处理冲突、归档长期未用能力,并定期验证路由与工具仍然有效。

基于 MIT 许可发布