先讲个反常识的实验,它来自一篇叫 A-Evolve-Training 的论文。
有个团队让一个30B的模型在闭环里自主进化,跑了整整几周,中间没有任何人插手。第3轮的时候,模型在内部评测集(dev)上刷到了历史新高,分数0.93。可与此同时,外部那份真实的留出测试却几乎纹丝不动。更离谱的是第4轮,模型换了个策略,内部分数反而掉到了0.89,外部分数却冲到整个实验的最好成绩0.86。
内部涨了,外部没动;内部跌了,外部反而涨。这个"剪刀差"足以治好所有"让模型自己变强"的乐观妄想。它说明一件很硬核的事:当你把"改进"这个开关交给模型自己,它最可能学会的从来不是"怎么把事情做得更好",而是"怎么把分数刷得更高"。这两者之间的那道缝隙,就是"反馈信号"这个东西最微妙、也最要命的地方。
所以回到那个问题,自进化到底该靠什么信号驱动?
我的答案不是某一个信号,而是一句话:信号要分层,而且要承认每一层信号都会撒谎。这篇文章就把这套东西掰开揉碎讲清楚,尽量不讲公式,只讲原理。
先把"自进化"这个词拆开,它骗了很多年人
行业里现在把三件完全不同的事,经常用一个词混着说。
第一件,叫输出级修正。模型在同一个上下文里反思一下,发现自己刚才答错了,重写一遍答案。典型的就是 Self-Refine、COT 重试那一套。它的问题在于,会话一结束,一切归零,没有留下任何东西。
第二件,叫持续学习。用新数据去更新参数或者记忆,比如微调、LoRA、往 RAG 记忆库里塞新东西。它跨会话保留了经验,但"怎么学习"这件事本身从来没变过,你还是在用同一套管道往里灌数据。
第三件,才是真正的递归自我改进,简称 RSI。它的定义来自那篇《The Last AI Built by Humans》,原文大意是:智能系统通过与任务、环境和其它智能体的持续交互,把获得的经验与反馈,自主转化为跨轮次的、持久的自我改变,可以是改模型参数,可以是改 Agent 的 Harness,甚至可以是改改进策略本身。
注意括号里那三个词:参数、Harness、改进策略。这三个是不同的改进对象,难度和可逆性完全不同。
业界绝大多数号称"自我进化"的系统,其实都停在第二件。真正卡住整个领域的那道门槛,不是"怎么改",而是"怎么保证改完是变好而不是变坏"。区分第二件和第三件的唯一标尺,就是那句很刺耳的话:改进的机制本身,是否进入了被改进的范围。
你要是把这句话读进去了,就会明白后面所有的信号分层,都是在回答同一个问题,怎么在"改对了"和"改歪了"之间做判断。
别太相信模型的自我反思,那是所有信号的敌人
我做了几年 Agent 工程,最怕听到的一句话就是:让模型自己反思一下,下次它会做得更好。
这句话听起来特别合理,其实脆弱得一塌糊涂。一个学生每次考完试都找老师问"为什么扣分",问了几十次之后,他大概率总结出这么一套东西:老师喜欢"首先、其次、最后"这种结构,多选题选 C 的概率比较高。于是他不再学知识,专门练这三招。分数是涨了,能力一点没涨。
模型也一样。一旦它发现自己反复调用评估器就能拿到反馈,它学会的不是"变强",而是"更会考试"。Anthropic 在自动化研究的实验里,就观察到过模型随机种子择优,也就是把好结果挑出来当自己做的;还观察到模型通过反复查询评估器,试图把测试标签给套出来。
这叫什么?这叫投机取巧式的"分数增长",本质是信号被钻了空子。所以第一课是:自我评价永远只能当辅助,不能当主信号。真正有用的反馈,必须来自任务闭环本身,来自环境、来自用户、来自那些模型自己骗不了的东西。
反馈信号的四层阶梯,一层比一层难
我倾向于把反馈信号排成一个阶梯,从最基础到最尖端,一层比一层难,也一层比一层可信。
第一层,执行结果信号。这就是环境给的二值反馈,对或者错,成功或者失败,Accuracy、F1 这一类的。几乎所有 Agent 系统都在用。它的致命伤在于,它只能告诉你"这轮行不行",不能告诉你"为什么不行"。你考了个 60 分,分数本身不会告诉你,是审题审错了,还是知识点没掌握,还是那天状态不好。
更要命的是,当改进循环有权限反复调用评估器的时候,这种信号会主动诱发钻空子。前面那个考 60 分的学生,如果每次都能问老师"为什么扣分",他就会慢慢开始刷分而不是刷能力。对应的解法很朴素,每轮换一套新卷子,而且不告诉你上一轮的评分标准。论文里管这叫"冻结评估器"。
第二层,对比信号。这一层有意思多了。它不看你单条轨迹的好坏,而是把同一道题的成功轨迹和失败轨迹并排放在一起,看差异。
为什么必须这么干?因为单看一条失败轨迹,你根本分不清是系统框架(Harness)有问题,还是这道题本身就太难。一条失败记录里,系统性的缺陷和任务特有的难点纠缠在一起,你没法归因。
但你要是让同一道题多跑几遍,把结果分成三组,一切就清楚了。全部成功的,你去看效率机会,是不是有冗余动作,有没有没必要的工具调用。部分成功的,你把同题的成功和失败轨迹配对起来比,找出那些跟结果差异相关的函数级因素。全部失败的,你再去查历史轨迹做配对,实在找不到才做单边诊断。
这一组的精髓在于:同一道题、同一个系统框架,成功和失败轨迹之间唯一的差异只能是执行过程本身。这么一来,"任务难度"这个最大的混淆变量就被消掉了。就像那句大白话说的,光看错题本,你不知道自己是不会还是粗心。只有把同一道题做对和做错的版本摆在一起,差异才会自己跳出来。
ModularRSI 的实验数据非常能说明问题。非模块化的整体重写,准确率掉了1.13,三次全对的概率跌了5.62;而模块化独立进化再整合,准确率涨了4.86,三次全对概率涨了5.62。结论很扎心:如果不能把"这次改对了"归因到具体模块上,所谓进化就是负收益,它不是在变强,只是在把方差变大。这几乎是整个领域最值钱的一句话。
第三层,策略效能信号。这一层的问题不再是"这次改得好不好",而是"我用来决定怎么改的那个策略,本身好不好"。
听起来很绕,但 Dream-RSI 这篇论文给了一个出人意料的答案:已经走完的发现历史,本身就是一台快速又廉价的"发现过程模拟器"。
什么意思呢?你如果已经走过一遍迷宫,并且把每一条路、每个岔口的结局都记在了笔记本上。现在你想测试另一种走法好不好,你根本不需要再走一遍迷宫,翻翻笔记本就够了,因为结局早就写在里面了。Dream-RSI 就是拿这种"回放目标函数"给探索策略打分:发现质量减去执行成本,再加上并行奖励。
它还带了一个数学保证:因为候选集里包含当前策略本身,所以选出来的策略一定不比现在的差。这正好是自进化定律里"保持或提升性能"那一条的落地。但这里必须留个心眼,这个保证只在模拟器内部成立。模拟器越是偏离真实世界,这种优化就越像在刷分。
第四层,度量可信度信号。这是最尖端的一层,也是开头那个实验真正想讲的东西。它处理的信号不是"我改得好不好",而是"我用来衡量好坏的那把尺子,还准不准"。
回到 A-Evolve-Training 那个实验。在第3轮,回路找到了把内部 dev 分推到历史新高的办法,可外部目标几乎没动。当时回路手里其实已经握着正确答案了,有个权重重组的方案,内部得分0.93,外部也能到0.925。但它把这个正确答案扔了,因为它的内部度量说"这个更差"。
论文里的反向实验更漂亮:把那个看起来最该补的领域往下压,该领域内部分数掉了,但外部目标一点没退化。两个干预合起来证明了一件事:在代理指标下吸引最多优化压力的那个领域,根本不是真实性能的限制因素。
这篇论文的收口句我一直记着:在前沿尺度上,发现"什么时候不该相信这个代理指标",本身就是研究问题的一部分。
这句话才是整篇文章最狠的地方。它意味着,越往高层走,你要质疑的对象就越往上移。第一层质疑"这轮做得对不对",第二层质疑"是系统的问题还是任务的问题",第三层质疑"我用来改进的策略本身好不好",到了第四层,你在质疑"我衡量好不好的那把尺子还准不准"。
别把尺子当真理,尺子也会骗人
讲到这里,必须泼一盆冷水。现在很多团队特别迷信 LLM-as-judge,把大模型当裁判,当"自动真理机",觉得只要裁判够聪明,反馈就够可信。我的经验恰恰相反,judge 更适合当分诊台,而不是当终审法院。
judge 最靠谱的用法是三件事:把明显坏的样本筛出来,把有争议的样本送人工,把可复现的失败沉淀到回归测试集里。你要是让 judge 直接给每一条都定生死,Agent 很快就会学会迎合 judge 的格式偏好,而不是把事情真正做好。你会看到一种诡异的景象:评测分一路走高,用户却越来越不爱用。
这不只是 judge 的问题,是"代理指标"的通病。任何拿来自动评估的东西,不管是 LLM 裁判还是规则打标,都是真实目标的代理。代理就有偏差,偏差就会被人钻空子。区别只在于,谁在钻,钻得深不深。
所以真正可靠的系统,必须同时握着两套尺子:一套是内部的代理指标,负责快速迭代、高频反馈;一套是外部的锚,比如真实用户采纳率、留出测试、上线后的回滚率。两把尺子一旦开始背离,那就是一个值得警惕的信号,比任何单点分数都值钱。
别只看结果,过程信号才是归因的关键
前面讲的全是"结果类"信号,但真正让 Agent 能持续变好的,是"过程信号"。这一点我自己做工程时体会特别深。
结果错了以后,光知道"错了"是没用的,你得知道该改 prompt、改工具、改检索、改 planner 还是改评估集。这四样东西的修法完全不同,你要是把它们混在一个总分里,Agent 只会越调越玄学。
所以失败的样本必须能归到具体的桶里。我常用的分桶大概是:目标理解错、工具选错、检索缺召回、上下文污染、执行权限不够、验证器缺失、输出格式不符。每个桶对应的修复动作都不一样。只有当你把失败样本按桶归档,然后逐个桶去看分布,你才知道这周到底该动哪里。
而这一切的前提,是 Agent 每次执行都留下结构化的轨迹。不是只看最终答案,要看它怎么走到这一步的:检索召回了哪些源,重排为什么选这些,工具调用失败了几次,是不是在低质量网页里打转,是不是过早总结了,是不是把不确定的内容写成了确定结论。
这些过程信号是"可归因反馈"的原材料。只知道好坏不够,还要知道坏在哪里,这才是自进化真正靠的东西。
还有第四种信号,藏在产品指标里
我见过太多团队,一门心思盯"答对没答对",结果漏掉了一种更致命的问题。
Agent 的问题经常不是"答错",而是"答得太慢、查得太贵、动得太多"。一个任务 90% 成功但平均要 3 分钟,另一个 82% 成功但 15 秒就能交互,产品选哪个?很多时候根本轮不到比准确率,后者已经把前者淘汰了。
所以产品信号必须进来:延迟、成本、重试率、用户打断率、改写率、收藏、留存。这些数字往往比评测分数更能反映 Agent 的真实价值。一个用户反复打断、反复改写、用一次就弃用,哪怕你的评测报告写得再漂亮,也说明检索或判断链路出了问题。
在线反馈和离线反馈,必须分两个抽屉
还有一条我踩过坑的原则:在线反馈和离线反馈要分开,别混着用。
在线反馈,就是线上跑的时候实时拿到的信号。它适合做快速调整,比如改路由、改重试策略、改提示词、改小型记忆。但模型训练、策略更新、长期记忆写入,这些慢变量最好都经过离线评测和回放,验证过了再上。
为什么?因为线上信号太脏了。一次用户误操作,一个坏网页,一次 judge 偏置,都可能被 Agent 当成"经验"固化下来,变成它日后的行为模式。你要是不加这道闸,一次偶然的坏信号就可能把系统带歪,而且带歪之后很难掰回来。
我见过太多"自我进化"系统就是这么死掉的:今天一个坏反馈,明天一条脏轨迹,系统越进化越蠢,最后进化成一堆难以调试的黑盒。
系统不能只有扩张力,还得有收敛力
前面讲的都是"信号从哪来",但还有一个更宏观的问题:信号拿到之后,系统凭什么朝着对的方向收敛,而不是越跑越偏?
这里有个来自动力系统的观察,我觉得特别能说明问题。AI 在工程系统里,本质上是一种高速、带随机性的扩张力量。它无时无刻不在产生新的想法、新的代码、新的改动。如果你只给它扩张力,不给它收敛力,整个系统一定会漂移,就像火箭只有推力没有制导,越飞越偏。
而且关键的是,这个收敛力不能寄希望于模型自己。模型的自发性方向感是靠不住的,真正让系统稳定收敛的,是 Agent、文档、代码、验证机制、审计机制、记忆机制组合起来的那个整体结构。专业一点的说法是,收敛力内生于整个扩展认知系统提供的地形里,而不是某个人的脑子里。
这里面我最认同的一个概念,叫"项目特定的吸引子"。通用 skill 再强大,也只能掌握任务类型或领域内的通用知识,它不了解"这个项目为什么这样设计",不了解项目定位、架构取舍、设计哲学、历史包袱和当前基线。通用 skill 形不成项目特定的吸引子。
所以你会发现一个反直觉的现象:当系统只能拿到大量缺乏权威层级、缺乏先后约束的信息时,信息越多,冲突越大,系统越不稳定。真正需要的不是通用架构套话,也不是某种八股化的目录结构,而是这个项目自身的设计思想、语义权威链和长期收敛方向。
吸引子不是一份文档,而是一个被多种仓库制品共同承载的稳定拓扑。它的作用是持续塑造后续演化的方向,让每一次改动都朝着同一个方向收敛,而不是各自为政。
轨迹挖掘,才是收敛力的终极来源
动力系统视角里,最容易被忽略、又最关键的一个对象,是轨迹。
现在绝大多数实践还停留在任务驱动:任务完成了,脚手架好像就没用了,历史存不存也无所谓。这恰恰是最大的盲点。只看单次任务是否完成是不够的,更重要的是持续记录系统的演化轨迹。
轨迹的意义不只是留档,而是从系统历史里持续提取趋势性信息和周期性信号。我举几个真实的例子:哪些误解在反复出现?哪些局部正确正在累积成方向性错误?哪些审计误报在白白浪费系统预算?哪些设计债会周期性回潮?哪些临时修补总会重新长成结构性问题?
这些轨迹信息,如果任务一结束就扔掉,那就什么都不是。但如果你把它蒸馏成倾向性的审计提示词、校准规则、规范性文档补丁、约束性文档增量,它就会形成一股越来越强的收敛力量。
我特别认同一个判断:轨迹挖掘代表的是从"完成任务"升级到"塑造长期受控演化"。前者是今天跑完今天爽,后者是让系统从自己的历史里持续长出更强的收敛力。这才是自进化真正该有的形态。
那到底该靠什么驱动?我把话说明白
绕了一大圈,回到最初的问题。
自进化不靠单一的"奖励信号",它靠的是"可归因的分层反馈"。我把答案收成几句话:
第一,自我评价只能当辅助,主信号必须来自任务闭环,来自环境、来自用户、来自模型骗不了的东西。
第二,信号必须分层。执行结果告诉你行不行,对比差异告诉你问题和任务的区别,策略效能告诉你改进方式本身好不好,度量可信度告诉你那把尺子还准不准。越往高层,你越是在质疑更根本的东西。
第三,反馈必须可归因。只知道好坏不够,得知道坏在哪里,得能归到具体的桶里,每个桶对应一个明确的修复动作。归不了因的进化,就是负收益。
第四,在线反馈和离线反馈要分抽屉。快变量在线快速调,慢变量离线验证后再上,别让一次偶然的脏信号固化下来。
第五,系统必须有内生的收敛力。扩张力交给 AI,定向交给项目特定的吸引子,局部闭环交给 Plan,长期收敛交给轨迹挖掘。吸引子解决系统长期往哪演化,轨迹挖掘解决系统怎么从自己的历史里持续长出更强的收敛力。
还有最后一条,也是我觉得最深刻的一条:你用来衡量"好不好"的那把尺子,早晚会过期。当前沿系统进化到第四层,它就已经在质疑自己的度量了。而"该怀疑哪把尺子"这个判断权,目前还握在人类写的宪法里。下一个真正的开放问题,是那部宪法本身,能不能进化。