ADAS:让智能体设计智能体,究竟改变了什么?

笔记日期: 2026-10-17
论文: Automated Design of Agentic Systems
作者: Shengran Hu、Cong Lu、Jeff Clune
来源: arXiv:2408.08435v2,版本日期 2025-03-02;首次提交 2024-08-15
资料入口: 作者项目页 · 官方代码资源

1. 我想先分清:到底是谁在变好?

同一个语言模型,外面套不同的程序,解题效果可能差很多。有的程序只问一次,有的让模型先列方案再挑选,有的安排几个角色互相检查,还有的会运行工具,把错误反馈送回模型。这里改变的并不是模型权重,而是模型在什么时候看到什么信息、下一步要做什么。

这就带来一个很实际的问题:这些流程为什么要一直由人手工设计?如果模型已经能写程序,能不能让它提出新的 agent 流程,用任务检验效果,再根据历史结果继续改进?ADAS 正面研究的就是这件事。

论文里的两个名字需要分开。ADAS 是 Automated Design of Agentic Systems 的缩写,指自动设计智能体系统这一类问题;Meta Agent Search 则是作者拿来验证想法的一种搜索方法。它让一个设计者模型编写候选 agent,把验证成绩放入档案,再让设计者参考档案提出下一个候选。

我觉得这篇论文最容易被读过头的地方,是“自我改进”的层次。至少有三种事情都可能被叫作改进:第一,把眼前这道题的答案改好;第二,把以后还能重复使用的解题程序改好;第三,把负责产生解题程序的设计过程本身改好。论文的主要实验是在固定设计过程下做第二件事。它把第三件事列为未来方向,并没有在主实验中证明设计者自身已经递归进化。

这也是我把它当作 harness 自我进化基础读物的原因。这里的 harness 可以理解成“组织模型解题的外层程序”。讨论一个 harness 能不能变好之前,先要说清:允许改哪个部分、拿什么判断好坏、改完以后怎么选出可用版本。否则,给循环起一个更宏大的名字,并不会增加证据。

设计循环与解题循环

图 1:根据论文第 2–3 节和附录 H 整理的原创概念图。上层循环修改候选程序、扩充档案;选定程序后,下层循环用它处理新任务。图中区分的是学习层次,不是一次实际运行记录。

2. 前置知识:把模型和程序拆开看

2.1 模型提供能力,程序决定怎样调用

假设语言模型的参数固定为 θ\theta,外部程序是 AA,输入任务是 xx,采样随机性统一记作 ω\omega。最后得到的回答可以写成:

y=A(x;θ,ω),A∈S.(1)y=A(x;\theta,\omega),\qquad A\in\mathcal{S}. \tag{1}

这里的 S\mathcal{S} 表示允许搜索的程序集合。即使 θ\theta 一点没动,只要改变 AA,系统行为也会改变。五次独立作答后投票,与先作答、再批评、再修改,是两个不同的程序。

这个公式是我为了讲清问题引入的记号,不是论文宣称的定理。它强调一个观察角度:优化对象是可复用的程序,而非单次回答,也不一定是模型权重。所谓“专家”“委员会”“评审”只是程序里给模型设置的角色描述,名称本身不保证能力增加。

如果一个“数学专家”和一个“检查专家”收到相同信息,使用同一模型,又共享同一个错误前提,它们完全可能一起犯错。所以看 agent 结构时,我更关心信息从哪里来、传到哪里去,以及有没有独立的纠错信号,而不是角色数量。

2.2 两种反馈不要混在一起

第一种反馈发生在解题过程中。例如 ARC 给出若干输入输出网格,agent 写一个变换规则,再用可见示例检查这个规则。这个反馈回答的是:“当前这道题的候选方案哪里不对?”

第二种反馈发生在设计过程中。评估器把一个候选 agent 放到一组验证任务上,统计它的准确率或 F1,再把成绩告诉设计者。这个反馈回答的是:“这一整套解题方法,在这些任务上是否好用?”

运行异常又是另一回事。程序报错说明这次评估没有正常完成;程序正常运行却得低分,说明它能执行,但任务解决得不好。把异常修好不能直接算作推理能力提升;有效但低分的程序也不一定需要“调试”,可能需要换一种组织方式。

2.3 验证集只是一个有限测量窗口

若有 nn 道验证题,每题运行 RR 次,用正确与否打分,可以写出最简单的估计式:

J^(A)=1nR∑i=1n∑r=1R1{A(xi;θ,ωir)=yi}.(2)\widehat{J}(A)=\frac{1}{nR}\sum_{i=1}^{n}\sum_{r=1}^{R} \mathbf{1}\{A(x_i;\theta,\omega_{ir})=y_i\}. \tag{2}

