AI Berkshire
首页 › AI产业研究

harness 自进化的几篇论文

AI产业研究 | 2026-09-22 · 公众号 | GitHub 原文
目录

一个 300 亿参数(每次激活 30 亿)的开源模型,在七项企业任务上的平均成功率是 78.0%。

研究者找来一位更强的老师:同样的任务、同样的外部配置,老师的成功率是 93.6%。让学生做监督微调,也就是把老师的成功轨迹当标准答案、训练学生逐字复现。这是业内最标准的做法。

训练完,学生的成功率是 63.1%。七项任务全部退步,最多的一项掉了 29.9 分。

这是 Salesforce 2026 年 9 月 8 日挂出的论文(arXiv 2609.09134)的核心结果。论文给的原因是:学生学到了老师的知识,却丢了自己原来的做事方式;而包在模型外面的那层文字,是围着它原来的做事方式调出来的。开头那个 78.0%,本身就是调这层文字调出来的,调之前只有 29.2%。

这层文字怎么调、调完还能不能接着动权重,两年里有四篇论文在同一条线上:TextGrad、GEPA、SkillOpt 和这一篇。它们回答的是同一个问题:不改模型权重,只改模型外面那层文字,能不能也算"训练"。


一、运行框架:模型外面的那层文字

一个大模型应用的表现由两样东西决定。一是权重。二是包在模型外面的一切:系统提示词、技能文档、工具说明、执行钩子(每步前后自动运行的检查程序)、上下文管理(哪些内容留在模型的输入里)。后者现在有个统一的名字,叫运行框架。Claude Code、Codex 这类产品,就是"模型加一套运行框架"。

改权重,更新的是数十亿个浮点数,信号是数值梯度,要有权重和显卡,产物不可读,风险是过拟合和遗忘。改文字,更新的是一段人能读的文本,信号是大模型读完轨迹后写的批评,能调接口就行,闭源模型也可以,产物可审计、可手改、可搬到别的模型上,风险是越改越长、越改越空、改完不如不改。下文说的"轨迹",指智能体完成一个任务的完整过程记录:每一轮想了什么、调了哪个工具、工具返回了什么。

这层文字的分量不小。Salesforce 论文里,同一个模型、权重一个字节没动,只是自动调整了运行框架,七项任务平均成功率从 29.2% 到 78.0%,多了 48.8 分。

命令行任务基准 Terminal-Bench 2.0 的官方榜上,同一个 Claude Opus 4.6 换不同的运行框架,成绩相差 18.4 分;Gemini 3.1 Pro 相差 20.8 分(据综述 2606.20683 整理,属于观察性比较)。


二、2024 年 6 月:TextGrad,把批评当梯度

斯坦福的 TextGrad(arXiv 2406.07496,后发表于《自然》)是这条线的起点。

简单说:让执行模型做题,让另一个更强的大模型读它的回答、写批评,再按批评改提示词,循环十几次。

论文的讲法更形式化。把系统里每一步的输入输出连成一张有向图,图上的变量是文本。正着执行一遍之后,反着沿图走:每条边多调用一次大模型,把下游收到的批评翻译成"上游这个变量该怎么改"。论文把这段话叫文本梯度,接口也照搬 PyTorch:loss.backward(),optimizer.step()。

TextGrad 的前向与反向

图的下半部分是论文里的真实例子,物品计数任务。执行模型 gpt-3.5,批评由 gpt-4o 写,12 次迭代,总共只看了 36 道训练题。

  • 优化前:"回答推理题,逐步思考,最后一行按固定格式给出数值。"准确率 77.8%。
  • 优化后:"逐项列出物品与数量;直接从清单求和;核对每项是否与问题相关;给出答案前再数一遍。"准确率 91.9%。
任务 基线 TextGrad
LeetCode 难题完成率(gpt-4o) 26%;带 1 个示例的自我反思法 31% 36%
GPQA 钻石集(gpt-4o) 51.0% 55.0%
物品计数(gpt-3.5 执行) 77.8%;DSPy 带 8 个示例 84.9% 91.9%
GSM8k 数学(gpt-3.5 执行) 72.9%;DSPy 带 8 个示例 81.1% 81.1%

