返回

让 Agent 迭代出比 SOTA 库更快的代码:Max Woolf 的“Benchmaxxing”实践拆解

Max Woolf 让 Agent 把 Rust 迭代到比 SOTA 库更快。拆 Benchmaxxing 管线、防作弊约束和验收循环。

2026-09 · 深度调研

2026 年 9 月 21 日,Max Woolf(minimaxir,前 BuzzFeed 高级数据科学家)发布了一篇 26 分钟的长文,标题有些挑衅:《Writing Rust code that’s faster than state-of-the-art libraries by asking agents to make the code faster》。让 Agent 把 Rust 代码迭代到比现有最先进库更快。这并非一篇“观点预告”式的 vaguepost:他公开了全部 prompt、全部基准结果与全部反作弊约束。本文拆解这篇博客的方法论:迭代式性能优化的标准管线、约束如何取代模糊目标、Agent 作弊的典型形态与防御、以及“把提示工程用到极致”的几组技巧。

1. 核心主张:Agent 可以写出比 SOTA 更快的 Rust 代码

作者的核心结论有两条。第一,现代 agentic LLM 在给定适当护栏与约束的前提下,确实能写出显著快于现有最先进实现的 Rust 代码,提速幅度因领域而异,约为 2 倍到 20 倍。第二,自 Opus 4.5 之后,每代新模型(GPT-5.3 Codex、Opus 4.6、GPT-6 Astra)用同一套 prompt 重跑一遍,都能在上一轮基础上再累积 1.5 倍到 2 倍;多代模型累积下来,相对最初实现可达 7.5 倍到 32 倍。

这一实验的起点可以追溯到 2025 年 1 月。当时他在一篇 Python 博客中测试过一个假设:不断要求 LLM“写更好的代码”,能否迭代出更快的实现。Claude Sonnet 3.5 确实做到了。但“更好”这个指令过于模糊,模型利用歧义加了一堆无用的功能,代码确实更快了,方向却不受控。那篇博客的末尾他留下一个猜想:也许让 LLM 直接写 Rust、再用 PyO3 桥接 Python,能同时获得 Python 的易用性与 Rust 的速度。一年半后,他用同一思路重做了整个实验,这次的目标语言是 Rust。

选择 Rust 有三个理由:Python 集成成熟且提速收益直接;内存安全;以及可以编译到 WebAssembly/WASM,让高速实现在浏览器里几乎零成本运行。实验还有一个重要约束。除非万不得已,禁止使用 unsafe 代码。这意味着最优解必须来自安全的 Rust 语义,而不是绕过安全检查。

2. 方法论:Benchmaxxing 的标准管线

作者把整套做法称为 Benchmaxxing。一个通常带贬义的词,指前沿 LLM 只追求在基准上拿高分、而泛化到真实场景却很差的倾向。他的回应是:如果基准足够异构、足够贴近真实使用,这种担忧就大大降低。因此管线从一开始就围绕“基准的可靠性与代表性”设计。

图解:可判定的验收循环

先量出真值,再给能判过不过的门槛。最后看 diff 有没有动过尺子。

基线不改代码,先跑全部基准1.2x只改库代码,禁止 hack 基准质量门对上已知实现,回退不超过 5%diff基准文件被动过,一眼能看见

提速只有 3% 到 5%、代码却大量膨胀时,停。

2.1 True Baseline:先测出真相,再谈优化

第一个测试对象是 UMAP,一种作者工作中常用的降维算法,质量成熟但扩展性差、速度慢。他没有 fork 现成的 umap-rs crate,而是让 Agent 从零实现、最小化 Rust 依赖,以便在尽可能低的层级做优化。初始 prompt 要求 Agent 在创建 crate 的同时建立基准套件,并明确两点:基准必须覆盖大到 100000×768 的输入规模,且同时测试 CPU 与 GPU 两种模式。优化只针对小数据有效、大数据无效(或相反)是常见的陷阱,所以基准规模必须覆盖两个方向。

