2026年5月28日 周四晚上19:30,报名腾讯会议了解“如何转型成为前线部署工程师(FDE)”(限30人)
免费POC, 零成本试错
FDE知识库

FDE知识库

学习大模型的前沿技术与行业落地应用


我要投稿

大神Karpathy 发明 autoresearch,仅用 Markdown 就做出了自动化研究循环

发布日期:2026-05-27 09:00:45 浏览次数: 1538
作者:AI 博物院

微信搜一搜,关注“AI 博物院”

推荐语

Karpathy用一份Markdown文档构建了AI自主研究的完整循环,颠覆了传统自动化脚本的设计思路。

核心内容:
1. Karpathy如何用Markdown文档替代传统主循环脚本
2. 让LLM直接作为runtime,执行自然语言指令的循环逻辑
3. 这种轻量级设计对自动化研究范式的启发

杨芳贤
53AI创始人/腾讯云(TVP)最具价值专家

刷到 Karpathy 又发了新东西。

上次他搞 LLM Wiki,教我们用 AI 管理知识库。那篇出来之后很多人跟着做。这次他走得更远——他不是教人用 AI,是让 AI 自己做研究。

项目叫 autoresearch。我把仓库 clone 下来翻了一遍,发现一件挺意外的事:这东西比我以为的还要朴素。

没有「主循环脚本」这种东西

很多介绍文章会说 autoresearch 有个 630 行的 Python 脚本,是个主循环,调用 LLM 改代码、跑实验、看指标。

读了源码我发现不是这样。整个仓库就三个核心文件:

Agent 不能碰)
train.py        — 模型 + 训练循环(agent 改的就是这个,630 行)
program.md      — 给 agent 的自然语言指令" data-show-line-number="false" style='border-radius: 3px;display: -webkit-box;padding: 16px 20px;overflow-x: auto;text-indent: 0px;color: rgb(171, 178, 191);background: none;white-space: pre-wrap;margin: 0px;font-family: "SF Mono", Consolas, Monaco, "Courier New", monospace;font-size: 14px;line-height: 1.7;-webkit-font-smoothing: antialiased;'>prepare.py      — 数据准备 + 评估(只读,agent 不能碰)
train.py        — 模型 + 训练循环(agent 改的就是这个,630 行)
program.md      — 给 agent 的自然语言指令

没有 run.py。没有主循环脚本。

那循环在哪里?

循环写在 program.md 里。用人话写的。摘一段原文:

LOOP FOREVER:

1. Look at the git state: the current branch/commit we're on
2. Tune train.py with an experimental idea by directly hacking the code.
3. git commit
4. Run the experiment: uv run train.py > run.log 2>&1
5. Read out the results: grep "^val_bpb:" run.log
6. If empty, the run crashed. Read stack trace, attempt fix.
7. Record the results in the tsv
8. If val_bpb improved (lower), advance the branch
9. If val_bpb is equal or worse, git reset back

你看到了吗。Agent 本身就是循环。没有 Python 调度器。Karpathy 直接把 Claude Code 或者 Codex 当成 runtime,program.md 是给它喂的程序。一份 Markdown 文档,就是一个可执行的研究方案。

这个设计让我愣了一下。我们写自动化脚本写了几十年,第一反应永远是「写个主循环把 LLM 包起来」。Karpathy 反过来:LLM 就是主循环,Markdown 才是程序

他在 README 里有句话:「The program.md file is essentially a super lightweight skill.」翻译过来——program.md 本质上就是个轻量级 skill。这话对用 Claude Code 的人来说很熟悉,对没用过的人则像在说外语。

实际工作流:5 分钟一轮,每晚 100 个实验

说回这东西到底怎么跑。

启动方式简单到离谱。在仓库里打开 Claude 或 Codex,关掉所有权限提示,丢一句话:

「Hi have a look at program.md and let's kick off a new experiment!」

然后它就开始转。

每轮 5 分钟。这个数字是写死在 prepare.py 里的 TIME_BUDGET 常量,agent 改不了。Karpathy 是故意的——5 分钟保证了不同实验之间的可比性,不管 agent 把模型改大改小、改架构改优化器,都跑 5 分钟。

跑完 train.py 会打印一段固定格式的结果:

---
val_bpb:          0.997900
training_seconds: 300.1
peak_vram_mb:     45060.2
mfu_percent:      39.80
num_params_M:     50.3

val_bpb 是验证集 bits per byte,越低越好。注意不是常见的 validation loss——bpb 对词表大小不敏感,agent 改 vocab 也能公平比较。这是个小细节,但能看出来 Karpathy 想得很细。

每轮跑完,agent 做一件事:

  • • 如果 val_bpb 变低了 → git commit,分支往前走
  • • 如果没变低或变高 → git reset,回到上一个版本

实验记录写到一个叫 results.tsv 的文件里,长这样:

commit    val_bpb    memory_gb  status   description
a1b2c3d   0.997900   44.0       keep     baseline
b2c3d4e   0.993200   44.2       keep     increase LR to 0.04
c3d4e5f   1.005000   44.0       discard  switch to GeLU activation
d4e5f6g   0.000000   0.0        crash    double model width (OOM)

status 只有三种:keep / discard / crash。简单粗暴。

每轮 5 分钟,一小时大约 12 个实验,一晚上 100 个。Karpathy 让它跑了 48 小时,跑了 700 个,其中 23 个真正带来了改进——18% 的保留率。val_bpb 从 0.9979 降到 0.9697。

人睡觉的时候 AI 在改代码。

两条容易被忽略的规矩

我读 program.md 时,有两条规矩让我停下来想了一下。

第一条:「NEVER STOP」。

原文是大写的。意思是 agent 一旦开始跑就不许停。不要问「我要继续吗」「这是个好的停止点吗」。

