SESA 提了个新思路:让搜索 Agent 在自对弈中记住自己的失败

做搜索 Agent 的人可能都遇到过这个场景:同样类型的多跳问题,Agent 第一次摔了,调了 prompt 或者 finetune 之后第二次能过,但再过一阵换了个问法,又摔在同一类 reasoning 缺口上。

根本原因不算新鲜——大多数自对弈(self-play)训练框架里,失败只通过梯度影响参数,但不以显式形式被记住。用论文里的话说,curriculum 缺乏 persistent state。

今天凌晨 arXiv 上挂出来的一篇新工作,来自 Zenghuang Fu 等 9 位作者,提出了 SESA(Self-Evolving Skill-Augmented Agent)架构,直接把这个问题顶到了台面上。代码已经开源。

记住「怎么找到答案」

SESA 的核心改动其实就一个,但挺狠的:把自对弈的训练循环改成了一个 challenger 和 solver 双向影响的闭环。

一个独立的 challenger 负责出题,solver 在解题时可以检索一个外部 skill bank——一个不断增长的过程性记忆库。solver 答错后,不是只记一个 loss 就完事,而是把这次 informative failure 蒸馏成一条 reusable skill,写回 skill bank。skill bank 更新之后,solver 的行为和成功率会变化,这个变化反过来改变 challenger 的 reward 信号,进而影响 challenger 生成问题的分布。新的问题分布产生新的 failure,新的 failure 再改写 skill bank。

这个循环里,tough 的问题和解题的技巧是共同进化的。

这个设计有两层含义值得单独提。

检索到的 skill 会影响 solver 的 on-policy 训练轨迹,因此 skill 带来的收益会同时进入模型参数——推理时即使完全不调 skill bank,模型本身也已经变强。实验里他们叫 SESA-Off,就是训练完把 skill bank 摘掉直接部署,在 Qwen3 模型上相比基线 SSP 仍有 1.8-2.2 个点的提升。推理时再把最终的 skill bank 挂上,还能再补 0.5-1.0 个点。

challenger 和 solver 分开参数化,只有 solver 能读 skill bank。这个隔离防止 skill 直接泄漏到问题生成器里,逼着 challenger 只能在 solver 的真实能力边界上去生成恰好有挑战性的问题。

结果怎么看

论文在 7 个 open-domain 和 multi-hop 问答 benchmark 上做了评估。相比 SSP(self-play baseline),SESA 在多个 backbone 上平均准确率提升了 1.2-3.2 个点。相比 SkillRL 这个 skill-augmented 基线,在统一评测协议下高出 0.9 个点。

数字不算惊天动地,但这个方向的意义不在于 SOTA 刷了多少——1-3 个点的提升在问答 benchmark 上也就是一枚深水炸弹和一枚手榴弹的区别。有意思的是它验证了一件事:外挂的 skill memory 不只在推理时锦上添花,它真的改变了 policy learning 的路径,也改变了训练数据的分布。

让 Agent 记住它犯过的错,并且让这些错误反过来影响它将要遇到的任务难度——这件事在端到端上是 work 的。

真实场景里意味着什么

如果这个思路能落地到实际产品里,对做搜索型 Agent 的团队来说,最有价值的可能不是那两三个点的准确率,而是这个机制让 Agent 的自我迭代变成了一条可观测的链路。skill bank 明文可读,能看到它记住了什么类型的 failure、转化成了什么 reasoning skill。相比 finetune 之后看 loss 曲线猜学到了什么,这显然更接近一个可 debug 的系统。

论文目前只覆盖了问答场景,challenger 出题也依赖一些人工模板和 benchmark 数据——不是完全零样本的 curriculum 生成。这些问题论文自己也提了,算诚实。

这个方向如果续下去,search agent 的自演进可能会变成一个更可控、更可解释的过程。代码在 GitHub 上,感兴趣的可以去看。

相关链接:
- 论文 PDF
- GitHub 代码