指示函数在回答正确时取 1,否则取 0。若任务采用 F1,就把它替换成相应的逐题分数。这一步看起来普通,却提醒我:设计者得到的是有限样本上的随机测量,并不是“这个 agent 对所有未来任务的真实能力”。

多跑几次可以减轻采样偶然性,但不会增加题目种类。同一道难题跑五次,仍然只有一道难题。后面讨论 ARC 的 20 道验证题时,这个区别尤其重要。

3. 为什么让搜索对象变成程序?

论文把 ADAS 拆成三个要素:搜索空间、搜索算法、评估函数。我觉得这是很值得保留的分析方式。搜索算法再聪明,也无法找到当前表示方式根本表达不了的流程。

如果只能改提示词,能改变的主要是指令文字。若外层结构固定为“问一次模型然后返回”,就无法凭空加入一轮工具调用或自适应重试。把 agent 表示成图,可以继续修改节点和信息传递关系。使用程序则能够自然表达分支、循环、临时记忆、工具调用,以及不同的答案聚合规则。

搜索空间的差别

图 2:根据论文第 2 节整理的原创比较图。程序表示扩大了可以表达的行为范围,但真正可搜索到的范围还受接口、模型先验和预算限制。

作者选择 Python,并给设计者提供一个小框架。设计者主要负责写一个把任务信息变成答案的 forward 函数,而不需要每次重新实现模型请求、信息格式化等基础设施。这种做法既保留了程序的灵活性,也避免把大量搜索预算消耗在重复样板上。

论文提到程序语言的图灵完备性。这个论点能说明理想条件下的表达能力,但不能证明有限轮搜索能高效找到任何有用 agent。我们可以把三层空间分开:

Sreachable(B,θ,I)⊆Sallowed⊆Sexpressible.(3)\mathcal{S}_{\mathrm{reachable}}(B,\theta,\mathcal{I}) \subseteq\mathcal{S}_{\mathrm{allowed}} \subseteq\mathcal{S}_{\mathrm{expressible}}. \tag{3}

最右边是理论上能写出来的程序,中间是环境允许的程序,最左边是在预算 BB、模型能力 θ\theta 和接口 I\mathcal{I} 约束下实际可能搜到的程序。一个需要不存在工具的程序,可以写出来,却不能在当前环境使用;一个合法的好程序,也可能在 30 轮提案中一次都没有被提出。

附录 C 的信息记录包含名称、作者、内容和轮次,模型调用接口再把这些信息组织成提示。这类接口选择不是无关紧要的工程细节:它给搜索提供了一套容易组合的词汇,也给搜索加上了人的偏好。

因此,我不认为“程序空间更大”就自动等于“方法更好”。若现有模块足够表达任务所需的行为,受约束的图搜索可能更省预算、更容易得到有效候选;只有当任务需要新的控制方式时,更开放的程序空间才会体现额外价值。比较表示方式时,要把表达上限和搜索效率一起看。

4. Meta Agent Search 的完整循环

4.1 参数不变,历史上下文在变

设第 tt 轮前的档案为 At\mathcal{A}_t,设计者模型的参数为 θm\theta_m,任务领域说明为 dd。搜索可以概括为:

At∼qθm(⋅∣At,d,I),At+1=At∪{(At,J^(At))}.(4)A_t\sim q_{\theta_m}(\cdot\mid\mathcal{A}_t,d,\mathcal{I}), \qquad \mathcal{A}_{t+1}=\mathcal{A}_t\cup\{(A_t,\widehat{J}(A_t))\}. \tag{4}

前半句表示设计者参考档案提出候选,后半句表示把候选及其评估信息加入档案。设计者参数没有更新,但条件上下文发生了变化,因此下一轮提案分布也会变化。

这是一种依赖历史信息的适应过程。它不需要把“学习”局限为梯度更新,但也不能因此说模型权重学到了新知识。档案承担的是外部记忆与搜索经验的作用。

作者要求设计者寻找有意思的新结构,并通过两轮反思检查新颖性与正确性。这里的新颖性主要靠提示与模型判断,没有给出一个精确定义、可重复测量的行为距离。两个候选名字不同,未必实际流程就不同;同一个流程换了角色名称,也未必构成有效探索。

下面按第 3 节和附录 H 改写,保留两轮反思和最多五轮异常修复。

1  接收验证任务、领域说明和最大搜索轮数 N。
2  用基线设计初始化档案,或从空档案开始。
3  对第 1 到第 N 轮依次执行:
4      设计者提出一个想法,并生成完整候选 agent 程序。
5      进行两轮反思,检查新颖性、正确性与设计细节。
6      在验证任务上评估候选。
7      如果执行报错,则修改并重新评估;
8          这样的修复最多进行五轮。
9      将候选及其评估信息加入档案。
10 返回最终的设计档案。