优化出来的那段提示词里,没有任何一道具体题目的信息,全是通用的做题纪律。

一年半后,这一点受到了质疑。2025 年 12 月的一篇论文(arXiv 2512.13598)专门检验"梯度"这个类比,三个结果:

  • 沿图逐层反传,相对"让大模型一步直接改写",多数设置下无显著差异;
  • 用错误的标签去训练,准确率也不显著下降;
  • 训练十轮,没有出现过拟合的形态。

真梯度不会这样。合理的解释是:这类方法提分,靠的是发现通用的格式与纪律,而不是从样本里吸收信息。需要说明,这篇质疑论文用的是 Claude 3.7 Sonnet 和三个百题级数据集,结论能否外推到弱模型和程序性任务,尚无证据。

同台对比也不利于 TextGrad。2025 年 7 月的 GEPA 不做反向传播,GPT-4.1 mini 上六项任务合计提升 12.19%,同一张表里 TextGrad 是 6.11%。下一节讲它。

梯度这个类比被放弃了,留下来的是一个判断:一段文字反馈,比一个分数信息量大。


三、2025 年 7 月:GEPA,用反思和进化代替反向传播

伯克利与斯坦福等的 GEPA(arXiv 2507.19457,ICLR 2026 口头报告)是上面那个同台对比里的赢家。它保留了"文字反馈信息量大"这个判断,丢掉了反向传播,换成三个部件。

GEPA 训练循环

  • 读完整轨迹写反思。 每次在 3 道题上跑一遍,把每个模块的输入、输出、推理链,连同评分器在给分之前产生的文字(编译报错、没通过的规则、还缺哪些文档)一起交给反思模型,让它改写一个模块的提示词。
  • 小批复评。 同样 3 道题再跑一遍,变好才进候选池。
  • 在帕累托前沿上选父代。 对每道验证题记下所有候选的最高分,凡是至少在一道题上领先的候选都留着,下一次按"领先几道题"加权随机抽一个来改。目的是不被第一个不错的策略困住。

第三条是它与 TextGrad 最实质的区别。TextGrad 每次从总分最高的候选出发。GEPA 的消融里,这样做四项任务合计 +6.05,束搜索 +5.11,帕累托选择 +12.44。

GEPA 论文原图 5:隐私委托任务上的搜索树

上图是 GEPA 论文的原图 5,一条真实的进化路径。任务是把用户的私密问题改写后交给外部大模型,既要答得好又不能泄露个人信息。括号里是验证集分数。从一句话的初始指令(82.26)到最优候选(97.6),红色路径走了四步:加上识别个人信息的指导;把输出拆成"推理"与"请求"两段,明令禁止出现姓名与编号;要求对每处删改给出理由;禁止部分遮盖。灰色节点是没走通的分支。

主结果(Qwen3-8B,测试集 %;GRPO 是改权重的强化学习,用 LoRA、固定 24,000 次采样):

Qwen3-8B 四种优化方式

方法 多跳问答 指令遵循 隐私委托 AIME 2025 六项平均
不优化 42.3 36.9 80.8 27.3 45.2
MIPROv2(此前最强的提示词优化器) 55.3 36.2 81.6 20.0 47.8
GRPO(改权重) 43.3 35.9 86.7 38.0 48.9
GEPA 62.3 38.6 91.9 32.0 54.9

六项里五项 GEPA 高于 GRPO,AIME 上低 6 分。换到闭源的 GPT-4.1 mini 上,六项平均:不优化 53.0,Trace 56.3,MIPROv2 58.7,TextGrad 59.1,GEPA 65.2。六项全部跑完,GEPA 花了 86 美元。

在 Qwen3-8B 上优化出的提示词直接搬到 GPT-4.1 mini 上,仍有 +9.0,高于直接在 GPT-4.1 mini 上优化的 TextGrad 和 MIPROv2。

数字核对

