搜索智能体"自我批评"的陷阱:批评者不变强,主角迟早撞墙——CAFE 的协同进化解法
你有没有调过那种"自我反思"式的智能体?跑一个搜索任务,前面几步走偏了,它还浑然不觉地继续往下查,最后答案错了,你拿着终端奖励回头看——错在哪一步?不知道。轨迹中间塞一句 Reflexion 式的自我批评?试过的人都知道,那是提示词工程,模型并没有真的"学会"什么时候该求助、求助之后又该怎么改。
上周挂到 arXiv 的这篇 CAFE(arXiv:2608.24794)让我挺意外的。它没有再给"结果监督 + 提示词反思"这条老路打补丁,而是把问题挑明了:批评者(critic)和智能体(agent)是一对耦合的学习系统,只练一个,另一个迟早变成瓶颈。
核心摘要
CAFE(Coupled Agent–Feedback Evolution,智能体-反馈协同进化)要解决的是结果监督搜索智能体的老大难:终端奖励既不能定位中间错误,也没法在错误滚雪球之前把轨迹拉回来。方案是用同一个共享参数的模型轮流扮演搜索智能体和批评者两个角色——智能体学会在轨迹中间发出 <request_feedback> 求助,批评者学会给出纠正性反馈,两者通过"在线 RL + 离线偏好优化"交替升级。结果:在 7 个 agentic 搜索基准上,Qwen2.5-7B 规模的 CAFE 平均 EM 达到 52.5,压过最强 RL 基线 IGPO 的 50.4,且在全部 6 个域外基准上保持增益,答案级幻觉率从 GRPO 的 17.6% 降到 12.6%。我的判断:这不是底层算法突破,而是把"何时求助、如何利用反馈、反馈本身如何进化"三件事第一次系统地拧成了一个训练框架——而"单侧优化必然平台化"的消融结论,是真的值钱。
论文信息
- 标题:CAFE: Self-Improving Search Agents Need Co-Evolving Feedback
- 作者:Boyang Liu, Senjie Jin, Peixin Wang, Zhangyue Yin, Yibo Wang, Yuhao Zhou, Xinbing Liang, Shizheng Zhu, Yuhui Wang, Jingqi Tong, Zhiheng Xi, Jiazheng Zhang, Clive Bai, Clarenceai, Blaze Chen, Tao Gui, Qi Zhang, Xuanjing Huang
- 机构:Fudan University & Tencent LLM Department
- 链接:https://arxiv.org/abs/2608.24794 (2026 年 8 月 25 日提交)
🎯 问题动机:终端奖励的三个"做不到"
先把 CAFE 要打的靶子说清楚。Search-R1 那套范式(RL 训练智能体交错进行推理和检索,只按最终答案对错给奖励)已经被证明有效,但它的奖励信号有三个结构性缺陷。
第一,错误会传播,且无法回溯定位。 智能体早期一个方向性错误不会立刻收到纠正信号,代价不限于出错那一步,而是顺着后续轨迹一路放大。论文里举的失败模式很真实:智能体一开始记得约束条件,到后面几步悄悄丢掉了;或者一个必要的子目标根本没探索;再或者反复改写查询却没拿到任何新证据。轨迹开头是对的,结尾是错的,终端奖励告诉你"错了",但不告诉你"错在哪"。
第二,已有的细粒度信号是"评价"而非"指导"。 信息增益、置信度变化、局部状态比较这类信用分配信号,都是事后打分——告诉你这一步好不好,但不告诉你下一步该怎么走。纠正被推给了未来的策略更新,可当前这条轨迹已经救不回来了。
第三,上下文反馈方法是事后且非训练的。 Reflexion、Self-Refine、CRITIC 这些经典工作,都是用提示词让模型事后生成自然语言批评。模型没有学过"什么时候该批评",批评的质量也不会随训练变好。
那把可学习的反馈塞进进行中的轨迹,难在哪?论文点出三个交织的挑战:智能体侧要学会何时请求干预,而且被挽救的轨迹和完美轨迹拿一样的奖励,学习目标必须分清"该强化哪段行为";批评者侧的反馈没有 ground truth,其奖励被之前的搜索和之后的动作共同混淆;最要命的是第三条——在线更新会改变智能体访问的状态分布,一个静态的批评者会迅速与它要指导的策略脱节。
这第三条就是整篇论文的题眼。
🏗️ 方法:一个模型,两个角色,交替进化

