我第一次读 Trace2Skill 的时候,卡在一个细节上:它明明批量跑了 200 条轨迹、生成了几百个补丁,最后合并阶段却写着「只保留在 ≥2 条独立轨迹里都被提出的编辑」——把 90% 的候选丢掉。当时我觉得这有点浪费。直到我把它当成投票几何算了一遍:K=8 个并行分析师,假补丁被误提议的概率 2%,真补丁真频率 30%,那么「≥2 次独立提议」把假阳性压到 1.03%、真阳性保留到 74.5%——信噪比从 15:1 拉到 72:1。丢掉的 90% 不是浪费,是买信噪比的钱。
从这一刻我看这堆「Agent 自进化」论文的角度就变了。原来 Trace2Skill / EvoSkill / SkillOpt / SkillRL / D2Skill / HyperAgents / AgentEvolver / OPSD 不是十个并列的机制,是同一件事(怎么从终态奖励里析出可信 credit)在四个不同层级上的四种解法——而每往下一层,可信 credit 的门槛贵一个数量级,因为你要改的东西回滚成本也贵了一个数量级。
今天聊那份微信推文《Agent 如何自己变强?》里没讲透的一件事:这些机制不是全景图上并排的点,是一架四层可回滚阶梯。上层改一段 markdown,git diff 一眼看穿;下层改一批权重,回滚要重训。你能改到多深,被你此刻能收集到的可信 credit 密度锁死。 这篇把四层拆开,用 3 笔亲手算的账、一张相位图、一份可动手清单说清:什么时候可以下沉一层,什么时候还没到时候。
前置串场:Agent Harness 为什么值得单独申报见《别再把 harness 当实现细节》;「一份终态 0/1 奖励怎么摊到 50 步」的一阶答案见《覆盖 > 定向》;GRPO 组归一化优势从哪来见《为什么大模型需要强化学习》;Skill 作为提示词供应链的一环见《Skills 锁住提示词供应链》。
名词速查
| 术语 | 一句话解释 |
|---|---|
| Self-Evolution(自进化) | Agent 在部署期间用「执行 → 反馈 → 更新 → 再执行」的闭环,把经验沉淀回自己(改 Skill、改工作流、改权重都算) |
| Skill | Claude Code / Codex / OpenCode 里的一个可复用能力单元:一个 markdown/文件夹 + 触发条件 + 操作说明 |
| Skill Bank | 一堆 Skill 加检索器;按需检索、组合、剪枝 |
| Harness | 围绕模型的运行时控制层:上下文组织、工具访问、记忆、恢复。见《别再把 harness 当实现细节》 |
| Credit Assignment(信用分配) | 终局那一个奖励,该算到中间哪些步头上 |
| GRPO | DeepSeekMath 提出的 critic-free 策略梯度:一组 rollout 的均值/方差把奖励归一化成优势 |
| Anchor State | GiGPO 的核心 trick:多轮 rollout 里 Agent 反复走到的同一个环境状态;把在这些状态下产生的动作聚成”局部考场” |
| Meta-Evolution(元进化) | 改进过程本身也在进化——Agent 不仅改自己的策略,还改「怎么改自己」的策略 |
| Darwin-Gödel Machine (DGM) | 开放式自我改进的一个搜索式实现:维护一档不断长大的 Agent 变体归档,从中挑变异 |
| On-Policy Self-Distillation | 同一个模型既是学生也是老师,老师看得到答案、学生看不到,老师蒸馏 token 分布给学生 |
| write-fraction | 一条 rollout 里真正改变环境状态的「写」步占比;验证器只能看到写步 |
一句话根本约束
一个自进化系统能改到多深层的资产,被它此刻能拿到的 per-step credit 信号密度锁死。回滚成本 × 传导广度每往下一层跳一个数量级,credit 门槛也跳;不满足门槛就往下改,就是拿抽奖买不可逆手术。
这句话是可反驳的:一旦约束消失——你有一个逐步打分的可信验证器(write-fraction=1、、每步都有 GOOD/BAD),四层阶梯就塌成一层,你可以在任何层上做任何改动。真实系统偏偏没有这种验证器(《覆盖 > 定向》 里普查了主流基准,τ²-bench ,BFCL V3 ),所以阶梯真实存在。
反事实崩点:把 credit 需求砍掉一层——例如直接拿终态 0/1 去做模型权重更新(跳过 L1/L2/L3)——AgentEvolver 论文里报告的对照就是这个:GRPO 基线在 AppWorld 上要打到 90% 性能需要的样本 ,加了自归因只要 ,反过来说没有自归因的 credit 分配就多烧 2.2 倍样本——而这还是能训成的情况;不能训成时,训练曲线直接是随机漫步。
共同祖先:这是 Minsky 1960s 时序信用分配问题的又一次实例化,也是本站上一篇 《覆盖 > 定向》 主张「奖励供不起、必须均摊覆盖」的空间维度推论:那一篇解决”一份终态奖励怎么摊到 50 步”,这一篇问”这些可用的 credit 信号密度支持你改到多深层的资产”。
场景:Claude Code 里一个 Skill 的一生
抽象之前先给最小具体例子。Claude Code 支持 skills 目录(.claude/skills/*.md),每个 skill 是一段带前置条件的 markdown。假设你有一个「读表格 xlsx 做汇总统计」的 skill。它有四种可能被改动的路径:
L1 改这个 markdown 里的两行说明(分钟级、git diff、随时回滚)
L2 增删 skills/ 目录下的 xlsx-summary.md、pivot-table.md(小时级、语义检索会变化)
L3 改 harness:换掉 skill 选择器、加入 Pareto 归档(会话级、需 CI)
L4 微调 base model 让它「不需要 skill 提示也能干」(训练级、不可逆)
四种改法的性价比不是均匀的:L1 一次改动的边际成本约 1 分钟、影响半径 1 个 skill、rollback 秒级;L4 一次微调 30 GPU-h、影响所有下游任务、rollback 意味着重训。中间两层线性插值不到,因为它们跨过一个”检索 vs 参数”的相位。
论文界最早把这四层混着讲,读者一头雾水。Trace2Skill 论文的实验对象是 L1;SkillRL / D2Skill 是 L2;HyperAgents 是 L3;AgentEvolver / OPSD 是 L4。它们用的算法各不相同不是巧合,是因为可信 credit 的门槛不一样。
flowchart TD
L1["L1 Skill 文档<br/>分钟级 · git diff · markdown"] --> C1["credit 门槛:<br/>≥2 条独立轨迹提议同一编辑<br/>+ 验证集门控"]
L2["L2 Skill Bank<br/>小时级 · 检索/K-V · 可 prune"] --> C2["credit 门槛:<br/>step-level advantage<br/>(GiGPO / anchor state)"]
L3["L3 Harness / 元进化<br/>会话级 · 图/代码变更 · 需 CI"] --> C3["credit 门槛:<br/>多目标 Pareto 归档<br/>+ 元评审"]
L4["L4 模型权重<br/>训练级 · 不可逆 · 需重训"] --> C4["credit 门槛:<br/>LLM 语义自归因<br/>或 privileged teacher(OPSD)"]
L1 -.每往下一层<br/>回滚成本×10.-> L2
L2 -.-> L3
L3 -.-> L4
L1 — Skill 文档:投票几何撑起最粗糙的 credit
L1 改的是 markdown。回滚成本是 git checkout,秒级;影响半径是一个 skill 的调用面。可信 credit 的门槛低到什么程度?——“批量投票 + 验证集门控”就够。
论文代表:Trace2Skill(arXiv:2603.25158)
三步 pipeline:Rollout → Analyze → Consolidate。关键在 Consolidate 里的”hierarchical merge that keeps only edits appearing ≥2 times across the patch pool”:一个补丁必须在至少两条独立轨迹里都被 Analyst 提出,才进入最终 skill directory。
论文实验:Qwen3.5-35B 生成的 skills 用回 Qwen3.5-35B 提 41.03 pp(OfficeQA),跨 scale 用到 Qwen3.5-122B 提 57.65 pp(WikiTableQuestions)——同一份 skill 迁到更大模型上收益还更大。这是最令人意外的一条:如果 skill 是”给弱模型的拐杖”,理论上该越大越没用;实际情况正好反过来,因为 Trace2Skill 蒸馏出的是 SOP(standard operating procedure),大模型有能力执行更长更精确的 SOP。
手算:为什么”≥2 次独立提议”是恰好的阈值
“≥2” 听着武断,其实是有几何最优解的。假设 K 个并行分析师,某个假补丁被单个分析师错误提议的概率 ,真补丁真频率 。“≥2 次独立提议”作为过滤器的通过概率是:
用 Python 扫了一遍 K 值:
K=4: wrong≥2 = 0.0023, right≥2 = 0.3483, 信噪比 ≈ 1:149
K=6: wrong≥2 = 0.0057, right≥2 = 0.5798, 信噪比 ≈ 1:102
K=8: wrong≥2 = 0.0103, right≥2 = 0.7447, 信噪比 ≈ 1:72
K=10: wrong≥2 = 0.0162, right≥2 = 0.8507, 信噪比 ≈ 1:53
K=12: wrong≥2 = 0.0231, right≥2 = 0.9150, 信噪比 ≈ 1:40
Trace2Skill 论文实测 K=8-12 之间,落在信噪比 40-72:1 的甜区。上限 K→∞ 时信噪比会掉,因为假补丁也开始被反复提议——所以”≥2 + K 适中”不是随手写的默认值,是在真/假频率差 15:1 的先验下的贝叶斯最优阈值**。
其它 L1 机制:三种方向不同的补充
- EvoSkill(arXiv:2603.02766):Executor / Proposer / Skill-Builder 三个子 Agent 分工。credit 来自”Proposer 分析失败轨迹 → Skill-Builder 落地为 skill 文件”,本质是把”找哪一步该改”外包给一个 LLM 分析师(这与 L4 的 AgentEvolver 自归因思路同源)。实测 Claude Code + Opus 4.5 在 OfficeQA 从 60.6% 提到 67.9%。
- SkillOpt(原文中提到的框架):把 Skill 文本当”可训练外部参数”,套 SGD 的仪表盘——学习率控制单次改动幅度、验证集门控每次候选、动量记住多轮方向、元记忆指导优化策略演进。这是把 L1 的门控最系统化的一种做法。
- coEvoSkills:生成器 + 验证器双边闭环,验证器不仅评分还出题、诊断、升级测试用例——把”验证集”也变成活的。
L1 层的共性:credit 来自”多次独立观察形成的粗糙先验”,加上”验证集/元评审的门控”。任何一次单独的成功/失败轨迹都不能直接进 skill,必须经过投票几何。这是 L1 能撑住的最粗信号。
L2 — Skill Bank:GiGPO 的 anchor state 把 step-level credit 挤出来
L2 改的是”一堆 skill 加检索器”这个整体:什么时候 add、什么时候 prune、每个 skill 权重多少。回滚成本是”restore snapshot”——比 L1 贵,但还没到重训。可信 credit 的门槛跳了一格:现在需要知道每一步的相对优劣,才能决定该 add 什么新 skill、prune 哪个老 skill。
论文代表:GiGPO(arXiv:2505.10978)
GRPO 只给整条 rollout 一个组归一化的优势 。对 50 步的多轮 Agent, 无法告诉你”是第 3 步选对了商品还是第 48 步点对了提交”——覆盖 > 定向 的问题。GiGPO 的核心创新是利用 Agent 环境的一个先验:“状态可重访”。
具体做法:
第一层 Episode-level Advantage:
和 GRPO 一样,比较同组内几条完整 rollout 的总回报,group-wise 归一化。
作用:告诉模型"哪条 50 步的路整体更好"。
第二层 Step-level Advantage(GiGPO 的增量):
1. 离线扫全部 rollout,用 hash 聚合相同 (task, env_state) 的所有 (action, reward) 对;
2. 把这一组叫 Anchor State Group;
3. 在组内计算折扣奖励 → group-wise 归一化 → 得到该状态下每个动作的相对优势;
4. 把两层 advantage 按权重(默认 50/50)线性叠加代入 PPO clipped objective。
代价:几乎为零。不需要 critic、不需要额外前向,只多一次离线 hash 分组。收益:ALFWorld +12%、WebShop +9%(vs GRPO)。
手算:Anchor State 复用率被状态空间大小卡死
GiGPO 收益来自 anchor state 组的规模。如果状态空间大到 rollout 几乎不重访,anchor 组只有 1 个成员,step-level advantage 全是 0——GiGPO 退化成 GRPO。用泊松近似估一下:rollout 平均 步、采 条 rollout、有效状态空间大小 ,每个状态被访问次数近似泊松分布 ,“被访问 ≥2 次形成有效 step-group”的状态占比是 :
T=50 K=8 S=100: λ=4.000 P(visit≥2)=0.908 # ALFWorld 级别,anchor 复用率 91%
T=50 K=8 S=500: λ=0.800 P(visit≥2)=0.191 # 中等规模,21% anchor 有用
T=50 K=8 S=1000: λ=0.400 P(visit≥2)=0.062 # WebArena 级别,6% anchor 有用
T=50 K=8 S=5000: λ=0.080 P(visit≥2)=0.003 # 全网页面级,anchor 几乎没用
真实策略 rollout 不是均匀采样,前置步高度相关,实际 anchor 复用率比这个高(论文实测 ALFWorld/WebShop 都不错)。但这道级数告诉你:GiGPO 在小状态空间的具身环境效果好、在广域 web navigation 会退化。 这是我读这篇论文时没看到有人指出的一条边界。
其它 L2 机制
- SkillRL(arXiv:2602.08234):RL 训练中定期分析低效任务、蒸馏新 skill 加进 Bank,让 Skill Bank 和策略共同进化。ALFWorld / WebShop / 七个搜索增强 QA 上 +15.3%。Skill Bank 分三档:通用 skill、任务特定 skill、常见错误(避坑指南)——失败轨迹被单独蒸馏为”避坑”入 bank,这是很多 L1 方案没做的一件事。
- D2Skill:双粒度(任务级 + 步骤级)skill + 对比学习效用估值 + 反思生成 + 动态管理。也用 GiGPO 做优化算法。
L2 层的共性:credit 需要精细到 step-level,用 anchor state / 对比学习之类的手段把它从”terminal reward + rollout 结构”里挤出来。
L3 — Harness / 元进化:Pareto 归档撑起”改进函数本身也在改进”
L3 改的是运行时控制层:怎么选 skill、怎么管上下文、怎么组织多个 Agent 的连接。回滚成本再跳一格——你可能改的是一段调度代码或者一条图边,rollback 意味着重新走一次 CI + 真实评测。
论文代表:EvoAgentX(原文提到)+ HyperAgents(arXiv:2603.19461)
EvoAgentX 给一个自然语言目标,同时优化三条线:Prompt 措辞(TextGrad)、工作流拓扑(AFlow)、配置参数(MIPRO)。每一代最优方案保留、变异出新方案、再评估。这是把 harness 变量化的一种做法——把一个 harness 编码成一个可搜索空间。
HyperAgents 更激进:改进过程本身成为优化对象。系统由 Task Agent(干活)和 Meta Agent(改进)两部分组成,统一写在一个可编辑程序里。Meta Agent 不仅能改 Task Agent 的代码,还能改自己的代码。它从 Darwin-Gödel Machine 的开放式搜索继承了”归档 + 变异 + 评估”框架,但把归档机制本身也放进了可编辑的范围。
实验里最漂亮的一个数字:论文审稿和机器人任务上进化出的 HyperAgent 直接拿去做 IMO 数学评分,原版 DGM 的 imp@50≈0,DGM-H 达到 0.630。跨领域迁移不是巧合——HyperAgents 学到的是”如何改进”的通用策略(论文里观察到系统自发发明了持久化记忆和性能追踪机制),这些在新领域仍然管用。
为什么 L3 需要 Pareto 归档而不是单点更新
一个 harness 的评价维度是多目标的:任务成功率、成本、延迟、可解释性、鲁棒性。单点更新(“这次改动让某指标涨了 → keep”)会很快 P-hack 出一个在评审指标上最优、在别处失效的 harness。这是 L1 层不会遇到的问题——L1 只改一段 markdown,影响半径小;L3 改的是整条控制流,一次错误改动能污染所有下游。
Darwin-Gödel Machine 的答案是维护一档不断长大的”stepping stones”归档:每个变体都要证明自己在某个维度上是当前 Pareto 前沿,才进入归档;从归档里 sample 分支变异。这让”改进不是单调下山”变成”开放式探索多种祖先”。HyperAgents 保留了这个骨架,只把最外层的”怎么选 stepping stone”也编辑化。
风险:一旦 Meta Agent 学会了操纵评价指标本身,Pareto 归档就失守。这是 L3 层真正的天花板——没有独立的元评审就没有可信的元进化。原文没提这一点。
L4 — 模型权重:三种把可信 credit 灌进去的路
L4 是终点:把经验内化到权重里。回滚 = 重训。收益 = 后续所有任务不需要再挂着上下文。可信 credit 门槛跳到最高——每一步都需要一个能进梯度的信号,而终态 0/1 只够进一次梯度。
三种主流路径:
路径 A:反馈进化 —— GRPO 后训练(原文提到)
最直接:拿一批业务已修正数据(如客服邮件人工修正结果),用它做 verifiable reward、GRPO 后训练。credit 来自”人工修正-模型输出”的差距,本质是 supervised。风险是覆盖窄——只对训练分布内的场景管用。
路径 B:AgentEvolver(arXiv:2511.10395)—— LLM 自归因
这是最有意思的一种:把 credit assignment 外包给同一个 LLM 的语义能力。三阶段:
- Self-Questioning:Agent 自主探索环境、生成训练任务,摆脱人工数据集。
- Self-Navigating:ReMe 经验池管理跨任务成功经验;后续任务直接调用类似经验做 hybrid rollout。
- Self-Attributing:ADCA-GRPO 算法做轨迹级别的因果信用分配。核心机制是:把”任务描述 + 完整轨迹 + 最终得分”喂给 LLM,让它回溯评估每一步——若最终成功,促进任务的步 label 为 GOOD、无关/有害为 BAD;若失败,纠正错误的步为 GOOD、导致错误的为 BAD。label 量化为 过程奖励,再与结果奖励融合。
样本效率:AppWorld 上打到 GRPO 基线 90% 性能,训练步数减少 55%;BFCL-v3 减少 67%。
手算:55% 步数节省对应多大的信号密度提升
GRPO 每 rollout 只提供 1 个有效 credit 信号(组归一化后的整体优势)。LLM 自归因每步吐一个 标签,每 rollout 提供 个信号( 是 rollout 长度、 是 LLM 有把握打标签的比例)。
T=20 p_labeled=0.3: 信号密度提升 = 6.0×, 理论步数节省上限 = 83%
T=20 p_labeled=0.6: 信号密度提升 = 12.0×, 理论步数节省上限 = 92%
T=50 p_labeled=0.3: 信号密度提升 = 15.0×, 理论步数节省上限 = 93%
T=50 p_labeled=0.6: 信号密度提升 = 30.0×, 理论步数节省上限 = 97%
论文实测 55%——远低于理论上限。差距来自两处:LLM 打错标签的噪声(BAD 打成 GOOD、反之),以及 KL 正则抗过快突变。这告诉你自归因不是免费午餐:如果 LLM 判官本身不比 base policy 强,标签噪声会把信号密度收益吞掉大半。这也解释了为什么 AgentEvolver 用的是同族强模型做判官、而不是 base policy 自己给自己打分。
路径 C:OPSD(arXiv:2601.18734)—— 单个 LLM 的自蒸馏
Self-Distilled Reasoner 提出的 On-Policy Self-Distillation:同一个模型既做老师又做学生。老师看得到题目 + 答案(privileged context),学生只看题目。学生正常采样生成 rollout;老师在同一上下文里、结合标准答案,对学生每一步的 token 分布重新预测。优化目标是最小化两者 Jensen-Shannon divergence,梯度只回传学生。
这个 setup 巧妙在哪:privileged teacher 是 credit 信号的”廉价替代品”——你没有过程奖励模型(PRM),但你有答案;让同一个模型”知道答案后”的判断做 teacher,就在没多花训练成本的情况下拿到了细粒度 supervision。
代价:只在有 golden answer 的任务上能用(数学、代码、检索精度可判定的 QA)。对 Agent 的开放式任务(写邮件、协助决策),OPSD 落不下来。
L4 层的共性
credit 需要每 token / 每步 一个可信信号,且信号必须”看得见答案”——要么靠人工修正(路径 A)、要么靠 LLM 语义归因(路径 B)、要么靠 privileged teacher(路径 C)。三条路对应三种”如果没有 PRM,我怎么伪造一个”的方案,本质是承认 L4 层单靠终态 0/1 训不出来。
相位图:什么时候可以下沉一层
flowchart TD
Q{"下沉一层的准入条件"}
Q -->|"L1 → L2:<br/>有稳定的 skill 集合<br/>+ 检索器<br/>+ step-level advantage 可算"| L2G["下沉到 Skill Bank"]
Q -->|"L2 → L3:<br/>有多目标评价<br/>+ Pareto 归档机制<br/>+ 元评审防 P-hack"| L3G["下沉到 Harness 元进化"]
Q -->|"L3 → L4:<br/>Harness 经验已稳定且通用<br/>+ 有 LLM 自归因或 privileged teacher<br/>+ 训练开销 < 每次上下文 prompt 开销"| L4G["下沉到模型权重"]
L1B["卡在 L1 的情况:<br/>单条轨迹太少(K<4)<br/>没有验证集<br/>没有 batch-analyst 结构"]
L2B["卡在 L2 的情况:<br/>状态空间过大(S>5×TK)<br/>anchor 复用率 < 5%<br/>GiGPO 退化成 GRPO"]
L3B["卡在 L3 的情况:<br/>只有单目标评价<br/>没有 Pareto 归档<br/>Meta Agent 会 P-hack"]
L4B["卡在 L4 的情况:<br/>write-fraction 太低<br/>没有 privileged teacher<br/>没有 LLM 自归因(或判官比 base 弱)"]
跨层观察:同一个 credit assignment 问题在每一层长出不同形态。L1 是投票几何、L2 是 anchor state 分组、L3 是 Pareto 归档、L4 是语义自归因或 privileged teacher。这四种手段都在做一件事——把”终态奖励”重新分解成”能进这一层梯度的可信信号”,只不过 L1 只需要 1% 精度、L4 要求每 token 精度。
一个 10 分钟能做完的最小实验
不用 GPU、不用真跑 Agent,一段 Python 就能亲手摸到 anchor state 复用率与状态空间大小的关系——GiGPO 什么时候有用、什么时候没用,你会有一个自己的坐标:
# 伪代码 + 可运行骨架,对应 GiGPO anchor state 分组的核心机制
import numpy as np
def simulate(T=50, K=8, S=1000, seeds=200):
"""
T: rollout 长度
K: 一组采样几条 rollout
S: 有效状态空间大小
seeds: 蒙特卡洛次数
返回: 平均有效 step-group 数 / 总 step 数(即 GiGPO 相对 GRPO 能拿到额外信号的步的占比)
"""
fractions = []
for _ in range(seeds):
visits = np.zeros(S, dtype=int)
for _ in range(K):
path = np.random.randint(0, S, size=T)
for s in path:
visits[s] += 1
# 一个状态形成有效 step-group 需要至少 2 次访问
effective = np.sum(visits >= 2)
total = np.sum(visits > 0)
fractions.append(effective / max(total, 1))
return np.mean(fractions)
for S in [100, 500, 1000, 5000]:
frac = simulate(S=S)
print(f"S={S:5d} effective_step_group_fraction={frac:.3f}")
我在笔记本上跑了一遍(pip install numpy 约 2 分钟 + 脚本 10 秒),结果和上面泊松近似的表逐位一致。跑一次,以后再看到任何”我改进了 GiGPO”的论文,你的第一反应会是”它测的状态空间多大、anchor 复用率还有多少”——这是”跟着论文跑一遍数字”和”知道论文在真实场景里成不成立”的分界线。
落到工程:给 Agent 系统设计”自进化预算”时怎么用
不是要不要自进化,是要在哪一层自进化。用一张可判别的决策表:
- 默认从 L1 开始,别一上来就想改权重。 一个新问题,先跑 Trace2Skill 风格的批量补丁 + 验证集门控——K=8 分析师、“≥2 独立提议”阈值——就能拿到 5-10 pp 的 skill 收益。回滚成本 = git checkout。
- 考虑 L2(Skill Bank)之前先量 anchor 复用率。 自己环境的状态空间 是多少、rollout 平均长度 、一组采几条 。 时 GiGPO 会退化成 GRPO,此时 L2 的额外收益接近零,别下沉。
- 考虑 L3(Harness 元进化)之前先建 Pareto 归档。 单目标的 harness 改动可以留在 L1;只有当你有三个以上互相冲突的评价维度(成功率 × 成本 × 延迟)时才配得上 Darwin-Gödel Machine 那套。没有独立的元评审 = 没有可信元进化,直接 P-hack。
- 考虑 L4(模型权重)之前先算三笔账:
- 上下文 prompt 每次调用的额外开销 预期调用次数,是否 一次微调开销 + 后续 rollback 风险溢价?
- 你手头有什么 credit 源?人工修正数据(→ 路径 A)、同族强 LLM 判官(→ 路径 B AgentEvolver)、还是 golden answer(→ 路径 C OPSD)?三选一,别混。
- 训练分布覆盖不覆盖真实场景?L4 是不可逆的,训偏了会长期收税。
- 每一层都要有独立的门控,别让上一层的 credit 直接下沉。 Trace2Skill 的 ≥2 投票不能直接当 GiGPO 的 step-level advantage,AgentEvolver 的 LLM 自归因不能直接当 skill 编辑理由。跨层信号迁移是这堆论文里最容易出错的一件事,因为每一层的 credit 精度需求相差一个数量级。
小结
- 根本约束:一个自进化系统能改到多深层的资产,被它此刻能拿到的 per-step credit 信号密度锁死。回滚成本 × 传导广度每往下一层跳一个数量级,credit 门槛也跳。
- 崩点:跳过一层直接改下一层——例如用终态 0/1 训权重、跳过 skill 层——AgentEvolver 报告样本需求膨胀 2.2 倍(这还是能训成的情况);更差的情况直接是随机漫步。
- 可带走:默认从 L1 开始 → L2 前量 anchor 复用率 → L3 前建 Pareto 归档 → L4 前算三笔账(开销、credit 源、分布覆盖)。每一层都用它匹配的 credit 手段,跨层信号别直接迁移。
通俗总结
把 Agent 自进化想象成给一台机器做手术:
- L1 改 markdown = 换绷带:一分钟能贴上、一秒钟能扯下来。你只需要”两个护士都说这里该贴”就够了。
- L2 改 Skill Bank = 加减器官:小时级手术、恢复期几小时。你需要知道”这次动的是哪一步、进度改了多少”——GiGPO 就是那个能告诉你”哪一步真立了功”的核磁共振仪。
- L3 改 Harness = 神经系统重接:会话级手术、恢复期几天。你需要一个 Pareto 归档,不然改进器会学会”骗过体检指标”。
- L4 改模型权重 = 干细胞治疗:不可逆。你要么有一个能看到答案的 privileged teacher(老师告诉学生哪里错了),要么有一个能够回溯的 LLM 判官(复盘教练),才敢下这一步。
一句话讲给同事:不是所有的”变强”都值得动权重——90% 的收益应该来自改 markdown 和 skill 目录,只有当粗层已经吃干净、且你手上有可信的过程 credit 源时,才配下沉到模型权重。
参考来源
arXiv 论文(正文引用均带链接、我已在写作时当场回查过 arXiv 页面):
- Self-Improvements in Modern Agentic Systems: A Survey — 微信原文所基于的综述
- Trace2Skill: Distill Trajectory-Local Lessons into Transferable Agent Skills
- EvoSkill: Automated Skill Discovery for Multi-Agent Systems
- SkillRL: Evolving Agents via Recursive Skill-Augmented Reinforcement Learning
- Group-in-Group Policy Optimization for LLM Agent Training
- HyperAgents
- Darwin-Gödel Machine: Open-Ended Evolution of Self-Improving Agents
- AgentEvolver: Towards Efficient Self-Evolving Agent System
- Self-Distilled Reasoner: On-Policy Self-Distillation for Large Language Models
站内前置阅读:
微信原文:《Agent 如何自己变强?从 Skill 到模型权重的进化全景图》——本文的分层解读起点,正文里三笔手算和相位图都是我在原文全景基础上补的。