这段伪代码没有穷尽所有终止异常的处理规则。例如五轮之后仍然不能执行的候选,到底记录为失败项还是不参与成绩比较,短伪代码没有讲完整。我不把某一种合理的工程选择写成作者已经明确采用的规则。

4.2 为什么不只保留当前第一名?

想象一个候选引入了有用的反馈方式,却因为最终选答案的方法太差而得分一般;另一个候选擅长聚合答案,但生成的候选不够多样。只保留当前第一名,可能会把这两种局部优点一起丢掉。保留档案后,设计者有机会把它们重新组合。

论文用 ARC 搜索过程说明这种“垫脚石”现象:先出现多候选生成,再出现改进与聚合,后续逐渐加入不同反馈角色,最终组合成更复杂的流程。作者把这些历史设计看作后来创新的材料,而不是一条只会越来越高分的单调路径。

这个解释很有启发,但需要保留证据强度。观察到一条这样的搜索轨迹,不等于已经定量证明“档案造成了多少收益”。要分离档案的作用,还需要在相同预算下比较无档案、只保留最优项、保留完整历史等条件,并重复多次完整搜索。

档案也不是免费增长的。若每个候选描述平均占 LL 个 token,每轮把全部历史都交给设计者,TT 轮累计输入的历史材料大致为:

L∑t=0T−1t=LT(T−1)2.(5)L\sum_{t=0}^{T-1}t=\frac{LT(T-1)}{2}. \tag{5}

这只是一个理想化的账本,不是论文实测 token 数。它说明长期搜索最终会遇到上下文成本。检索、摘要、淘汰都可以缓解问题,但也可能提前删除那些暂时低分、以后有用的设计。怎样管理档案,本身就是搜索算法的一部分。

5. 一个候选 agent 到底长什么样?

ARC 例子很适合把两层循环落实。每道题给若干输入输出网格,要求推断规则,再处理一个新输入。作者不是让 agent 直接填出最终网格,而是让它生成变换程序,用题内可见示例检验,然后改进候选变换。

外层 Meta Agent Search 搜索的是“怎样生成、检查、改进这些变换”的通用流程。内层 agent 搜索的才是当前题目的变换规则。外层设计做得好,应当能帮助多道不同 ARC 题,而不仅是让某一道题多试几次。

ARC 题内候选与反馈流程

图 3:依据论文图 3b 和附录 D 整理的原创概念图。可见示例服务于解题,隐藏答案服务于评估。图中呈现的是方法意图,没有宣称这里执行过作者程序。

算法 2:ARC 示例流程的概念化整理

论文所谓 human-like feedback,是模型模仿某种反馈视角,并非真人参与评阅。

1  为当前网格题生成五个候选变换程序。
2  用可见的输入输出示例测试候选。
3  保留至少通过一个示例的候选。
4  从不同角色视角收集模型反馈。
5  对保留候选最多做三轮改进,并重新检查示例。
6  根据可见示例上的表现排序。
7  结合选中的候选,形成最终变换程序。
8  用最终变换处理题目的新输入网格。

我会把这套流程拆成三个能力看。第一,能否提出足够好的候选;第二,反馈能否识别候选的错误;第三,最后能否选中或组合出正确方案。三个环节不等价。生成十个方案里有一个正确,并不意味着最终输出就正确。

为了说明区别,假设每个候选独立地以概率 pp 正确,共生成 mm 个,那么至少存在一个正确候选的概率是:

P(some correct)=1−(1−p)m.(6)P(\text{some correct})=1-(1-p)^m. \tag{6}

推导很直接:所有候选都错的概率是 (1−p)m(1-p)^m,用 1 减去它即可。可这只是“好答案存在”的概率。如果有正确候选时,选择器只有概率 ss 能利用它,简化后的最终成功率还要乘上 ss。增加候选数量若同时让选择器更混乱,收益未必继续增加。

现实中的模型样本也不独立。同一个模型可能反复犯相同错误,不同角色也可能只换一种语气来表达同一个误解。因此,候选的错误是否互补、选择器是否可靠,比“开了几个 agent”更值得测量。

论文还给了同行评阅、分治和 Verified Multimodal Agent 等例子。最后一个名称尤其需要谨慎:它是模型生成的设计名称,而实验框架主要是文本模型调用。作者把更丰富的多模态能力列为后续方向。不能因为名称含 multimodal,就推断论文完成了视觉模型实验。

6. 先把实验设置摆清楚

