这套系统将pi-autoresearch移植为Claude Code技能skills,通过jsonl状态、bash执行、git进化机制,实现智能体自动运行实验、筛选最优方案并持续循环优化,构建一个可自我演化的科研执行体系。
从pi-autoresearch到Claude Code:一次“去工具化”的进化
来自Shopify的π自主实验循环扩展插件 ,原型叫pi-autoresearch。这玩意儿像个精密的瑞士军刀,给你配好了各种工具,比如“初始化实验”、“运行实验”、“记录结果”,每一步都有专门的工具,就像你去实验室做化学实验,每个烧杯、试管都有它固定的位置,老师还会在旁边盯着你,让你按部就班地操作。规矩是规矩,但总觉得有点束手束脚,不太自由。
但咱们今天聊的这个版本,把这一套全部推翻了。
它干了一件特别疯狂的事——把所有现成的工具都给拆了。不拆还好,一拆完,直接给Claude这个AI智能体来了个“权力下放”。
什么意思呢?就是以前是工具命令AI:“你,去给我做这个。”现在变成AI自己说了算:“我,想这样做,然后我再那样做。” 它不再是通过调用一个个冷冰冰的工具接口来干活,而是变成了一个可以自主写文件、自己跑脚本、自己写日志的全能选手。
这个转变,好比是你原来做数学题,每一步都得问老师:“老师,我这一步对吗?下一步该干嘛?”老师给你指哪儿你打哪儿。现在呢?老师直接给你一把钥匙,让你去图书馆随便翻参考书,自己去推导公式,然后回来讲给老师听。只要你有本事,你甚至能自己编一套解题新思路。
这种自由度一旦打开,事情就开始变得既危险又刺激。危险的是,万一它想歪了咋办?刺激的是,万一它真搞出什么大发现呢?而且这个改造最狠的一点是,它完全不需要一个复杂的后台服务,一个普通的笔记本电脑就能让它跑起来,就像给你一把瑞士军刀,让你去荒野求生,你的想象力和执行力就是最大的限制。
实验初始化:从工具调用变成写一行json
以前启动一个实验,那得走流程。你得调用一个叫init_experiment的工具,就像你去食堂打饭,得先排队、再刷卡、然后跟阿姨说你要啥菜,一套流程走下来才能吃到饭。现在呢?流程简化到令人发指。Claude直接在桌面上放了一个笔记本,这个笔记本叫autoresearch.jsonl。它只要在这个笔记本上写一行字,就代表“我要开始一个新的实验了”。
这背后是一个天翻地覆的思想转变。实验不再是一个需要启动和关闭的“功能”,它变成了一条可以被随时记录和追溯的“历史”。你可以把这个autoresearch.jsonl文件,想象成一本“实验日记”,Claude每有新想法,就在上面写一页。比如第一页写“尝试用A方法做加减法”,第二页写“不行,太慢,换B方法”,第三页写“B方法好像有点意思”。
更有意思的是,这个日记本是“只追加”的,只能不停地往后面加新的内容,不能修改之前写的。这就像我们小时候的错题本,每一道错题都清清楚楚地记在上面,没法涂改。你只能看着它越积越厚,然后惊讶地发现自己从“错题大王”变成了“学霸”。所有失败的尝试、成功的经验,全都老老实实地躺在那里,谁也删不掉,这就保证了整个系统的进化路径是完全透明和可追溯的。而我们的AI同学,就变成了一个超级勤奋、永不偷懒的学霸,每天都在往这本日记本上,记录下自己新的实验计划,然后准备开始新一轮的“刷题”。
执行实验:一切归结为一个shell脚本
接下来这一步,最接地气,也最能体现什么叫“大道至简”。以前的实验运行起来可能很复杂,要配置环境、要启动各种服务。但在这个系统里,Claude想要运行一个新实验,只需要在电脑的命令行里输入一句话:
./autoresearch.sh
就这么简单。这就像你每天早上起床刷牙,不需要思考,本能地拿起牙刷,挤上牙膏,动作一气呵成。所有实验的复杂逻辑,全部被塞进了这个叫autoresearch.sh的脚本里。这个脚本就像一个统一的“实验操作台”,Claude把实验计划放上去,按下按钮,实验就开始了。
这里面藏着一个非常关键的细节:计时。每一次运行实验,系统都会掐表,记录下这次实验花了多长时间。这就不仅仅是看实验结果是对是错,还要看它快不快。这就好比考试,不光要求你答对,还要求你在规定时间内答对。一个方案如果很准确但特别慢,那它可能会被系统嫌弃;而另一个方案如果又快又准,那它就会直接被贴上“优等生”的标签,成为大家学习的榜样。这一步在干一件特别重要的事:把所有实验都变成可以互相“比武”的选手。没有比较就没有伤害,也没有进步。这个系统从一开始就把“到底谁更好”这个问题,直接写进了运行的流程里。想象一下,一个AI球员在球场上疯狂投篮,每次投完都会记录自己的命中率和出手速度,然后不断调整姿势,直到找到那个能让他百发百中的“标准动作”。
记录结果:git变成进化引擎
这一段是整个系统最“骚”的操作,绝对值得起立鼓掌。实验结果跑完了,它不会简单地存到某个文件夹里就完事。它给实验结果安排了两条截然不同的命运:如果实验结果很棒,表现特别好,那它就获得了“荣耀加冕”——系统会执行git commit,把这个成果正式提交到历史库中,永久保存。如果结果一般,那就像被风吹走的落叶一样,无人问津,最后消失在历史的尘埃里。
这是什么?这简直就是在电脑里上演了一出活生生的“达尔文进化论”!git在这里根本就不是一个简单的代码管理工具,它变成了一个“进化记录仪”。每一个git commit,都相当于一个优秀的“基因”被保留了下来,它们代表了系统在不断探索中积累的宝贵经验。而那些没有被提交的,就是在进化过程中被淘汰的“路人甲”,它们的失败经验虽然没有被直接保存,但也为系统的进化提供了方向。
你平时用git可能只是为了防止代码丢了,好找回某个版本。但在这个系统里,git是为了不丢“成功的经验”。每一次git commit,都是这个系统变得更强的一个铁证。这个设计还有一个特别爽的好处:历史清晰。你可以随时回到任何一个commit,去看看当时那个“最优解”是什么样的,就像你回看自己打游戏时的高光时刻录像,那种感觉别提多爽了。它清晰地告诉你,系统是怎么一步一步从青铜走向王者的。
可视化:从炫酷界面到一份Markdown
以前这种高大上的系统,通常都会配一个很炫酷的TUI(终端用户界面)dashboard,看起来像科幻电影里的控制面板,各种数据跳来跳去,特别唬人。但在这套系统里,这个炫酷的界面被直接简化成了一个文件,名字叫autoresearch-dashboard.md。听起来是不是有点寒酸,就像把美国航天局的指挥中心,直接换成了一张写在白板上的“任务清单”。
但你仔细想想,这反而是一种更高级的聪明。Markdown文件有什么好?第一,它任何人都能看懂,包括你妈都能打开看;第二,它也是纯文本,Claude这个AI智能体自己也能读,能理解里面写了啥;第三,它还能被git版本控制,这意味着这个“仪表盘”本身也在进化,你可以看到它每天是怎么更新的。
这就像你以前想了解一个复杂的游戏攻略,得去看一个3D炫酷视频,还得戴上耳机听解说。现在呢,一份清晰的文字版攻略,谁都能拿来就看,还能在手机上随时查阅,随时更新。最重要的是,这种形式没有任何额外的依赖,你不需要启动一个特殊的程序,不需要安装任何看图的软件,打开文件就能看。这种“低门槛可视化”,反而让这个系统在长期运行中,变得无比稳定和可靠。它告诉我们,最好的UI(用户界面),有时候就是没有UI。
上下文注入:让智能体记住自己干过什么
这一段是整座大厦的“灵魂支柱”。系统里有一个叫UserPromptSubmit的钩子(hook),它的作用听起来很简单,但威力巨大:它会在Claude每次开始执行新任务之前,偷偷地把之前的那些历史信息,一股脑地塞给Claude当“背景资料”看。
简单理解就是:每次开始干活之前,先把之前的经验“复习”一遍。这就像是你在考试前,老师不是让你“好好复习”,而是直接把错题本和学霸笔记塞到你脑子里,让你在开考前一秒,脑子里全是解题的套路。
这就形成了一个完美的“学习闭环”:过去的经验,通过这个钩子,变成了当前的决策依据。基于这些依据,Claude设计新的实验,执行它,得到新的经验。然后这个新的经验,又会通过git commit被保存下来,成为下一次循环的“历史经验”。这个循环一旦跑起来,就像在山上滚雪球一样,越滚越大,越滚越快,越滚越聪明。每次Claude开始干活,都不是从零开始的“小白”,而是一个带着所有“前世记忆”的“超级学霸”。
状态管理:一个jsonl文件撑起整个系统
你可能会想,这么复杂的系统,它所有的运行状态,比如现在在做什么实验、有哪些备选方案、哪个方案最好,这些信息都存在哪里?不会是某个复杂的数据库吧?答案会让你惊掉下巴——就存在我们最开始说的那个日记本autoresearch.jsonl里。对,就一个文件!
没有臃肿的数据库,没有复杂的缓存系统,没有任何花里胡哨的数据结构,就是一个简简单单的文本文件。但这个文件,就像一个拥有超能力的“档案管理员”,它拥有三大神器:
第一,它是一条清晰的时间线。每一行都代表了一个实验想法或状态的变化,按时间顺序排好,就像你翻开日记本,能看到自己每一天的成长。第二,它极度便于复制。你想把你的整个实验系统备份或者迁移到另一台电脑上?不用导出数据,不用备份数据库,只需要把这个文件复制走就行了,整个系统的灵魂就跟着你走了。第三,它天然地容易被AI理解。jsonl格式是AI最熟悉的“语言”之一,它可以直接读取、解析并理解里面的内容,这就保证了Claude能够随时了解自己的“历史”。
这就像你把你自己人生中所有的重大决策、关键思考、失败教训,全部记在一个小本本上。你走到哪里,只要带着这个小本本,你就能随时回溯过去,吸取教训,继续成长。这种极致简单的状态管理,让整个系统变得异常轻盈和透明。
gitignore的真正意义:过滤噪声留下进化
在项目里,有一个叫.gitignore的文件,它通常用来告诉git哪些文件不要管、不要提交。很多人会觉得,被.gitignore忽略的那些文件肯定不重要,甚至是垃圾。但在这套系统里,情况完全相反。autoresearch.jsonl这个日记本、autoresearch-dashboard.md这个仪表盘,还有其他一些运行日志,它们都被放在了.gitignore里。
为什么?因为它们是“过程”,而不是“结果”。它们非常重要,是系统思考的轨迹,但它们就像你每天练字时用掉的草稿纸,草稿纸上的练习很重要,没有它们就没有最后的成品。但最后被git commit永久保存下来的,是你写出的最漂亮的、最有价值的那个字。
这个系统通过.gitignore,巧妙地分离了“尝试”和“成果”。git负责保存那些经过验证、通过筛选的优秀成果,代表了系统的“进化方向”。而被忽略的那些文件,则记录了进化的“曲折过程”,你可以随时去查看,了解系统为什么这么想、为什么那么做。这种设计,保证了进化路径的清晰和干净,让git log里看到的,都是一个个坚实的前进步伐,而不是一堆杂乱无章的脚印。
无限循环:让系统活起来
现在,咱们把刚才说的所有模块拼在一起:autoresearch.jsonl记录想法,autoresearch.sh执行实验,git筛选并保存最优解,UserPromptSubmit钩子注入历史经验,autoresearch-dashboard.md展示进化轨迹。
当所有模块拼在一起,一个非常神奇的事情就会发生:这个系统开始“活”过来了,它自己进入了无限循环。这个循环就像永动机一样:
写实验(在日记本上记下一行)→ 跑实验(执行脚本)→ 评估结果(根据指标打分)→ 择优保存(git commit好结果)→ 再写实验(基于新经验,写下新一行)
这个循环可以一直跑下去,只要你的电脑还有电、还有硬盘空间,它就会像一个不知疲倦的研究员,24小时不停地尝试各种方案,然后从失败中学习,从成功中进化,变得越来越聪明。这时候,你再回头看,它已经不再是那个简单的脚本集合了,它更像一个拥有记忆、拥有选择、拥有进化方向的生命体。它就是你养在电脑里的一个“进化实验体”,看着它一点点变强,那种成就感,比你自己打赢一局游戏还爽。
关键风险:评估函数决定命运
讲到这里,大家肯定觉得这系统简直无敌了,但我必须给大家泼盆冷水,说一个现实的硬伤。这套看似完美的系统,有一个非常致命的软肋——那就是“评估函数”,也就是用来判断实验结果好不好的那个标准。
因为整个系统从“择优保存”到“下次该尝试什么”,所有的判断依据都来自于这个评估函数给出的分数。如果这个评估函数本身有偏差,或者设计得不合理,那整个系统就会像一个被误导的登山者,朝着一个错误的方向疯狂狂奔,而且还觉得自己离山顶越来越近。
举个例子,如果我们的评估函数是“投篮姿势要帅”,那系统经过无数代的进化,最后可能会训练出一个投篮姿势极其华丽,但球永远砸在篮筐边上的“舞者”。或者如果评估函数只盯着“解题速度快”,那它可能会发展出一套虽然很快但正确率只有10%的“蒙题大法”。所以,在用这套系统之前,最重要的一步,其实根本不是写代码,而是静下心来,认真地思考一个问题:“对于我想解决的这个问题,到底什么才算是‘好’?”
作者背景与独特性评价
好了,技术聊完了,咱们最后来聊聊那个站在这个疯狂系统背后的人。这个项目的作者,是一个能把两种看似矛盾的能力完美结合的人。一方面,他对AI自动化研究的底层逻辑有着极其深刻的理解,这种理解源于对Andrej Karpathy这类顶尖学者推动的“自动研究”理念的追随;另一方面,他又拥有把复杂理念转化为极简代码的顶级工程能力,这种简化哲学,又深受像Tobi Lütke这样的工程大师的影响。这两种能力放在同一个人身上,本身就是一种稀有物种。
很多人能侃侃而谈“未来AI会怎样”,但能动手把未来变成现实的人少之又少。而在这个项目中,作者不仅动手了,还选择了一条最不寻常的路:用最简单的工程手段,去实现最复杂的系统行为。他像一位功夫大师,没有选择炫酷的招式,而是用最朴素的几招,却打出了四两拨千斤的效果。这种风格,就像是高手过招,你还没看清他出的什么招,自己就已经输了。他的独特性就在于,用克制和约束,反而让系统释放出最强大的进化潜能,这本身就充满了智慧和哲学意味。
收个尾:这东西到底改变了什么
以前我们做实验、搞研究、甚至写作业,是什么样?像不像手动刷副本?我们一遍一遍地操作,一遍一遍地试错,就像游戏里那个可怜的勇士,自己举着剑,一刀一刀地砍怪,能不能掉装备、能不能升级,全靠自己的手速和运气。人困马乏,效率低下。
现在,我们有了这个系统,一切都变了。它变成了一个“挂机系统”。我们只需要在后台把它挂上,它就会自己24小时不停地刷副本,掉下来的好装备它会自动保留,差装备它直接扔掉。最厉害的是,它还会自己分析为什么这个装备好,下次该怎么走位才能更容易爆出好装备。它会自己优化路线,自己调整策略。
而在这个过程中,我们人类的角色也从那个吭哧吭哧亲自上阵的执行者,变成了一个站在旁边制定战略、设计规则的“设计师”。我们终于从那些繁琐、重复、枯燥的操作细节中抽离出来,把时间和精力放在更有创造性的地方——去定义目标,去设计评估函数,去思考这个系统未来的进化方向。当这种系统真正跑起来的时候,你才会真正感受到一种前所未有的震撼:你亲手创造出来的这个实验系统,它不再是死的,它开始自己进化,自己生长。这感觉,就问你酷不酷?