标题说"提示词进化胜过强化学习",摘要说"采样少 35 倍"。两处都要看口径。

采样预算对比

  • 35 倍是单任务峰值。 GEPA 各任务的总预算是 1,839 到 7,051 次采样,GRPO 是 24,000 次,比值 3 到 13。"35 倍"来自指令遵循任务:GEPA 在第 678 次采样处找到最优,24,000 ÷ 678 ≈ 35。
  • 对面的强化学习配置偏弱。 用 LoRA、24,000 次采样;论文自己在引言里说同期工作通常要数万次、最多用到数十万次。结论的适用范围是"小预算、小模型、有文字反馈"。
  • 合并部件不稳。 加上"合并"后 GPT-4.1 mini 上再 +1.1,Qwen3-8B 上反而 −2.4,指令遵循从 38.6 掉到 28.2,比不优化还低。

"反思比反传有效、多样性比贪心有效"这两条是同预算下比出来的,换模型不变,可以采信。

GEPA 现在是 DSPy、MLflow、谷歌智能体开发套件的内置优化器。也正因为用的人多,它的毛病在一年里被摸清了:越改越长,以及对训练题过拟合。这就是下一篇论文的起点。


四、2026 年 5 月:SkillOpt,把训练纪律搬到技能文档上

GEPA 之后,让大模型反复改一段文字这件事本身,被发现有三种毛病。

  • 越改越长。客服公司 Decagon 在生产环境里用 GEPA,提示词被改到 5,000 字符以上,训练集涨、泛化跌;压回约 1,000 字符几乎无损。另一篇论文(ESPO,2609.04197)的说法是"提示词变长 3 倍却不更准"。
  • 越改越空。ACE 论文(arXiv 2510.04618)记录过一次:18,282 词元(token)的上下文被一步重写成 122 词元,准确率从 66.7 掉到 57.1。
  • 改完不如不改。一项评测(arXiv 2604.14585)做了 72 次提示词优化,49% 的结果低于不优化。

微软与上海交大等的 SkillOpt(arXiv 2605.23904)针对的就是这个。被训练的对象是一份技能文档,也就是 Anthropic 在 2025 年 10 月发布、如今 Codex 与 Claude Code 都在读的那种 SKILL.md。执行任务的模型全程冻结。

数据分三份,后文都用这三个词:训练集产生经验,选择集决定接不接受一次改动,测试集只在最后报一次成绩。

它把深度学习的训练纪律逐条搬了过来:

深度学习 SkillOpt 的对应物
一个批次 带着当前技能跑 40 个训练任务
反向 失败、成功轨迹分开,每 8 条一组交给优化器模型(另一个更强的大模型,只在训练时出现),各提"增、删、改"
学习率 每步最多采纳 4 条编辑,逐渐衰减到 2 条
验证门 候选技能在选择集上分数严格更高才接受,打平也拒绝
负样本 被拒的编辑连同造成的掉分记下来,后面的反思都能看到
动量 每轮结束,同一批 20 个任务用新旧技能各跑一遍,总结成一段受保护的长期指引

流程如下图:

SkillOpt 训练循环

结果(GPT-5.5,直接对话,测试集准确率 %):

SkillOpt 主结果

技能来源 表格处理 办公文档问答 数学 家居环境 六项平均
无技能 41.8 33.1 37.6 83.6 58.8
人写技能 72.9 66.9 38.4 91.8 73.7
TextGrad 41.1 42.0 49.2 82.8 64.0
GEPA 73.6 63.9 43.2 85.8 73.4
SkillOpt 80.7 72.1 66.9 95.5 82.3

(表内列了其中四项,另两项搜索问答、文档图像问答见图;平均值含全部六项。)

六个基准、七个模型、三种运行框架,共 52 组对比,SkillOpt 全部最优或并列。

