给 Skill 装一个优化器 —— 腾讯×人大 SkillAdam 深勘:六处硬伤与两处原创发现

腾讯 × 中国人民大学《SkillAdam: Stable and Efficient Skill Evolution for Agents》 arXiv:2609.08944 · 2026-09-08 提交 · 17 页 / 4 图 / 6 表 · 代码 github.com/ruc-datalab/SkillAd…

腾讯 × 中国人民大学《SkillAdam: Stable and Efficient Skill Evolution for Agents》
arXiv:2609.08944 · 2026-09-08 提交 · 17 页 / 4 图 / 6 表 · 代码 github.com/ruc-datalab/SkillAdam
> 六路探马勘察,含 Fisher 精确检验复算。全文回读一手表格,不采二手转述。

一句话说清:这篇论文提出 SkillAdam,把 Adam 优化器的「动量」与「自适应步长」两件事,功能性地(非数值地)搬到「离散、不可微的 skill 文档」的迭代修改上。

它问的问题是真的:Skill 会不会越改越乱?

拍板结论:方向对,证据薄。 它把 skill 自进化从「LLM 反复自我反思」推进到「有状态、有约束、有回归测试、有版本演化的工程系统」——这个转向是对的,正是当前 Agent 工程最缺的一环。但它没能在自己的实验里,把这套机制从噪声、从天护板效应、从它自己最强的基线中分离出来。承重主张(两个 Adam 机制各自必需)目前不成立。


一、问题问得真好

想像你养一盆花。第一天它往东歪,你转盆;第二天往西歪,你转回来;第三天叶子黄了你施肥;第四天花苞掉了。你没做错任何一步,每一步都在解决当天看到的问题——这正是今天 Skill 自进化的处境。

现在通行的做法是一条朴素循环:跑任务 → 看它错在哪 → 让它反思 → 改 Skill → 再跑。一旦任务变复杂,规则就开始互相牵扯。论文原文举的例子极准:

One revision may instruct the agent to minimize the total cost by selecting the cheapest feasible itinerary. A later revision may add more attractions to produce a richer travel plan, but these additions can increase the cost and violate the earlier budget constraint.

这一轮为省钱写下「优先选最便宜的可行路线」;下一轮为丰富度补上「多安排几个景点」——于是预算约束被悄悄违反了。A 修好了,A 又被改坏了。

论文把这个麻烦命名为两个失败模式:

  • Direction Stability(方向稳定性):有效的修正必须累积,不能每一轮被「本轮的局部反馈」冲掉;
  • Update Adaptivity(更新自适应性):每轮改多大,应取决于最近这次改动在各 case 上的一致程度。
看到这两条,做过优化的人都该心里一动——这不就是随机梯度下降里那两件老事吗?更新方向被噪声带偏,以及步长该多大地走。


二、它到底做了什么:三件套

其一,轨迹引导初始化。 不白手起家,先用固定的一批基线执行轨迹 + 评测反馈,让 LLM 一次性写出初始 skill。

其二,Evolving Issue Tracker(EIT)—— 对应 Adam 的一阶矩。 这不是一堆散乱的反思文本,而是一张带状态的问题台账:

M_t = { I_j | j ∈ J_t },   I_j = ( p_j , z_j , A_j )      (式 11)

p_j 是错误模式,z_j 是当前状态,A_j 是既往解法尝试及其观测结果打包成的集合。更新函数做四件事:把新失败挂到已有问题上(能挂就挂)→ 挂不上就新建 → 记录本次尝试及结果 → 同一失败复现时把问题重新打开(reopen)。

其三,volatility-driven edit budget —— 对应 Adam 的二阶矩/有效步长。 这是全文唯一把公式给全的地方:

δ(t,i) = s(F_val) − s(F_roll)                        — 逐 case 改进量
V_obs(t) = (1/(|B_t|−1)) · Σ (δ − δ_avg)²            — 当前波动率
V_ema(t) = β₂·V_ema(t−1) + (1−β₂)·V_obs(t)           — 历史加权
σ(t+1) = max(b_min, ⌊ b_base·[1 − clip(V_ema/V_max, 0, 1)] ⌉)   — 编辑预算

读出来就是一句话:候选 skill 在不同 case 上表现越不齐(V 大),下一轮就越不许大改(σ 小);越是一致变好,就越敢放开手脚。

值得称许的工程细节:若候选 skill 生成失败(空补丁),则 M、V、σ 全部原样顺延——不让失败的空转污染优化器状态。这是很懂工程的人才会写的一行。

