ADAS: Automated Design of Agentic Systems
一句话总结:与其让人类工程师手工拼装 Chain-of-Thought、Self-Reflection、Toolformer 这些 agent 积木,不如让一个 meta agent 直接在代码里"编程"出新 agent——把整个 agentic system 表示成一段 Python
forward()函数(图灵完备 = 理论上能表达任何 agent),meta agent 读一个不断增长的历史发现 archive,一轮轮迭代造出更有意思的新 agent,实测发现的 agent 大幅超过人类手工设计的 SOTA,且跨域、跨模型迁移依然领先。
- 来源:Shengran Hu, Cong Lu, Jeff Clune(University of British Columbia / Vector Institute / Canada CIFAR AI Chair),ICLR 2025 conference paper,arXiv:2408.08435v2,2025-03-02
- 代码:https://github.com/ShengranHu/ADAS (全部开源)
- 本地 PDF:ref13_adas-automated-design-agentic-systems.pdf
- 谱系地位:这是"自动设计 agent/harness"这一整支的奠基论文之一。[[ref09_meta-harness]] 与 [[ref17_self-harness]] 都直接引用它作为"code space search / meta-agent"范式的源头,本笔记会反向呼应它们的定位。
TL;DR 速览
- 问题:Foundation Model(FM)单次查询往往不够,要可靠解题得靠复合 agentic system(多组件 + 工具 + 多步)。但这些"积木"(CoT、reflection、memory、tool use……)和它们的组合方式,至今都靠人类专家针对每个域手工调——既慢又难穷尽。能不能把"设计 agent"这件事本身自动化?
- 方法:
1. 提出并形式化一个新研究领域 ADAS(Automated Design of Agentic Systems)=
搜索空间 × 搜索算法 × 评估函数三件套; 2. 主张一条尚未被探索的路径:把整个 agent 定义在代码里——因为主流语言(Python)图灵完备,代码空间理论上能表达任意 agent(prompt / 工具 / workflow / 三者任意组合); 3. 给出具体算法 Meta Agent Search:一个 meta agent(GPT-4)读历史 archive,生成"新 idea 描述 +forward()代码",做 2 轮自反思保证新颖、最多 5 轮 debug 保证无错,评估后连同分数存回 archive,循环滚动; 4. 只给 meta agent 一个 <100 行的极简框架(FM 查询 API + prompt 拼装),其余全靠它自己编程发明。 - 关键数字(发现的 agent 用 GPT-3.5 评估,meta agent 用 GPT-4):
- 阅读理解 DROP F1 +13.6/100、数学 MGSM 准确率 +14.4%,均大幅超最强手工 baseline;
- 跨域迁移:MGSM 上搜到的 agent 迁到 GSM8K +25.9%、GSM-Hard +13.2%,甚至迁到非数学域(阅读/多任务)仍超手工 baseline;
- 跨模型迁移:ARC 上 GPT-3.5 搜到的 agent 迁到 Claude-3.5-Sonnet 达 ~48.3%,一致领先;
- 消融彩蛋:数学域"空 archive 从零搜"反而更强(53.4 → 67.5),因为没有预设模板反而鼓励更发散的探索。
- 一句话评价:这是把 Sutton"苦涩的教训"、Clune 的 AI-GA、以及 FunSearch/AI-Scientist 的"让 FM 写代码去发现"三股力量,首次系统性地对准了"agent 设计"本身。它最有价值的洞见不是"搜到了更好的 agent",而是论证了一个图灵完备、可迁移、可解释、能站在人类现有代码之上的搜索空间——把 agent 设计从"手工艺"变成"可优化对象"。[[ref09_meta-harness]] 把 archive 换成"裸文件系统 + Agent 自主 grep 全历史轨迹",[[ref17_self-harness]] 把外部强 meta agent 换成"模型自己 + 回归门",本质都是在 ADAS 定义的这张地图上继续走。
tags: #harness工程 #自我改进 #agentic-search #code-space-optimization #meta-agent #ADAS #open-endedness #stepping-stones
related: [[ref09_meta-harness]](把 archive→文件系统全历史,直系后继)· [[ref15_aflow]](在 workflow 图空间搜索,ADAS 的"图表示"对照支)· [[ref17_self-harness]](把外部 meta agent→模型自我改进)· [[ref23_darwin-godel-machine]](开放式自我修改,ADAS 的 higher-order 愿景的落地)· [[ref20_alphaevolve]](FunSearch 谱系的进化式编码 Agent)
摘要
研究者正投入大量精力开发强大的通用 agent,其中 FM 被当作 agentic system 里的模块(如 CoT、Self-Reflection、Toolformer)。但机器学习的历史告诉我们:手工设计的方案终将被学习出来的方案取代。我们描述一个正在形成的新研究领域——Automated Design of Agentic Systems (ADAS),目标是自动创造强大的 agentic system 设计,包括发明新积木和/或以新方式组合它们。我们进一步证明,ADAS 中有一条尚未被探索却大有可为的路径:agent 可以被定义在代码里,新 agent 可以由一个 meta agent 用代码编程出越来越好的版本来自动发现。鉴于大多数编程语言是图灵完备的,这条路径理论上能学习任何可能的 agentic system。我们给出一个简单而有效的算法 Meta Agent Search 来演示这个想法:meta agent 基于一个不断增长的历史发现 archive,迭代地编程出有意思的新 agent。跨编程、科学、数学多个域的大量实验表明,我们的算法能逐步发明出大幅超过 SOTA 手工 agent 的新设计;更重要的是,我们一致地观察到一个令人惊讶的结果——Meta Agent Search 发明的 agent 在跨域、跨模型迁移后仍保持优越性能,展现出其鲁棒性与通用性。
1 介绍:手工积木终将被"学"出来
论文的立论建立在一条贯穿机器学习史的规律上——手工制造的人工物,会随着算力和数据的增长,被学习出来的、更高效的方案取代(Clune 2019;Sutton 2019)。作者列举了一串"从手工到学习"的经典范式转移,作为 ADAS 的类比根基:
| 领域 | 手工阶段 | 学习阶段 |
|---|---|---|
| 计算机视觉 | HOG 等手工特征 | CNN 学出的特征(Krizhevsky 2012) |
| 网络结构 | 手工设计架构 | Neural Architecture Search(NAS) |
| LLM 对齐损失 | 手工设计如 DPO | DiscoPOP 学出的 loss function |
| 科研流程 | 人工做实验 | The AI Scientist 自动研究管线 |
| 机器人环境 | 手工搭环境 | OMNI-EPIC 自动生成环境 |
于是本文抛出核心研究问题:Can we automate the design of agentic systems?(我们能不能把 agentic system 的设计也自动化?)
[!TIP] 什么是 agentic system / agent(本文定义)? 社区当时对"agent"尚无共识定义。本文把 agent 界定为:以 FM 作为工作流中的模块、通过规划、使用工具、执行多步迭代处理来解决任务的系统(Chase 2024;Ng 2024)。关键词是"compound(复合)"——不是单个模型查询,而是把 CoT 规划、memory、tool use、self-reflection、多角色协作等积木编排成一个有控制流的程序。
直觉类比:如果说 FM 是一个"会思考的零件",那 agentic system 就是"用这个零件搭出来的一整台机器 + 装配图"。ADAS 要自动化的,正是画装配图这件事——甚至发明图上没有的新零件。
为什么手工路线不 scale? 作者指出:(1) 待发现的积木数量极其庞大,靠社区一个个发现要很久;(2) 即便积木都发现了,把它们组合成针对海量真实应用的有效系统,因为组合与交互方式太多,仍然极其耗时。相反,用 ADAS,积木和 agent 都能自动学出来——这可能不仅省人力,还是通往更强方案的更快路径。
现有 ADAS 尝试的局限:少数已有工作可算作 ADAS,但大多只优化 prompt(PromptBreeder、OPRO),这严重限制了它们发明灵活设计模式(如新 workflow)的能力——prompt 变了、workflow 却被钉死。本文的突破点就是把整个系统放进代码空间:
[!IMPORTANT] 本文的核心主张(一句话):在代码空间里搜索,理论上能发现任何可能的 agentic system——包括所有积木(prompt、tool use、workflow)以及它们的任意组合。因为 Python 图灵完备(Boyer & Moore 1983;Ladha 2024),而且现代 FM 越来越擅长编程,所以可以直接用 FM 当 meta agent,在代码里自动编程出新 agent。
2 ADAS 的形式化:搜索空间 × 搜索算法 × 评估函数
作者仿照 AutoML / NAS 的做法,把 ADAS 形式化成一个优化过程,并识别出三个关键组件(Figure 2)。这张图是理解整个领域的"坐标系"。

