TL;DR:Lean 证明 agent 卡住时,现有系统的反应永远是「再拆细一点」。Maestro(UIUC 与 AWS AI Labs 等,arXiv 2610.25920)把失败处理升维成全局调度:证明器交出「为什么失败」的诊断,一位看得见整张证明蓝图的协调者决定是重试、补引理、改伪命题还是整个撤掉换路线——研究级定理集上平均多证 63%,PutnamBench 669/672、IMO 2026 六题全对,且全程开源、探索过程可审计。
想自己动手?
- 📄 论文:arXiv 2610.25920
- 💻 代码:论文声明开源(HTML 版暂未给出直接仓库链接)
先问一个扎心的问题:你的 agent 卡住时,只会「再试一次」吗?
调过 agent 的朋友对这套流程不陌生:任务失败 → 拆子任务 → 子任务失败 → 再拆。定理证明的 agent 化把这套路走到了极致——Lean(一种把数学证明变成可机器检查代码的形式化语言)里,主流系统遇到证不动的目标,就把它分解成一堆子引理,子引理证不动就继续拆,直到预算烧光。
听起来很合理,对吧?分治嘛,计算机科学的看家本领。
但 UIUC 团队在这篇论文开头指出了一个所有「拆」字流系统的共同盲区:引理证不动,原因可能完全不同——
- 可能只是缺一点引导(换条思路就证出来了);
- 可能这个引理本身就是假的(拆一百次也证不出来);
- 也可能是产生它的上层分解就是错的(这条路根本到不了定理,拆得越细死得越惨)。
现有系统分不清这三种情况,因为失败尝试几乎不输出「为什么失败」的信息,而且响应永远被锁死在出错的那个节点上——没人回头看一眼上层计划。于是系统可能沿着一条走不通的方向,兢兢业业地拆到天荒地老。对,就是你想的那个场景:agent 非常努力,努力地在错误的路上狂奔。
Maestro 的思路:让打工的交代失败原因,让指挥看得见全局
那怎么办?论文给出的答案名字就叫 Maestro(大师/指挥家):把「失败后做什么」从固定规则,变成一个看得见全局的协调者的现场判断。
整体架构一句话讲完:所有 worker 在一个共享的 Lean 工作区(workspace)上并行干活,产出全部进一个事件队列;一位全程在线的协调者按到达顺序消费这些事件,改工作区、派新活,直到工作区里没有未完成的 sorry(Lean 里「此处证明欠着」的占位符)。
四种 worker,各司其职
- 🔨 Provers(证明者):并行攻击当前计划下的开放义务。关键变化在这里——证出来就交证明;证不出来必须交诊断:试过哪些路线、为什么走不通、问题是局部的(缺辅助引理)还是全局的(此路不通),怀疑命题为假还得附上 Lean 里检查过的反例。跑得久的还要定期交进度报告,让协调者能在失败发生前就改道。
- 📋 引理规划器:负责分解。写自然语言证明计划 → judge 只审「计划级缺陷」(有没有哪个子引理跟母目标一样难?有没有多个计划反复造出同一个硬核?)→ 通过后翻成 Lean 代码。「多个计划都卡在同一个硬核」会被明确上报——这等于告诉协调者:病根在这个义务之上。
- 🧭 探索者:当前诊断库没主意了才派。它不被现有计划约束,自己找替代路线,交回新蓝图或「维持现计划」的结论。有个细节很妙:协调者自己没候选策略时,会不给任何提示地裸派探索者,免得把搜索窄化到自己的怀疑上。
- 👨💻 实现者:验证码任务专属。coder 写代码,judge 专门找反例——跑真实输入对照形式化规约,连「测试过了但没用要求的算法/复杂度不达标」都会被打回。
协调者的两个杀招
第一个杀招是全局改写蓝图。以前的管线只会做加法:拆分、原地修陈述,已经建出来的东西舍不得动。Maestro 的协调者直接拥有工作区,可以一次编辑里同时干三件事:两个分支缺同一事实 → 补一条共享引理;某引理是伪命题 → 删;建在它上面的分解 → 换。甚至可以放弃父猜想但保留已证的子引理。最狠的案例在后文:一次修订丢弃了 22 条引理,其中 19 条是已经证好的——「只增不减」的管线原理上做不出这个动作。
第二个杀招是用事件队列干掉「轮次 + 固定超时」。传统并行流水线一轮一轮跑,收轮只能靠超时:设长了陪最慢的干瞪眼,设短了把接近成功的证明拦腰砍断,还换回来一堆新义务。Maestro 让 worker 宽预算异步跑,「这次尝试该不该结束」变成协调者看着证据做的判断——慢而有效的继续跑,钻牛角尖的及时改道。
证伪不是失败,是产出
这套系统里我最喜欢的细节是对「这题是假的」的主张零信任:worker 声称目标为假或上下文缺事实,系统都要回 Lean 里验——要么给出否定命题的证明或一个具体反模型,且必须对未改动的冻结上下文编译通过;要么驳回继续证。验证码任务里,编译通过的反例会连同诊断一起打回给实现者改代码,改完保留仍成立的引理、删掉引用旧代码的引理重新证。
效果到底怎么样?
四个前沿基座(Claude Opus 4.8 / Opus 5 / Fable 5 / GPT-5.6 Sol)× 十个基准(七个数学 + 三个软件验证),对照是同模型的裸 coding agent(Claude Code / Codex)。结论一句话:凡裸 agent 没刷满的基准,Maestro 全部领先,越难赢得越多。
- 📈 研究级数学:arXivLean 两版共 89 条刚从 arXiv 论文里搬来的定理,裸 agent 平均证 33 条,Maestro 证 54 条——+63%,最强基座(Opus 5)上六月份 48 条证出 34 条对 19 条。
- 🏆 碾压已发表系统:PutnamBench 663–669/672(此前最好 597)、Lean-IMO-Bench 57–59/60(此前最好 42)、IMO 2026 六题全对(四个基座里三个做到)。
- 💰 省推理档位:IMO 2026 上裸 agent 要开到 xhigh 推理档才稳定全对,Maestro 从 high 档开始就全对——同样的题,便宜的预算跑得稳。
消融实验是我认为全文最硬的部分:作者复刻了一套「只分解不协调」的管线(组件全同,只去掉协调者),在 FATE-X 百题集上它只比裸 agent 多解 0~2 题,而完整 Maestro 解 91 题(Fable 5)还另外证伪 6 条假命题。增益来自协调,不是分解——这一刀切得很干净。
再讲那个「壮士断腕」的案例:FATE-X 第 90 题要求给出希尔伯特第十四问题的反例,标准构造依赖早期选定的平面曲线。纯分解基线选错了曲线,无力回天,围着死胡同转到预算耗尽。Maestro 也从错曲线起步,但协调者把两条失败引理的根因追到了这个早期选择上,一次修订丢弃 22 条捆绑在旧曲线上的引理(19 条已证!),保留 6 条无关的,为新曲线加了 11 条,1.4 小时后证明闭合。
还有个反直觉的发现值得单说:LeetCode 级的验证码基准 Verina,所有裸 agent 都满分——简单任务上协调毫无用武之地。这其实给所有做多 agent 系统的人提了个醒:你的编排架构的价值,只在长链条难题上才显现;拿简单 benchmark 评估多 agent 架构,大概率得出「不如单 agent」的结论。
泼点冷水
- ⚠️ 「超过所有已发表系统」要打折听:对比表汇总的是各系统在自己模型、自己预算下的自报数字,同基座受控对比只在 IDS/GPT-5.4 一处成立。标题级领先是真的,但不是同台竞技。
- ⚠️ 协调者的上限没人验:诊断质量完全依赖模型自评(「问题是局部还是全局」),如果基座模型系统性误诊,协调者会被带偏——论文没报诊断准确率。另外「协调者换成规则策略」的中间消融也缺席,多聪明的协调者才够用,暂时无法回答。
- ⚠️ 成本口径要看细:多 worker 并行 + 协调者在线不是免费的,论文把成本核算放在附录 A,复现对比时预算对齐方式是关键读数。
和你有什么关系?
不搞形式化验证,这篇也值得读——它贡献了一套可以直接抄的编排模式:
- 失败必须结构化上报(试了什么、为什么败、怀疑什么),而不是返回一个布尔值。你的 agent 框架里,失败信息量决定了恢复能力的上限。
- 协调者要有「删除权」。只会加子任务的编排器,本质是在错误的路上堆 more;敢于撤销已完成的中间产物换路线,才是真·全局优化。
- 用事件队列替代轮次 + 超时,让「什么时候放弃」变成证据判断而不是拍脑袋的常数。
- 证伪主张必须过硬裁决(这里是 Lean 编译;你的场景里可以是测试、类型检查、形式规约),agent 说「这题是假的」不能信口开河。
Lean 生态这几年的进度(OpenAI 的 Navier–Stokes 形式化、各家 prover 刷榜)已经把「AI 产出、机器验证」变成了现实工作流。Maestro 补上的拼图是开放:开源框架 + 每次运行的完整探索记录(猜过又撤的引理、试过又弃的路线),让「AI 怎么找到证明的」这件事本身变得可研究。对被黑盒 agent 折磨的工程团队来说,这可能比刷榜数字更有价值。