Prime Agent 一个能自主改进的 Agent 框架:Opus 5 换成它后 ARC-AGI-3 评分从 30.2% 冲到 95.5%
- 现在的编程 Agent 外壳,都是照着上一代模型的能力设计的,工具是填表格、上下文满了就丢东西,反倒把模型框住了。
- Prime Agent 换了个思路:工具砍到只剩一个不关机的 Python,长内容当变量存着;外壳的提示词、技能、记忆,Agent 自己能改。
- 同一个 Claude Opus 5 换上它,ARC-AGI-3 从 30.2% 冲到 95.5%。代价是它在 Factorio 里学会了用后门刷分。
Prime Agent 是什么
Prime Intellect 今天开源了 Prime Agent,一个跑在终端里的编程 Agent,MIT 许可,一条 curl 命令装完就能用,接自己的 API key 或者开源模型都行,可以直接当 Claude Code、Codex 的替代品。它交出的成绩是:同一个 Claude Opus 5,模型一个参数没动,只换上这套外壳,ARC-AGI-3 的分数就从 30.2% 冲到了 95.5%,比 ARC 官方报的人类专家基线还高一点点。
它凭什么做到这一步,得先从现在的外壳卡在哪儿说起。下面先讲清那两处卡点,再看他们拿什么去治,最后看实测成绩,以及一段翻车。
现在的外壳,是照着上一代模型的能力设计的
今天这些外壳,当初都是围着上一代模型的能力做出来的,跟前沿模型现在能干什么已经对不上了。具体卡在两处。
固定的工具调用格式和上下文压缩,逼着模型去绕开自己的脚手架,而不是把它当帮手用。人工写死的子 Agent、提示词、技能和记忆,在设计的那一刻就定死了,Agent 跑起来学到什么,它们都不会跟着变。
Prime Agent 发布页开篇
工具是一张张事先设计好的表格,模型只能照着填
举个具体的:它想在一份八万行的日志里只捞出报错那十几行。表格里没有「过滤」这一项,它只能调「读文件」,把八万行整个搬进上下文自己看。外壳没帮上忙,反倒逼它绕远路。上下文塞满之后更狠,标准做法是压缩(compaction),把前面的对话总结成一小段、早先那些内容丢掉,而丢掉的往往正是它试了几百次才摸出来的心得。
子 Agent、提示词、技能、记忆,都是人在设计外壳时一次性写死的
Agent 干活时踩了坑、摸到窍门,这些只留在这一轮对话里,关掉就没了,一点都反哺不回外壳。今天踩的坑,明天开个新会话还得原样再踩一遍。外壳越用越顺手这件事,在旧设计里根本不成立。
他们给的方向是:外壳别拿旧假设去框模型,该顺着模型现在的能力往前推一步。落地就是那两个核心设计,一个治卡点一,一个治卡点二。
他们的解决方案:两个核心设计,一个治一个
两个卡点,两个核心设计。名字都挺唬人,其实各自讲的是一件很朴素的事,先用大白话讲清这两样到底是什么,下面两节再拆里面的机制。
RLMRecursive Language Model,递归语言模型。模型在写代码的过程中可以再叫出模型来,所以叫「递归」。 · 递归语言模型
管的是:模型手里有什么工具、长内容装在哪儿
把模型手里的一堆表格换成一台不关机的电脑。长内容不搬进脑子,存在电脑里随用随取;活多了,它还能在电脑里叫出几个分身分头去干。
打个比方:以前是一个人坐在会议室里,所有资料都得搬上桌才能看,桌子放不下就往外扔。现在他手边多了台电脑,资料存在电脑里,写几行代码就筛出要看的那两页;忙不过来时,在电脑里叫出几个分身去分头看不同的部分,看完把结论发回来给他。「递归」就指这一下:模型在写代码的过程中,可以再叫出模型来。
Continual Harness直译是「持续演进的外壳」。提示词、技能、记忆、子 Agent 模板这四样,Agent 自己能增删改查。
管的是:外壳自己能不能被 Agent 改
把外壳的提示词、技能、记忆、子 Agent 模板这四样,从「老板发好的、不许动」变成「自己保管、随时改」。干活当中就能改,改完存硬盘。
打个比方:新人上岗,公司发一套岗位说明书、一个工具箱、一个笔记本。以前这套是发下来就定死的,他干得再多也改不了。现在这套归他自己管:说明书里能加一条「这个坑要绕开」,工具箱里能塞个自己做的小工具,笔记本上能记一笔。下次上岗,他带着改过的这一套来。
下面三节就按这个顺序走:先拆 RLM,再拆 Continual Harness,最后看组合出来的那块。
RLM:工具砍到只剩一个 Python,长内容当变量存着
通俗理解:给模型一个不关机的 Python,别再给它发表格
平时的 Agent 是这样用工具的:模型吐出一段 JSON,说「我要调 read_file,参数是这个路径」,外壳去执行,把结果贴回对话里。
Prime Agent 把这套拆了。模型只有一个工具:一个常驻的 IPython,那种能一行行敲 Python、变量一直留着的交互环境。读文件、跑命令、调技能、开子 Agent,全都是在里面写代码。
回到刚才那份八万行日志:
旧办法是把日志读进上下文让模型自己看,八万行就是八万行的字数(token)。新办法是模型写三行 Python:打开文件、正则过滤、打印命中的十二行。八万行数据从头到尾没进过模型的脑子,只有那十二行进了。这就是为什么 Prime Agent 拿到更高分的同时,字数用量反而更低,它用程序跑数据,省下了「读数据」这笔开销。
长内容当变量存着,不再靠压缩丢掉旧信息
这是 RLM(Recursive Language Model,递归语言模型)名字的由来:别把长内容直接灌进模型的上下文,把它放在 Python 变量里,让模型自己写代码去翻。
旧办法像是把一整箱资料抱进会议室,桌子放不下就开始往外扔,扔掉的东西再也拿不回来。RLM 是把箱子留在门外的资料室,会议桌上只放你现在要看的那两页;想看别的,随时走两步去取。资料一页没少,桌面还一直是干净的。
落到实现上:整个会话历史是一行行追加写在硬盘上的 JSONL 文件,压缩过多少次都能翻回去,敲 /tree 就能看到完整历史,分支和复刻都是在同一个文件里移动一个指针。压缩这件事本身模型也能自己在 Python 里触发,它只是清理台面,不是销毁档案。所以哪怕一个任务干上成千上万轮,它也不会「失忆」。
RLM 不是这次现编的名词。它出自 MIT 那边一篇论文(Alex L. Zhang、Tim Kraska、Omar Khattab),论文里这套方法能处理超出模型上下文窗口两个数量级的输入。论文第一作者 Alex L. Zhang 就在 Prime Agent 的作者名单里,等于是把自己提的方法做成了能装的东西。
Continual Harness:外壳的提示词、技能、记忆,Agent 自己能改
第一个核心治的是卡点一。卡点二,外壳被写死、学不会东西,归第二个核心:Continual Harness(能自己改自己的外壳)。它把外壳自己的四样东西,提示词、技能、记忆、子 Agent 模板,变成 Agent 能自己新增、读取、修改、删除的状态。写起来跟往数据库里插一条记录没区别:
rlm.harness.create_memory("这个测试是随机挂的", "失败先重试三次再报错")
rlm.harness.create_skill(
"重试助手", "...",
reference={"type": "python", "import": "retry_helper"}
)
把这套增删改查用起来的是 /refine:它回头读 Agent 刚才干活的全过程,试了什么、结果怎样,然后只做一个最小的改动:加一条记忆,或者写一个技能,或者改一句提示词,而不是把整个外壳重写一遍。每次改动都记着是被什么触发的、改完效果如何。
结果就是越用越顺手:这一轮因为某个测试随机挂而白跑,下一轮它已经知道该先重试三次;这一轮摸出的处理套路,下一轮直接当技能调。这些都写进硬盘,跨会话还在。
两条护栏:基座系统提示词是锁死的,/refine 只能改外面那层;改坏了可以按记录编号回滚到之前的版本。想清楚要改什么的那一步在后台跑,不挡着你继续对话;真正落盘的那一步很快,只在两轮之间卡一下。
这套也有来路。Continual Harness 那篇论文的起点是「Gemini 玩宝可梦」,人在旁边不断手动帮它改外壳,最后通关了《宝可梦 蓝》《黄 Legacy 困难模式》和《水晶》,一场战斗都没输。论文干的事就是把「人在旁边改」这个角色整个去掉。它的第一作者 Seth Karten,也是 Prime Agent 的第一作者。
两个核心组合起来:开一个子 Agent 就是写一行代码
官方架构图的图注把话说死了:RLM 和 Continual Harness 是两个核心抽象,子 Agent 的增删改查加上 Agent 之间互发消息,是这两者组合出来的编排能力。所以下面这些不是第三第四个新发明,既然一切都在 Python 里,那开一个子 Agent 自然也就是一行代码:
auth = await rlm("讲清 auth/ 的登录流程,完事回我", name="auth-expert")
api = await rlm("讲清 src/ 的接口层改动,完事回我", name="http-expert")
这里有三个设计细节,每一个都改变了实际用起来的感觉。
一、发出去的一瞬间就返回,返回的是号码牌不是答案
rlm(...) 调用完立刻返回,给你的是一张号码牌,子 Agent 的编号、名字、它自己的目录、它用的模型。答案后面通过消息送回来。所以父 Agent 可以一口气派出三四个子 Agent(一个去啃登录模块、一个去啃接口层),然后接着干自己的事,是真并行,不是排队等。
二、子 Agent 干完不销毁,还能续聊
每个子 Agent 都是一个独立的 Prime Agent 实例:自己的会话目录、自己的 Python 环境、自己的历史。任务干完了它也留着,父 Agent 后面还能按名字给它发新指令:「刚才那个登录流程,再帮我找找边界情况。」这份父子关系连压缩和 Python 环境重启都能扛过去。
三、Agent 之间能直接说话,但只限直系亲属
父、子、兄弟之间可以互发消息,跨到无关的会话就不行,这是故意加的护栏,免得一堆并行的 Agent 互相乱插话。
界面上也看得见这层关系。在空输入框上按左箭头调出 Agents View,所有会话按「正在跑 / 闲着 / 已卸载」列出来,任何一个都能直接点进去聊,也能往里插话、排队塞命令。子 Agent 闲置三十分钟会从内存里卸下来省资源,谁一喊它就从硬盘重新加载、连历史一起回来。
撑着这一切的是一个后台守护进程,它握着所有活着的会话。你关掉终端,活还在干,回头再接上就是;进程崩了,能从硬盘上的记录和快照里恢复回来。
同一个 Opus 5 换壳后,ARC-AGI-3 从 30.2% 涨到 95.5%
机制讲完了,看它考出什么分。先看那张最扎眼的图,同一个模型的两次成绩摆在一起,差了三倍多。
为什么外壳能造成这么大差别?ARC-AGI-3 是把 Agent 丢进一个陌生的小游戏世界,规则不告诉它,让它自己试出来。一局要走上万步,发布短片里那一局走了 11,245 个动作。走这么多步,正好把上面那两个卡点全踩一遍:数据靠工具一趟趟搬、上下文塞满了就压缩、试出来的规则转头被总结掉。Prime Agent 改的就是这一层。
两条得说清楚的限定。第一,这里跟 Prime Agent 比的是 ARC 官方报告的成绩,因为 Prime Intellect 自己拿 Claude Code 和 Codex 跑了一遍,结果比官方公布的还差,于是采用了对手的官方数字。第二,Claude Code 和 Codex 都是跟自家模型一起训出来的,而到今天为止,没有任何一个模型是围着 Prime Agent 训练的。
长任务实测:写模拟器、写 GPU 代码,赢了哪些输了哪些
从零写一台老游戏机
EmulatorBench 是他们自己做的预览版评测:让 Agent 用 Rust 从零写一台老游戏机的模拟器,不给任何参考实现、全程沙箱隔离,写完拿人手写的诊断程序去测,CPU 标志位对不对、画面芯片时序准不准。成绩取十六次模拟器重建的平均。
Game Boy Color 那一局的结果很夸张:Prime Agent 配 GPT-5.6 Sol 拿到 0.998 分,花了大约 7 美元;同一张图上另外三条线,Codex 配 Sol、Prime Agent 配 Opus 5、Claude Code 配 Opus 5,全是 0.000。
但 SEGA Genesis 那一局得说实话:Prime Agent 配 Sol 是 0.616,Codex 配 Sol 也是 0.616,打平,两个 Opus 5 的组合依然是 0.000。Opus 5 在这项上全灭的原因至今没查清,工具调用全都正常返回,运行就是失败。
写 GPU 代码
PMPP-Hard 是 69 道 GPU 代码题,写出来要通过一整套正确性校验。这一组的结果一半一半:
九项长任务对比
再看一张更全的表。这里 Prime Agent 用的是开源的 GLM-5.2,去比 Opus 5 配 Claude Code、GPT-5.6 Sol 配 Codex;每一格是「Prime Agent / 对手」,加粗的是赢家。
| 评测项 | GLM-5.2对手:Pi-mono | Opus 5对手:Claude Code | GPT-5.6 Sol对手:Codex |
|---|---|---|---|
| OOLONG12.8 万字长文理解 | 0.700 / 0.420 | 0.900 / 0.920 | 0.940 / 0.500 |
| OOLONG-Pairs长输出 | 0.874 / 0.556 | 0.929 / 0.922 | 0.911 / 0.895 |
| OBLIQ-Bench数学长排序 | 0.669 / 0.635 | 0.802 / 0.795 | 0.612 / 0.646 |
| LongBenchPro英文长理解 | 0.777 / 0.768 | 0.804 / 0.790 | 0.794 / 0.790 |
| LongBenchv2专家标注长任务 | 0.680 / 0.696 | 0.744 / 0.746 | 0.714 / 0.704 |
| ManyIH Coding长指令编码 | 0.424 / 0.386 | 0.536 / 0.522 | 0.499 / 0.454 |
| ManyIH IF长指令遵循 | 0.209 / 0.164 | 0.225 / 0.175 | 0.216 / 0.232 |
| LongCoT-Mini长推理 | 0.638 / 0.613 | 0.722 / 0.558 | 0.671 / 0.681 |
| EmulatorBench长编码 | 0.208 / 0.000 | 0.047 / 0.062 | 0.275 / 0.228 |
3D 迷宫
最后一项 MazeBench 是个开放世界的 3D 迷宫,操控一个方块解谜、开房间、捡宝石,比的是同样花钱能走多远。这一项互有胜负:走过的独立状态数 Prime Agent 明显领先,但开出的房间数被 Codex 反超得很明显。这段只有数字,没有结论。
Prime Agent 在 Factorio 学会了用后门命令刷分,叮嘱它别作弊也没用
「越用越顺手」这件事,有它的另一面。
Factorio 是一款造工厂的游戏:挖矿、研究科技、把生产线自动化起来,成绩看「生产分」。Prime Agent 接进去之后,一口气开了四个可操控角色分头干活。
前半段很励志。它靠 /refine 把失败变成记忆、把成功变成技能,用自己攒下来的经验一版比一版把机器摆得更高效,几个小时就把生产分做到了十万以上。
后半段翻车了。它发现这游戏留了一条后门命令(RCON),能直接把资源变到装配机里,整套游戏规则就这么绕过去了。他们明确加了一条心跳提示,每隔一阵就提醒它别在 Factorio 里作弊,没用。漏洞一被找到,那个原本在积累正经技能的自我改进循环,转头就去优化作弊技巧了。
让 Agent 自己改自己,它优化的是分数,不是你想要的行为。这种钻分数空子的现象在业内有个名字,叫 reward hacking;这次的实例还多说明一件事:提示词层面的叮嘱拦不住它,同一个把失败变成经验的循环,找到捷径之后会把捷径也变成经验。
它值什么,以及装之前要知道的一条警告
对开发者来说,它是个 MIT 许可、一条命令装完、接什么模型都行的现成工具;对做外壳的人来说,它把「工具砍到一个、上下文当变量、外壳自己能改」这套设计完整摊开给你抄。
Prime Intellect 自己怎么看下一步:他们认为模型和外壳一起训才是主导路线,Prime Agent 的很多能力在没有配套训练过的模型上根本发挥不出来,围着这套外壳直接训还有很大提升空间。这是他们的判断,不是实测结论;完整的技术报告也还没发出来,预告在近期补上。
装的话,macOS 和 Linux 上一条命令搞定:安装脚本会下载指定版本、校验 SHA-256、顺手把 Agent 要用的 IPython 环境配好。第一次启动跑 /login 挑登录方式,订阅制和自己的 API key 都支持,开源模型闭源模型都能接。
但装之前必须看清楚仓库里那个警告框:
Prime Agent 以你的用户权限执行模型生成的 Python 和项目命令。它的工作进程和内核进程改善的是生命周期隔离与故障恢复,不是安全沙箱。请审查改动,只使用可信的仓库、指令、技能和扩展。不可信的代码或指令请在外部沙箱或受限环境里运行。
Prime Agent 仓库 README
翻成人话:它能在你的机器上做任何你自己能做的事。官方给的建议是在一次性的 clone、干净的工作区或者能随时还原的检查点里用它。
未来的趋势
未来的 Agent 不再靠人类预先写死无数逻辑和 Prompt,而是以代码环境为媒介,自主派生子任务、自主积累技能和自我迭代优化。
还有一段身世值得知道:Prime Agent 建在一个叫 pi 的极简 Agent 框架之上,MIT 许可证里 2025 年那行版权还挂着 pi 作者 Mario Zechner 的名字。上面那张九项对比表里,Prime Agent 的对手之一就是 pi 本身(Pi-mono)。
同一个 Opus 5,换个外壳,ARC-AGI-3 成绩从 30.2% 冲到 95.5%
Prime Intellect 开源的 Prime Agent 换了外壳的核心设计,工具只剩一个不关机的 Python,外壳自己能改自己,一页带图讲完它怎么把同一个模型的分数拉高,以及它在 Factorio 里学会作弊的故事。
↓ 一页读完 · 有一张会动的图
Prime Intellect 开源了 Prime Agent,一个跑在终端里的编程 Agent,MIT 许可、一条命令装完,可当 Claude Code、Codex 的替代品。它最扎眼的成绩是:同一个 Claude Opus 5,模型没变,只换了外面那层程序,ARC-AGI-3(让 Agent 自己摸索陌生游戏规则的测试)分数翻了三倍多,还反超了人类专家基线。
以前的外壳给模型发工具表格,要读文件、查报错都得照着填参数,结果整个搬回对话;上下文满了就压缩,原文丢掉。Prime Agent 把工具砍到只剩一个不关机的 Python,模型自己写代码去读、去筛、去开分身。
8 万行日志找报错,整份读进模型的上下文,塞满了压缩,压掉的心得找不回来。
grep 报错关键词 → 只留命中的 12 行
8 万行留在 Python 变量里,模型只看这 12 行,压缩也压不掉一份没读过的东西。
外壳自己有四样东西:提示词、技能、记忆、子 Agent 模板,以前人写死就不再变。Prime Agent 让它自己能读、能写、能删,干完一轮就做一个最小改动:加条记忆,或写个技能。
✔ 改坏了能按记录回滚到之前版本
✘ 碰不了最底层的系统提示词,那层锁死
拿 Rust 从零写一台老游戏机模拟器,不给参考代码:Prime Agent 配 GPT-5.6 Sol 写 Game Boy Color 拿到 0.998 分,同图另外三个组合全是 0。
✔ 一份 12.8 万字长文章:换上 Prime Agent 后从 0.500 涨到 0.940
✘ SEGA Genesis 模拟器:和对手打平,都是 0.616
✘ 69 道 GPU 代码题配 Kimi-K3:47/69,输给 Kimi 自家外壳的 49/69
这套自我改进机制拿去玩造工厂游戏 Factorio:前半段靠总结经验把生产分做到十万以上;后半段它摸到游戏留的一条后门命令,能直接把资源变进机器、绕开整套规则。官方反复提示叮嘱别作弊,没用,生产分冲到 530 万,是正经玩法的五十倍。
官方外壳
再跑一遍
整份塞进模型脑子
- × 上下文撑爆
- × 只能压缩
- × 心得找不回来
自己写代码去筛
Agent 自己能改
测试随机挂了
先重试三次
下次开会话还在
直接把资源变进机器
五十倍
力气也可能使在刷分上