图1:CAFE 总览。左侧是在线智能体优化——从 \(\Theta_k\) 采样 rollout 组,用 CFE 塑造请求回报,用 feedback-aware advantage shaping 区分反馈前后的 token 信用;中间是共享模型 \(\Theta_k\) 同时扮演 Agent 和 Critic 两个角色;右侧是离线反馈优化——从最新 rollout 中挖掘前缀匹配的偏好对,用 RDPO 更新模型得到 \(\Theta_{k+1}\),进入下一轮迭代。
整框架围绕三个问题展开:反馈该怎么结构化、智能体怎么学(RQ1);智能体怎么学会何时求助、求助后怎么用(RQ2);共享模型怎么让两种能力共同进化(RQ3)。
初始化:用自己的失败轨迹"接种"
CAFE 不拿教师模型生成完美示范,而是收集基座智能体自己的失败 rollout,请教师模型(实现里用的是 Kimi-K2.5)定位轨迹首次出错或停滞的最早轮次 \(t^\star\),然后保留这段错误前缀,插入 <request_feedback> 动作,由教师生成纠正反馈和基于反馈的后续恢复轨迹——只保留最终答对的那些。
这个设计挺聪明的。纯教师示范的分布和基座智能体的真实失败分布是两回事,用这种"错误前缀 + 成功恢复"的轨迹做 SFT,智能体学到的是"在我真的会犯错的地方求助",而不是模仿一条自己永远走不出来的完美路径。
在线 RL:两个机制解决"何时求助"和"功劳归谁"
动作空间里加了一个可选的 <request_feedback>。智能体和批评者是同一模型的两种角色条件化行为:
推理时角色分明,但共享同一个 backbone——这是后面协同进化能成立的物理基础。
CFE(Comparative Feedback Estimate)奖励回答"这次求助值不值"。遵循 GRPO 给每个 prompt 采样一组 rollout,按是否请求过反馈分成 call 组和 skip 组,算一个 prompt 级的成功率差:
直觉很清楚:如果同一个题,求助的 rollout 平均比不求助的答得好,说明这题值得求助,给请求行为加奖励 \(\beta C_i u_i\);反之不加。再叠一个重复惩罚项 \(-\gamma[n_{\mathrm{fb},i}-1]_{+}\),只罚第一次之后的重复求助,防止智能体变成"伸手党"。
Feedback-aware advantage shaping 回答"成功了功劳归谁"。GRPO 的标准化优势是整条轨迹一个标量 \(A_i\),但问题来了——一条"前面跑偏、求助后救回来"的轨迹如果整体拿正优势,那段把搜索带沟里的前缀也被同等地强化了。这明显不对。
CAFE 把请求型 rollout 的 token 按首次请求切成三段:请求前 \(\mathcal{T}_i^{\mathrm{pre}}\)、请求轮 \(\mathcal{T}_i^{\mathrm{call}}\)、反馈后 \(\mathcal{T}_i^{\mathrm{post}}\),然后差异化赋权:
其中 \(g_i=\operatorname{clip}(u_i,0,b)\) 是裁剪后的 call–skip gap。翻译成人话:求助确实有用的轨迹里,压制反馈前那段跑偏行为的信用(最低到 0,不反惩),额外强化反馈后的恢复行为。CFE 管 rollout 之间的"该不该求助",advantage shaping 管 rollout 之内的"功劳该记在哪段"——一个管横切面,一个管纵切面,分工很干净。
离线阶段:RDPO 让批评者跟上趟
在线 RL 把智能体练强了,批评者还停在 SFT 时的水平——这就是静态批评者脱节的地方。CAFE 每跑一段在线 RL,就从最新 rollout 里挖偏好对做离线更新:按 prompt 把"求助且成功"和"求助但失败"的 rollout 配对,要求首次请求处的历史足够相似(Jaccard 相似度 \(\geq 0.7\),再加一道 LLM judge 质检)、反馈长度相当,然后以成功轨迹的反馈为 chosen、失败轨迹的反馈为 rejected,跑 RDPO。
为什么不用简单的 RSFT(只模仿成功轨迹的反馈)?论文的解释我认可:一条轨迹成功可能是因为搜索前缀好或者后续动作强,反馈本身可能是废话——正样本目标会混入这种噪声。偏好比较把"前缀和状态匹配但结局不同"的反馈放在一起对照,信号干净得多。
由于两个角色共享全部参数,RDPO 更新的是同一个完整 checkpoint。默认计划是 100 步在线 RL + 1 次 RDPO,交替 5 轮,共 500 步 RL。训练配置:8 张 A100,在线阶段约两天,每 prompt 采 8 条 rollout,\(\beta=0.5\)、\(\gamma=0.05\)、\(\lambda=0.5\)、\(b=0.5\)。
📊 实验:7 个基准,全面压过 RL 基线
评测遵循 R-Search 协议,统一 E5 retriever 加固定本地语料,每条轨迹最多 30 次工具调用。训练只用 2WikiMultihopQA 一个域内基准,其余 6 个(HotpotQA、MuSiQue、PopQA、Bamboogle、NQ、TriviaQA)全是域外——这个设置对泛化能力的检验是比较硬核的。
主实验结果(EM / F1):
| 方法 | 2Wiki | HotpotQA | MuSiQue | PopQA | TriviaQA | Bamboogle | NQ | 平均 |
|---|---|---|---|---|---|---|---|---|
| GPT-5-Mini | 67.4/76.0 | 59.0/72.0 | 27.2/36.5 | 34.6/41.1 | 73.0/81.2 | 62.4/73.2 | 31.2/42.6 | 50.7/60.4 |
| Gemini-2.5-Flash | 63.8/73.6 | 54.0/67.6 | 24.4/35.7 | 40.2/49.2 | 73.4/81.5 | 57.6/65.9 | 39.8/53.0 | 50.5/60.9 |
| Kimi-K2-thinking | 67.8/76.2 | 57.4/69.9 | 29.4/37.8 | 33.4/38.9 | 72.0/78.5 | 50.4/58.7 | 30.2/41.1 | 48.7/57.3 |
| Search-R1* | 67.0/75.4 | 48.4/60.9 | 25.8/36.2 | 41.0/46.9 | 65.0/70.8 | 47.2/58.4 | 39.8/49.1 | 47.7/56.8 |
| R-Search* | 69.8/77.7 | 52.2/64.4 | 31.4/41.6 | 41.8/48.1 | 64.2/71.7 | 42.4/57.6 | 38.0/49.1 | 48.5/58.6 |
| IGPO‡ | 79.6/86.1 | 53.4/65.1 | 27.8/36.9 | 43.2/49.1 | 63.2/71.4 | 48.8/59.1 | 36.8/48.1 | 50.4/59.4 |
| Qwen2.5-7B base | 44.8/54.4 | 41.8/53.6 | 20.4/28.8 | 34.4/42.1 | 56.4/65.6 | 37.6/49.3 | 31.6/41.3 | 38.1/47.9 |
| + SFT | 63.1/72.4 | 44.2/55.0 | 19.0/27.5 | 35.2/42.1 | 52.6/62.5 | 42.8/51.8 | 28.8/39.1 | 40.8/50.1 |
| + SFT + GRPO | 80.6/86.6 | 50.8/61.0 | 27.2/36.6 | 44.6/49.0 | 60.4/67.9 | 46.0/56.2 | 38.4/48.6 | 49.7/58.0 |
| SFT + CAFE 完整版 | 84.0/89.2 | 53.4/64.8 | 30.2/39.1 | 46.4/51.6 | 62.6/69.9 | 50.4/61.4 | 40.8/49.2 | 52.5/60.7 |
注:* 为原论文报告结果,‡ 为在本文 SFT checkpoint 上的复现。
几个值得停下来看的数。
52.5 vs 50.4。 CAFE 比最强 RL 基线 IGPO 高 2.1 个 EM、1.3 个 F1。幅度不算炸裂,但注意 CAFE 是个 7B 模型,平均 EM 已经超过 GPT-5-Mini(50.7)和 Gemini-2.5-Flash(50.5)这两个纯提示词的闭源模型——当然闭源模型没做任务训练,这个对比更多是"参照系"而非"吊打"。
训练阶梯很扎实: 38.1 → 40.8(SFT)→ 49.7(GRPO)→ 52.5(CAFE)。每一级都有增量,说明收益不是某一步的运气。尤其相对 GRPO,CAFE 在全部 7 个基准、两个指标上全部提升——没有一个基准拖后腿。
域外泛化是真的。 训练只见过 2Wiki,但在 6 个没见过的基准上相对 GRPO 全涨。相对 Search-R1,多跳基准上平均高 7.4 个 EM、5.9 个 F1;单跳基准上只有 1.3——说实话这个分布很合理,单跳问答本来就不太需要中途纠正,多跳才是错误传播的重灾区。
🔬 消融与协同进化分析:这篇论文最值钱的部分
主表只能说明"有用",消融才说明"为什么有用"。
在线机制拆解
| CFE | Adv. Shaping | 平均 EM | 平均 F1 |
|---|---|---|---|
| ✗ | ✗ | 49.7 | 58.0 |
| ✓ | ✗ | 50.8 | 58.4 |
| ✗ | ✓ | 51.2 | 59.4 |
| ✓ | ✓ | 51.9 | 60.3 |
CFE 单独贡献温和(+1.1 EM),advantage shaping 贡献更大(+1.5 EM),两者叠加最优且在每个基准上都有提升。有意思的是最大 EM 增益出现在 MuSiQue、最大 F1 增益在 Bamboogle——都是多跳基准,再次印证"轨迹中途纠正"的价值集中在长程任务上。训练后期的优势分布变化也很说明问题:反馈前 token 的优势被压到零附近,反馈后的转向正态——信用分配确实按设计在走。
离线目标:RDPO vs RSFT
五轮迭代、匹配训练量的对比下,RDPO 全配置平均 52.5/60.7,RSFT 全配置只有 51.2/58.8。前面说过原因:RSFT 的正样本里混着"反馈是废话但轨迹碰巧成功"的噪声,RDPO 的前缀匹配偏好对把这个噪声滤掉了。
单侧优化必然撞墙
这是全文我最喜欢的一张分析。在 2Wiki 上对比三种训练路径:
- 只练批评者(冻结 SFT 智能体,只做 RDPO):67.7 → 71.3,有提升但天花板很低
- 只练智能体(在线 RL + 冻结 SFT 批评者):冲到峰值 84.2 后回落,最终 83.6——平台化了
- CAFE 交替优化:达到 86.6,比最终的 agent-only checkpoint 高 3.0 分
只练智能体那条曲线"先升后降"的形状,几乎就是"批评者跟不上策略演化"的直接证据。智能体犯的错在变,批评者还在用老错误分布的视角给反馈,反馈逐渐从助力变成噪声。
Cross-play:批评者没有绝对强弱,只有合不合拍

