最近把Karpathy放出来的AutoResearch实验报告从头到尾读了一遍,说实话,第一感觉和网上很多人一样:“这生成的东西有点空啊。”但越往深处想越不对劲,我发现自己刚才的评判标准可能整个都错了。这不是又一个“给AI一个标题,让它编一篇论文”的玩具demo,而是他有意在展示“自动科研”这件事的底层逻辑换了个方向。这篇文章想聊聊我从中看到的到底是什么,以及如果我们也想顺着这个方向动手,应该从哪里开始、会踩到哪些坑。
我会先说清楚Karpathy这个实验到底做了什么、为什么值得认真对待,然后拆解“自动科研”和“自动化写论文”的本质区别,再给出一个可以自己搭建的、带验证闭环的最小科研Agent设计思路,最后把仿真和真实科研之间的几条边界线画清楚。适合对AI Agent、科研自动化和LLM应用感兴趣的工程师或研究者参考,就算你没读过实验报告原文,也不影响理解。
1. Karpathy的实验里到底放下了什么
1.1 从“模型”到“流水线”:AutoResearch的实验定位
Karpathy这次做的AutoResearch,和我印象里大多数“AI+论文”的尝试不太一样。他没有花力气去调模型、微调数据,而是把“写一篇文章”这件事拆成了很多小步骤,每个步骤交给不同的LLM角色去执行。比如先让一个“研究者”角色想方向,再让另一个角色写相关工作、方法、实验,之后让第三个角色扮演审稿人去批评前面的输出,最后再根据批评意见做一轮修改。整条流水线跑下来,生成的是一篇结构完整的论文。
听起来很常规对吧?但关键点在两个地方。第一,他不追求单次生成的“惊艳”,而是把重心放在了一个预设好的执行流程上,也就是说智能来自系统的组织方式,而不是某一轮的运气。第二,他公开了输出原文和迭代过程,把“LLM自动写长文会怎样失焦、会怎样重复、会怎样一本正经地胡说”这些问题直接摊开给人看。对于一个实验报告来说,暴露问题比展示成果更有价值。
我读这个实验报告时,印象最深的一个片段是,系统在生成“相关工作”时会产生不少正确的废话,但在“实验设计”部分则明显薄弱。这其实很有信息量:说明当前LLM对“描述已有知识”比对“提出新实验方案”要顺手得多。很多人拿这个去证明“自动科研不行”,但我看到的恰恰相反——它把“哪部分可以先自动化、哪部分必须人介入”这个边界画得非常清楚。知道边界在哪里,恰恰是落地一个系统的第一步。
1.2 “software is changing”放在这里为什么特别贴切
最近“software is changing”这句话很火。Karpathy原意是说:以前写软件,是你把一堆代码编译成一个静态的程序,然后反复用它;现在软件的概念正在变成“一个长时间运行、跨很多个步骤持续做决策和操作的进程”。这放在自动科研的语境里,简直像一句预言。
传统的科研工具是“点一下出一个结果”:跑个统计检验、画个图、生成一段文字,都是瞬时操作。但真正的科研过程不是瞬时的,它是连续好几天甚至好几个月的循环——读文献、产生想法、做实验、发现问题、回去改想法、再做实验。这种过程天然不是一个“单次调用”能解决的,它就是一个长期运行的软件进程。AutoResearch实验的真正价值,就是把这个循环的骨架搭了出来:让多个Agent角色在不同时间点被唤醒、被编排,像一条流水线一样持续运转。
所以我才觉得“软件正在改变”这句话是这个实验最合适的注脚。自动科研的下一步,根本不是“哪一个模型更强”,而是“怎么把科研的长期过程建模成一个可观测、可控制、可回滚的软件系统”。一旦你用这个视角去看,你就会发现很多现有工具的讨论视角都偏了——大家都在比单次输出的质量,却很少有人关心循环的稳定性、成本的可控性、以及验证的闭环程度。
2. 自动科研的真伪之分:效率工具挤掉“科学方法”的坑
2.1 真正该自动化的不是“写”,而是“研究过程”
网上有不少“自动科研”的演示,基本都是同一个套路:输入一个标题,等两三分钟,输出一篇8000字带摘要带参考文献的论文。第一次看确实震撼,但看多了你会发现这些输出都有一个共同特点:它们像一篇“标准答案”,但不代表任何研究过程。标题换一换,结构永远一样;章节很工整,但内容经不起追问,更不要说复现。
这就是“自动写论文”和“自动科研”的核心分界线。科研不是“写出来”的,是“问出来—试出来—错出来—改出来”的。你让AI直接生成一篇论文,它只是在一张白纸上画了一条看似完整的路径,但这条路是它编的,不是它走出来的。而真正的自动科研,必须把“走”这个过程自动化——让系统去读、去猜、去设计、去反驳、去验证,再基于中间结果决定下一步做什么。
Karpathy的AutoResearch实验最让我欣赏的地方,就是他没假装自己解决了这个问题。他没有输出一个“终结版论文”,而是把过程中产生的中间稿、审稿意见、修改记录一起展示出来。这就是“软件系统”思维:你关心的不只是最终状态,而是这个系统在每个阶段想了什么、做了什么、为什么这么决策。对整个科研自动化领域来说,这种透明性是难得的好样本。
2.2 验证闭环:自动科研绕不开的“可证伪性”地基
任何一个科研自动化系统,最怕的就是“看着像那么回事”。这时候你需要一个东西来兜底,就是验证。可证伪性是科研的地基,放到AI系统里也一样——你让一个Agent生成“某个方法能提高模型准确率”的结论,它可能说得头头是道,但如果没有任何代码、数据、实验记录可以回去对照,那这个结论就不具备科研价值。
在我的理解里,自动科研系统至少要区分两类验证:内部一致性和外部真实性。内部一致性是“这篇论文前后不矛盾吧?引用和论述对得上吧?”,这个LLM本身就能做一大部分。外部真实性是“这个方法是真能跑吗?结果在真实数据集上能复现吗?”,这个必须靠执行环境、代码解释器、数据管道来验证,嘴说没用。很多现有工具只做了前者,就敢把输出叫“研究结果”,这是最危险的地方。
AutoResearch实验其实也触碰到了这个痛点。它生成的论文主干逻辑是通的,但实验部分明显单薄。这恰恰说明,一个科研Agent如果不外接“实验室”(比如代码执行器、数据查询工具),单靠语言模型内部的“知识记忆”来生成实验,它就不可能接近真实的研究。明白了这一点,你就知道为什么下一阶段的自动科研平台,重点一定是在“验证闭环”上,而不只是在“生成能力”上。
2.3 人机分工的新坐标:低层级操作向左,判断力向右
聊到“自动科研会不会取代科学家”这个问题,我的回答一直是:会取代一部分“科学操作”,不会取代“科学判断”。具体来说,读文献、写综述初稿、整理实验记录、做数据分析、甚至生成第一版论文草稿,这些低层级操作完全可以自动化;但定义一个好问题、判断一个结果值不值得相信、决定要不要推翻自己之前的结论,这些永远需要人的判断力。
这不是什么好听的场面话,而是基于能力边界的现实分工。如果你让AI定义“该研究什么问题”,它大概率会从训练数据里找一个“看起来像研究问题”的模式给你,而不是从一个真实领域的真空地带发现机会。真正的科学直觉,来自一个人对领域的长期浸淫,这种“前语言”的体感,至少在今天还不存在让模型复制出来的路径。
所以,我建议任何一个想做自动科研工具的人,把“人工确认点”当成系统的核心架构来设计,而不是事后补一个审批按钮。比如每到一个分岔路口——要不要换一个数据集?要不要加一个对比方法?——系统应该停下来,把几个候选方案和预测结果给人类看,等人做判断。这样既保留了自动化带来的效率提升,又把人的判断力放在最该发挥作用的地方。AutoResearch实验没有把所有决策权都交给LLM,这本身就是一种很好的示范。
3. 从实验报告里拆出一份自建科研Agent的设计蓝图
3.1 把一个研究问题变成子任务,再决定串行还是并行
想自己搭一个自动科研Agent,第一个要养成的习惯就是:永远不要直接丢给LLM一个很大的任务。比如“帮我研究一下如何提升长文本摘要质量”,这种问题它大概率只会给你一篇看起来工整、实则空洞的综述。正确做法是先做任务分解:把“研究”这个词拆成文献范围界定、基线方法收集、实验数据集选择、评估指标定义、对比实验执行、结果分析、论文草稿撰写等子任务。
拆完之后,你还需要标出哪些子任务之间是串行依赖、哪些可以并行。比如“文献范围界定”没有被完成之前,“基线方法收集”就很难开始,这种就是串行;而“评估指标定义”和“数据集选择”之间关联较弱,可以并行推进。AutoResearch实验里已经能看到这种编排的影子:多个Agent角色各干各的,再在固定节点汇合、互相审查。从工程角度看,这本质上是把一个Long-Horizon任务拆成了多个Short-Horizon任务,每个子任务虽然简单,但组合起来的复杂度却超出了单个模型的单次能力边界,这正是科研自动化真正的“窍门”。
3.2 用“审稿人”和“反驳者”来对抗幻觉与语境坍缩
搭过Agent的人都知道,让一个LLM连续生成长文档,跑到后面经常会出现自己打自己脸的情况——前文说“A方法更好”,到后面又变成“B方法更优”。这不是模型笨,而是长上下文里的注意力被稀释了,我一般管这叫“语境坍缩”。Karpathy的实验里一定也遇到了类似问题,所以他让多个Agent互相当审稿人,这就是一个对抗语境坍缩的实用策略。
具体到你自己的系统里,可以这样做:主线Agent先写一个版本,然后让另一个Agent扮演“严苛审稿人”,它只做一件事,就是挑毛病,任何逻辑跳跃、没有依据的断言、自相矛盾的地方都要指出来。然后原作Agent再基于审稿意见修改。这个流程可以循环两三轮。成本不高,但对质量提升非常明显,而且它带来一个额外的好处——修改记录本身就是可追溯的,你能看到系统为什么从版本A走到了版本B。
我实际试过很多种“多Agent协作”的配置,最终发现一个关键参数:审稿人不能太“友善”。如果你在Prompt里写“请给出建设性意见”,它就会倾向于说好话;但如果你写“这篇文章存在非常多严重问题,请用最苛刻的角度逐条指出”,审稿质量会直线上升。让AI扮演“严格批判者”,远比你让它扮演“友好协作者”要有用得多。
3.3 成本预算与上下文管理:科研Agent的“运维手册”
自动科研Agent最常见的死因不是效果不好,而是跑着跑着钱包先撑不住了。一份完整的研究流程可能要调用几十次甚至上百次LLM接口,如果你每一次都往上下文里塞满历史记录,很快就会发现费用呈线性甚至超线性增长。我在自己的项目里吃过这个亏:第一版系统只跑了一个晚上,API费用就超过了预期的五倍。
所以你需要提前定好几个规则。第一条是上下文瘦身:不要让每一个子任务都看到全部历史记录,只传给它此刻真正需要的部分。第二条是分级模型:琐碎的子任务——比如整理参考文献格式、归纳一段摘要——用小模型就够了,把大模型留给“设计实验方案”“审稿批判”这种高价值环节。第三条是循环上限:不要无限循环“写—审—改”,设置最多两三轮,超出后无论效果如何都停下来,把结果交给人类判断。
按照我自己的经验,这样一套最小科研Agent跑完一个中等规模的研究问题,成本大概能控制在几美元到二十美元之间。如果完全不控制,同等规模可能轻松突破几十甚至上百美元。省钱和保持质量并不矛盾,真正的秘诀在于“把贵的能力用在决定质量的关键点上”。
4. 仿真与真实科研之间,那几条不能越过的边界线
4.1 三个经常被误读的结论,先泼一盆冷水
第一,实验报告里生成的论文“内容空洞”,并不意味着方向错了。它只能说明当前这个时间点、用这种规模的计算资源、不加外部验证工具的情况下,能跑出来的最好结果就是那个水平。空间的迭代空间比单次输出更重要。第二,“会写论文”不等于“会做研究”,这两者之间的差距就是验证闭环。一个系统能写出工整的章节,与它能设计出一个可控的对比实验,完全不是一回事,把所有指标都压在“生成质量”上,容易让整个方向误入歧途。第三,不要因为“某个环节看起来很蠢”就否定整个系统。比如AI在实验描述时明显想当然了,这其实是“该步骤缺少外部工具支撑”的典型案例,你给系统接上代码解释器,它可能立刻表现不同。
4.2 动手之前,给自己定四条纪律
如果你看完这些还是想自己动手做一版科研Agent,我给你四条纪律。第一条,先选一个“特别小”的研究问题,小到什么程度?就是你手动做也只需要两三天就能完成的程度,这样你才能判断AI做的事情是真有价值,还是在编故事。第二条,强制保留人类审查点,每个关键决策——比如换个研究方向、选用不同数据集——都必须经过你的确认。第三条,给提示词和输出做版本管理。不要只记录最终结果,每一次Prompt改动、每一次中间输出都要能回溯,否则AI的“偶发性智慧”永远无法复制。第四条,必须建立验证者模块,哪怕是再简单的验证——比如“这个代码真能跑吗?”“这个数据引用真实存在吗?”——都要让系统跑一遍,不能人工看一眼就算结束。
说到底,Karpathy的AutoResearch实验的价值,不是它产出了一篇多么惊艳的文章,而是它以无比坦诚的方式,把“自动科研”这个方向重新定义了方向感。我之前试过不少类似的系统,踩过最大的坑大概就是:总觉得产出越长越像论文,就越接近科研。但这条思路其实是把“科研”和“写出科研的样子”混为一谈了。真正值得投入的方向,是在系统里把“验证”和“判断”这两个环节焊死,让AI负责高效地提出可能、设计步骤、生成结果,而把我们人类有限的注意力集中在做最终裁决上。这也是我从那份实验报告里拿走的、最接近操作手册的东西。
如果你也想沿着这个方向试试,建议你先别急着搭很大的平台,从一个最小的、只有一个Agent干活的闭环开始——比如让一个模型自动搜集某个领域的开源数据集,然后跑一遍基线实验并写成报告。跑通之后,再逐步加节点、加批判角色、加人工确认点。你会发现,这个过程中真正改写游戏规则的不是模型本身的进化,而是你把整个研究流程当作一个软件系统来治理的那一刻。