SkillAdam 主循环:三阶段与三个优化器状态

*图 1 主循环:rollout → moment estimation → skill update。σ 是唯一从前一轮流回下一轮「生成动作」的量——然而它是否真的约束了补丁大小,论文从未验证。*


三、两处原创发现(任何第三方均未指出)

发现一:消融表自己打自己

Table 4 是唯一的机制消融,只在 DeepPlanning 上做(含 Shopping 三级 25/25/10 例 + Travel 60 例):

配置L1L2L3Shop 合TravelDP-Avg
SkillAdam(M+B)52.036.050.045.011.728.3
−B(仅去 budget)48.036.040.041.71.721.7
−B, −M(两个都去)56.020.030.036.71.719.2
NoSkill40.024.030.031.70.015.8
*(参照)Table 3 的 SkillOpt*———*41.7**1.7**21.7*
刺眼处其一:「−B」那一行的 41.7 / 1.7 / 21.7,与 Table 3 里 SkillOpt 的三个数值逐位相同。若这不是笔误而是真实测量,那就意味着:被宣传为「Adam 一阶矩」的那半个贡献,在最强的对照基准上产生了一个可测增益为零的配置——去掉 budget、只留 memory,恰好复现出 SkillOpt 的成绩。论文对此未置一词。

刺眼处其二:「两个机制全删」在 Shopping L1 上是 56.0,高于完整版的 52.0。即删掉全部「Adam 机制」反而在 L1 上更好(13/25 vs 14/25,Fisher p = 1.000,纯噪声)。论文只说「增益集中在更难的层级」,这个反例被轻轻带过。

而论文自己承认:

because this is a cumulative ablation, it does not independently isolate the effect of memory when the edit budget is enabled...

于是「两个机制各自都必需」这个承重主张,在论文自己的数据上就是不成立的:budget 看似有贡献,memory 的独立效应因消融设计根本无法测量。

发现二:σ 是个从未被量过的旋钮

σ 的一生只有两步:在式 18 被算出来,在式 20 被塞进 prompt。然后呢?没有然后。

我对全文做了关键词穷举:lines changed 0 次、edit size 0 次、skill length 0 次、number of edits 0 次、compliance 0 次。

没有任何实验证明:LLM 收到较小的 σ 之后,真的产出了更小的 patch。 也没有报告 skill 文档长度随迭代的变化。于是「自适应步长」这个核心机制在实证上是空的——它退化成了一个无人核验的提示词旋钮。同理,EIT 那张台账的准确度也从未被测量。

拆掉「一阶矩/二阶矩」的修辞之后,剩下的是:一张由 LLM 维护的失败清单 + 一条「最近几轮改进不一致就把下次改动限小」的启发式。而 SkillOpt 的原文摘要明确写着它已包含 *"a textual learning-rate budget, rejected-edit buffer, and epoch-wise slow/meta update"*。


四、统计上的真相

论文全文零方差报告。关键词穷举:p-value 0 次、confidence interval 0 次、standard deviation 0 次、error bar 0 次。§5.3 只有一句「Each test case is evaluated once」,种子单一。

论文只披露了 DeepPlanning 的测试集规模(Shopping 60 例、Travel 60 例),我据此反推噪声量级——且采用最有利于作者的假设(每 case 视为独立伯努利、技能固定):

对比原始分数化为用例数Fisher 精确检验(双侧)
DP-Travel1.7% → 11.7%1/60 → 7/60p ≈ 0.061
DP-Shopping41.7% → 45.0%25/60 → 27/60p ≈ 0.854
全篇最戏剧化、被反复引用的那个结果(Travel +10.0 pp),在理想化检验下未达 0.05。 而 Shopping 的 +3.3 pp 完全落在噪声里。

更麻烦的是:另外六个基准的测试集规模论文根本没给,那六列的误差想算都算不出来。

另一处细节:效率账的分母被做低了——SkillOpt 被固定跑满 4 个 epoch,SkillAdam 自己决定何时停,而论文从未报告两边的实际迭代次数。


五、数字对账:主干全属实,四处口径要打星号

