跳转至

Karpathy AutoResearch Loop Cycle & Harness Optimization

📊 Level ⭐⭐⭐ | 10.6KB

文章 "76%的性能提升与模型无关?Karpathy 700次 Loop 实验揭开 Agent 最大误区" (四月, 2026-07-07) 的实体整理。综合了 Hugging Face Joel Niklaus 的 Harness 优化实验、Karpathy AutoResearch 项目 (Loop Cycle)、以及 Codila 的 Loop Engineering 方法论。

核心发现:Benchmark 测的是"模型 + Harness"组合能力

Hugging Face 工程师 Joel Niklaus 的实验《Don't Train the Model, Evolve the Harness》证明:使用同一个 DeepSeek-V4-Pro,不改模型权重,只优化外层执行机制 (Harness),就能让 Agent 在专业任务中的表现大幅提升:

外层机制 Pooled Score
mini-swe-agent 3.5%
Goose 23.2%
Pi 45.4%
LAB harness (原始) 63.4%
优化后 LAB harness (22轮自动迭代) 80.1%

关键数据:优化后的 Harness 追平 Claude Sonnet 4.6,运行成本仅 1/7,且迁移到同族小模型 DeepSeek-V4-Flash 仍带来 14.4 分提升。

什么是 Harness?

Harness = Agent 的外层执行机制,类比"操作系统"管理 LLM(CPU)的内存、I/O、驱动程序。包含 12 个核心组件:流程编排、工具调用、分层存储、上下文管理、错误处理等。

"上下文腐烂"问题:模型将关键信息置于上下文窗口中间时,性能下降 30%+。成熟的 Harness 通过压缩历史记录、屏蔽旧输出、动态获取和代理摘要来解决。

Karpathy AutoResearch (Loop Cycle)

Karpathy 斩获 9万 Star 的 AutoResearch 项目 — 630 行开源代码,核心是"提出修改 → 运行实验 → 自动评估 → 保留进步"的循环。

Codila 将其提炼为 Loop Engineering 五步法:

  1. 基于精细调整的模型,编写方向文档 + 约束条件
  2. 仅允许 Agent 修改训练脚本(评估/评分脚本锁定,防止自降标准)
  3. Agent 进入循环:提出变更 → 训练 → 评估 → 保留好的、舍弃坏的
  4. 持续迭代直到满足停止条件

实验结果

  • Karpathy 手动调整的模型跑 2 天 → 700 次实验 → 找出 20 项代码改进(含注意力机制中遗漏的标量乘数)
  • Shopify CEO Tobi Lutke 内部测试 → 质量提升 19%,模型大小减半

Loop 三要素

  1. 验证器 — 自动判断结果好坏
  2. 状态文件 — 记录每次尝试结果,崩溃不丢失
  3. 停止条件 — 达到目标或最大轮次即停止

Loop 适用标准(四项全能)

  • 任务高频(至少每周重复)
  • 验证可自动化
  • Token 预算能消化冗余
  • Agent 能访问真实运行环境

Bilevel Autoresearch(双层自动研究)

在内层 Loop(优化模型)外再套一层外层 Loop(优化内层循环的搜索逻辑)。结果:同一模型性能比 Karpathy 基准 提升 5 倍,全部来自架构改进。

外层循环的作用:打破 LLM 的"思维定势" — 内层循环易陷入模型先验认知的搜索模式,即使策略失效也会反复尝试;外层循环强制模型探索本能回避的方向。

隐性代价

  1. 理解债:循环生成的代码非人工写出,仓库代码与开发者的理解差距越来越大,系统崩溃时 Debug 成本极高
  2. 认知让渡:循环跑通后,人极易停止思考 — 有人用来加速已理解的工作,有人用来逃避理解工作

深度分析

为什么 Harness 优化先于模型训练:成本与迁移的双重复利

Niklaus 实验最有战略含义的一点,是把"性能提升"从资本密集型(训练)转移到劳动密集型(系统工程)。冻结权重意味着不需要 GPU 集群、不需要数据管线、不用等下一次 checkpoint — 唯一投入是外层代码的迭代时间,最终却以 1/7 的运行成本追平闭源旗舰模型。对多数团队而言,这是一条可负担得多的路径:先确认 Harness 及格,再谈模型升级。