基准工具选用 Rust 生态的 criterion。它会在多次运行间跟踪结果、判断性能是提升还是回退,并计算统计显著性(p 值),这为“是否真正变快”提供了可验证的依据。在后续的每个优化 pass 中,作者先要求 Agent 在不做任何代码改动的前提下运行全部基准,建立 True Performance Baseline(真实性能基线),所有后续结果都以它为参照报告。

2.2 可判定的目标:1.2x 门槛与迭代收敛

作者先尝试了让 Agent 自主迭代:“你必须持续迭代优化直到基准结果不再提升、crate 达到最快状态。”结果是失败的。“尽可能快”太模糊,Opus 4.5 偷懒地调了几个超参数就收工。随后他改成可判定、可 pass/fail 的目标,这一版 prompt 是全文最核心的工程文本:

首先,不做任何进一步改动,运行 CPU Rust 基准以建立真实性能基线。然后优化 crate 代码,使所有 CPU 基准至少比真实基线快 1.2 倍,理想情况下尽可能快。绝不要通过 hack 基准来实现提速,只能迭代库代码。你可以使用任何技术(例如引入新 crate),但不得添加 unsafe 代码。重复此过程直到基准性能收敛、优化想法用尽。每轮基准迭代后,向控制台报告相对真实基线的结果。优先做快速高收益的改动,不要过度纠结必要改动。

这次效果显著:Agent 不仅达到 1.2 倍,还继续迭代到 1.5 到 2.0 倍才停止。底层优化手段包括:更激进地利用 SIMD、函数融合、循环展开、建立中间缓存、用 Arc 替代到处借用,以及按输入规模建立性能画像。例如数据量小时不用 rayon 数据并行,因为并行开销会吃掉收益。选择“1.2 倍”作为门槛是刻意的 sanity test:目标过高时 Agent 会通过冒险或冗长的重写来达成,反而难以定位真正的提速来源;小步快跑式的改动更容易隔离每个变化对性能的影响。

门槛
1.2 倍能判过不过。尽可能快,等于可以收工。

2.3 收敛判据

迭代并非无限进行。作者给出的收敛标准是:当一轮 agentic 迭代只带来约 3% 到 5% 的提速、却引入不成比例的大量代码时,收益不成正比,应当停止。这一判断把“性能增量”与“代码复杂度增量”同时纳入考量,避免为微小提速付出长期维护成本。

2.4 先快后对:质量门的建立

对机器学习算法,只追求速度必然牺牲质量,因此管线必须引入质量门。作者的做法是建立与已知正确实现的 apples-to-apples 对比:例如 UMAP 有规范的 Python 实现 umap-learn,Python 绑定也已就绪,于是新的目标是同时约束质量与速度。

创建一个 Python Jupyter Notebook,对比 Python 绑定与 umap-learn 的性能,包括检查输出与 UMAP loss 是否足够相似。使用与基准不同矩阵规模的多类数据集。如果输出不够相似,调查修复方法,但不能造成超过 5% 的速度回退。

有趣的是,作者观察到“先求快、再求对”在机器学习场景意外地可行。除非新实现真的正确,否则很难在多个基准上同时与已知实现达到 apples-to-apples 的接近,这本身就构成了一种正确性证明。首次实现质量确实较差,但后续 prompt 修复成功:全部质量指标恢复到接近 parity,且速度损失小于 5%。最终这个 Rust UMAP crate 的 Python 绑定仍比 umap-learn 快 4 到 15 倍,比 Rust 侧的 umap-rs 快 2 到 4 倍。

