深信号· DEEPSIGNAL
深信号· DEEPSIGNALRSS
SIGNAL DEEP-DIVE

Prime Agent 拆解:它只给模型留了一个工具,却拿下了 2 万 Star

2026-09-11·GitHub·Agent 工程Prime AgentRLMHarness自改进长任务进程隔离
▮ SIGNAL SUMMARY · 摘要快读

2 万 Star 的 Prime Agent 是一个"自改进 RLM Harness":它只给模型留一个内置工具(持久 Python kernel),把文件操作、命令执行、子代理派生、上下文管理全变成代码;架构上用 daemon + worker + kernel 三层进程支撑"断开终端也继续跑",并用 /refine 只改补充状态、从不触碰基础 system prompt。

Prime Agent 拆解:它只给模型留了一个工具,却拿下了 2 万 Star

综述

Prime Agent 在 GitHub 上大约 2 万 Star,自称是一个「自改进 RLM Harness」——面向编码与研究的通用 Agent,重点是长任务

它建立在一个并不常见的判断上:Agent 的能力上限,越来越多地由 harness(承载模型的那层壳)决定,而不是模型本身。

它的两个核心抽象是:

另外一件值得单独说的事:它的 README 里明确写着,Agent 和 TUI 都构建在 pi 之上。

一台持续运转的机器核心,周围有多个小型模块通过管道与它交换数据,部分模块在独立舱室里
父代理保持聚焦,子代理只拿该拿的那份上下文——这是 RLM 的全部要点。

专业分析

一、它只给模型留一个工具:ipython

大多数 Agent 框架的思路是"工具箱":读文件一个工具、写文件一个工具、跑命令一个工具、搜索一个工具。Prime Agent 反过来——默认运行时只暴露一个内置模型工具:ipython

读文件、改文件、执行项目命令、转换结果、调用技能、派发子任务,全部从这个持久 kernel 里发起。带来的直接后果是:

# 状态跨工具调用、跨上下文压缩存活
config_files = list(Path(".").rglob("*.toml"))
large_files = [p for p in config_files if p.stat().st_size > 10_000]

# 长命令不阻塞:拿住句柄先结束这一轮
checks = bash("npm test")
checks.pid

变量、import、解析结果、任务句柄,在后续回合里还在。这不是"给模型加个代码解释器"那么轻——它把 Agent 的全部操作面收敛到一个编程环境里,从而让"组合能力"变成写代码而不是寻找工具。

对长任务来说,这一点是决定性的:状态有地方活下来。

二、三层进程:终端一断开就消失的 Agent,不叫长任务 Agent

架构上它分得很清楚(这是它最工程化的部分):

交互式 TUI / JSON / RPC 客户端
      ↓ AgentConnection(客户端执行边界)
Daemon supervisor —— 路由、附件、worker 健康、跨 Agent 消息投递
      ↓
Session worker(一个根会话树)
  ├─ AgentSessionRuntime → Root AgentSession(provider 调用、队列、工具、压缩、目标)
  ├─ Scheduler(调度)
  ├─ Root Python kernel(模型侧控制环境)
  └─ RLM child runtimes(子会话 + 可选 kernel)
      ↓
模型 provider + 会话 JSONL + artifacts

职责边界写得很硬:客户端只管渲染和键盘,不拥有执行;supervisor 管路由和健康;worker 拥有队列、调度、kernel 和所有后代。

于是终端关掉只是 detach,worker 继续跑着:

prime-agent list          # 看有哪些还活着的 Agent
prime-agent attach <id>   # 重新接上

文档里有一句很实在的话值得引用:worker 和 kernel 是"为了生命周期与故障隔离"而分进程,不是安全沙箱——它们通常和客户端拥有相同的操作系统权限。愿意把这句话写进文档的项目,比含糊暗示"我们有沙箱"的更可信。

三、子代理是 rlm.spawn():不是"叫另一个聊天窗口"

RLM 里子代理不是概念,是函数调用:

handle = rlm.spawn(...)   # 真的派生一个子会话(并行或后台)

关键是上下文分配:父代理保持自己的上下文聚焦,Python 拿着工作状态,子代理只收到它那个子任务需要的那部分。 这解决了一个普遍问题——多 Agent 系统里,子代理往往被塞进一大堆用不上的背景,既贵又慢。

同一条线上还有两个细节:运行中的 Agent 之间可以直接发消息、互相编排,不必都经用户中转;以及长命令的句柄机制——一个没 await 的进程组跑完时,Agent 会收到一条携带 PID 和退出码的 Shell 消息。

四、最克制的一处:/refine 不许碰基础提示词

"自改进"这个词容易让人紧张。Prime Agent 的处理方式值得单独拎出来:

这是一条很聪明的边界:允许经验沉淀,禁止自我重写人格。 换句话说,它能学会"这个项目里 npm 命令该这么跑",但不能学会"我应该是谁"。对做 Agent 的人来说,这条边界划在哪里,几乎决定了一个自改进系统是可控还是失控。

一本不断被增添页面的册子,每页都有细小的批注与折角,而封皮始终未变
可以往册子里加页、加批注、加书签——但封皮不许动。

关联信息与影响

把它放回生态里看,有几层关系值得注意。

它与 pi 的血缘关系是公开的:Agent 和 TUI 构建在 pi 之上,文档体系(sessions / skills / rpc / sdk / themes 这一整套)也几乎同源。这意味着一个事实:harness 层已经开始出现"底座—应用"的分工——底座负责会话、工具、模型接入,应用负责把能力组织成特定形态(这里是长任务 + 自改进)。

与多 Agent 框架(CrewAI / AutoGen 这一类)相比,它走的不是"角色编排"路线,而是"一个强控制环境 + 可派生可控子代理"。差异在于:前者定义谁和谁说话,后者定义工作的执行面和状态边界。

需要泼的冷水有两条:

  1. 递归子代理会放大成本与调试难度。子代理只拿必要上下文是优点,但当它们并行、后台、跨会话存活时,"到底哪一层在花钱、哪一层卡住了"会变成新的运维问题。
  2. "自改进"的实际收益还没有公开的量化证据。README 描述的是机制而非结果——在没有第三方复现之前,把它当成"经验沉淀机制"比当成"自我进化"更稳妥。

未来展望

短期,这类项目的价值是给长任务 Agent 画出一张工程图纸:进程怎么分、状态放哪里、断开怎么办、上下文如何分配给子代理。这套图纸会被大量借鉴——因为它解决的是所有人都会撞上的问题。

中期,如果"底座—应用"的分工成立,harness 层会像 Web 框架一样分层:底座管协议与状态,中间层管能力组织,应用层管具体工作流。到那时,"你用什么 harness"会比"你用什么模型"更能决定产品的完成度。

长期要看的则是自改进的边界会不会移动。目前它只敢改补充状态;一旦有人证明了"改更多东西也安全可控",这条线才会真正松动——而这个证明,比任何跑分都需要更长时间。

信号强度

SIGNAL FILE · 情报档案

最值得看的设计取舍有三个:① 工具收敛成一个 Python REPL,状态跨压缩存活;② 子代理是 rlm.spawn() 派生出来的真子进程,只拿子任务需要的上下文;③ 自改进被严格限制在"补充状态"里,基础提示词不可改写、快照可回滚。它构建在 pi 之上——这不是又一个小工具,而是 harness 层的路线示范。

本文基于 AI 情报库收录的条目展开深析;事实性信息以原始报道为准,分析与展望为编辑观点。

原始报道:https://github.com/PrimeIntellect-ai/prime-agent(GitHub)

RELATED SIGNALS · 关联信号