打开网易新闻 查看精彩图片

Andrej Karpathy最近把自家"炼丹炉"的图纸公开了。这套叫autoresearch的系统,能让Claude Code自己跑实验、改参数、迭代模型,全程不需要人盯着。跑上几天,出来的模型比原来强一截。

这事让我挺坐不住的。我不训大模型,但天天用Claude Code写代码。为了让代码质量稳一点、风格统一一点,我搞了一堆技能文件、记忆库、子代理,像个给AI套上马鞍的驯马师。但说实话,这套"马鞍"靠拍脑袋评估——感觉有用就留着,代码评审出问题再修。

Karpathy这套玩法,等于给AI配了个实验室。能不能借过来,让我的代码生成流程也搞上科学实验?

从炼丹到写代码:同一套骨架

从炼丹到写代码:同一套骨架

先拆解Karpathy的原版设计。核心就一条:用可重复的实验驱动迭代。你定好指标,AI改方案,跑实验,指标涨了留下,跌了滚蛋。循环往复,直到撞上天花板。

这套逻辑搬到写代码上,理论上完全走得通。一个典型的开发流程是:接需求→探查→规划→执行→评审。把"评审"换成自动化测试,整个链条就能闭环。

但有个前提被很多人忽略:实验必须是确定性的。同样的输入,跑十遍得出十个结果,这套系统就崩了。代码生成比模型训练更难控制——同样的prompt,温度参数稍变,输出可能天差地别。

我设计的测试框架长这样:给定一个任务描述,AI生成代码,和人工写的参考实现做对比。评分用二进制,过或不过,不搞模糊地带。

三个核心指标盯死:

功能正确性——代码跑不跑得通,输出对不对;

风格合规性——有没有按项目规范来,命名、结构、注释全算;

可维护性——复杂度、耦合度、测试覆盖率,硬数字说话。

打开网易新闻 查看精彩图片

每个指标单独过线,才算这一代"存活"。

无状态循环:每一代都是白纸

无状态循环:每一代都是白纸

Karpathy的原版有个设计我特别喜欢:每次迭代完全无状态。系统不记"上一代为什么这么改",只保留当前最优版本和实验记录。

这对写代码意味着什么?你的"技能文件"——那些告诉AI怎么规划、怎么评审的prompt——可以被大胆重写。只要实验通过,面目全非也没关系。

我画了个循环图:

初始化→生成候选技能→跑测试集→算指标→全过就替换当前最优→否则丢弃→下一轮。

和遗传算法有点像,但选择压力更直接:不是"适应度排序",是"全过才晋级"。

这里藏着个反直觉的点:人工觉得好的改动,实验可能证伪;AI瞎试的改动,可能意外通关。人的直觉在局部优化上还行,全局搜索基本抓瞎。

有个例子。我手动调prompt时,总觉得"让AI先写测试再写实现"能提升质量。但小规模实验里,这条规则对通过率的影响是负的——可能是测试写太死,实现被捆住了手脚。要没实验数据,这条"最佳实践"可能就埋进技能文件里传家了。

落地前的三道坎

落地前的三道坎

图纸画完,真开工才发现坑不少。

第一,测试集从哪来。Karpathy训模型,数据管道是现成的。写代码的测试集得自己攒:真实任务、参考实现、验收标准,全是体力活。攒少了覆盖不够,攒多了维护爆炸。

打开网易新闻 查看精彩图片

第二,指标怎么量化。"风格合规"听着简单,落地要拆成可执行的lint规则、AST检查、甚至AI打分。不同项目规范不同,技能文件得能感知上下文。

第三,时间和钱。Karpathy的炼丹炉跑几天几夜,烧的是GPU。Claude Code按token计费,跑一轮实验可能几百次API调用。优化循环本身需要优化——比如先在小模型上筛方案,大模型做最终验证。

还有个更深层的问题:这套系统优化的是"通过测试",不是"写出好代码"。测试集覆盖不到的角落,AI可能学会钻空子。就像学生刷题刷出高分,真功夫未必长进。

我目前的妥协是测试集里混"隐藏题"——不告诉AI评分标准,只看结果。以及定期人工抽检,把漏网之鱼补进测试集。

从个人工具到团队基建

从个人工具到团队基建

如果这套跑通,想象空间不止于个人效率。

团队里每个项目的代码规范、评审习惯、技术债分布,都可以被编码成测试集。新成员不用背文档,AI自动对齐风格。老项目的隐性知识,被显式固化成可执行的指标。

更激进一点:不同业务线的技能文件可以杂交。支付团队的严谨+增长团队的敏捷,实验说了算,不用开会扯皮。

Karpathy的原话是:「让模型基于实验结果自主改进训练流程」。我把主语换成"代码生成流程",骨架完全适用。

当然,现在还是"如果"。我刚把测试框架的脚手架搭完,第一批实验还没跑完。指标波动大不大、收敛要多少轮、有没有明显的局部最优陷阱——全是未知数。

有个细节挺有意思。我最初想把"人类评审时间"也纳进指标,毕竟代码最终给人看。但发现这个变量太噪:同一段代码,早上审和晚上审,过不过可能全凭审的人心情。最后砍掉了,只留机器可量化的硬指标。

也许这就是自动化改进的代价:你必须先放弃一些"人味",换取可重复性。等系统跑稳了,再想办法把"人味"加回去。

你写过最长的一套prompt有多少字?有没有试过让AI自己改自己——不是调语气,是改结构、换策略、甚至推翻重来?