The human might be asleep, or gone from a computer and expects you to continue working indefinitely until you are manually stopped.

人可能在睡觉,可能在干别的事,期望你无限期工作下去直到被手动停止。

这条很有意思。它否决了我们对 AI agent 的一个隐性假设——AI 应该「礼貌地确认进度」。Karpathy 在说:不要。礼貌是为人服务的,不是为 agent 服务的。

第二条:「Simplicity criterion」。

All else being equal, simpler is better. A 0.001 val_bpb improvement that adds 20 lines of hacky code? Probably not worth it. A 0.001 val_bpb improvement from deleting code? Definitely keep.

同样的指标改进,删代码的 keep,加代码的 discard。

这句话翻译成中文是「在指标差不多的情况下,简单优先」。但更深一层是:指标不是唯一的目标,可读性和简洁度也是隐性指标。Karpathy 给 agent 加了这条规矩,本质是在防止 agent 用 hacky 的方式刷分。

我想了想,这其实是对人的研究品味的编码。一个好的研究员会觉得「加了 20 行垃圾代码换 0.1% 指标」不值,但 agent 默认不会这么想。Karpathy 用一段 Markdown 把这种品味写下来,喂给 agent。

自己跑一个,要注意什么

前提条件比原本想象的严格一些。

  • • 需要一张 NVIDIA GPU(H100 最理想),Python 3.10+,uv 包管理器
  • • 默认配置的模型 50M 参数,占用 ~45GB 显存
  • • Mac、CPU、AMD 都跑不了默认配置,但有 fork

Karpathy 在 README 里给小机器留了一节说明,说如果你想在 MacBook 上跑:

  1. 1. 换更窄的数据集(TinyStories)
  2. 2. 降低 vocab_size(8192 → 1024 甚至 256 字节级)
  3. 3. 改 MAX_SEQ_LEN 到 256
  4. 4. 降低 EVAL_TOKENS
  5. 5. 把 DEPTH 从 8 改到 4
  6. 6. 改 WINDOW_PATTERN 为 "L"(默认是 "SSSL" 的 sliding window,小机器跑不动)
  7. 7. 降低 TOTAL_BATCH_SIZE 到 2^14

或者直接用社区 fork:

  • • miolini/autoresearch-macos
  • • trevin-creator/autoresearch-mlx
  • • jsegov/autoresearch-win-rtx
  • • andyluo7/autoresearch (AMD)

启动流程:

git clone https://github.com/karpathy/autoresearch.git
cd
 autoresearch
uv sync                    # 装依赖
uv run prepare.py          # 一次性数据准备
uv run train.py            # 手动跑一个 baseline,确认环境 OK

环境跑通了之后,打开你的 coding agent(Claude Code 或 Codex),把权限放开,丢一句:

「Have a look at program.md and let's kick off a new experiment!」

它会自己创建一个 autoresearch/<tag> 分支,跑 baseline,然后开始改 train.py。你可以去睡觉了。

一个比代码更值得抄的东西

Karpathy 在 README 里有一段话很值得抄下来:

The default program.md in this repo is intentionally kept as a bare bones baseline, though it's obvious how one would iterate on it over time to find the "research org code" that achieves the fastest research progress.

翻译过来:默认的 program.md 是一个最简版本,但显然可以迭代它,找到「研究组织代码」,让研究进展最快。

这句话的核心是:program.md 本身也是可以被优化的对象

你可以把不同版本的 program.md 当成不同的「研究员人格」。一个保守一点的 program.md 只敢改超参,一个激进的会改架构,一个挑剔的会拒绝复杂改动。你甚至可以让多个 agent 用不同的 program.md 并行跑,看哪个研究员产出最高。

这就是为什么我说 autoresearch 不只是个训练优化工具。它是个用 Markdown 编写研究范式的范例。

把它换成你自己的问题

autoresearch 的核心抽象其实只有三个组件:


组件
在 autoresearch 里
换成你的问题
训练脚本
train.py 输出 val_bpb
任何脚本,输出一个数字
指令
program.md 写循环逻辑
你自己的 program.md
评估器
prepare.py 的 evaluate_bpb
任何能算分数的函数

只要你能把一个问题变成「跑一个脚本,输出一个数字」,autoresearch 的循环就能用。

我能想到的几个场景:

  • • Prompt 优化:写个脚本跑 100 个测试 case 算准确率,让 agent 改 prompt 模板
  • • 配置调优:写个脚本测响应时间,让 agent 改 nginx / 数据库配置
  • • 算法优化:写个 benchmark,让 agent 改实现代码

但我读完源码之后觉得,autoresearch 真正的贡献不是「让 AI 改代码」——这个能力 Cursor、Codex、Claude Code 都有。它的贡献是把研究循环本身降低到一份 Markdown 文档的复杂度

研究循环以前是研究员脑子里的隐性知识。现在它是一段可以版本控制、可以分享、可以 fork、可以 A/B 测试的 Markdown。

这是个挺重要的转变。

最后

读完源码,我有一个观察。

autoresearch 这种东西,三年前不可能存在,因为 LLM 不够强。三个月前可能存在,但要包很多脚手架。现在它可以是 630 行的 train.py + 一份 program.md + 「打开你的 coding agent」。

Karpathy 在他的推文里有句话:「Frontier AI research used to be done by meat computers... That era is long gone.」

肉体计算机做研究的年代已经过去。

我不知道这话他是不是当真,但 autoresearch 这个项目本身,就是把这个判断写成了代码。简单到你觉得自己也能写一个。

简单的东西往往最有力量。


53AI,企业落地大模型首选服务商

产品:场景落地咨询+大模型应用平台+行业解决方案

承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

添加专属顾问

回到顶部

加载中...

扫码咨询