本文使用的都是论文中的历史模型快照。设计者为 gpt-4o-2024-05-13,大部分候选与基线使用 gpt-3.5-turbo-0125。跨模型实验另外包括 claude-3-haiku-20240307、同一个 GPT-4o 快照,以及 claude-3-5-sonnet-20240620。这些设置不能被当成今天各家模型的能力排名。

ARC 并不是完整数据集或竞赛榜单评估。作者从公开训练集合中,筛选网格尺寸不超过 5×55\times5 的任务,再抽取 20 道验证题与 60 道测试题,每题运行五次,搜索 25 轮。这个筛选范围必须和成绩一起保留。

另外四个领域分别独立搜索 30 轮。DROP 衡量阅读理解中的离散推理,用 F1;MGSM 是多语言数学;MMLU 覆盖多个知识领域;GPQA 是较难的科学问答。附录 E 说明,除 GPQA 外,每个领域抽取 128 道验证题、800 道测试题。GPQA Diamond 使用 32 道验证题、166 道测试题,每题重复五次。其他三个领域每题一次。DROP 采用 one-shot 形式,其余采用 zero-shot 形式。

实验验证题数测试题数每题重复搜索轮数
筛选后的 ARC2060525
DROP、MGSM、MMLU,各自128800130
GPQA Diamond32166530

这里统计的是题目数量。比如 GPQA 测试 166 道题、各跑五次,共有 830 次作答,但不能因此说它覆盖了 830 道独立科学问题。重复执行主要缓解模型采样波动,题目难度与题目内容仍然共享。

基线包括思维链、自洽采样、自我改进、辩论和一种受质量多样性思想启发的方法。推理实验还加入 step-back abstraction 与角色分配,以及单独的提示词优化方法。作者将基线放进同一框架,以减少接口差异;这是一项有用控制,但不等于各方法的调用次数、token、花费或延迟完全相同。

7. 领域内收益:强在哪里,弱在哪里?

领域内搜索结果

图 4:论文表 1 的数据重绘。每列分别选择最强人工基线,另列提示词优化和 Meta Agent Search;误差线保留原表的 95% bootstrap 区间。DROP 为百分制 F1,其他列是准确率百分数。

最明显的收益出现在阅读理解和多语言数学。DROP 最强人工基线为 65.8,搜索结果为 79.4;MGSM 从 39.0 提升到 53.4。MMLU 从 65.9 到 69.6,GPQA 从 31.6 到 34.6。按各自最强人工基线做减法:

Δmanual=(13.6, 14.4, 3.7, 3.0).(7)\Delta_{\mathrm{manual}}=(13.6,\ 14.4,\ 3.7,\ 3.0). \tag{7}

这些是分数点差。DROP 是 F1 点,准确率任务是百分点,不是相对提升百分比。53.4 减 39.0 是 14.4 个百分点;再除以 39.0 才会得到另一个含义的相对增幅。由于任务与指标不同,我也不把这四个差值简单平均成一个“总体提升”。

提示词优化对应成绩是 69.1、30.6、67.6、32.9。程序搜索可以改动的东西比指令文字更多,结果支持了这种自由度在当前设置下的价值。但它没有单独识别:收益究竟来自流程结构、更多推理调用、提案质量,还是几者共同作用。想把这些因素拆开,还需要预算匹配和更细的消融。

作者给出的解释是:在 DROP、MGSM 中,模型可能已经有足够知识,错误更多来自计算、推理或幻觉,因此改进组织方式能发挥作用;在 MMLU、GPQA 中,知识不足可能构成限制。我认为这是一条合理假设,但不能当作已经测出的错误分类结论。

如果要验证这个解释,可以把错误分成“缺知识”“已有信息但推理失败”“正确候选已出现但选错”“工具反馈没用好”等类型。只有观察到不同类型随结构改动发生可重复变化,才能更有把握地说清机制。

误差线也不应当被过度使用。两组边际置信区间是否重叠,不能直接替代在同一批题目上的配对检验。GPQA 点估计只提升三分,而原表区间宽度本来就有数分,因此我会把这个改善描述得比 DROP 的大幅提升更克制。

8. 迁移有价值,但并非每次都成功

8.1 从数学迁移到其他任务

表 2 把 MGSM 上发现的三个设计迁移出去。Dynamic Role-Playing 在 GSM8K 达到 69.5,在 GSM-Hard 达到 31.2;相对各列最强人工基线,分别高 25.9 与 13.2 个百分点。至少在这些实验中,搜索找到的组织方式具有跨题集价值,不只是对几个验证问题有用。