转述原话原文实况判定
平均成绩 21.7% → 28.3%(DeepPlanning)Table 3/6:DP-Avg 21.7 → 28.3,基线是 SkillOpt(NoSkill 为 15.8)✅ 属实,是相对 SkillOpt,非绝对能力
Travel 从 1.7% → 11.7%NoSkill 0.0 / SkillOpt 1.7 / SkillAdam 11.7,60 例✅ 属实,1.7% 是 SkillOpt,且 p≈0.061
Token 减少约 67%226.6M → 74.0M = −67.3%✅ 属实(精确值 67.3%)
API 请求减少约 69%9,071 → 2,830 = −68.8%✅ 属实(精确值 68.8%)
7 个 benchmark SOTAOfficeQA 上 72.1 = 72.1⚠️ 并列,非独占
(第三方)迁移收益 +5.1 pp那是 Retention 76.2%→81.3%;成绩口径是 63.1%→67.8% = +4.7 pp❌ 口径分裂
「不是靠更多 Reflection」原文无此语,原文说效率来自 "fewer unproductive modification attempts"⚠️ 解读性添加
关于那个叫 DP-Avg 的口径陷阱,原文专门声明过:「It is not an equal average of the four DeepPlanning slices」——Shopping 内部三级(25/25/10 例)被压成一个数,再与 Travel 各占一半。说「DeepPlanning 平均成绩 28.3%」会让人误以为是四切片等权。


六、被跳过的先例:这是拼图,不是发现

论文用一句总括建立差异化:*existing methods do not jointly maintain persistent optimizer states for the direction and magnitude of successive revisions*。这句话的检索基础不完整。

Adam 与 SkillAdam 的功能对应表

*图 2 Table 1 的汉译全表。论文三处声明「The analogy is functional, not numerical」——但 Adam 的二阶矩是平方梯度 EMA + 开根号 + 偏差校正,SkillAdam 用的是中心化方差、线性映射,无 √ 无偏差校正,只是「精神相似」。*

反向检索挖出四条语义上理应立即引用、却全部未被引用的先例:

  • SkillGrad(arXiv:2605.27760,2026-05-26):把 skill package 当结构化参数,用 momentum agent 把重复诊断模式累积进持久 memory overlay —— 早 SkillAdam 三个半月,且消融显示 momentum 确有贡献。这是最致命的一条。
  • MAPO(arXiv:2410.19499,2024-10):在 ProTeGi 上加正向文本梯度 + momentum-based memory 抑制震荡;
  • REVOLVE(arXiv:2412.03092,2024-12):追踪 response 跨迭代演化判停滞,调整更新幅度;
  • TSGD-M(arXiv:2506.00400,ICML 2025):Gumbel-Top-k 对历史 prompt 重加权采样做动量。
引文缺口对照

*图 3 左边是论文自列的优化类工作,右边是语义上同一思想却更早的四条。此外 Reflexion、Self-Refine、APE、DSPy/MIPRO 亦未引。*

判定:组合式创新,绝非首创。 「Adam 动量/自适应步长 → 文本优化」已有强先例(TextGrad 的形式化步骤本就含 momentum buffer 与步长 α);「轻量记忆 + 决策启发式」见于 ExpeL。SkillAdam 真正站得住的窄口径「首次」只能是:双矩成套 + 单一 skill 文档 + 波动驱动预算,三条件联合限定。


七、公道话:它最硬的地方

只挑毛病的报告等于没做报告。

符号一致性极佳:全部 12 个任务格(5 短时域 + ALFWorld + 3 个 DP 切片/DP-Avg)12/12 不输;跨模型迁移 6 格中 5 格更好;LLM 评判的技能质量在 10 个切片全部高于 SkillOpt(均分 3.30 → 3.88)。10/10 的符号检验 p ≈ 0.002,纯噪声下不易出现。但限定必须附上:这份「硬」是证据纪律上的硬,不是结论幅度上的硬。

成本口径纪律罕见地严:同一模型、同一批 case、同一初始技能,明确框定「仅优化阶段」(不含初始化、不含最终评测),用 API 原始计数器分列 input/output/requests,把收益严格归因到「调用次数更少」——并且主动承认自己的 per-request token 反而略高,明确否认「省 token 是因为单次调用更短」。在自进化论文里,这种自曝短板是少见的。

代码仓库反常地厚道:三大组件全部是真实现(不是骨架、也不是只放 prompt)。core/edit_budget.py 的 compute_sigma_sq / update_v_ema / compute_edit_budget 与论文式 14/16/17/18 逐项吻合(仅两处论文未定义的边界属合理补丁)。还有 7 个 benchmark 完整适配器、79+6+12 个 prompt 的 SHA-256 完整性校验、60 条命令矩阵、结果重算脚本、断点续跑签名校验。