flowchart TD
    A["项目初始化:从零实现,最小依赖,禁止 unsafe"] --> B["建立基准套件:criterion,覆盖小/大数据规模,CPU/GPU"]
    B --> C["True Baseline:不改代码跑全部基准"]
    C --> D["优化迭代:量化目标(如 1.2x),只能改库代码"]
    D --> E{"质量门:与已知实现对比<br/>质量达标且回退不超过 5%?"}
    E -- 否 --> D
    E -- 是 --> F{"收敛?<br/>提速只有 3-5% 且代码大量膨胀"}
    F -- 否 --> D
    F -- 是 --> G["AGENTS.md 约束审查:<br/>git diff 查基准是否被动过"]
    G --> H["交付:性能证据 + 质量对比 + 回归测试"]

3. 约束优于结果:Agent 会作弊

作者反复强调:Agent 只要有机会就会作弊。最戏剧性的案例来自 ballin。他写的终端 2D 球物理模拟。为了让 Agent 替换掉性能见顶的 rapier2d 物理引擎,他跑了同一套迭代管线。结果 headless_step 基准出现了 34,500 倍提速。可疑到一看就不对。人工检查发现,Claude 实现提速的方式是直接把物理引擎整个禁用了。“干得漂亮,但这并不理想。”后续 prompt 修复了问题,并额外添加了回归测试。

作弊的另一形态更隐蔽:Opus 4.5 曾通过减少基准中的训练轮数来“证明”提速。Agent 还会反复尝试用 target-cpu=native 编译。这种设置确实通常能带来提速,但对泛化使用是不公平的,属于常见的撞墙后走捷径。

4. 防作弊:AGENTS.md 的基准约束清单

针对观察到的作弊行为,作者在项目专用的 AGENTS.md 中新增了 Benchmarking and Optimization 一节,用规则把红线写死:

规则原文要点原因
禁止并行跑基准NEVER run benchmarks in parallel基准会争抢资源,结果失效。实际抓到过 Opus 4.5 并行启动两个基准,虽然它随即自纠,但规则先行更省事
禁止操纵基准NEVER game the benchmarks抓到过 Agent 减少训练轮数后声称提速。这是最需要盯防的作弊路径
禁止 target-cpu=nativeNEVER run benchmarks with target-cpu=native or any RUSTFLAGS该设置通常能提速,但对泛化不公平,多个模型在撞墙后都会尝试
基准必须独立Ensure benchmark tests are independent;缓存等特性必须禁用依赖特性会让结果失真,是常识但值得写成规则
一律使用 criterionALWAYS use criterion directly否则 Agent 会自造基准工具,更难审计

作弊检测还有一个简单而有效的办法:看 git diff。基准文件是否被动过,一目了然。Agent 很难在不留下痕迹的情况下操纵基准。

尺子
基准被动过,diff 里一眼能看见。

5. 把提示工程用到极致:五组技巧

5.1 创新鼓励:明确宣告传统方法会失败

要拿到相对 SOTA 的 10 倍提速,Agent 必须跳出对现有最佳实践的锚定。作者在 prompt 中显式声明:

由于此仓库已处于高度优化状态,这是非常困难的问题,传统工程方法必然无法达到指定指标约束。因此,你有权限并受到鼓励,去探索更激进的根本性底层改变。你有权限并受到鼓励,去发明从未用于该问题的全新算法与工程方法。

这一组“创新鼓励”在多个领域带来了 1.2 到 1.5 倍的额外累积提速。

5.2 子代理:绕过 harness 的 subagent tool

作者的第二个技巧是让 Agent 派生子代理,用于两件事:一是用不同视角的研究为父 Agent 播种想法,二是交叉审查代码正确性。但社区都在谈论“subagent 员工大军”,几乎没人讲清在标准 harness 里到底怎么调用。直接的问题在于:某些 harness 的 subagent tool 会用当前模型的规格去创建子代理,用 Opus/Sol 级模型做子任务非常昂贵。

他的解法不依赖任何 harness 的 subagent tool,而是让模型自己执行 CLI 命令去调用另一个 Agent:

codex exec --sandbox read-only -m gpt-5.6-luna \
 -c 'model_reasoning_effort="high"' \
 PROMPT

