Karpathy 的 Loop 实践 — AutoResearch 与双层循环¶
以 Karpathy 的 AutoResearch 项目为案例,拆解 Loop Engineering 在真实科研场景中的落地架构,以及双层循环(Bi-level Loop)如何在不更换模型的情况下将效率提升 5 倍。适合已了解 Loop Engineering 基本概念、想看具体工程实现的开发者。
目录¶
- #从 Prompt 到 Loop:视角切换
- #AutoResearch:Karpathy 的三文件架构
- #双层循环(Bi-level Loop):提速 5 倍的架构突破
- #日常四步提示词:简化版 Loop
- #适用边界与认知风险
- #参考资料
从 Prompt 到 Loop:视角切换¶
核心定义¶
| 概念 | Prompt Engineering | Loop Engineering |
|---|---|---|
| 角色 | 「给 AI 打字的人」 | 「写那个替你打字的 Loop 的人」 |
| 交互模式 | 你问它答(单次) | 设定目标 → AI 自主执行 → 验证 → 未达标则重复 |
| 你做什么 | 每轮手动输入 | 设定架构和约束,过程自动跑 |
Loop 成立的三大要素¶
┌──────────────────────────┐
│ 目标(Goal) │
└──────────┬───────────────┘
│
┌──────────────▼──────────────┐
│ │
▼ │
┌────────────────┐ ┌───────────────┐
│ Validator │◄───────────│ 执行(Execute) │
│ 验证器 │ │ Agent 改代码 │
│ 能判断真假 │ │ / 跑实验 │
└───────┬────────┘ └───────┬───────┘
│ │
│ ┌────────────────┐ │
└────►│ State 状态文件 │◄─────┘
│ 记录已试方法 │
│ 避免重复犯错 │
└───────┬────────┘
│
┌───────▼────────┐
│ Stop Condition │
│ 达标 / 上限 │──→ 输出结果
└────────────────┘
三大要素缺一不可:
- Validator(验证器):没有客观判断机制,Agent 只会盲目自我认同
- State(状态文件):记录已尝试的方法和结果,打破「每轮犯相同错误」的死循环
- Stop Condition(停止条件):目标达成或循环次数耗尽即停止,防止无限跑
核心洞察:「只要你有一个客观的度量指标,那个跑实验的人就不该是你。」 — Karpathy
AutoResearch:Karpathy 的三文件架构¶
项目规模¶
- 3 个文件,约 630 行代码
- 发布一个月内获得极大关注
- 仓库:
github.com/karpathy/autoresearch
三文件设计¶
autoresearch/
├── train.py ← Agent 可以修改(实验对象)
├── prepare.py ← Agent 禁止修改(评分器 = 验证器)
└── program.py ← Agent 的任务说明书(探索方向 + 约束)
| 文件 | 角色 | Agent 权限 | 设计意图 |
|---|---|---|---|
train.py |
训练脚本 | 可修改 | 实验对象,Agent 在此尝试各种优化 |
prepare.py |
评分器 | 不可修改 | 防止 AI 作弊——不能「降低考试难度」 |
program.py |
任务说明书 | 只读 | 规定探索方向、约束条件、搜索空间 |
关键设计原则¶
✅ prepare.py 与 train.py 强制分离
→ 防止 Agent 通过降低验证标准来"通过考试"
❌ 如果让 Agent 同时控制训练和评分
→ 等于让学生既答题又改卷
实际成果¶
| 实验 | 结果 |
|---|---|
| Karpathy 手工打磨 20 年的模型 | Agent 跑了 2 天、700 次实验,发现 20 处他遗漏的优化细节(如注意力机制中缺少缩放系数) |
| Shopify CEO 测试 | 8 亿参数模型经硬件优化后,性能超越原 16 亿参数模型 |
双层循环(Bi-level Loop):提速 5 倍的架构突破¶
核心问题¶
既然自动研究本身也是一种研究,能不能用自动研究来优化自动研究本身?
架构对比¶
=== 单层 Loop ===
Agent ─→ 提改 train.py ─→ 训练 ─→ prepare.py 评分
│ │
└──────────── State 记录 ◄─────────────────┘
=== 双层 Bi-level Loop ===
内层 Loop(原逻辑):
Agent_A ─→ 提改 train.py ─→ 训练 ─→ prepare.py 评分
│ │
└──────── State 记录 ◄───────────────────────────┘
外层 Loop(元优化):
Agent_B ─→ 不碰模型
│ 读内层代码 + 运行轨迹
│ 发现内层搜索卡在哪
│ 动态注入新 Python 代码
│ 改变内层搜索策略
│ │
└────────────────────┘
关键发现¶
| 维度 | 单层 Loop | 双层 Loop |
|---|---|---|
| 相同基础 LLM | 基准 | 效率提升 5 倍 |
| 提升来源 | — | 架构优化(非更强的模型) |
| 外层作用 | — | 打破内层陷入的搜索套路 |
核心结论¶
效率飞跃来自架构设计,而非更大的模型。 外层 Loop 的作用是打破内层容易陷入的既定搜索本能——当内层在某个方向反复试探无效时,外层从更高维度注入新的搜索策略。
决策树:何时考虑双层循环?
有客观度量指标?
├── 否 ──→ 不适合 Loop
└── 是
单层效果遇到瓶颈?
├── 否 ──→ 单层足够
└── 是
LLM 算力预算充足?
├── 否 ──→ 优化单层 prompt/state
└── 是 ──→ 尝试双层 Loop
日常四步提示词:简化版 Loop¶
即使不使用 Agent 工具,在日常对话中也能通过四步提示词模板体验 Loop 机制。
四步模板¶
1. 計畫(Plan) → 說明下一步要做什麼
2. 執行(Execute) → 動手產出內容
3. 反思(Reflect) → 對照標準打分,誠實列出差距
4. 迭代(Iterate) → 各項 8 分以上才過關,未達標優先修最弱項
Prompt 示例¶
你是一个 [角色]。
目标:[明确的完成标准]
请按以下四步执行:
1. 先列出你的计划
2. 执行计划,产出内容
3. 对产出的内容按以下标准打分(1-10):
- [标准 A]
- [标准 B]
- [标准 C]
4. 如果任何一项低于 8 分,优先修补最低分项,然后重复步骤 2-4
最多迭代 3 轮。
适用边界¶
✅ 非常适合(验证可自动化)
├── 修复测试错误
├── 提高基准测试速度
├── 清理类型错误
└── 有明确通过/失败判断的任务
❌ 不适合(验证依赖人工判断)
├── 设计新介面
├── 搭建新网页
├── 需求模糊的任务
└── 没有客观度量标准的工作
适用边界与认知风险¶
认知投降(Cognitive Surrender)¶
当 Loop 交付代码的速度远超人类理解速度时,人会倾向停止判断、照单全收。
风险示意:
时间 ─────────────────────────────►
人类理解速度 ───────────────────── (线性增长)
Loop 产出速度 ───────────────────── (指数增长)
│
└── 差距不断扩大
"仓库里的代码" vs "脑子里的理解"
工具的双刃剑¶
| 使用者 | 行为 | 结果 |
|---|---|---|
| 厉害的人 | 用 Loop 在深耕领域跑实验更快 | 效率倍增,认知同步加深 |
| 不想思考的人 | 用 Loop 规避搞懂底层逻辑 | 产出不可维护的黑盒代码 |
防御策略:强制自己定期审查 Loop 的输出,保持对核心决策的理解。Loop 是你的研究助手,不是你的代理决策者。
行动建议¶
1. 验证先行¶
在让 AI 自行跑任务前,先花精力把 Validator 立起来,确保评分指标客观不可作弊。
❌ 先让 Loop 跑,再想怎么评判结果
✅ 先把 prepare.py(评分器)写好、锁死,再启动 Loop
这是 AutoResearch 最核心的设计纪律——prepare.py 对 Agent 不可修改,否则等于让学生出题又改卷。
2. 謹防認知投降¶
对 AI 通过 Loop 自动生成的代码或结果,仍须保持主动审查与理解,切勿将思考权完全让渡给工具。认知投降的后果:仓库里的代码与脑子里的理解之间的差距不断扩大,最终你无法判断 AI 的输出是否正确,也无法在出问题时排查。
3. 從簡單閉環開始¶
在日常工作中(Code Review、单元测试、文案修正),尝试用四步结构引导 LLM,体会自主优化的威力:
計畫 → 執行 → 打分 → 迭代
不需要复杂的 Agent 框架,一个结构化的 prompt 就能在有明确验证标准的任务中看到 Loop 的效果。
参考资料¶
- Karpathy AutoResearch 仓库
- 01Coder 原始视频
- 循环工程 Loop Engineering — Addy Osmani 框架全景
- [[Loop Engineering 全攻略 - 从 Prompt 到 Agent Loop 的范式转移]] — 五层架构 + Ralph Loop
- Omni-SimpleMem 自主研究发现的终身多模态记忆 — AutoResearchClaw 自主科研案例
相关笔记¶
- 循环工程 Loop Engineering
- [[Loop Engineering 全攻略 - 从 Prompt 到 Agent Loop 的范式转移]]
- Omni-SimpleMem 自主研究发现的终身多模态记忆
- AI 时代的代码审查 Agentic Code Review