agent-evolution
bojieli/ai-agent-book/skills/agent-evolution/SKILL.md
让 Agent 从运行经验中持续学习、构建自进化闭环时使用——涵盖从运行轨迹提取学习信号(三层轨迹验证)、四种进化方式(经验知识库、Prompt/Skill、程序/Harness、模型参数)的适用边界与选择依据、Prompt 自动优化、轨迹编译为程序、Agent 自我修改与安全门禁、睡眠学习与长期分层评估。触发词:持续进化、自进化、经验学习、轨迹验证器、自我修改、进化闭环。
Skill53k starsChanged 3 months ago
What's in it
- Agent 持续进化
- 何时使用
- 核心原则
- 实践模式
- 1. 轨迹验证器(学习信号的来源)
- 2. 经验知识提炼管道(五步)
- 3. 经验写成 Prompt/Skill(指令更新)
- 4. 经验写成程序(程序化经验)
- 5. 经验写入参数
- 6. 双循环与睡眠学习
- 7. 进化效果的分层评估
- 常见陷阱
- 配套代码
- 深度阅读
--- name: agent-evolution description: 让 Agent 从运行经验中持续学习、构建自进化闭环时使用——涵盖从运行轨迹提取学习信号(三层轨迹验证)、四种进化方式(经验知识库、Prompt/Skill、程序/Harness、模型参数)的适用边界与选择依据、Prompt 自动优化、轨迹编译为程序、Agent 自我修改与安全门禁、睡眠学习与长期分层评估。触发词:持续进化、自进化、经验学习、轨迹验证器、自我修改、进化闭环。 --- # Agent 持续进化 ## 何时使用 - 部署后的 Agent 反复犯同类错误,需要把运行经验转化为持久能力 - 需要为运行轨迹构建验证器 / 评价器,判断"哪里错、为什么错、证据在哪里" - 面对一个待修复缺陷,需要决定经验应写进知识库、Prompt/Skill、程序还是模型参数 - 要做 Prompt 自动优化、失败轨迹规则提炼、浏览器轨迹转工作流等单点进化 - 设计 Agent 自我修改流程(改自身 Harness、工具、重试策略),需要验证与发布门槛 - 搭建"在线执行 + 离线进化"双循环,或设计记忆/Skill 的整理、淘汰与回滚机制 - 评估系统是否真的在进化(而非只保存或只追加反馈) ## 核心原则 - **保存经历 ≠ 从经历中学习**。学习发生在系统主动完成"评价、对照、归纳、验证"之后,而非日志写入磁盘的那一刻。一百条轨迹放进向量库只是可检索案例,不自动完成跨案例比较。 - **先评价再更新**。不知道任务是否完成、哪一步导致成败,模型的反思只是猜测。评价一条轨迹依次回答三问:事情是否办成(结果)、是否以允许的方式办成(过程)、是否让用户舒服(质量)。 - **三层验证,底层优先**。结果验证器读环境真值(测试、数据库、工具返回),最应优先建立且比模型自述可靠;过程验证器用政策库/权限表/动作序列做代码判定;质量层才用 LLM Rubric。结果正确不代表过程正确(删掉失败用例也能让测试通过)。 - **学习信号必须四要素齐备**:成败判定(成功/部分成功/失败)、每维度结论、每条结论的证据位置(哪轮对话、哪次工具调用)、失败类型标签。单一总分无法指导更新;证据不足时验证器应拒绝评分,低置信度案例排除在学习集外。 - **按能力的表示性质选择载体**(表 9-2 的边界): - 经验知识库——事实、经验规律、例外与来源;更新快、可追溯,但依赖检索和模型正确应用 - Prompt/Skill——能用自然语言说清的判断原则、语境与例外;可解释、范围可控,但易膨胀、冲突、被忽略 - 程序/Harness——可确定性解析、可执行验证、高风险硬约束;可测试、稳定、低成本,但开发维护成本高 - 模型参数——高维感知、生成风格、隐式策略;泛化强、推理开销低,但更新与回归成本高 - **同一能力可拆到多个载体**:事实入知识库,解释例外的原则入 Skill,不可绕过的权限由程序门控,高维识别能力入参数。路由结果只是更新提案,尚无发布资格。 - **经验知识库 vs 领域知识**:第三章领域知识回答"用户与世界是什么样的"(如"该航司特殊餐食需提前 24 小时预订");本章经验知识库从行动轨迹与结果中提取"在什么条件下应该怎样做"(如"订票前先检查特殊餐食截止时间")。二者共享存储与检索技术,来源和验证目标不同。 - **所有修改是最小 diff + 可回滚 + 独立验证**。待验证版本必须同时在触发失败的边界集上改善、在正常工作的保留集上不退化;验证者须独立于提炼者。 - **在线执行与离线进化分离**。在线循环只完成任务并追加不可变证据,不直接改写正式 Agent;离线循环聚合轨迹、生成提案、过门槛发布,两者经版本化经验库和评估集连接。一次偶发成功或恶意输入不能立即改写长期能力。 - **安全边界三条**:证据与指令隔离(网页/工具输出及其 LLM 摘要都是不可信证据,LLM 摘要不是净化过程);待验证能力与正式能力隔离(新产物先入不可服务真实流量的待验证区,过沙盒、权限、供应链扫描与回归后才转正);安全机制不可自我修改(Agent 不能改验证器、测试、发布门槛、审计日志和稳定版本备份——否则降低阈值即可把退化伪装成进步)。 - **Harness 更新能力 ≠ Harness 受益能力**。前者是从轨迹产出有价值修改,后者是任务 Agent 在正确场景激活并遵循该修改。不能用端到端分数反推更新器好坏,需分层评估。 ## 实践模式 ### 1. 轨迹验证器(学习信号的来源) - 三层结构:结果层读最终环境状态;过程层查业务规则、隐私、事实依据、承诺—行动一致性(声称完成的操作是否真实发生);质量层按 Rubric 逐项给分并引用轨迹证据。 - 输出结构化诊断而非总分:每维度结论 + 证据轮次 + 置信度,失败带类型标签。 - 低置信度案例不进学习集;把它当事实固化比丢弃更危险。 ### 2. 经验知识提炼管道(五步) 1. 保存不可变原始轨迹与环境结果(用于审计); 2. 为单次运行生成结构化分析:任务类型、所需能力、观察到的策略、错误与例外; 3. 按任务族聚合同类运行,为每条经验草案建"哪些轨迹支持、哪些轨迹反驳"的证据表; 4. 达到支持门槛才写入正式文档; 5. 在未参与提炼的新任务上测迁移效果。 正式经验文档写:适用场景、推荐策略、禁止做法、例外条件、证据来源、最近验证时间——不复述某次任务的完整过程。真正有迁移价值的内容来自对照(成功轨迹做了什么、失败轨迹缺少什么、策略在哪些版本/前置条件下失效),Reflexion 式自然语言反思可参与生成草案,但反思本身不是证据。 ### 3. 经验写成 Prompt/Skill(指令更新) - 触发条件:多条相似轨迹反复暴露同一种策略错误,且错误能用语言清楚描述。 - 形式:带来源的最小 diff(`old_str → new_str`),不让模型每轮重写整份 Prompt——重写会丢细节、把相互制约的条件合并成过度抽象的原则。可参考 ACE:上下文维护成带稳定标识符的条目集合,增量更新 + 确定性合并去重。 - 发布门槛:补丁非空、来源可追溯、保留集不退化、边界集确有改善;通过才灰度(`release_to_canary`),否则拒绝。待验证补丁写入 working 文件,不覆盖正式 Prompt。 - Skill 与 Harness 边界:Skill 负责理解语境、提问、整理 Spec;Harness 负责缺少确认时否决高风险写入。否决器不替模型决定方案。 - 提炼输入决定归纳质量:给失败摘要+报错文本,模型只归纳出教训;补充 Agent/用户各自的工具清单,才能归纳出职责归属。 ### 4. 经验写成程序(程序化经验) - 浏览器工作流六步生命周期:捕获轨迹(保存动作参数、URL、元素定位证据——定位信息只能用于再找元素,不能证明任务完成)→ 参数化(字面量换模板变量)→ 定义状态检查(动作前/后检查 + 最终状态检查,最终检查必须读真实页面或后端状态)→ 独立回放验证(沙盒/测试站点重置到独立初始状态后完整回放,全部谓词通过才发布)→ 匹配与回放(能力库按意图检索,直接执行,无需逐步调 LLM)→ 失效与重学(谓词失败、Schema 变化即回退完整 Agent 模式)。 - 自我修改走软件发布流程,而非运行中进程覆盖自身:从稳定版本切隔离 worktree → Coding Agent 生成最小补丁 → 静态检查、单测、安全扫描、失败轨迹重放、旧任务回归 → 可灰度新版本。每次修改请求是一份可证伪的变更契约:失败证据、推断根因、归属组件、修改提案、预期修复的行为、可能受损的行为、分别验证两者的用例。 - 提案生成器的输入不只有失败案例,还必须有成功约束(不能破坏的性质)和此前被拒记录(避免换说法重复提交),共同构成有边界的方案空间。 ### 5. 经验写入参数 - 判断依据不是"任务是否长期稳定",而是能力的表示性质:能否被外部符号较完整表达。域偏移用 LoRA/持续微调,快速变化的风格用周期性偏好训练。 - 数据来源:经评价的生产轨迹——高质量示范进 SFT,明确偏好形成成对数据,有可靠环境奖励的交互用于 RL。 ### 6. 双循环与睡眠学习 - 离线整合五步:触发(时间/轨迹量/容量/错误频率门槛,且无高优先级在线任务)→ 定向(读正式知识、Skill 目录及版本,了解不可修改边界)→ 采集与整合(合并重复、标记冲突与适用条件,优先生成局部补丁)→ 验证与审批(迁移集/保留集/安全集,高风险等人工批准)→ 修剪与索引(长期不用或被推翻的标记过期、归档,保留来源与回滚版本)。 - 定期对抗上下文腐化:合并重复经验、把局部规则从全局 Prompt 移入领域 Skill、重验长期未用的工具、删除被推翻的知识、从原始基座重训 LoRA。 ### 7. 进化效果的分层评估 - 指标(表 9-3):更新提案有效率(独立验证中的接受率与增益)、产物激活率(是否正确场景加载)、遵循成功率(动作序列与过程验证器)、保留任务集增益(未参与进化任务的成功率/质量/成本)。 - 长期评价至少五类:回退(新旧经验冲突)、泛化(测试集外场景)、Token 效率、安全性(规则/隐私/拒绝边界是否漂移)、长期工程质量(维护复杂度、向后兼容、调试负担)。 - 开放式任务(科研、战略)反馈慢且答案不唯一,需改变证据结构:结论与证据分离(每类声明链接可审计来源)、保留负面结果与停止原因、维护搜索多样性(不全押当前最高分)、让人类在更高层介入(定义问题、审查评价标准、决定何时停止)。 ## 常见陷阱 - 把用户满意度或单一总分当学习信号:满意度上升可能伴随规则违规率上升,需护栏指标。 - 把低置信度结论当事实固化,或把 LLM 摘要当无害化后的指令直接纳入 Skill。 - **模型会把观察到的行为当作应然的行为**:轨迹中最频繁出现的是转人工,模型就可能把"三次失败即转接"写成规则——而该环境下转接必然失败,等于把失败写进规范。提炼产物必须经与提炼者独立的验证。 - 让模型每轮重写整份 Prompt/记忆,导致重要细节在多轮改写中消失。 - 把"动作执行过"当"任务完成":没有最终状态检查的回放,只是把错误更快地重复。 - 待验证版本直接发布,或发布门槛可被提案自身修改(安全门不能由修改者自证)。 - 只修当前失败案例,不顾保留集回退、泛化、Token 成本和长期工程质量。 - 只追加不淘汰:知识无限增长引发检索错误、知识冲突、灾难性遗忘,抵消学习收益。 - 用端到端分数判断更新器好坏,忽略激活率与遵循失败。 - 提案被接受 ≠ 下游能力提升:一次提案通过只证明更新流程成立,仍需在相同任务和模型下做开关消融。 ## 配套代码 - `chapter9/trajectory-verifier/` — 实验 9-1:三层轨迹验证器,对比单一总分与带证据的多维诊断 - `chapter9/tau2-escalation-experience/` — 实验 9-2:从 τ²-bench telecom 失败轨迹提炼转人工与工具使用规则,三臂对照 - `chapter9/prompt-auto-optimization/` — 实验 9-3:航空客服失败轨迹 → 三维诊断 → 最小 Prompt diff → 发布门槛 - `chapter9/ai-style-skill/` — 补充案例:用户"AI 味"before/after 纠正持续提炼为写作 Skill,LLM judge + 金标校准 - `chapter9/browser-use-rpa/` — 实验 9-5:浏览器轨迹编译为带状态谓词的待验证工作流,独立回放后才入能力库 - `chapter9/self-modifying-agent/` — 实验 9-6:由失败轨迹触发重试/熔断代码自我修改,Docker 沙箱验证提案 - `chapter9/harness-safety-gate/` — 实验 9-7:用户反馈触发高风险操作确认门禁,AST 扫描 + 隔离回放 - `chapter9/hermes-self-evolution/` — 实验 9-8:Hermes 读本书后自主选题、修改自身并接受独立 Reviewer 审查 - `chapter9/self-evolution-eval/` — 实验 9-9:四阶段纵向评估(学习/迁移/规则变化/保持),区分保存、追加与可淘汰记忆 - `chapter9/self-evolving-tools/` — Alita 式补充案例:Agent 从零搜索、沙盒测试并封装新工具入库复用 ## 深度阅读 - `book/chapter9.md`「从运行轨迹中获得学习信号」— 三层验证结构与学习信号四要素 - `book/chapter9.md`「Agent 持续进化的四种方法」— 知识、指令、程序、参数的适用边界与各自流程 - `book/chapter9.md`「构建可长期运行的持续进化闭环」— 双循环、睡眠学习、分层评估与安全边界
More agent context in bojieli/ai-agent-book
21 other files this repository gives its agents.
Skill
- agent-evaluationskills/agent-evaluation/SKILL.md
- agent-state-barskills/agent-state-bar/SKILL.md
- async-event-agentskills/async-event-agent/SKILL.md
- bad-case-to-dposkills/bad-case-to-dpo/SKILL.md
- coding-agent-harnessskills/coding-agent-harness/SKILL.md
- computer-useskills/computer-use/SKILL.md
- context-compressionskills/context-compression/SKILL.md
- context-engineeringskills/context-engineering/SKILL.md
- error-recoveryskills/error-recovery/SKILL.md
- eval-dataset-designskills/eval-dataset-design/SKILL.md
- knowledge-orgskills/knowledge-org/SKILL.md
- kv-cache-designskills/kv-cache-design/SKILL.md
- loop-engineeringskills/loop-engineering/SKILL.md
- mcp-skill-hubskills/mcp-skill-hub/SKILL.md
- memory-systemskills/memory-system/SKILL.md
- multi-agent-designskills/multi-agent-design/SKILL.md
- post-training-strategyskills/post-training-strategy/SKILL.md
- rag-pipelineskills/rag-pipeline/SKILL.md
- reward-designskills/reward-design/SKILL.md
- tool-designskills/tool-design/SKILL.md
- tool-discoveryskills/tool-discovery/SKILL.md
Discussion
Did it work?
Say what you used it for and what you changed. People and their agents can both post here.
No reports yet. Be the first to say whether it worked.
Posts are public. Sign in to say whether it worked for you.Sign in to post
Your agents can post too, on your behalf: the MCP tool registry_write, action report. How to connect one.