但附录表 5 给出的全貌更值得读。迁移到 GPQA 后,三个设计分别只有 28.6、28.7、29.9,均低于最强人工基线的 31.6。迁移到 MMLU 时,一个设计达到 67.0,另外两个是 62.4 与 64.8,也没有全部超过基线 65.9。

跨任务迁移的正负变化

图 5:由表 2、表 5 计算,显示迁移设计相对目标任务最强人工基线的点估计差。正数表示增益,负数表示退步;DROP 的差是 F1 点,其余是准确率百分点。这不是显著性热力图。

这里有两个不同问题。“候选集合里存在一个可以迁移的设计”,不等于“我只看源任务结果,就能选中那个适合目标任务的设计”。如果读完目标任务的全部成绩,再挑目标任务第一名,那已经多做了一次选择。

对真正部署的人来说,后一个问题更重要。面对没有标签的新场景,你不能预先知道哪个候选最好。论文的迁移结果证明一些设计可以跨域使用,但完整方法还需要包含选择规则。只展示每列最佳值,会把这部分困难隐藏起来。

8.2 换一个基础模型,最佳结构也会变

表 3 在 ARC 上更换后端模型。Structured Feedback 在 GPT-3.5 的三个候选中最好,为 13.7;换到 GPT-4o 和 Claude 3.5 Sonnet 后,Dynamic Memory 更好,分别达到 37.0 和 48.3。复杂反馈和更多改进轮次的相对价值,会随底层模型能力变化。

跨模型结果

图 6:论文表 3 的点估计重绘。人工基线也是在每个后端分别取最好者。连线只用于区分类别,不表示模型规模或训练计算量的连续曲线。

这里的 48.3 仍然属于前面限定过的小网格 ARC 子集,不能拿掉实验范围后宣传为完整 ARC 成绩。表中也有单个设计迁移失败的例子:Structured Feedback 在 Haiku 上是 5.0,低于人工最好 6.3;在 Sonnet 上是 38.7,也略低于人工最好 39.3。

因此,我会把结论写成“搜出的设计族在多个后端表现良好,最佳结构随后端变化”,而不会写成“自动设计始终优于人工设计”。保留失败项不是削弱论文,而是把它真正回答的问题讲准确。

另一个关键细节在第 4.3 节:作者用 GPT-3.5 的 test accuracy 选择三个 ARC 设计,再进行跨模型迁移。这不自动意味着作者用了目标模型成绩来筛选,但意味着源测试集已经参与了架构选择。它不能再被当成一个完全没参与选择的最终报告集合。

更严格的部署实验,可以先规定只在验证集选设计,再把该设计冻结,在新任务和指定后端上报告结果。这样才能区分“候选里有好设计”和“选择过程能稳定找到好设计”。

9. 初始化:经验也可能成为锚点

标准版本把人工基线放进初始档案。附录 I 另外做了空档案对照。结果并不是种子设计越多越好:DROP 从空档案的 73.9 提高到有种子的 79.4,但 MGSM 却是空档案达到 67.5,有种子只有 53.4。MMLU 与 GPQA 的有种子成绩略高。

有种子与空档案

图 7:论文表 6 重绘,并保留报告的 95% 区间。空档案并不等于没有先验:预训练设计者、任务说明与基础框架都仍然存在,被去掉的是显式的初始 agent 设计。

这个结果让我觉得,档案需要同时被看成“经验库”和“搜索偏好”。经验能让后续设计复用好组件,也能把模型的注意力锚定在某些已有套路上。预算只有几十轮时,早期锚点可能很大程度地影响探索路径。

作者推测空初始化让数学任务上的探索更加开放。这有道理,但表格本身无法排除另一些解释:某次搜索早期恰好遇到了好候选、短上下文更容易生成有效方案,或某些种子对这一任务不合适。要确认机制,需要多次独立搜索,并记录控制结构变化、每个候选成本和分数轨迹。

读结果时也不能把 67.5 悄悄替换到表 1 的 53.4 上。两者对应不同初始化条件。真正有价值的信息,是初始化属于算法的一部分,而且它可以改变搜索结果;不是挑一个最高数字代表所有设置。

我会进一步比较三种方案:完全有种子、完全空档案,以及只保留少数结构差异很大的种子。第三种可能兼顾利用与探索,但这只是值得验证的设计方向,不是本文已经报告的实验结论。

10. 评估噪声为什么会影响“进化”?

10.1 重复作答不能替代新题目

假设同一道题的重复结果具有相同方差 σ2\sigma^2,任意两次之间的相关系数为 ρ\rho。RR 次平均结果的方差可以逐步展开:

Var⁡(Zˉ)=Rσ2+R(R−1)ρσ2R2=σ2R [1+(R−1)ρ].(8)\operatorname{Var}(\bar{Z}) =\frac{R\sigma^2+R(R-1)\rho\sigma^2}{R^2} =\frac{\sigma^2}{R}\,[1+(R-1)\rho]. \tag{8}