学到的东西长什么样? 表格处理任务,初始技能只有一句"用 Python 表格库,保留无关内容"。被采纳的编辑依次加上了:

  • 打开真实工作簿,不要只看预览;
  • 跨表定位表头与目标区域;
  • 查找之前先规范化键与单元格类型;
  • 题目里提到查找类公式时,仍然写入算好的静态数值(评分程序读的是单元格的值,不会替你重算公式);
  • 填满整个目标区域,包括现在是空白的格子;
  • 保存后重新打开,核对边界行。

这一次运行,测试集从 40.4 到 78.9(与主表不是同一次运行)。

最终写进技能的编辑极少:六个基准上只有 1 到 4 次。数学基准 +29.3 分来自 1 次被采纳的编辑,办公文档 +39.0 分也是 1 次。优化器提出的编辑绝大多数被验证门挡在了外面。

代价不小:单个任务的训练消耗约 2,100 万到 2.14 亿词元。

数字核对

SkillOpt 相对"无技能"的两位数增益远大于噪声,可信;要打折的是"比 GEPA 高出多少",以及验证门到底有多可靠。

对实践最有用的一条:论文自己的训练曲线显示,验证门在小数据上会失灵。

数学基准:选择集涨,测试集回落

数学基准上,选择集的最优分从 0.765 升到 0.82;测试集先升到约 0.625,随后回落到约 0.57,回到了起点(据 SkillOpt 论文图 3 估读)。

原因是数学基准每轮只有 35 道训练题,选择集更小。在一个小集合上"严格涨分才接受",学到的是这个小集合本身。

另外两条是数字口径。 论文声明使用默认配置,默认配置在消融表(逐个更换部件、看成绩变化的对照表)里的成绩是 87.1/77.5/61.3(搜索问答/表格/数学)。主表对应的是 87.3/80.7/66.9,恰好等于消融表里另外两种配置各自的最好成绩。消融表报的是测试集成绩,也就是说,主表这三个数相当于在测试集上挑过配置,比默认配置分别高 0.2、3.2、5.6 分。

全文没有重复实验。同一个配置,论文两处报告的数学成绩是 56.5 和 61.3,差 4.8 分。


五、2026 年 9 月:框架调好之后再微调权重

开头那个实验的设定如下。学生是 Qwen3-Coder-30B-A3B,老师是 Gemini-3.1-Pro,七项任务是考勤薪资审计、预算审批、库存预警、物联网异常检测、浏览器自动化、网站后台管理、代码重构。

第一步,用 GEPA 式的搜索给学生进化运行框架,每个任务每次搜索的预算是 20 美元。改动都很具体:薪资审计写明了汇总与加班规则;库存预警加了一个"枚举全部商品"的工具;网站管理补了一个结构化的"完成"工具,并写明后台要"先筛选再读总数"。学生从 29.2 到 78.0。

第二步,把这个为学生进化的框架拿给老师用,老师也从 84.4 涨到 93.6。学生和老师之间还差 15.6 分,于是自然想到:让学生模仿老师在这个框架下的成功轨迹。

七种组合的平均成功率

结果是橙色那一条。对照组说明问题不在模仿本身:同样的模仿,放在没进化过的原始框架下是 +6.3 分;放在进化后的框架下是 −14.9 分。

换一个学生(Gemma-4-26B)在网站后台管理一项任务上复现:46.7 → 进化框架后 55.6 → 模仿后 41.1,比什么都不做还低。

逐任务变化

失败归因:规划类失败从 1.1% 升到 14.6%

论文给每条失败轨迹归了类:

进化框架 进化框架+整条模仿
平均成功率 78.0 63.1
框架里"领域计算规则"这条修改被用到的轨迹比例 30.8% 76.1%
失败中"规划缺陷"的占比 1.1% 14.6%

模仿之后,学生确实学到了老师的知识,框架用得也更多了。坏掉的是规划。这里的节奏就是指规划方式:每一步做多少事,什么时候核对,什么时候提交。

先看薪资审计的案例。进化后的框架给了计算规则,和一句"输出前核对一次列名再保存"。原模型 14 到 20 步完成,三次全对。

模仿之后的模型算出了正确的部门汇总,却把"核对一次"变成了停不下来的循环:同一个查看命令发了 29 次,题目重读了约 20 次,78 步没有发出完成指令,得 0 分。

