Andrej Karpathy 最近发布的 autoresearch 仓库在机器学习社区引发了关注。表面上看,这是一个自动搜索 Transformer 最优超参和架构的工具,但从系统设计视角来看,它更像是一个关于"如何设计真正自主的 Agent 系统"的完整示范。

大多数 AI Agent 开发者仍受困于"如何让 LLM 稳定执行复杂任务"的泥潭,而 autoresearch 通过极其克制的代码结构,回答了 Agent 自主性的三个核心问题:目标如何定义、边界如何划定、反馈如何保证客观。

这个系统仅由三个核心文件支撑:prepare.pytrain.pyprogram.md。这种三层分离的架构,而非复杂的框架嵌套,才是其设计哲学的精髓。

三文件架构:冻结层、可变层与元层

autoresearch 中,Agent 的操作空间被严格限定。

prepare.py(冻结层):定义评估标准、数据集和强制性的时间预算,Agent 无权修改。这确保了实验的基座稳固,Agent 无法通过修改数据或放宽测试标准来"作弊"。

train.py(可变层):这是 Agent 唯一的操作对象。Agent 通过读取、修改并运行这个文件来验证自己的猜想。

program.md(元层):人类写给 Agent 的"系统宪法"。它不包含具体的编程步骤,而是规定了运行逻辑、错误处理策略、结果记录格式以及"永不停止"的指令。

这种三层设计让 Agent 拥有了在受控环境下的完全自主权。它不需要询问用户"下一步做什么",因为它在宪法约束下,在冻结层基准上,不断迭代可变层。

固定预算:从限制到设计

autoresearch 强制要求每个实验只能运行 5 分钟。在追求极致性能的 ML 领域,这看起来像是妥协,实则是高明的设计。

固定时间预算提供了绝对公平的比较前提。无论 Agent 把模型改得更深还是更宽,引入了怎样的优化算法,性能提升必须在 5 分钟内体现。这迫使 Agent 寻找的是"计算效率最优解",而非堆砌算力的暴力解。

系统采用 val_bpb(验证集每字节位数)作为评价指标,与词表大小和分词方式无关。这保证了评估函数不可被 Agent 通过架构选择来"游戏化"。有了客观且难以作弊的反馈,Agent 的 keep/discard 决策才具备可信赖的意义。

Agent 发现了什么:时间约束下的帕累托最优

MLX 社区(Apple Silicon 移植版)的公开实验结果很能说明问题。Agent 将默认的 8 层深度砍到 4 层,val_bpb 从 2.667 降到了 1.808,单次实验降幅接近 28%。

背后的逻辑很直接:在固定 5 分钟预算下,模型更小意味着每秒能处理更多训练步数,从而在极短时间内达到更充分的学习状态。Agent 没有发现什么未知定理,它发现的是"硬件限制 + 时间约束"下的帕累托最优解。

更有意思的是,在 Mac Mini 和 M4 Max 上运行同一份 program.md,Agent 收敛到的最优架构是不同的。这证明了系统能感知底层硬件差异,自动调整搜索方向——同一份宪法,在不同环境下产出不同结果。

program.md:系统宪法而非提示词

传统提示工程是:给一个任务,拿一个结果。program.md 定义的是一个闭环的生命周期。

它包含了:约束空间(哪些参数可以改,哪些严禁触碰)、评判标准(如何解读训练日志)、出错处理(报错后如何提取错误栈并修复)、偏好权重(性能相近时倾向于更简单的代码),以及一条明确的指令:永不停止,直到人类打断

这是"编程过程"而非"编程步骤"的转移。开发者不再编写具体的搜索算法,而是编写一套让 Agent 能够"自发产生优化行为"的治理逻辑。program.md 对应的不是 prompt,而是组织章程。

一个根本局限

autoresearch 展示了强大的局部进化能力,但存在一个根本性的局限:缺乏跨实验的归纳推理

当 Agent 在第 10 次实验发现减少层数有效,在第 20 次发现增加维度有效,它不会主动推理两者之间是否存在更深的规律。当前的 LLM Agent 受限于上下文窗口的扁平记忆,缺乏将碎片化实验结果结构化为知识体系的能力。

这个局限放大来看,是所有 Agent 系统目前共同面对的瓶颈。autoresearch 的价值在于,它通过严苛的物理边界和客观的反馈回路,把这个瓶颈的影响降到了最低——就算 Agent 不会归纳,只要客观指标在下降,实验就是有效的。