由此生出一个极具讽刺意味的对照:论文把 b_base / b_min / V_max / β₂ / k / T_max 全部藏了起来(零披露、无附录、无 Limitations 章节);代码仓库却把这些全部写进了 YAML——base 4、min 1–2、DeepPlanning beta 0.9(Shopping v_max=0.05、Travel v_max=0.1)。而且 OfficeQA 与 LMB 的 adaptive budget 是关闭的,这恰好解释了为什么这两个基准上只差 0.0 与 0.8 pp。

顺带纠正一处流行误传:某第三方审读把 β₂ 写成 0.9,论文全文并无此值。


八、可背诵的金句

1. Skill 自进化真正的敌人不是「学不会」,是「改坏了自己」。 2. SkillAdam 把 Adam 的名字搬了过来,但没把 Adam 的数学搬过来——它给 Skill 装的是一个叫优化器的旋钮,而论文从未量过旋钮转了多少。 3. 数字是真的,不等于效应是真的。 60 个 case 上从 1 个成功到 7 个成功,p 值 0.061——这就是「最戏剧化的结果」的真实分量。 4. 论文最软的、代码最硬的:一个把超参全藏起来的论文,配了一个把超参全写进 YAML 的仓库。 5. 「把 Δ 引入 Y 领域」这种句式,往往是拼图,不是发现——该问的永远是「谁先拼过这两块」。 6. 今天还没有人证明,给 Skill 配一个优化器就一定比让人多改两稿更好。


九、落地:这套思想确实可搬

它的证据经不起细看,但思路可搬。四条可直接执行的动作:

1. 给自进化记忆加「问题台账」结构:issue_id | 错误模式 | 状态(open/resolved/reopened) | 尝试过的解法+结果。关键在 reopen——同一失败复现时重开旧问题而不是新建一条。这能直接消灭「改好了 A、下轮又改坏」的典型事故,因为那个被改坏的问题,台账上本来就在,会被重新点亮。 2. 用「case 级一致性」当改动闸门,而不是用时间表:最近一轮在 K 个样本上有的一致变好、有的明显变差 → 限制下一轮改动规模;一致变好 → 放开幅度。但切记补上它漏掉的那一步:记录每轮 patch 的实际大小,验证闸门真的起了作用。不验证的旋钮等于没装。 3. 保留 held-out 门,不要学它砍掉:它为了「每轮信号更足」把 train 与 selection 合并进优化池、接受门改用同一 mini-batch,代价是模型选择环节失去无偏信号。生产系统应反着来。 4. 成本账分开记:优化阶段与推理阶段严格分账,并自曝不利细节——这一条恰恰是它最可信的部分。


十、最划算的三项补实验

若要救活这套机制主张:

1. 直接测量 σ 与 patch 长度的相关性 —— 成本最低,且是唯一能救活「自适应步长」这个机制主张的实验; 2. ≥5 个随机种子 + 多 benchmark 重跑消融并给置信区间,同时补上「仅去 memory、保留 budget」的对称消融(现设计根本测不出 memory 的独立效应); 3. 至少一次跨族迁移(如迁到 Claude / Qwen),取代「同族一次迁移」。


附:未证实清单(节选)

b_base / b_min / V_max / β₂ / k / T_max 具体取值(论文零披露);「−B」行与 SkillOpt 逐位相同是否笔误;σ 是否真约束了 patch;EIT 台账准确度;各表方差/置信区间;停止规则具体内容;实际迭代轮数;跨族迁移;弱模型/坏 patch 场景。截至核查日,这篇论文不存在任何独立的复现、批评或第三方量化评估——第三方审读是唯一结构化审读,且为机器生成,讨论区零条人类评论。

凡未能证实者入清单,宁可说「没查到」,不作脑补。取证规则:关键数字一律回读一手表格;对「从 X% 到 Y%」型数字执行口径四问(同任务?同模型?同轮次?标题行还是小字?);参考文献做关键词普查,凡理应引用而查无者列为遗漏。

*论文:https://arxiv.org/abs/2609.08944 | 代码:https://github.com/ruc-datalab/SkillAdam | 主基线 SkillOpt:arXiv:2605.23904 | 未引先例 SkillGrad:arXiv:2605.27760*

暂无表态

想参与讨论或点赞?登录后使用完整功能

讨论回复(0)

暂无回复,登录后可参与讨论
合作

智谱 GLM-5 已上线

在智谱开放平台 BigModel.cn 打造 AI 应用。新一代旗舰模型 GLM-5 在推理、代码、智能体综合能力达到开源模型 SOTA。

领取 2000万 Tokens