另一个案例是停得太早。问后台"已通过的评论共多少条",正确答案 346。框架里写了先筛选再计数。模仿后的 Gemma 学到了老师简短、早下结论的风格,进了评论列表没有筛选,直接读了未筛选的总数 351 交卷。

一个停不下来,一个停得太早,共同点是换了节奏。框架是围着学生原来一步一步的节奏进化出来的;整条模仿让它换上了老师的节奏,它撑不起,框架也不再合身。

论文的修法:在策略单轮纠正

论文把它叫在策略单轮纠正。"在策略"的意思是:训练数据来自学生自己走到的状态,而不是老师走到的状态。

两种教法

  1. 取学生自己在进化框架下的失败轨迹;
  2. 由一个大模型自动定位出错的那一轮;
  3. 让老师只改写这一轮:一句纠正思路,加一次正确的工具调用,前后各轮原样保留;
  4. 每处采 3 个候选留最好的;
  5. 约 400 条纠正样本加约 50 条自己的成功样本,做 LoRA 微调(只训练一小组附加参数的低成本微调),不到 1 小时。

结果:78.0 → 79.7。五项上升,两项微降(−0.4、−0.6,在噪声内),规划类失败占比停在 1.8%。

数字核对

标题写的是弱模型"追上",数字不支持这个说法。

  • +1.7 分约为 1.4 个标准误(两行的标准误分别是 0.97 和 0.67)。严格的说法是"单轮纠正不破坏模型与框架的匹配",增益本身还没证实。离老师的 93.6 仍差 13.9 分。
  • "知识学到了"用的是占比。模仿后失败总数变多,知识类失败的绝对量多半也在涨,论文只给了占比没给绝对量。规划类失败的增加也解释不完 14.9 分,其余分散在知识类和其他类别里,论文没有解释。
  • 缺一个关键对照:只用学生自己的成功轨迹微调会怎样?训练集里混了 50 条这样的样本,+1.7 分来自哪一部分无从区分。
  • 标题里的"协同进化循环"只跑了一轮,没有把更新后的模型放回去再进化框架。

但"模仿导致退步"这一半很硬:七项任务方向一致,幅度是标准误的十几倍,两个模型家族复现(Gemma 只做了一项任务),还有原始框架下的反向对照。


四条支线的时间线

上图蓝点是本文讲的四篇,灰点是同期的相关工作。前三条线改文字,第四条线改权重,2026 年下半年汇到同一个问题上:文字和权重怎么一起调。

把四篇放在一起看,提分的改动都很小。TextGrad 的物品计数只抽了 36 个样本,提示词多了四句做题纪律。SkillOpt 六个基准最终只写进 1 到 4 条编辑,数学一项的 29.3 分来自其中 1 条。Salesforce 的异常检测从 0.6 到 89.4,靠一次把流程写清楚的改写。

出问题的改动都很大。GEPA 加上合并部件,指令遵循掉到比不优化还低。SkillOpt 在 35 道题的数学集上,选择集在涨,测试集回落到起点。整条模仿换掉了学生的全部节奏,框架不再合身,掉了 14.9 分;只改出错的那一轮,至少没有退步。

这里的小不是幅度小,是数量少:每次只接受少数几条改动,每一条都在没见过的题上过一遍。两年里站得住的工作,做对的就是这一件事。


完整技术报告(约 90 篇相关工作、逐篇编号与数字口径): https://github.com/xbtlin/ai-berkshire/blob/main/reports/AI产业研究/文本空间优化-从TextGrad到技能与运行框架协同进化-技术报告-20260922.md

论文原文: - TextGrad:arXiv 2406.07496 - GEPA:arXiv 2507.19457 - SkillOpt:arXiv 2605.23904 - Co-Evolving Harnesses and Models:arXiv 2609.09134

精选研究与报告之外的判断,首发在公众号「复利炼丹炉」 · 扫码关注发现数据错误?提交纠错(需附正确值与来源)

同一专题的其他报告