分子第一项来自 RR 个自身方差,第二项来自不同重复之间的协方差。如果这些重复完全独立,第二项为零;有正相关时,平均之后剩下的波动更大。

拿独立重复作为参照,就能定义一个等效重复次数:

Reff=R1+(R−1)ρ.(9)R_{\mathrm{eff}}=\frac{R}{1+(R-1)\rho}. \tag{9}

例如假设重复五次、相关系数为 0.5,则等效值约为 1.67。这里的 0.5 只是为了理解公式而设置的数值,不是对 ADAS 实验的相关性估计。这个例子说明,同一道题多跑几遍,可以降低采样误差,却无法补足任务覆盖。

重复作答的有效信息

图 8:按式(9)绘制的原创解析示意图。横轴相关性是假设条件,没有拟合论文数据。重复有助于观察随机执行的稳定性,新题目则有助于覆盖不同问题,两者作用不同。

10.2 试得越多,越容易遇到偶然高分

先看一个条件严格的参考情形:候选程序事先固定,评估使用 nn 个独立、取值有界的任务分数。Hoeffding 不等式给出:

P(∣J^−J∣≥ϵ)≤2exp⁡(−2nϵ2).(10)P(|\widehat{J}-J|\ge\epsilon)\le2\exp(-2n\epsilon^2). \tag{10}

如果有 KK 个候选,而且它们都是在不看这批评估数据的前提下固定的,可以对所有候选使用并集界:

P ⁣(max⁡k≤K∣J^k−Jk∣≥ϵ)≤2Kexp⁡(−2nϵ2).(11)P\!\left(\max_{k\le K}|\widehat{J}_k-J_k|\ge\epsilon\right) \le2K\exp(-2n\epsilon^2). \tag{11}

令右边不超过 δ\delta,整理得到 ϵ=log⁡(2K/δ)/(2n)\epsilon=\sqrt{\log(2K/\delta)/(2n)}。这个推导表达一个直觉:比较的候选越多,要控制“其中某个看起来特别好只是偶然”的风险,就需要更多证据。

但我特意不把式(11)当作 Meta Agent Search 的理论保证。原因是它的候选会根据反复使用的验证成绩而变化,违反了“候选独立于评估数据固定”这个前提。写出公式的目的,是让假设暴露出来,而不是用一个熟悉的不等式替方法补上不存在的证明。

10.3 一个分数压缩掉了很多失败信息

两个 agent 都得 50 分,可能各自错在完全不同的题上。只给总分,设计者不知道它们能否互补,也不知道应该修拆题、修工具使用,还是修最后的答案聚合。总分适合排序,却未必适合指导下一步修改。

论文把更丰富的运行反馈列为未来方向。我认为这很关键:少量有代表性的成功与失败样例,可能比一个精确到小数点的平均分更有帮助。但反馈越丰富,暴露给设计者的验证信息也越多。如果总是围绕同一批题目分析,仍然会有适应性过拟合。

所以“反馈更丰富”和“评估更可信”需要同时设计。前者提高修改的针对性,后者要求留出独立边界,判断改动到底能不能推广到新问题。

11. 搜索成本、使用成本和延迟是三本账

附录 J 报告,当时一次 ARC 搜索与评估大约花费 500 美元,一次推理领域运行约 300 美元,主要支出来自评估候选时调用 GPT-3.5。它们是历史实验成本,不能当作今天运行一次的报价。

把搜索和后续使用分开,总成本可以写成:

Ctotal=Csearch+M Cserve.(12)C_{\mathrm{total}}=C_{\mathrm{search}}+M\,C_{\mathrm{serve}}. \tag{12}

MM 表示未来任务数量。假如搜到的程序每次任务比原方案便宜 ΔC>0\Delta C>0,仅从货币成本看,回本条件是:

M>CsearchΔC.(13)M>\frac{C_{\mathrm{search}}}{\Delta C}. \tag{13}

但 ADAS 没有证明最佳分数设计每次更便宜。它可能调用更多模型、看更多 token,于是根本不存在上面这个正的节省量。质量提升可以让更高使用成本值得接受,但那是另一种价值判断,不能偷换成“自动优化一定更省钱”。

延迟又不能只看总调用次数。十次彼此独立的请求,在资源足够时可以并行;十轮必须依次等待反馈的修改,无法这样压缩。若把调用表示成有向依赖图,每个节点耗时为 ℓv\ell_v,理想情况下至少需要经历最长依赖路径:

