Prime Agent:一个自我改进的RLM智能体
摘要
Prime Intellect 推出 Prime Agent,这是一个完全开源、自我改进的编码工具(harness),围绕递归语言模型(RLM)和 Continual Harness 抽象构建,通过基于 REPL 的接口实现持久子智能体和动态工具。
暂无内容
查看缓存全文
缓存时间: 2026/08/05 22:57
# Prime Agent:一个自我改进的 RLM 智能体
来源:https://www.primeintellect.ai/blog/prime-agent
## Prime Agent:一个自我改进的 RLM 智能体
今天,我们发布**Prime Agent**,这是一个围绕两个抽象概念构建的自我改进式编码框架(harness),即**递归语言模型(RLM)**\[引用 (https://arxiv.org/abs/2512.24601)\]和**持续化框架(Continual Harness)**\[引用 (https://arxiv.org/abs/2605.09998)\]。现代框架设计是围绕早期几代模型的能力构建的,它们无法体现当前前沿模型的能力:固定的工具调用模式和上下文压缩迫使模型围绕自身脚手架(scaffolding)工作,而不是利用它。静态的、手工设计的子智能体、提示词、技能和记忆都是在设计时一次性设定,之后永远不会根据智能体运行中学到的内容进行调整。我们认为,框架应该基于当前模型的能力向外推演,迈向下一代推理模式。
Prime Agent 正是围绕这一原则构建的,它包含两个主要抽象:
1. **递归语言模型(RLM)** 将上下文视为变量,将子智能体委派视为 REPL 中的函数调用。持久化 REPL 让模型可以以编程方式访问其历史记录、子智能体和工具,从而能够将语言模型程序编写为对其自身上下文的操作。这种设计使智能体能够处理任意长的会话,而不会丢失存储在变量中的自身历史信息。
2. **持续化框架(Continual Harness)** 将框架自身的状态——抽象为提示词、技能、记忆和子智能体——视为智能体可以从自身轨迹中创建、读取、更新和删除(CRUD)的对象。当与智能体间通信结合时,这种机制可以实现跨子智能体乃至跨 Prime Agent 会话的编排。例如,Prime Agent 可以生成持久化子智能体,在后续轨迹中向它们发送消息,并直接与另一个 Prime Agent 会话通信。
这些抽象对于启动(bootstrapping)模型能力非常强大。Prime Agent 旨在成为通用的编码助手、长周期自主评估的默认运行时,以及研究和自动研究(autoresearch)的协作者。
Prime Agent 完全开源 (https://github.com/PrimeIntellect-ai/prime-agent),可通过以下方式安装:
```
curl -fsSL https://app.primeintellect.ai/prime-agent/install.sh | sh
```
Prime Agent 入门启动画面
## Prime Agent
智能体框架的性能既取决于框架的设计,也取决于围绕该框架训练的模型能力。我们将 Prime Agent 设计为可立即与当代开放和闭源前沿模型一起使用,同时还提供了一套我们认为随着新一代模型围绕它训练而会带来进一步性能提升的功能。
Prime Agent 的核心围绕程序化工具和子智能体调用而设计。Prime Agent 中的模型使用一个持久化的 IPython 内核作为其唯一工具。其他标准框架功能都作为内核中的函数调用,包括子智能体——每个子智能体实际上都是另一个 `prime-agent` 实例。
### Prime Agent 的架构
Prime Agent 架构图
RLM 和持续化框架是两个核心抽象;子智能体 CRUD 加上 Agent 到 Agent(A2A)消息传递将它们组合成编排能力。
**后台守护进程与智能体视图。** 默认视图是一个文本用户界面(TUI),与其他编码智能体框架类似。默认情况下,智能体执行的 IPython 操作会被压缩以保持简洁,但也可以展开查看框架执行的操作。在 REPL 中启动的子智能体也可以从用户聊天框下方访问。
Prime Agent 文本用户界面
Prime Agent 运行一个后台守护进程,通过本地 socket 拥有所有活跃智能体会话。你可以附加到会话或从中分离,而不会影响底层智能体循环。每个根会话树都在一个可恢复的工作进程中运行;如果工作进程崩溃,守护进程会从会话 JSONL 和内核状态快照中恢复它。
**智能体视图** 允许你查看并从守护进程中选择其他实时会话。在空提示符下按左箭头键(←)即可打开它,它会列出当前正在运行的会话、守护进程仍处于活跃状态的空闲会话,以及当前未加载到内存中的非活跃会话。这些聊天中的任何一个都可以立即进入并交互,按空格键可以让用户与任何状态的会话聊天,包括引导和排队提示词以及 `/compact` 等命令。
智能体视图被构建为智能体与子智能体之间递归的中央连接点。任何智能体都可以在智能体视图中被发现。用户可以从智能体视图进入某个智能体的聊天,然后进入其子智能体的智能体视图,进入子智能体聊天,依此类推。
由于子智能体与根智能体共享相同的*运行-空闲-非活跃*状态机,它们可以在空闲 30 分钟后从内存中移除,而当用户或智能体一提到它们,就会立即从磁盘重新加载。在高度嵌套的聊天中,这可以节省大量内存。
Prime Agent 智能体视图,列出运行中、空闲和非活跃会话
**会话与上下文管理。** 智能体的整个会话历史以仅追加的 JSONL 文件存储在磁盘上。每一行都是一个 JSON 条目,可以包含消息、模型切换、压缩摘要或扩展条目。分支、分叉和克隆都在同一个文件中通过移动叶指针来完成。完整历史始终可以通过 `/tree` 恢复。
当上下文达到阈值时,或者智能体在 REPL 中直接通过 `compact.run()` 调用时,就会发生压缩。压缩主要用于清理智能体的主上下文,但完整历史(包括过去的压缩记录)可以在需要时通过 IPython 内核以编程方式访问。
REPL 的引入需要额外的工作来管理 IPython 状态。我们异步压缩并同时清理内核,使用一个派生智能体作为垃圾收集器。这对于避免每个智能体的 REPL 内存累积是必要的。
### RLM 与程序化工具调用(PTC)
Prime Agent 依赖 IPython 内核作为其 REPL,该内核在会话期间持续存在,并且每一轮都可以调用它。初始化时,内核会预导入每个技能/工具作为模块,包括用于递归程序化子智能体调用的 `rlm`。
`rlm` 是一个异步函数,这意味着模型可以自由地在代码中调用和并行化子智能体调用。生成子智能体(例如 `await rlm("sub-task")`)会启动一个完整的会话,该会话拥有自己的模型、IPython 内核、会话树和对话历史。它会立即返回,因为之后智能体之间的所有通信都通过 `agent_message.send(...)` 工具进行。
Prime Agent 可以选择以这种方式启动几个有用的原语,例如并行扇出子智能体,或启动后台工作。
```python
# 并行扇出 — rlm() 在任务接收时返回子句柄,
# 而不是子智能体的答案;结果以 agent_message 回复的形式到达。
auth = await rlm("Summarize the authentication flow in auth/. Reply to me when done.", name="auth-expert")
api = await rlm("Summarize the updated HTTP API layer in src/. Reply to me when done.", name="http-expert")
# ... 继续独立工作;每个子智能体通过以下方式回复
# agent_message.send(..., receiver_role="parent") 完成时发送 ...
# 通过角色和名称在运行中引导或扩展子智能体
await agent_message.send(
"Also cover middleware error handling.",
receiver_role="child",
receiver_name=api.name,
)
```
随着模型不断改进,围绕工具调用和子智能体的新调用模式将会出现。我们预计未来几代模型将更少依赖手把手的提示词,而更多依赖这种直接的程序化控制。
### 编排与多智能体通信
后台守护进程管理所有实时 Prime Agent 会话。Prime Agent 还通过守护进程支持 Agent 到 Agent(A2A)消息传递,让任何 Prime Agent 会话都可以使用与持久化子智能体消息传递相同的机制,向任何其他 Prime Agent 会话发送消息。这样可以轻松编排,以管理子智能体群的进度,并在受影响的智能体之间直接沟通共享资源。为了防止独立会话之间出现不良通信,Prime Agent 中的多智能体通信仅限于其*nuclear family*,即父进程、兄弟进程或子进程。
```python
# 生成一个具名子智能体;句柄在接收时返回。
handle = await rlm("Find what's wrong in this auth-flow. Reply to me with your findings.", name="auth-reviewer")
# ... 子智能体的发现会作为 parent 角色回复到达,而不是返回值 ...
# 之后(在压缩和内核重启后仍然有效):恢复被保留的子智能体。
children = await rlm.list_subagents()
auth_child = next(c for c in children if c.session_name == "auth-reviewer")
# 向同一个保留的子智能体会话发送后续轮次。
await agent_message.send(
"Follow up: identify the main edge cases and any likely bugs.",
receiver_role="child",
receiver_name=auth_child.session_name,
mode="follow_up",
)
```
Prime Agent 通过其 RLM 原生运行时支持*持久化子智能体*,这意味着子智能体自身的会话目录、上下文、IPython 内核和会话历史即使在初始子智能体调用完成后也会持续存在。Prime Agent 可以通过访问其唯一会话标识符,继续向持久化子智能体发送更多消息,这一切都可以从其 IPython 内核中完成。
### 通过持续化框架实现自我改进
Prime Agent 的框架状态存在于持久化 IPython 内核中,作为 `rlm.harness`,智能体可以在任务中途直接读取和调用它,并且每次更改也会写入磁盘,因此它可以跨轮次和跨会话存续。持续化框架将该状态形式化为 H=(ρ,G,K,M),即提示词、子智能体、技能和记忆,从智能体自身的轨迹中在线调整,无需重置。
这四个组件都暴露了相同的创建、读取、更新、删除接口。`create_prompt_note(...)`、`create_memory(...)`、`create_skill(...)` 和 `create_subagent(...)` 各自添加一条相应类型的条目,`update_X(...)` 和 `delete_X(...)` 与之对应,而 `list(kind)` 或 `get(kind, id)` 则将其读回。技能遵循相同的接口:编写一个 Python 后端的技能是一次 `create_skill(...)` 调用,携带一个 `SKILL.md` 风格的引用,与添加记忆或提示笔记的操作相同。
```python
# 通过相同的 CRUD 接口创建记忆和技能
rlm.harness.create_memory("flaky test pattern", "retry three times before failing")
rlm.harness.create_skill("retry helper", "...", reference={"type": "python", "import": "retry_helper"})
# 读回它们
rlm.harness.list("memory")
rlm.harness.get("skill", "retry_helper")
```
`/refine` 是构建在此 CRUD 接口之上的自我改进流水线。它读取智能体自身的轨迹,即尝试了什么以及发生了什么记录,并应用最小的相关 CRUD 编辑来改进框架以获得更好的结果:更新提示笔记、记忆、技能或子智能体规范,而不是重写整个框架。每次改进都会记录其触发条件及其产生的结果,因此改进是基于证据的,而不是任意的。改进分两个阶段运行。规划阶段(提出编辑的 LLM 调用)在后台运行,不会阻塞正在进行的对话。应用编辑(写入磁盘并重建系统提示词)则很快,并且仅在下一次轮次边界短暂阻塞。每当智能体注意到重复失败或可复用的策略时,它都可以直接调用 `refine.run()`,而不仅限于固定计划。
```python
# 安排一次针对特定观察的改进
await refine.run("promote the retry-on-flaky-test pattern to a skill")
# 两个状态调用遵循相同的形式,不过 refine 的 plan/apply 分离
# 意味着 "in_flight" 可能指后台规划或快速的 apply 步骤
await compact.status() # tokens, context_window, percent, scheduled
await refine.status() # pending, in_flight
```
基础系统提示词保持不变。`/refine` 只编辑其周围的框架层。通过先前的改进历史支持回滚,允许按 ID 还原一次糟糕的框架更新。
### 用于评估的自主模式
Prime Agent 的评估模式结合了三种互补机制。目标(goal)设定总体目标:一个持久目标,带有可选的 token 预算,框架会跨轮次持续提醒智能体去追求该目标,直到智能体显式调用 `goal.complete()`。心跳(heartbeat)是按 cron 风格计划的消息,以固定间隔注入会话,用于定期检查,例如监控子智能体的进展或轮询训练更新。自主模式(autonomous mode)本身是一种持续机制,它确保智能体持续朝目标努力,而不是在某一轮没有进一步输出时提前停止。综合起来,这些机制让会话可以在无人值守的情况下长时间运行,同时受明确预算约束,并可通过智能体视图检查。
自主模式可直接通过 CLI 使用 `--autonomous` 启用,无需编写脚本。一次运行可以在同一命令中设置完成目标和轮次限制:
```bash
prime-agent \
--autonomous \
--autonomous-gate "npm run check" \
--autonomous-max-turns 20 \
"Implement and verify the requested change"
```
门控命令在会话允许结束之前运行。失败的门控会将其有界输出返回给智能体以进行另一次尝试,而当工作区自上次尝试以来未发生变化时,Prime Agent 会跳过重新运行失败的门控。`--autonomous-max-turns`、`--autonomous-max-tokens` 和 `--autonomous-timeout-ms` 分别限制连续轮次、token 数和墙钟时间。
## 评估 Prime Agent
Prime Agent 既是一个可用的编码智能体,也是一个*待评估的框架设计*,用于研究。我们特别指出,虽然许多现代前沿模型是围绕特定框架训练的,但目前还没有模型是围绕 Prime Agent 或其核心功能集训练的。
**ARC-AGI 3。** ARC-AGI 3 (https://arcprize.org/arc-agi/3) 是一个流行的智能基准测试,用于衡量智能体执行符号推理和学习模拟世界规则的能力。我们使用自主模式评估了 Prime Agent 在几个不同前沿模型上的表现,并与它们的原生框架进行比较。Prime Agent 是作为 CLI 编码智能体开发的,因此唯一的 ARC AGI 3 特定更改是任务提示词,其灵感来自 PRO-LONG (https://arxiv.org/abs/2607.20064v2) 中使用的标准提示设置。
我们的最佳结果是在 Prime Agent 中使用 Opus 5,达到 **95.5% RHAE Best@1**,**超过了 ARC 报告的人类专家基线 95.4%**。在三次运行中,我们发现 Prime Agent 始终表现良好 [95.0, 95.2, 95.5],并且 Best@3 达到 99.97%,所有 183/183 个关卡全部完成。我们的 ARC-AGI-3 中位数得分卡动作重放(95.2%)可以在此处找到 (https://arcprize.org/scorecards/2af780b4-f2a1-43e9-a794-b23da3cd3f9f)。
ARC-AGI-3 测试时计算缩放:得分 vs. 每个游戏的输出 token
ARC-AGI-3 成本缩放:得分 vs. 估计 API 成本
ARC-AGI-3:(左)测试时计算缩放:得分 vs. 每个游戏的输出 token。(右)成本缩放:得分 vs. 估计 API 成本。
除了在每个模型的原生框架之上实现更高的最高得分外,我们还发现 Prime Agent 在更低的总体 token 使用量下也能做到这一点。Prime Agent 通过程序化运行函数来节省 token。
相似文章
@latkins: 哟
Prime Intellect 推出了 Prime Agent,一个用于编程和长期自主任务的自我改进型 RLM 框架,具备程序化工具调用、将上下文作为变量、多智能体消息传递以及可自我修改的框架状态等特点。
PrimeIntellect-ai/prime-agent
Prime Agent 是 Prime Intellect 推出的开源编码与研究代理,结合了持久化 Python 环境、稳定的运行框架、子代理以及自我改进能力,适用于长时间运行的自主任务。
Prime Agent —— 超越 Codex/CC/PI 的新型编码框架
Prime Agent 是一个开源编码与研究框架,性能超越专有框架,在 ARC-AGI-3 上得分 95.5%,并在多个基准测试中提升模型表现。
@samsja19: 与多智能体一起到来的还有 prime-rl 0.8.0 版本,自 0.7.0 以来共有 13 位贡献者提交了 98 个 commit,菜单上有:1. 多智能体…
Prime Intellect 发布了 prime-rl 0.8.0,增加了多智能体训练、Nixl 和 Model Express 权重广播、扩展的多模态支持,以及多项性能改进。
@ashpreetbedi:推出 Pro Agent Builders 系列。揭秘专家如何构建智能体。第一篇文章:自动化…
介绍 Pro Agent Builders 系列,聚焦递归自动改进(RAI)——编码智能体在夜间运行数百个探针,自动提升另一个智能体的性能。