Figure 2 逐元素解读:图分三块,从左到右对应 ADAS 的三个正交维度——
- 左「Search Space(搜索空间)」:决定"哪些 agentic system 能被表示、从而被发现"。图里画的是一叠代码文件,标注 E.g. Agents defined by code——即本文选择的"代码空间"。作者强调:如果搜索空间只允许改 prompt(如 PromptBreeder),那么"workflow 与预设不同的 agent"就根本无法被表示。
- 中「Search Algorithm(搜索算法)」:决定"怎么探索这个空间"。图里是一个 LLM 在写 def forward(self, taskInfo): instruction = "think step by step."——即 LLM defines agents using code。因为空间巨大甚至无界,必须权衡 exploration-exploitation:既要快速找到高性能 agent,又要避免卡在局部最优。已有做法有强化学习(GPT-Swarm)或 FM 迭代生成(PromptBreeder)。
- 右「Evaluation Function(评估函数)」:决定"怎么给候选 agent 打分"。图里一个 agent 回答"Where is the capital of Canada → Ottawa ✓""1+1=? ",标注 E.g. Accuracy on the task。可优化的目标不止性能,还可以是成本、延迟、安全性。
- 中间那个循环箭头(Sample New Agent ↔ Evaluate the Objectives):点出 ADAS 是一个"采样新 agent → 评估目标"的迭代闭环。
[!NOTE] ADAS 的正式定义
Automated Design of Agentic Systems (ADAS) 涉及使用一个搜索算法,在一个搜索空间中发现能优化某评估函数的 agentic system。
这个"三件套"抽象的价值在于:它让后续所有工作都能被清晰定位。例如 [[ref15_aflow]] 是"搜索空间 = workflow 图";[[ref09_meta-harness]] 是"搜索算法 = 强编程 Agent + 全历史文件系统";[[ref17_self-harness]] 是"评估函数 = held-out 回归门 + 有界编辑"。它们全都是在 ADAS 这张地图上选了不同的坐标。
为什么偏偏选"代码空间"? 作者给出四条理由(这是全文最重要的方法论论证):
[!TIP] 代码空间 vs 其他搜索空间(讲透 + 对比) | 维度 | Prompt 空间 | 图/网络空间 | 代码空间(本文) | |---|---|---|---| | 表达力 | 只能改措辞,workflow 钉死 | 能改节点连接,但工具用法等仍固定 | 图灵完备,任意积木 + 任意组合 | | 可解释性 | 中 | 低(图结构不直观) | 高(代码可读,好 debug,利于 AI 安全) | | 复用人类成果 | 难 | 难 | 易(可直接站在 LangChain、RAG、搜索工具之上) | | 搜索先验 | 弱 | 弱(自定义空间缺先验) | 强(FM 本就在海量代码上训练过) |
逐条说明:①表达力——PromptBreeder 只变 prompt 文本,DyLAN/GPT-Swarm 把 agent 表示成图(FM 是节点变换、文本流是边),但工具用法等组件仍被钉死;只有代码能表达"任何可能的设计"。②可解释性——程序代码可读,让 debug 更容易、也增强 AI 安全(能审计 agent 到底会做什么)。③站在人类肩膀上——代码空间可以直接调用开源框架里现成的积木(RAG、搜索引擎工具),而自定义图空间做不到。④FM 先验——因为编程是 FM 训练中最重要的任务之一,用代码空间能直接借力 FM 已有的编程专长;反观自定义图空间,因为缺这些先验,搜索会低效得多。
3 方法:Meta Agent Search
[!IMPORTANT] 这是全文的核心。一句话概括 Meta Agent Search:让一个 FM 当"meta agent",读一个不断增长的历史发现 archive,迭代地编程出"有意思的"新 agent,评估后连同分数存回 archive,如此滚动。
3.1 极简框架:meta agent 只需写一个 forward()
理论上 meta agent 可以从零编程一切,但实践中不给它任何基础函数(如 FM 查询 API)是低效的。所以作者定义了一个 <100 行的极简框架,提供查询 FM、格式化 prompt 等基本能力。于是——meta agent 只需编程一个 forward() 函数就能定义一个全新 agentic system(这个函数吃进任务信息、吐出对任务的回答),做法类比 FunSearch(只进化指定函数)。
[!TIP] 什么是 FunSearch?为什么本文类比它? FunSearch(Romera-Paredes et al., Nature 2024)是"用 LLM 做程序搜索来做数学发现"的开创工作。它的关键设计是:不让 LLM 从零写整个程序,而是固定一个程序骨架、只让 LLM 进化其中"指定的那个函数"(priority function)。这样既保留了 LLM 生成的灵活性,又把搜索约束在一个可控、可评估的接口上,用它发现了 cap set 问题等的新构造。
本文借鉴的正是这一点:固定框架(Info 数据结构 + FM_Module + AgentSystem 基类),只让 meta agent 编程
forward()。好处是——新 agent 天然是"合法可运行的程序",评估简单,且 meta agent 能专注在"控制流/编排逻辑"这个真正有创造空间的层面,而不用重复造 FM 查询这类轮子。
框架的核心抽象(见 Code 1):用一个 namedtuple Info(name, author, content, iteration_idx) 封装每一条信息(FM 响应、工具结果、任务描述都统一成 Info),于是不同模块间可以自由拼接、通信;FM 模块会自动把所有输入 Info 拼成结构化 prompt(每条按其 metadata 加标题)。一个用该框架实现的 Self-Refine 例子(Code 2)只有约 30 行:初始 CoT → 循环里让 Critic 打分 → 若不对则把反馈拼回输入、再 refine,最多 5 次。
3.2 搜索循环:archive 驱动的开放式迭代