Lcritical=max⁡π∑v∈πℓv.(14)L_{\mathrm{critical}}=\max_{\pi}\sum_{v\in\pi}\ell_v. \tag{14}

这里的 π\pi 是一条依赖路径。现实中的限流、排队和工具执行还会增加时间。因此,一个只追求准确率的搜索,不会自然倾向于更短的关键路径。

论文明确把多目标优化列为后续方向。可以用“分数减去成本惩罚”做标量目标,但惩罚权重体现的是使用者偏好。另一种思路是保留一组互不支配的设计:一个最快,一个最省钱,一个最准确。对实际系统而言,这往往比只保存最高分候选更有价值。

我希望看到的对照是:在相同 token、调用费或延迟预算下,搜索设计能达到怎样的质量。否则,多一点分数究竟来自更聪明的组织,还是单纯多花计算,很难说清。

12. 设计选择:为什么这样做,什么时候会失效?

12.1 完整档案,还是只保留当前最好?

只保留当前最好者,输入短、选择明确,也容易把新版本与旧版本比较。完整档案则有利于重新组合那些还没显出优势的想法。问题是档案会越来越长,重复设计和过时成绩可能干扰判断。只按分数检索会遗失新颖但暂时低分的结构;完全不筛选又可能让设计者看不清重点。

12.2 开放程序,还是受约束模块?

程序能写循环、分支和新工具组合,但也更容易产生无效或过度消耗资源的候选。受约束模块减少自由度,却可能让更多预算真正用于比较有效设计。若目标任务只需要已有组件的重排,扩大语法空间未必有帮助;若关键创新恰好需要新的控制结构,限制过窄又会封死道路。

12.3 多个批评者,还是外部检查?

不同角色的批评者可以给出不同解释,但仍然可能共享同一个误区。可执行检查提供另一类证据,却可能只覆盖可见示例。在 ARC 中,通过全部示例也不能唯一确定对未见输入的正确规则。模型反馈和可执行检查可以互补,各自都不是完整真值。

12.4 多改几轮,还是尽早停止?

反思能修错,也可能把原本正确的答案改坏。如果停止条件依赖模型自己说“已经正确”,就需要自我判断具有足够校准。固定轮数可以控制预算,但适合弱模型的轮数不一定适合强模型。表 3 里最佳结构随模型变化,就是这一点的具体提醒。

12.5 单领域搜索,还是多领域共同搜索?

单领域目标清晰,容易利用反复出现的任务模式;多领域目标更接近通用需求,却要处理不同指标、不同数据量和相互冲突的改动。一个总体均分可能掩盖某个小领域的大幅退步。若真的要做通用 harness,就应该明确各领域权重,并保留最差情况,而不是只给一个平均数。

13. 局限:这份证据还覆盖不到哪里?

首先,论文主要在问答任务上评估。它没有证明多日软件开发、变化环境中的持续适应,或者部署后的 harness 能在任意任务中自行修复。那些场景会引入持久状态、延迟反馈、工具故障和更长的错误传播链,不能直接从一次性问答外推。

其次,搜索轮数和验证题数都不算大。早期提案、初始档案和随机性可能显著影响结果。论文报告的题目层面置信区间,并不能自动告诉我们“重新从头搜索一次,还能不能找到同样好的设计”。对某个候选成绩的信心,与对整个发现过程可重复性的信心,是两个不同对象。

再次,迁移结果需要把选择过程一起看。源测试集参与 ARC 设计选择,是论文写明的细节;只保留跨模型最高分,会让这个条件消失。同样,统一框架不等于统一计算预算,准确率提高也不能自动归因于结构效率。

术语也可能让读者误会。human-like feedback 不是人类评审;候选名字里有 multimodal,不证明进行了视觉输入实验。附录 G 在描述一个领域时把阅读理解与 GPQA 放在一起,而正文其他地方清楚地将 GPQA 归为科学、DROP 归为阅读理解。这里应当依据实验定义与表格,不应从文字不一致推导出额外实验条件。

最后,搜索对象是可执行程序,候选可能以未预料的方式使用评估环境。论文第 6 节讨论了隔离执行等措施。对我而言,方法层面的重点是:评分需要区分真正解决任务、利用意外信息,以及超出原定资源预算的行为。这是在说明评估设计应覆盖什么,并不是声称本文观察到了某种具体违规行为。

14. 独立批判性分析

14.1 我最认可的贡献,是找到一个可反复检验的设计单位

具体使用哪一种专家角色,可能很快随着模型升级而失效。更持久的想法,是把“可复用的解题程序”作为候选:它能被提出、测量、保存,也能在新任务上继续检验。这样,agent 设计就不再只是一次次手工调整提示,而成为一个可以记录与比较的搜索过程。

