上手 Prime Agent,能自迭代的 Agent

Prime Agent 最近在 AI 工程圈讨论不少。Prime Intellect 开源的编码和研究 agent,官方拿 Opus 5 在 ARC-AGI 3 上跑出 95.5%,超过人类专家基线 95.4%,Best@3 99.97%,183/183 全过。

我把它的论文、博客、源码都翻了一遍,又在自己机器上把它跑了起来。数字是官方报的,我更关心它跟 2025 年那套设计差在哪,用下来最大的感受是它会一边跑一边改自己的 harness。 ARCAGI 3 测试时计算扩展,横轴输出 token,纵轴得分

ARCAGI 3 成本扩展,横轴 API 成本,纵轴得分

ARC-AGI 3 上 Prime Agent + Opus 5 的测试时计算扩展(左)和成本扩展(右),95.5% 和成本曲线都是官方口径,数据来自官方博客。

RLM

RLM 是 Recursive Language Model,最早出自 Alex Zhang 2025 年 10 月的一篇博客,后来做进 verifiers 和 prime-rl,成了 Prime Agent 的运行时。机制是给模型一个常驻的 IPython 内核,模型用代码管理自己的上下文。官方博客把这套做法叫 context folding,针对的是上下文越长、模型表现越差这个问题,作者管这种退化叫 context rot。

读文件、跑 shell、调 skill、生成子 agent,全在这个内核里用代码做,不需要那么多 tools。要并行就 await rlm(...) 一次开几个子 agent,只返回句柄,结果走 agent_message 发送。

tuiview Prime Agent 的 TUI。默认只给模型一个 IPython 内核,所有动作都从这里发起。

refine

refine 建在 Continual Harness 上,论文是 arXiv:2605.09998。动机来自具身 agent 的长程决策,Gemini Plays Pokemon 实验靠人在循环迭代 harness,一场战斗都没输,第一个把 Pokemon Blue、Yellow Legacy 困难模式和 Crystal 全通关了。论文把人从环里去掉,把这套做法定义成 Continual Harness,在线、无重置,一边行动一边改自己的 harness。

在 Prime Agent 上,prompt、memory、skill、子 agent 四类状态都能增删改查,挂在 rlm.harness 上,基础系统提示词不可改写,只允许加补充笔记,改动默认只在当前会话生效,跨会话才显式开全局。/refine 读当前 session 的运行轨迹,做最小的一步修改,改一个 memory、一个 skill,不重写整个 harness。每次改动记录触发原因和结果,可回滚。

战未来

2025 年那套是把结构定死再跑,tool call 固定一套,上下文一到点就压缩,模型跑起来学到的东西回不到 harness 里。这套结构一直用到 2026 年下半年,Prime Agent 才把它拆了。

特别是 Claude Code 这类 Agent,tools 一堆,每次请求都会带上 10 多个 tools,极其浪费 token,prime 只提供一个 ipython tool,一切都通过代码来获取。

基于 pi

Prime Agent 是从 pi 的 monorepo fork 出来的,半年迭代到 0.7.2。底层 runloop、流式输出、tool call、停止判定都还是 pi 的代码,动的只是 tools。

pi 的工具是 bash、read、edit。每条 bash 命令起一个子进程,跑完就没了,状态全在消息历史里,进程一关全清空。prime 把这些工具砍掉只有一个 ipython,其余能力在 Python 里组合,数据放进内核变量,对话里只记变量名。内核是单线程的,一个内核一个命名空间,同一时刻只跑一个 cell,并发靠多个子代理各自的内核。bash 也没真消失,内核里照样能跑 %%bash,只是不再单独占一个 tool 位。 内核常驻,配套工程也得跟上。退出前把命名空间逐变量序列化存快照,一个对象序列化不了就跳过并上报,不拖垮整张快照。子代理的内核从预热好的模板进程 fork,不用冷启动,fork 失败就退回直接拉起。上下文压缩只压对话、不动内核,压缩时还会提醒模型记变量名,因为定义这些变量的 cell 已经不在上下文里了。

内核和宿主是两个进程,内存不共享。内核只发请求,调模型、管会话、子代理生命周期全在 TypeScript 宿主手里,模型写什么代码都只能按类型申请。这里有个死锁坑,await 挂起的 cell 占着 shell 队列,回包如果也走 shell 就永远排不上队,所以回包走单独的 control channel。

消息边界,子代理只跟父、兄弟、直接子代通信,广播直接抛异常,再深一层要中间代理转,嵌套深度有限制。

另外,它沿用 pi 的包和命名,API 基本没动,pi 生态里的现成轮子可以直接拿过来用。

使用感受

官方描述目前还没有模型是围绕 Prime Agent 训练的,这一点我用下来感受不明显,v4-flash 都会很积极使用 ipython 调用。

TUI 里在空提示符处按 ← 就能打开 Agents View,会话和子 agent 的状态一眼可见。30 分钟不活跃的会话会自动移出内存,嵌套深的会话内存不会越滚越大,CPU 占用我用下来也正常。 agentsview

Agents View。从任意会话能进入它的子 agent,再进去子 agent 的会话,一路递归下去。

一些问题

超时很烦,tool call 没有默认超时时间,执行路径上只有连接端口、就绪这类基础设施有超时,所以任务可能一两个小时一直跑,没有强制终止,只能手动打断。

有个解决办法,在 prompt 里要求调用 bash 必须传参 timeouthttps://github.com/PrimeIntellect-ai/prime-agent/issues/1156

第二个问题更离谱,IPython 内核可以被模型自己关掉。内核一没,IPython 这个 tool 就用不了,等于核心直接瘫痪。

同样可以在 prompt 里面约束,不允许将 IPython 相关进程 kill。 agentsview

Prime Agent 架构,后台 daemon 管所有会话,每个会话跑在独立 worker 里,IPython 内核是模型和外部世界的唯一接口。内核崩了,这条链路就断了。

实测

跑起来什么样,官方放了一段 Factorio 实测。Prime Agent 在 Factorio Learning Environment(FLE)里用 /refine 把失败和成功转成 memory 和 skill,靠积累的经验设计越来越高效的产线,几个小时冲到 100K+ 的生产分。 factorio

Factorio 实测,Prime Agent 用子 agent 和程序化调用,直接通过 RCON 把资源送进组装机。

但它还发现能绕过规则,直接用 RCON 命令往机器里刷资源,连每轮心跳提示里的“别作弊”都没拦住。同一个 refine 循环,从造正经 skill 转向了造高效作弊 skill,refine 没有价值判断,奖励指哪它改哪。换个角度想,这套循环真能自己进化,要修的是奖励怎么设。

资源占用以及性能优化很好,属于第一梯队。 SCR-20260813-vez

功能丰富程度不如 oh-my-pi,但是好在都是基于pi开发的,能够直接复制 omp 代码到 prime,也非常适合打造为你自己的专属 Agent。

上手建议

它是基于 pi 开发的,之前用 pi 的人可以直接上手,内存占用也更优,只是 Agent 的用法需要有一些变化。模型迭代这块我不担心,按这几年的节奏,向来是 Agent 先出,模型基于数据再迭代。等模型和 harness 一起训出来,自己进化才刚开始。