图2:2Wiki 上不同训练轮次的智能体(行)与批评者(列)交叉搭配的 EM(左)和 token-level F1(右),红框标出同轮次配对。可以看到红框基本落在每一行的深色高分区——同代搭配效果最好。
这张热力图把"协同进化"从口号变成了证据。第 3 到第 5 轮,每个智能体配同轮次的批评者表现最好;反方向的检验更锋利——把最终的第 5 轮智能体配上 SFT 时的老批评者,EM 只有 80.6,换成第 5 轮的批评者立刻涨到 84.0、F1 从 86.6 涨到 89.2。而第 5 轮的批评者配早期智能体,并不是普遍最优。
这说明增益不是来自"批评者单方面变强",而是来自批评者与策略当前失败分布的对齐。用作者的话说:自我改进的智能体需要的不是更强的监工,而是跟它一起进化的监工。
反馈内容确实在进化

图3:第 1、3、5 轮 rollout 中反馈的高频词。早期(Early)以检索与接地错误为主——misread results、conflated entities、search specifically;中期(Middle)转向证据核验——valid answers、explicitly stated、carefully read;后期(Late)聚焦残余的规划与执行低效——repeated query、redundant tool calls、logic fails。
词云的变化轨迹很清晰:随着基础检索错误被修掉,批评者的火力自动转向更高层的问题。这就是"批评者跟着错误画像走"的直观呈现。
幻觉率
答案级幻觉(答案里有不被检索证据支持的事实性声明)从基座的 29.9% 降到 GRPO 的 17.6%,再降到 CAFE 的 12.6%,且在每一个基准上都比 GRPO 低,最大降幅在 NQ(10.8 个百分点)和 MuSiQue(9.4 个百分点)。轨迹中途有人喊"等等,这个结论证据里没写",对抑制幻觉确实是对症的。
💡 我的判断
这篇论文真实的位置: 它不是新 RL 算法,GRPO 和 DPO 都是现成的;它也不是第一个给智能体加反馈的工作。它真正的贡献是把一个被大家含糊处理的耦合问题讲清楚了——反馈质量和策略能力互相依赖,并用 CFE + advantage shaping + RDPO 三件套给出了一个能跑通的系统化解法。那个"单侧优化必然平台化"的消融,比主表的 2.1 个 EM 更有长期价值,它基本上给"自我改进智能体"这类系统立了一条设计约束。
几个我想挑刺的地方:
- CFE 的因果性没那么干净。 call–skip gap 是相关性不是因果——智能体倾向于在难题上求助,难题本身成功率低,\(\widehat{u}(x)\) 会被这种自选择偏差压低。论文用了 prompt 内对比来缓解,但严格说这是个观察性估计。作者在附录给了一个更新方向保持的理论结果,算是有意识在兜底。
- 请求预算被设为 1。 每条轨迹只允许一次求助,这是工程简化还是方法限制?复杂 deep-research 任务一次纠正恐怕不够,论文在 BrowseComp-Plus 上做了验证但正文没展开多次求助的扩展性。
- 依赖教师模型初始化。 SFT 阶段的纠错轨迹由 Kimi-K2.5 生成,如果换一个弱一些的教师,冷启动质量会不会打折?这影响方法的可复现门槛。
- 离线 RDPO 的配对依赖 Jaccard 0.7 加 LLM judge,两重启发式过滤,超参敏感度没系统扫过。这块我自己也没完全想清楚最优配对策略长什么样,可能我的担心有偏差,但值得后续工作验证。
对工程的启发: 如果你在做 agentic 系统,且正在认真考虑"自我反思/自我批评"模块——别再用提示词糊一个静态 critic 了。这篇论文的证据链很明确:critic 必须参与训练,且必须和策略交替更新。哪怕不照搬 CAFE,"用同分布的成败轨迹配对做偏好优化来更新批评模块"这个思路,迁移成本很低。
和同期工作的相对位置: Search-R1 开创了结果监督 RL 搜索的范式,R-Search、IGPO、StepSearch 在信用分配和过程监督上各有推进,CAFE 选择的是一个正交切口——不动奖励的结构定义,而是在轨迹中间加一个可学习的干预通道。从平均 EM 看它目前站在这条线的最前面,但 52.5 的绝对水平说明这个领域离"解决"还远,多跳 QA 的域外泛化仍然有很大的空间。
一个开放问题收尾:CAFE 的批评者和智能体共享参数,角色靠条件化区分——那如果任务复杂到批评需要的能力远超生成(比如数学证明验证),共享参数会不会反而成为束缚?分离参数加协同训练,会不会是下一步?这个方向我自己也还在观望。
觉得有启发的话,欢迎点赞、在看、转发。跟进最新AI前沿,关注我