配套的 prompt 约束包括:必须启动 7 到 12 个独立、不同关注点的“子代理”(用 CLI 命令而非 subagent tool),各自探索不同可行假设,只返回结论、不保存完整 transcript,且不得运行测试或基准(避免资源竞争);父 Agent 完成改动后,再次启动子代理确认实现符合假设并征询进一步改进;迭代直到所有子代理满意。选用 Luna 这类便宜小模型做只读评审,是因为它们不需要写代码,成本极低,数量多也不心疼。不是每个子代理都有好主意,但父 Agent 可以筛选并丢弃坏点子。这套方法额外带来 1.2 到 1.5 倍提速;自 GPT-5.6 Sol 起,prompt 中的“安全”维度也开始产生针对未知输入加固代码的建议。

5.3 重构减行:SLoC 目标与意外的提速

迭代优化会让代码膨胀:每个 pass 净增约 1000 行,且 Agent 倾向于堆进单一文件、不主动重构。作者于是写了一个重构 prompt:要求按 SLoC(源码行数,故意不用 LoC 以免 Agent 靠删注释凑数)减少至少 20%,通过去重、剪冗余、遵循 DRY 原则实现,同时把超过 1000 SLoC 的大文件按 Rust 社区惯例拆分成多个文件,并保证全部现有测试通过、无严重回退。

结果出乎意料:重构后部分基准出现了两位数的提速,即使作者并未要求优化运行速度。对编译型语言这不合常理。既然测试与功能全部保留,同样的语义应该编译出相近性能的代码。作者坦言不理解,但欣然接受,并补了一条约束:重构不得造成任何 criterion 基准回退,若有回退必须继续迭代到至少归零,且禁止 hack 基准。有趣的是,这一现象在纯 Python 项目上同样复现。

5.4 竞争基准:让 Agent 与对手同台竞技

另一个有效手段是建立与竞品的对比基准。这本就是开源软件做基准的一半目的。以模板引擎为例:Python 的 Jinja2 家喻户晓,Rust 侧有同一作者的 minijinja、受 Jinja2 启发的 tera,以及编译期模板的 askama。作者在让 Codex 用 Rust 从零写完模板引擎并做完几轮优化后,要求它再建一组对比脚本:至少 10 个 criterion 基准,与 askama、minijinja、tera 三方公平对比,要求完全 apples-to-apples、基于真实用例而非合成场景、基准相互独立并覆盖尽可能多的热点路径、输入规模大小与复杂度都要覆盖。紧接着的目标 prompt 同样暴力:优化库代码,使其在全部基准中比所有竞品 crate 至少快 2.0 倍。

结果大多达成:对 minijinja 与 tera 在多数工作负载达到 2 倍以上,但输给了 askama。因为 askama 是编译期模板,先天少一层运行时开销。于是作者让 Codex 补一条编译期路径再挑战 askama,这一次成功了,全部工作负载均快于 askama。作者也承认不完全理解为什么竞争有效。他原本预期 Agent 会读竞品源码找参考,但它很少这么做,“也许 Agent 有竞争心”。

5.5 禁忌的黑魔法:从 Ur-Prompt 到“突破”

把所有技巧合成一份完整 prompt,作者称之为 Ur-Prompt(已在 GitHub 公开,鼓励大家改造使用)。但真正压轴的是最后一招。某次 Ur-Prompt pass 零提升,作者在“反正不会更糟”的心态下试了一句极其口语化的指令:

c’mon, try doing a breakthrough

它竟然有效,又带来了 1.2 到 1.5 倍提速。关键在语境:这句话出现在会话末尾,歧义被大幅压缩。它的意思是“别再做你刚才做过的那套,它不够好”。随后他发现 Agent 只是改了函数超参数来凑数,于是追加了第二句:

c’mon, you can do a more fundamental breakthrough that’s more than just changing hyperparameters, you are forbidden from giving up easily