Figure 1 逐元素解读(全文招牌图,是方法的心脏 + 结果的预告):
上半部分是搜索闭环——
- 「Meta Agent」(左):核心大脑(一个 FM)。它旁边有个自指的圆弧箭头,标注 Refine until novel and error-free,表示它生成后会自反思迭代直到新颖且无错。
- 「New Agent」(右上):meta agent 的输出,是一个结构化对象:Summary and motivation:"Based on the insights from previous agents…"、Name:"Divide and Conquer Agent"、Code:"def forward(Task): …… return Answer"——即"新 idea 的高层描述 + 名字 + 完整 forward 代码"三件套。
- 「Test performance on tasks and add to archive」(右下箭头):新 agent 在任务上评估,连同分数被加入 archive。
- 「Agent Archive」(中)→「Input」→ 回到 Meta Agent:archive 作为 Input 反馈给 meta agent,供下一轮"Next interesting agent"参考。这就是闭环:archive 越长,meta agent 的灵感来源越丰富。
下半部分「Examples of Discovered Agents」是三个真实搜到的 agent(名字都是 meta agent 自己起的,代码见 Appendix G): - Multi-step Peer Review Agent:多个 Expert 各自出答案 → 互相当 Reviewer 交叉评审 → 各自根据评审 refine → 汇总。 - Verified Multimodal Agent:先生成 Visual Paradigm(可视化表示)→ Verifier 校验 → 用 Verified Paradigm + CoT 求解。 - Divide and Conquer Agent:Sub-problem Division 把问题拆成子问题 → 分派给多个 Expert → Ensemble 汇总。
算法四步流程(对应 Appendix H 的 Algorithm 1):
[!NOTE] Algorithm 1|Meta Agent Search(伪代码复述)
输入: 目标域验证数据, 最大迭代数 N 输出: 发现的 agent 组成的 archive 1. 初始化 archive A ← 基线 agent(如 CoT、Self-Refine) # 可选,也可空初始化 2. for i = 1..N: 3. ── 设计步(Design) ── meta agent 生成新 agent: 4. (a) 先输出设计推理(high-level idea) 5. (b) 再把设计实现成 forward() 代码 6. (c) 做 2 轮自反思(self-reflection) 确保"新颖 + 正确" 7. ── 评估步(Evaluation) ── 在目标域验证数据上评估新 agent: 8. (a) 若评估中报错 → 自反思 debug, 最多重试 5 次 9. (b) 每次 refine 后重跑评估 10. ── 更新步(Update) ── 把 refine 后的 agent + 评估指标加入 archive A 11. 返回最终 archive A[!TIP] 把这套流程讲透 + 举例:一次迭代到底发生了什么? 假设当前 archive 里已经有 CoT、Self-Refine、以及上一轮搜到的"5-CoT + ensemble"。meta agent 收到的 prompt 大致是:
[框架代码] + [输出格式与例子] + [整个 archive 的代码与分数] + "观察这些发现,想想能学到什么 insight / stepping stone,THINK OUTSIDE THE BOX,提一个有意思的新 agent"。 - Design(a):meta agent 在thought字段里推理——"我注意到 ensemble 有用、feedback 也有用,但现在的 feedback 太泛。不如引入多个专门 Critic(效率/可读性/简洁性专家)给出针对性反馈。" - Design(b):它写出对应的forward()(5 个候选 → 每个过 3 类专家反馈 → 结构化去重 → 3 轮 refine → top-3 ensemble)。 - Design(c):2 轮自反思检查"这跟 archive 里的东西真的不一样吗?代码有 bug 吗?"(自反思 prompt 明确要求 USE CRITICAL THINKING! 并对照 archive 逐一比实现差异)。 - Evaluation:在 20 道验证题上跑 5 次求平均。若报KeyError就把错误喂回去 debug。 - Update:把这个"Structured Feedback and Ensemble Agent"和它的分数存进 archive——它就成了下一轮的 stepping stone(事实上这正是 ARC 上搜到的最佳 agent,见 §4.1)。
3.3 关键概念:为什么 archive / stepping-stone 是灵魂
[!TIP] 什么是 archive 与 stepping stone(垫脚石)? 这套设计直接借鉴开放式进化(open-endedness)与 AI-GA 的思想(Zhang 2024a; Lehman & Stanley 2011; Wang 2019)。 - archive:一个只增不减的历史发现库,存下每个被造出来的 agent 及其代码、分数。它既是 meta agent 的"记忆",也是"灵感池"。 - stepping stone(垫脚石):一个当下性能未必高、但为后续更强发现铺路的中间产物。开放式进化的核心信念是——伟大不能被直接规划(greatness cannot be planned),高性能方案往往要踩着一串看似不起眼的垫脚石才能到达。 - 本文的经验证据(§4.1):ARC 上,"多 CoT + refine + ensemble"这个模式在第 3 迭代出现,本身不算惊艳,却成了后续设计反复复用的关键垫脚石;而最佳 agent 里的"多样化反馈 / 专家评特定维度 / 模拟人类反馈"三个要素分别在第 5、11、12 迭代才冒出来,最终 agent 是把这三块垫脚石组合起来的创新——类似进化里 LLM 充当 crossover 算子(Meyerson 2023)。这就是为什么"只看上一个父代"的局部搜索不行,必须让 meta agent 能回看整个 archive。
[!TIP] 什么是"interestingness(有意思度)"驱动的搜索? Meta Agent Search 不直接优化性能作为探索目标,而是像 OMNI / Intelligent Go-Explore 那样,鼓励 meta agent 去探索"interestingly new(新颖或有价值)"的 agent——prompt 里明确写 propose interestingly new agents、THINK OUTSIDE THE BOX。性能(success rate / F1)只是 meta agent 被告知要最大化的指标,但驱动多样性的是"有意思"这个人类直觉。这是开放式算法对抗"过早收敛到局部最优"的经典手段:只盯着分数容易陷入贪心,追求"有意思"才能不断产出新垫脚石。
3.4 meta agent 的 prompt 设计(Appendix B 精要)
meta agent 的行为几乎完全由 prompt 塑造。关键片段:
- 系统 prompt:极简一句 You are a helpful assistant. Make sure to return in a WELL-FORMED JSON object.
- 主 prompt 结构:[域简述] + [框架代码] + [输出指令与例子] + [已发现 agent 的 archive] → 然后要求它"仔细观察 archive、思考能学到什么 insight/lesson/stepping stone、从相关 agent 论文或其他研究领域的学术论文汲取灵感、THINK OUTSIDE THE BOX"。
- 输出格式:强制 JSON 三键 {"thought":..., "name":..., "code": "def forward(self, taskInfo): ..."},其中 thought 要含 **Insights** / **Overall Idea** / **Implementation** 三段。
- 两轮自反思:第 1 轮重点查 Interestingness(跟 archive 比够不够新)+ Implementation Mistakes + Improvement;第 2 轮再用"常见错误清单"复查代码。运行时报错则触发最多 5 次 debug 反思。
[!NOTE] 一个值得注意的工程细节:作者收集了一份"meta agent 常犯的实现错误"清单塞进 prompt(## WRONG Implementation examples),发现这对提升生成代码质量很有效。这与 [[ref09_meta-harness]] 附录 D 的"写好 skill 是最强杠杆"、[[ref17_self-harness]] 的"有界编辑 + 审计"异曲同工——引导搜索的那段元 prompt/skill,本身就是最需要精心工程的对象。
3.5 实现要点小结
| 组件 | 本文的选择 |
|---|---|
| Meta agent(搜索算法) | GPT-4("gpt-4o-2024-05-13"),max reasoning |
| 被评估的 agent + baseline | GPT-3.5("gpt-3.5-turbo-0125")以省成本 |
| 搜索空间 | 单个 forward() Python 函数(框架 <100 行) |
| 评估函数 | 验证集准确率 / F1(ARC/GPQA 评 5 次,其他评 1 次以控总评估数) |
| 迭代数 | ARC 25 轮;四大 benchmark 各 30 轮 |
| archive 初始化 | 用 baseline 播种(也做了空初始化消融,见 §4.4) |
| 单次运行成本 | ARC ≈ $500,推理/解题域 ≈ $300(主要花在评估时查 GPT-3.5) |
4 实验:跨域都赢手工设计,且能迁移
作者用同一套算法实现跑所有任务,唯一变化是 prompt 里的任务描述文本。三组实验:(1) ARC 案例研究;(2) 四大推理/解题 benchmark;(3) 迁移性。
4.1 案例研究:ARC 挑战——垫脚石如何堆出最佳 agent

[!TIP] 什么是 ARC(Abstraction and Reasoning Corpus)? ARC(Chollet 2019)是专门测通用智能 / 抽象推理的基准:每题给几组"输入网格→输出网格"示例,AI 要从示例里学出变换规则,再对测试输入网格预测输出。每题规则唯一,需要少样本高效学习 + 数数/几何/拓扑能力。本文遵循 Greenblatt(2024) 的做法,要求 agent 写代码来表达变换规则(而非直接答),并在框架里提供两个工具函数:①测生成代码能否解示例网格、②把代码应用到测试网格取答案。为控成本,只采 ≤5×5 的简单题,验证/测试各 20/60 题、各评 5 次。
Figure 3 逐元素解读: - (a) 左图——搜索进度曲线:横轴迭代(0-25),纵轴 held-out 测试准确率(%)。蓝线(Meta-Agent Search)是阶梯上升的(每发现更好的就上台阶),阴影是 95% bootstrap 置信区间。几条水平虚线是手工 baseline:红=CoT、紫=COT-SC、绿=Self-Refine、橙=LLM-Debate、品红=Quality-Diversity——全部被蓝线超过。图上五个文本框标注了关键突破时刻,勾勒出一条清晰的"踩垫脚石"叙事:初期先试"生成高层策略再实现细节" → 涌现"多 CoT 生成候选、refine、ensemble 最优"这个关键模式 → 引入动态记忆做更多 refine → 放大上一个想法 → 最佳 agent:引入多个 critic 增强 refinement。 - (b) 右图——最佳 agent 结构图("Structured Feedback and Ensemble Agent"):Task → 5 COTs 生成 5 Answers → 兵分两路给反馈:一路是 Efficiency/Readability/Simplicity 三个 Expert、一路是 Human-like Critic → 两路 Feedback 汇入 Refinement(循环 3 次) → All Answers → Evaluate → Top-3 Answers → Ensemble → Final Answer。这张图就是 §3.2 那个"举例"里 meta agent 逐步搭出来的东西的可视化。
Setup:meta agent 用 GPT-4,发现的 agent 与 baseline 用 GPT-3.5,跑 25 迭代。五个手工 baseline:CoT、COT-SC、Self-Refine、LLM-Debate、Quality-Diversity(都用同一框架实现以保证公平,且都作为 archive 的初始种子)。
结果:Meta Agent Search 逐步发现超过所有手工 baseline 的 agent。最佳 agent 里那套精巧反馈机制不是突然冒出来的,而是"多样反馈""按具体特质(效率/简洁)评估""模拟人类反馈"这三个垫脚石分别在第 5/11/12 迭代出现后被组合出来的——完美印证了 stepping-stone 假说。
4.2 四大推理 / 解题域:全面碾压,含 OPRO 对照
Setup:DROP(阅读理解,F1)、MGSM(多语数学)、MMLU(多任务)、GPQA(研究生级科学)。每域独立搜 30 迭代,meta agent 用 GPT-4、评估用 GPT-3.5。除了 §4.1 的 5 个 baseline,额外加两个专攻推理的 baseline:Step-back Abstraction(先想原理再解)、Role Assignment(分派角色);以及关键对照——OPRO(SOTA prompt 优化方法),用来凸显"学所有组件 > 只学 prompt"。
[!TIP] 对照方法:OPRO(Large Language Models as Optimizers) OPRO(Yang et al. 2024)把 LLM 当优化器:给它历史的"(prompt 解, 分数)"对,让它据此提出新的、更好的 prompt。它是纯 prompt 优化的 SOTA 代表——只改指令措辞,不动 workflow / 工具 / 控制流。本文拿它当对照,就是要证明:ADAS 在代码空间学习 agent 的全部组件,系统性地优于只优化 prompt(见下表 OPRO vs Meta Agent Search 每域都落后)。
结果(Table 1):Meta Agent Search 在每个域都赢,尤其阅读理解和数学差距巨大——
| Agent | 阅读理解 DROP (F1) | 数学 MGSM (Acc%) | 多任务 MMLU (Acc%) | 科学 GPQA (Acc%) |
|---|---|---|---|---|
| Chain-of-Thought | 64.2 | 28.0 | 65.4 | 29.2 |
| COT-SC | 64.4 | 28.2 | 65.9 | 30.5 |
| Self-Refine | 59.2 | 27.5 | 63.5 | 31.6 |
| LLM Debate | 60.6 | 39.0 | 65.6 | 31.4 |
| Step-back Abstraction | 60.4 | 31.1 | 65.1 | 26.9 |
| Quality-Diversity | 61.8 | 23.8 | 65.1 | 30.2 |
| Role Assignment | 65.8 | 30.1 | 64.5 | 31.1 |
| OPRO(prompt 优化 SOTA) | 69.1 | 30.6 | 67.6 | 32.9 |
| Meta Agent Search(本文) | 79.4 | 53.4 | 69.6 | 34.6 |
- 阅读理解 F1 +13.6/100、数学 +14.4%(相对最强手工 baseline)。
- 多任务、科学域差距较小。作者的解释很诚实:科学/多任务这类难题,瓶颈在 FM 本身的知识不足,优化 agentic system 帮不上太多(这个问题会随 FM 变强而缓解);而阅读理解/数学里 FM 知识够用,错误主要是幻觉或算错,这类错误恰恰能被好的 agentic system 缓解——所以提升空间大。这是一个很有洞察力的"何时该做 harness 优化"的判断准则。
4.3 泛化与迁移:跨域、跨模型都领先(最惊艳的结果)
这是本文反复强调的"surprising result"。
跨域迁移(Table 2/4/5):把在 MGSM(数学) 搜到的 top-3 agent 直接迁到别处: - 迁到其他数学域:GSM8K +25.9%、GSM-Hard +13.2%(相对 baseline),SVAMP/ASDiv 也一致领先。 - 迁到非数学域(阅读理解 DROP、多任务 MMLU、科学 GPQA):虽不及"为该域专门搜的 agent",但仍超过或持平手工 SOTA baseline——例如"Dynamic Role-Playing Architecture"迁到 DROP 拿 70.4 F1(vs 手工最好 65.8)。数学域学到的设计模式能迁到阅读理解,说明搜到的是通用积木而非过拟合。
跨模型迁移(Table 3):把 ARC 上用 GPT-3.5 搜到的 top-3 agent,迁到 Claude-Haiku、GPT-4、Claude-Sonnet:
| Agent(GPT-3.5 搜到) | GPT-3.5 | Claude-Haiku | GPT-4 | Claude-Sonnet |
|---|---|---|---|---|
| 手工 baseline 最好 | ~8.0 | ~6.3 | ~23.0 | ~39.3 |
| Structured Feedback and Ensemble | 13.7 | 5.0 | 30.0 | 38.7 |
| Hierarchical Committee Reinforcement | 13.3 | 8.3 | 32.3 | 39.7 |
| Dynamic Memory and Refinement | 12.7 | 9.7 | 37.0 | 48.3 |
搜到的 agent 跨模型一致领先;最强的 Claude-Sonnet 让最佳 agent 在 ARC 上逼近 48.3%。
[!TIP] 一个关于 FM 能力的有趣洞见(§6 讨论):GPT-3.5 上搜到的最佳 agent 用了复杂反馈机制,但迁到更强模型时,"更简单反馈机制 + 更多 refinement"的 agent 反而更好。作者据此推断:GPT-3.5 评估/refine 答案的能力较弱,所以需要复杂反馈来补偿;更强的模型则从简单反馈 + 多轮打磨中获益更多。——这呼应了 [[ref09_meta-harness]] 与 [[ref17_self-harness]] 的共同观察:越弱的基座,harness/agent 优化的收益越大、且倾向更复杂的补偿性结构。
4.4 消融:空初始化——数学域从零搜反而更强
作者做了个关键消融(Table 6):不给任何初始 agent,让 archive 空着从零搜。
| 阅读理解 (F1) | 数学 (Acc%) | 多任务 (Acc%) | 科学 (Acc%) | |
|---|---|---|---|---|
| Meta Agent Search(baseline 播种) | 79.4 | 53.4 | 69.6 | 34.6 |
| Meta Agent Search(空初始化) | 73.9 | 67.5 | 68.5 | 32.7 |
[!IMPORTANT] 两个结论:①即使空初始化,Meta Agent Search 在所有域仍超过全部手工 baseline——说明方法的强大不依赖"好的起点",而是源于代码空间本身的结构。②数学域是唯一"从零搜反而更好"(53.4→67.5,+14.1)的域。作者猜测:没有预设设计模式,反而鼓励在有限迭代内做更发散的推理策略探索,而数学恰恰受益于这种灵活多样。这是一个耐人寻味的"先验有时是枷锁"的证据——好起点通常有帮助,但也可能把搜索锚定在某个区域、错过更好的解。
4.5 定性证据:发现的 agent 都是可读的程序
Appendix G 给出三个发现 agent 的完整代码(Multi-step Peer Review / Divide and Conquer / Verified Multimodal),全是几十行、结构清晰的 forward()。这是代码空间的一大优势——产物直接可读、可审计、可复用,与"图/权重空间搜出来的黑盒"形成鲜明对比。
5 结论与讨论
5.1 相关工作定位(本文如何摆放自己)
作者把 ADAS 放进三条脉络:
[!TIP] ① Agentic Systems(积木的手工时代) 社区已发明大量积木:prompting 技巧、CoT 规划推理、reflection(Self-Refine/Reflexion)、embodied 技能代码(Voyager)、外部记忆与 RAG、tool use(Toolformer/WebGPT)、多角色协作(MetaGPT/AutoGen/ChatDev)、自我指令(AutoGPT)等。但这只是冰山一角,还有海量积木待发现——正是 ADAS 想自动化的对象。
[!TIP] ② AI-GA 与 AutoML("学出来替代手工"的思想母体) AI-Generating Algorithms(AI-GA, Clune 2019) 有三大支柱:(1) 元学习架构、(2) 元学习学习算法、(3) 生成学习环境与数据。NAS 例示支柱 1,MAML/Meta-RL 例示支柱 2,POET/OMNI-EPIC 例示支柱 3。本文把 ADAS 定位在支柱 1+2:元学习 agentic 架构 + 用 in-context learning "学会学习"(ARC 上体现)。而 FunSearch/EoH(发现优化算法)、DiscoPOP(编程 loss function)、Eureka/language-to-reward(写 reward)、OMNI-EPIC(造环境)这一串"让 FM 写代码去发现"的工作,是本文最直接的技术近亲——本文把这条思路用到了"编程 agent"上。
[!TIP] ③ 已有的 ADAS 尝试(本文超越的对象) 分两类:(A) 只学 prompt——OPRO、PromptBreeder、APE、TextGrad、以及优化角色定义的一批(AutoAgents/AgentVerse)。局限:prompt 常常域专用难泛化,且其他组件被钉死。(B) 学 prompt 之外的组件——多把 agent 表示成网络/图:DyLAN 优化节点连接、DSPy/Trace 在节点笛卡尔积上优化、GPT-Swarm 用 RL 优化连接;AgentOptimizer 学工具、AutoFlow 造新语言描述 workflow、Agent Symbolic Learning 试图一起学 prompt/工具/workflow。局限:要么覆盖不全所有可能设计,要么搜索空间对搜索算法更难。本文的差异:用代码表示所有组件,允许一切可能的设计,且因为编程是 FM 的强项,代码空间对 FM 引导的搜索反而"更友好"。
与 ADAS 谱系后继的对比表(把本项目坐标系里的几篇串起来):
| 论文 | 搜索空间 | 搜索算法 / 提议者 | 反馈给提议者的信息 | 评估 / 准入 |
|---|---|---|---|---|
| ADAS (ref13, 本文) | 单个 forward() 代码 |
GPT-4 meta agent + archive | archive 里各 agent 的代码 + 分数 | 验证集准确率 |
| [[ref15_aflow]] | workflow 图(节点=LLM调用/算子) | MCTS 式搜索 | 图结构 + 分数 | 验证集分数 |
| [[ref09_meta-harness]] | 任务专用 harness 代码(单文件) | Claude Code 强编程 Agent | 裸文件系统里的全历史:代码+分数+原始执行轨迹(可 grep) | Pareto 前沿 |
| [[ref17_self-harness]] | Agent 运行 harness 的可编辑面 | 模型自己(同一固定模型当提议者) | 当轮聚类后的失败证据包 + 可编辑面 | held-out 非回退回归门 |
| [[ref23_darwin-godel-machine]] | Agent 自身代码本体(开放式自我修改) | Agent 自己 + 进化式 archive | 自身代码 + benchmark 表现 | benchmark 提升 + 归档 |
5.2 安全考量
作者明确讨论了安全(因为让模型自动生成并执行代码有风险):措施包括容器化隔离执行所有生成代码、人工审查确认无害、代码库里显式警告。并论证发表本工作净收益为正:它揭示 ADAS 只需 API 访问即可编程(无需昂贵 GPU)、且 ADAS 反而能通过自动设计显式、可解释的 workflow 来增强 agent 安全(更可控、可审计)。呼吁未来研究 safe-ADAS,可结合 Constitutional AI 等机制。
5.3 未来方向(其中一条正是后续论文的起点)
[!IMPORTANT] Higher-order ADAS(高阶 ADAS):既然用来编程新 agent 的 meta agent 本身也是一个 agent,那 ADAS 就可以变得"自指(self-referential)"——meta agent 自己也能被 ADAS 改进,乃至 meta-meta agent……这直接指向 [[ref23_darwin-godel-machine]] 那种"改自己代码本体"的开放式自我改进,也与 [[ref17_self-harness]] "模型改进自己运行所依赖的 harness"精神相通。
其他方向:在线持续学习(部署后用海量反馈持续改进 agent);多目标 ADAS(成本/延迟/鲁棒性,用 NSGA-II 等)——这正是 [[ref09_meta-harness]] 的 Pareto 前沿所做的;更好的评估函数(让 meta agent 分析详细运行日志的成功/失败模式,而非只看标量分数)——这几乎就是 [[ref09_meta-harness]] "全历史执行轨迹"的预言;用现有积木播种 ADAS(站在 LangChain/RAG 之上);更复杂的多步交互域;更精巧的 novelty search 算法。
个人思考
⭐ 与本项目谱系的关联(ADAS 是这条线的"根")
ADAS 是 harness/agent 自动设计这一整支的奠基坐标。它的最大贡献是把问题定义清楚了(搜索空间×搜索算法×评估函数)并押注了代码空间。后续几篇几乎都可以读作"在 ADAS 地图上换一个坐标":
- 对 [[ref09_meta-harness]](直系后继,反向印证最强):Meta-Harness 明确把 ADAS 列为"可执行代码搜索"的关键前作。差别在于——ADAS 用 archive(存代码+分数)+ 裸 FM 当 meta agent;Meta-Harness 把 archive 升级成裸文件系统、把反馈从"分数"升级成原始执行轨迹、把 meta agent 升级成能自主 grep 的强编程 Agent。有意思的是:ADAS 在 §6 未来方向里亲口说"未来应让 meta agent 分析详细运行日志而非只看标量分数"——Meta-Harness 正是把这句预言做实了,并用消融证明"原始 trace 是决定性成分"。可以说 Meta-Harness = ADAS 的"把反馈通道拉满"版本。
- 对 [[ref17_self-harness]](换提议者 + 加纪律):Self-Harness 在相关工作里同时引用 ADAS [3] 与 Meta-Harness [5]。它把 ADAS 的"更强外部 meta agent"换成"被评估模型自己",并加上 ADAS 没有的工程纪律(失败聚类证据包 + 有界最小编辑 + held-out 回归门 + 审计日志)。若说 ADAS 证明了"能自动设计",Self-Harness 追问"同一个模型能不能自己安全地一步步改自己的 harness"。
- 对 [[ref15_aflow]](同期的"图空间"对照支):AFlow 选择在 workflow 图空间搜索,正是 ADAS §2/§5 反复对比的"图/网络表示"路线。ADAS 的论证是——图空间表达力/可解释性/复用性/FM 先验都不如代码空间。两者放一起能把"agent 到底该表示成什么"这个搜索空间设计问题讲透。
- 对 [[ref23_darwin-godel-machine]](把 higher-order 愿景做实):ADAS 在未来方向里点名"self-referential 的高阶 ADAS——meta agent 改进 meta agent"。DGM 正是这条路的落地:一个 agent 修改自己的代码本体、用进化 archive 积累。ADAS 是"造别的 agent",DGM 是"改自己",但共享"代码空间 + archive/stepping-stone"内核。
- 对 [[ref20_alphaevolve]](FunSearch 谱系):ADAS 的
forward()-only 框架直接类比 FunSearch,而 AlphaEvolve 是 FunSearch 谱系的进化式编码 Agent。三者都属"让 FM 在受约束的代码接口上做进化搜索"。
方法论启示(可迁移的通用思路)
- "三件套"是分析任何自动设计系统的万能框架:拿到任何一篇"自动优化 X"的论文,先问它的
搜索空间 / 搜索算法 / 评估函数各是什么——立刻就能定位它的创新点和局限。这是 ADAS 送给整个领域的认知工具。 - 搜索空间的选择 = 表达力与可搜索性的权衡:ADAS 论证"代码空间"胜出的四条理由(图灵完备的表达力、可解释、可复用人类成果、FM 先验友好)是普适的选空间准则。尤其"选一个 FM 已经很擅长的表示(代码),就等于免费获得强搜索先验"这一点,对任何 FM 驱动的优化都成立。
- archive / stepping-stone > 局部贪心:ADAS 用 ARC 的"第 5/11/12 迭代三块垫脚石最终组合成最佳 agent"给出了极干净的证据——好方案往往要踩着一串不起眼的中间产物,所以要保留完整历史供回看、并用"有意思"而非纯性能驱动探索。这与 [[ref09_meta-harness]] "不要压缩反馈"是同一枚硬币的两面:一个说"别丢历史的广度"(所有候选都留),一个说"别丢历史的深度"(原始轨迹都留)。
- 先验有时是枷锁(§4.4 数学域空初始化更强):这是个反直觉但重要的提醒——播种好起点通常有益,但也可能把搜索锚定在局部、限制探索多样性。在设计任何"从种子出发迭代"的系统时,值得两种初始化都试。
在我的工作中能怎么用
- ADAS 是本项目(harness 演化)叙事的历史起点,应作为串讲的"第 0 章":先用它的"三件套 + 代码空间"把整个领域的地图铺开,再顺着"archive→文件系统全历史(ref09)""外部→自我(ref17)""造别的 agent→改自己(ref23)"三条演化线讲下去。它和 ref09/ref17 构成一组极佳的"同一问题的三代演进"。
- 我们这个
pdf-paper-readerskill 本身就是一个"被固定 meta-prompt 引导的 agent"。ADAS 的"收集常见实现错误清单塞进 prompt 显著提升质量"这条经验,可以直接用来改进我们 skill 的引导文本(比如把"代码清单图常漏检/裁偏"这类反复踩的坑固化成 skill 里的 checklist)。 - 若要动手复现最低成本切入点:ARC 或 MGSM 数学域,验证集只需 20-128 题、meta agent 用 GPT-4 类模型、被评估 agent 用便宜的小模型即可(单次 $300-500,且作者指出换 gpt-4o-mini 可降到 1/3)。
开放问题 / 疑问
- 评估成本与信息浪费:ADAS 只用标量准确率评估,作者自己承认"既贵又丢信息"。这个坑被 [[ref09_meta-harness]] 用"全历史轨迹"填了——但代价是单次评估产千万 token。在预算受限时,两者之间的甜蜜点在哪? ADAS 没答,Meta-Harness 也没给完整成本核算。
- meta agent 能力依赖:本文 meta agent 用 GPT-4,且"复杂反馈 vs 简单反馈"的洞见暗示meta agent 与被评估模型的能力错配会影响搜到什么。换更弱的 meta agent,"踩垫脚石式的创新组合"还成立吗?这正是 [[ref17_self-harness]] 用"模型自己当提议者"去逼问的问题。
- 单步 QA 的局限:作者明确说只在单步 QA 任务上验证过,未涉及"与复杂环境多步交互"的真实应用。[[ref09_meta-harness]] 与 [[ref17_self-harness]] 都补上了 TerminalBench 这类长时程 agentic coding,算是把 ADAS 的这个缺口往前推了一大步。
- "图灵完备 ⇒ 能发现任意 agent"是理论上限,不是实践保证:代码空间理论上无所不能,但有限迭代 + FM 生成偏好下,实际可达的子空间有多大、会不会系统性地漏掉某类设计?本文的 25-30 迭代规模下,这个问题没有被充分探究。
局限性
- 评估函数原始(只看标量分数),错过大量失败/成功模式信息(作者列为未来工作,后继论文已补)。
- 只测单步 QA,未测复杂多步环境交互。
- 只优化单目标(性能),未考虑成本/延迟/鲁棒等多目标(未来方向)。
- 搜索算法本身较简单(只靠"有意思"驱动),未用更精巧的 Quality-Diversity / novelty search / exploration-exploitation 平衡。
- 安全性依赖容器化 + 人工审查,随着 agent 能力增强,这套护栏是否足够仍是开放问题。