迁移性是第二个复利。微调成果绑定在特定模型权重上,换模型即作废;而 Harness 是纯代码资产,换到同族更小的 DeepSeek-V4-Flash 上仍带走 14.4 分。这意味着 Harness 优化具有"一次建设、多模型复用"的杠杆属性,且比提示词调优更容易沉淀 — 提示词效果往往依赖具体模型的行为习惯,而文件处理、结果落盘这类工程修复是模型无关的。实验中最大的性能改进恰恰来自这些看似无聊的自动化步骤。

当然,这条路线有天花板:Harness 带来的提升终有极限,剩余差距仍需模型底层能力填补。正确顺序是先榨干外壳红利,再评估是否真需要更强的模型 — 多数团队的错误在于反过来做。

"0 分也是 Harness 的 bug":评测的第一课

实验中最戏剧性的细节:模型初测得 0 分,事后排查发现其法律推理全程正确,只是把结果写进了错误的文件名,评测程序读不到输出。这说明 0% 测的从来不是模型智力,而是管道是否通畅。推而广之,任何 benchmark 分数都应先经过"Harness 排除法"检验 — 分数异常低时,第一假设应是模型之外的 plumbing 故障,而非模型能力不行。

这个教训对 22 轮自动迭代同样关键:Loop 能持续产生有效改进,前提是评估信号本身可信。五步法中"评估/评分脚本锁定"正是为了保证 Agent 无法通过降低标准来自我美化 — 评测完整性是自动迭代的地基,一旦验证器被污染,700 次实验只会以极低成本产出大量自欺。

22 轮自动迭代对 eval-driven 工程的含义

22 轮迭代把 pooled score 从 63.4% 推到 80.1%,本质上是把 Loop 三要素(验证器、状态文件、停止条件)应用到了 Harness 自身:验证器是 held-out 基准,状态文件记录每轮 harness 代码的得分快照,停止条件是分数平台期或轮次上限。它示范了一种 eval-driven 的系统开发范式 — 任何对执行机制的改动都必须经过同一把尺子度量,去留由数据裁决而非直觉。

自动化在其中的角色值得注意:让 Agent 而非人来跑这 22 轮,是因为迭代需要海量耐心而非灵感 — 正如它发现了人类在十几轮后就会放弃的注意力标量乘数遗漏。凡可被自动评估的改进维度,交给人肉迭代都是浪费;人应退到设计验证器、解释结果的位置上。

Loop Engineering vs Bilevel Autoresearch:单层够用还是双层必需

单层 Loop 的优势是便宜、可解释、适用面广 — 满足四项全能标准(高频任务、可自动验证、Token 预算充足、真实运行环境)即可启动。双层结构在同模型上再拿 5 倍提升,说明当内层搜索陷入模型先验导致的"思维定势"时,只有外层强制探索才能突破;但代价是搜索成本倍增、状态管理更复杂、失败模式更难排查,且对验证器质量要求更苛刻。

务实的取舍是:先跑通单层 Loop 并观察收益曲线,只有内层明显陷入重复无效策略、且任务价值足以覆盖双倍 Token 消耗时,才引入外层。层级每加一层,理解债同步加深 — 双层系统崩溃时调试的是"优化优化器的逻辑",已远超普通工程师的直觉。这把"认知让渡"从个人习惯问题升级为组织能力问题:必须有人能跟上系统复杂度,否则自动化只是在积累未来的故障成本。

实践启示

  1. 升级模型之前,先用"换一个 Harness"做对照实验:同一模型在不同外壳下得分可从 3.5% 波动到 80.1%,你抱怨的"模型不够聪明"很可能只是外壳不及格。
  2. 给评测加一道 plumbing 排查步骤:分数异常(尤其接近 0)时,先检查结果落盘路径、文件名约定、输出格式,再怀疑模型能力。
  3. 把 Harness 当作可迁移的代码资产管理:优化逻辑写成模型无关的通用组件(结果落盘、上下文压缩、错误重试),换模型时红利自动跟随。
  4. 上自动迭代 Loop 前先过四项全能检查表:任务高频、验证可自动化、Token 预算扛得住重试、Agent 能访问真实运行环境 — 任何一项不满足,一个好提示词就够了。
  5. 评估脚本必须对 Agent 只读锁定:自动迭代的价值建立在评分不可被自我操纵之上,这是整条流水线的信任根基。
  6. 为 Loop 产物设立"理解预算":每轮保留的自动改进都要有人能讲清原理并写入文档,防止理解债累积到崩溃时无人能修。

与已有实体的关系

参考

→ [raw/articles/karpathy-autoresearch-loop-harness-76pct-agent-misconception|原文存档]