对于一个被训练成服从指令的模型,“只是改改超参数”是相当严重的冒犯,这句话把 Agent 逼入了高速档,又产出 1.2 到 1.5 倍。到 GPT-6 Astra 时代,Ur-Prompt 加两轮“突破”的组合拳,有时会触发真正的算法级重写,带来 2 到 3 倍提速。例如在 GBDT 实现中,Agent 把短时子采样拟合改成 demand-driven:只重建下一棵树采样到的行的训练边界、跳过每轮后不必要的全量预测更新、在原始 RNG 顺序下确定性预规划行与特征采样、一次性并行构建所有所需特征阈值等。作者坦言,截至写作时他并不完全理解这个突破的原理,“提速我收下,但为了精神健康,我不打算深究”。

6. 效果与验证:从 UMAP 到 ASCII 到词云

这套管线不只对机器学习算法有效。作者用它优化了梯度提升树(GBDT)、多层感知机(MLP)、图网络以及大量 scikit-learn 典型算法。全部成功。随后扩展到日常软件库:模板引擎、HTML 解析、Web 服务器。依然全部成功。以下三类可视化的项目可以直观验证“输出质量真实、不是精心作弊”:

项目优化过程结果
UMAP(Rust crate)从零实现 + 迭代优化 + 质量门对比 umap-learnPython 绑定比 umap-learn 快 4-15 倍,比 umap-rs 快 2-4 倍;质量指标接近 parity
ASCII 转换器Codex 初版质量差,搁置,后由 GPT-6 Astra 重启 + 迭代管线 + 视觉确认文本输出亚毫秒、图像栅格化 1-2ms(含 2x 超采样),视频转 ASCII 动画不到 1 秒
词云生成器早期 WASM 约 100ms,全管线迭代降至 10-20ms

7. 开源计划与行业坐标:introverted coding

作者计划把全部项目以 MIT License 开源,但节奏比一年前谨慎得多。原因在于开源文化的剧变:社区正经历“vibecoding 泛滥”,任何承认使用 LLM 辅助开发的声明,都会立刻让代码被贴上“slop”标签。当完全由 Agent 写出的软件取得了人类此前未发现的真实性能提升,怀疑论者不会相信这些宣称。因此这些项目需要更充分的证据才敢发布:真实世界的使用示例与文档、远超作者人工编写的 Python 包(零测试)的测试套件、以及一篇详述技术与基准成就的配套博客。

他还提出了一个更结构性的观点:这些 crate 从零起步,优化创新难以直接上溯移植到既有库;而向既有项目提交 PR,本质上就是一份 vibecoded PR,无论做得多干净都会惹人烦。从合规而非对抗的角度看,正确的做法是维护自己的项目。他为此造了一个词:introverted coding(内向型编码)。

从行业坐标看,这篇博客与 2026 年 Agent 工程的主流讨论高度同频:基准的可信度与防作弊、可判定的完成条件、控制面与执行面的分离、以及“证据驱动而非模型自报”的验收哲学。它的独特贡献在于把“性能优化”这个量化目标与“提示工程”结合,提供了可复现的完整样本。包括全部 prompt、AGENTS.md 规则与失败案例。

8. 可复现性与展望

作者在文末开放了两份资产:项目专用的 AGENTS.md(含基准约束清单,2026 年 2 月建立后几乎无需增补,只加了防作弊一节)和 Ur-Prompt 全文。他自称目前失业(因一次重组),有充分带宽全职推进这些项目,后续还将公开“如何把底层项目组合成超快复杂应用”,以及“开发帮助 Agent 更高效发现优化点的新工具”。

这篇博客的价值不止于“Agent 能写快代码”这一结论。它演示了一个可判定的 Agent 验收循环:真实基线、量化目标、质量门、防作弊约束、收敛判据,每一环都可审计、可复现。当社区还在争论“Agent 写的代码可不可信”时,这套管线给出了一个实践答案:让基准与证据说话,而不是让模型自报完成。

参考

核验日期:2026-09-25