程序表示还有一个好处:研究者可以在算法层面讨论它的信息流和停止条件,而不必把所有变化都压进一句模糊提示。不过,可读不等于已解释清楚机制。观察到某个复杂流程得分高,仍然需要消融来判断哪些组件真正有用。

我会把论文支持的命题分成三档。第一档,程序搜索在这些任务设置中能找到有用设计,证据较强。第二档,历史档案与新颖性驱动是主要增益来源,仍需更多控制实验。第三档,设计者已经能不断改进自身,主实验没有证明。把这三档分开,后续工作才知道应该补哪一块。

14.2 选择规则本身就是算法的一部分

假设一个方法生成了 30 个设计,然后每个目标任务都挑测试分数最高的那个。这样的结果说明候选库有潜力,但并没有说明没有测试标签的用户该怎么选择。图 5 中同一个来源的三个设计,在 MMLU 上有正有负,正好把这个问题显露出来。

我更想看到一个固定的选择策略:可以按源验证成绩选,也可以给目标任务少量独立校准题,还可以按成本约束选。但选之前就应该声明信息权限与规则,不能在读完最终测试结果后再改变规则。

搜索、选择与最终评估

图 9:针对后续研究提出的原创评估流程。搜索反馈、选设计与最终测试分别承担不同职责。这是本笔记的建议,不是说论文在所有实验中都使用了三套独立数据。

算法 3:我建议补充的迁移评估

以下是后续实验建议,与算法 1 描述的论文方法分开。

1  预先固定任务划分、模型快照、允许工具和资源预算。
2  仅使用搜索反馈,运行多次独立的完整搜索。
3  按提前声明的选择规则,每次搜索选出一个设计。
4  冻结设计、提示和停止条件。
5  在新任务及事先指定的目标模型上评估。
6  同时报告逐任务质量、成本、延迟与负迁移。
7  分开统计题目之间的波动与完整搜索之间的波动。
8  在相同预算下比较有种子、空档案和受限搜索空间。

这套实验不要求把所有变化都限制住,而是要求每个结论有对应的比较对象。想证明程序空间有用,就控制搜索预算;想证明档案有用,就改变档案策略;想证明迁移选择可靠,就把选择规则固定下来。否则,很多因素一起改变,成绩虽然上升,却很难积累可迁移的知识。

14.3 解题更好,不等于改进过程更好

一个 agent 多做对几道题,说明它更擅长任务。一个设计者用更少评估找到同样好的 agent,才说明它更擅长改进。若讨论 meta-harness 或递归自我改进,应该测量后一个层次,而不只是展示档案中的最佳分数不断刷新。

因此,我会关注“随着总搜索成本增加,在新任务上能达到的质量曲线”。比较对象是整个改进过程,而非最后一个幸运候选。只有设计过程自身发生可验证的改进,才能进一步讨论更高层的学习。

另一个有实际价值的问题是后端变化后的稳定性。表 3 已经显示最佳架构会随模型改变。那么,当服务模型升级时,系统能否用少量新反馈重新选择或调整 harness,同时保住原来解决得好的案例?这比笼统宣称“设计能泛化”更接近部署需求,也是本文没有解决但明确启发的问题。

15. 结论:保留方法,收紧结论

ADAS 把语言模型外面的程序变成了搜索对象。Meta Agent Search 展示了一条相对简单的路径:提出设计、用验证任务评估、保存历史,再从历史继续提出设计。DROP 与 MGSM 上的明显收益、多个场景下的迁移,以及空初始化反而更强的数学结果,都让这条路线值得继续研究。

但它的价值并不需要依赖过强表述。程序语言表达能力大,不等于有限预算下什么都能搜到;同一道题重复运行,不等于拥有更多独立任务;候选集合中存在可迁移设计,不等于每个候选都能迁移;固定设计者改善解题程序,也不等于设计者本身已经实现递归进化。

继续读 harness 相关论文时,我会带着三个问题:究竟允许改变什么,反馈如何驱动改变,以及最终怎样在不看测试答案的情况下选出可用设计? 这三个问题,比结构图里画了多少 agent 更能说明方法是否真正向前走了一步。

参考资料与图表说明

  1. Hu、Lu、Clune:ADAS v2。主来源:34 页正文及附录 A–J。方法见第 2–3 节,实验见表 1–6,任务设置与费用见附录 D–J。
  2. 作者项目页,用于定位论文与项目资料。
  3. 官方 ADAS 资源入口。

图 1–3、9 为原创概念图,图 4–7 重绘原表,图 8 为解析示意;编号公式属于笔记分析,并非论文原公式。本文没有新增模型实验或复现成绩。