Prime Agent 完成 Rust 重写并发布新版
Rewriting Prime Agent in Rust
Prime Intellect 将 Prime Agent 从 TypeScript 用 Rust 完整重写并发布,冷启动输入延迟较旧版快 14.18 倍,大会话内存缩小 4.76 倍,安装体积缩小 2.89 倍。
原文给出 Prime Agent Rust 与 TypeScript 版及其他编码 Agent harness 的实测性能对比,涵盖启动延迟、内存和安装体积等关键指标,可作为评估同类编码 Agent 工具的参考。
用 Rust 重写 Prime Agent
自八月推出 Prime Agent [1] 以来,它已被下载超过 300,000 次,处理了超过 8 万亿个 token。今天,我们很高兴地推出更快、更简洁、更可靠的 Prime Agent——它已完全使用 Rust 重写。
在两周多的时间里,Prime Agent 编排了由 2,000 多个智能体组成的集群,对自身进行了端到端的重写,跨 10,000 多个 Prime Sandbox 运行,消耗了来自 Prime Inference 的 GLM-5.3 端点超过 2,000 亿个 token。此次 Rust 重写对 Prime Agent 的多智能体能力进行了压力测试,涵盖我们一直在构建的沙箱与推理基础设施,用以支撑大规模智能体集群、自主研究以及强化学习。
为了确保与 TypeScript 版本功能一致,Prime Agent 编排子智能体对依赖进行拓扑排序,由有限状态机构建循环计算与正确性检查。同时,我们重写了代码架构以更易于维护和开发。随后,我们使用运行时基准测试和真实的 Prime Agent trace 来优化性能指标并排查缺陷。如今,Prime Agent 运行更快、占用资源比大多数编码智能体框架更少。
子智能体深度
父级深度 1深度 2深度 3
Rust 实现
192.99B token
1,981 智能体
性能优化
35.70B tokens
228 agents
为什么选择 Rust
TypeScript 帮助我们快速交付了 Prime Agent,但它的类型是可选的,在运行时会消失,错误以未经检查的异常形式传递,像渲染和解析大型会话这样的 CPU 密集型任务会与键盘输入争夺同一个事件循环,而且每个进程都要为 JavaScript 运行时和垃圾回收器付出代价。我们希望在保持现有交付速度的同时,随着代码的增长对它提出更高的标准,而 Rust 恰好符合这一需求:
- 性能: Prime Agent 是一个长期运行的守护进程,每个会话对应一个工作进程,而没有垃圾回收器的原生代码带来了我们所获得的大部分内存和启动速度收益。
- 并发: 一个守护进程同时流式输出模型结果、运行工具调用、在多个智能体之间转发消息,并为每个连接的客户端提供服务。Rust 的
Send和Synctrait 让编译器能够检查哪些数据可以在线程间移动,哪些可以共享。 - 编译期保障: 穷尽的枚举、所有权和生命周期规则在代码运行之前就排除了整整几类 bug,而 Clippy 的严格 lint 又增加了数百项检查,这在智能体编写大部分代码时尤为重要。
除了这些显著的性能提升之外,这次重写还让我们有机会重新思考设计选择。我们对代码库进行了大幅模块化,并已开始收获这次重写的回报,包括 Windows 支持、会话崩溃隔离以及更加一致的守护进程协议。
Prime Agent 如何重写自身
我们的目标是让智能体尽可能自主地完成重写,人工干预越少越好。因此,需要人工完成的工作是搭建合适的验证机制,从而支持大规模自主部署。我们沿用了之前在自动 Rust 翻译工作 [2] 中类似的设置。每份规范都涵盖了不同类型的一致性:
- TUI 兼容性:一套差异测试套件将 TypeScript 和 Rust 二进制文件并列对照同一脚本化模型进行比较,并对比它们各自渲染的终端帧。它覆盖了包括启动、斜杠菜单、工具调用、上下文压缩、代理视图、会话恢复、子代理和崩溃恢复等用户流程。
- 测试框架兼容性:同一运行会对比会话记录以及各二进制文件发送给模型提供商的请求,从而确保两者从相同输入生成相同的会话。
- 协议兼容性:守护进程协议中的所有消息类型都会与 TypeScript 实现进行核对,确保我们的 ACP 和守护进程协议 API 保持一致。
- 功能兼容性:由于脚本化流程无法覆盖整个界面, 代理们逐个组件地审计了 TypeScript 产品,并将每个组件分类为匹配、部分匹配或缺失。
凭借对每种兼容性的客观检查,代理可以衡量自身进度并在变更合并前捕获回归问题,这让我们得以减少人工审查。剩余的 bug 和行为差异主要是通过内部使用发现的,这也指导了我们在缺失功能、可靠性和界面优化方面的后续工作。
我们在两台 8 核按需 CPU 节点上运行所有编排器及其代理,每台节点支持超过 100 个并发子代理及其各自的 CPython 内核。此外,由于在数十个代理同时运行时,编译、类型检查和差异对比会使任何单台机器饱和,我们为代理构建了将繁重工作外包给 Prime Sandboxes 的工具,从而能够高度并行地推进移植工作。

有限状态机的编排
一个根代理统筹整个重写工作,并将任务划分为具有拓扑顺序的工作项。根代理不编写任何产品代码,从而能够专注于监控每项任务、合并已完成的工作,并保持对重写工作的全局概览,同时与我们协作确定优先级和决策。我们还将代码生成与验证分到不同的代理中,因为编写代码的代理在评估时会有偏向。因此,编排器分配的每项任务都会经过四个代理的流转:
- 规划者:创建整体机器规范,包括功能设计、TypeScript 真实行为以及验证器(兼容性检查)。
- 实现者:在专用工作树中编写 Rust 代码,以便功能可以并行开发。
- 审查者:以对抗式方式检查拉取请求,使用与实现者不同的模型并在独立的上下文中进行,寻找变更的错误之处。
- 验证者:在全新的 Prime Sandbox 中编译并运行该功能的兼容性检查和测试。
若审查或验证未通过,该功能会带着反馈被退回给实现者;只有两者都通过时,拉取请求才会合并。我们正在将此模式构建进 Prime Agent,以编排一个有限状态机的工厂,使类似本工作流这样的流程可以一次性定义、复用和更新。
架构重新设计
移植到 Rust 也让我们有机会重构代码库。这正是大部分长期收益的来源:
- 模块化:代码被拆分为九个 crate,依赖关系呈单向有向图,由 Cargo 强制执行,TUI 唯一的内部依赖是共享类型 crate。现在最大的源文件约 2,500 行,而 TypeScript 版本约 15,000 行,并且现在没有任何文件超过 5,000 行,而 TypeScript 版本有四个。
- 隔离性:每个 session 在一个小型 supervisor 下运行于独立的工作进程,因此单个 session 的故障不会影响其他 session,session 持久化在磁盘上,客户端在重启后可以重新连接。
- 平台抽象:传输、进程控制和文件锁定都封装在平台特定接口后面,因此添加 Windows 支持等只需实现这些 trait,而无需重写守护进程的内部结构。
- 统一的协议定义:客户端、守护进程以及每个 worker 都基于共享类型 crate 中的同一套消息类型进行编译,因此对协议的修改会在所有使用处被检查。
- 由目录驱动的模型:我们将模型和 MCP 列表移植为独立目录,在运行时拉取,从而能够在不发版 Prime Agent 的前提下推出新模型和插件。
持续打磨
虽然自主工作流的进展超出了我们的预期,但一致性检查只验证了它所覆盖的行为。在主 RLM 循环的一致性达成后,我们把所有改写 agent 迁移到了 Rust,从而得以在大规模下 dogfood Rust 版本(彼时 Prime Agent 的 Rust 版本已经在递归地自我改进了!)。随后,我们让内部团队在日常工作中切到 Rust 构建,这暴露了一致性差异测试覆盖范围之外的缺陷和缺失行为。在整个 dogfood 周期中,我们让 agent 审阅所有 beta 用户的日志与调用链,从而能够自动诊断和解决用户提出的运行时和 agent 问题。我们也借这次重写之机重新设计了部分 UX/TUI 流程和面向模型的 API。
把这次重写带到可发布的质量,在随后数周里仍需要持续跟进,包括完成剩余功能移植、修复缺陷、提升性能以及打磨界面。这些改动仍由 Prime Agent 编写并测试,同时由人类参与发现、指引方向并复核所有结果。
性能爬升
在功能对等达成后,我们希望优化 Prime Agent 在所有用户流程中的运行时性能。我们采用与重写时相同的方式:为 agent 提供客观的自我度量手段。我们搭建了一套基准测试框架,用于衡量 Prime Agent 在多种运行时指标上的表现,并让 Prime Agent 在深思熟虑的改进中逐步爬升其速度和资源占用。
已合并开放已关闭
9 月 26 日
27
28
29
30
10 月 1 日
2
3
4
该性能基准在全新 4 核 8 GB Prime Sandbox 上分别评估 Rust 版本和 TypeScript 版本的 Prime Agent,以及其他 agent 框架,并通过噪声检查筛除任何波动过大、无法进行比较的结果。Agent 在由屏幕模拟器驱动的真实终端中针对脚本化模型运行,因此计时反映用户实际所见,并排除推理时间。
框架就位后,第二个编排器运行了一个为期三天的爬升循环,目标单一:改进基准结果而不破坏一致性。每次实验均遵循相同的流程:
- 智能体分析这些基准,找出时间和内存的消耗位置,把最大的开销转化为一份假设清单,再由编排器分派给工作者。
- 工作者在同一沙箱中构建当前代码与候选改动,并按交替顺序运行它们,同时运行邻近的基准,以便在别处捕获回归。
- 两个审查智能体各自基于不同的前沿模型,分别检查行为是否仍与 TypeScript 一致、输出在改动所声称的各处是否仍保持字节级一致,以及面向模型的接口是否出现回归。
- 改动合并后,下一轮实验以新的基线为起点进行测量。
我们刻意没有给这个循环设定数值目标,因为固定阈值往往会成为一个停止点。智能体唯一的目标就是在仍能获得可衡量收益的期间,持续改进基准而不破坏对等性。在整个爬山周期中,循环记录了超过 144 条实验与审计记录,合并了超过 69 项提升了性能的有效改动。以下是我们在一些重要领域看到的显著提升:
TS 版本爬山前的 Rust爬山后的 Rust
冷启动
输入就绪延迟
提速 14.18×
热启动
输入就绪延迟
提速 13.34×
大会话内存
进程树 RSS · 10 MiB 会话
缩小 4.76×
安装体积
完整安装
缩小 2.89×
智能体视图
视图切换延迟
提速 6.09×
大部分收益来自三类改动:将工作从启动和渲染路径上挪开、用事件驱动等待取代轮询循环,以及在大型会话加载完毕后立即释放内存。
结果
总体而言,我们的 Rust 重写以及随后的性能爬山优化让 Prime Agent 显著变得更快、更节省资源。在输入就绪时间比 TypeScript 约快 14 倍、启动后内存占用减少超过 80% 的情况下,Prime Agent 已成为现有最快的编程智能体承载框架之一。
| Prime Agent(Rust) | Prime Agent(TypeScript) | Claude Code v2.1.289 | Codex CLI v0.160.0 | Pi v1.0.3 | Hermes Agent v0.21.5 | |
|---|---|---|---|---|---|---|
| 首次绘制从启动到首次可见输出 | 23.6 ms±0.6提速 30.63× | 722.8 ms±15.1 | 264.6 ms±5.8 | 296.8 ms±2.7 | 306.3 ms±6.7 | 1,715.3 ms±10.3 |
| 可打字时间(冷)全新启动到可输入为止 | 55.8 ms±4.9提速 13.22× | 737.8 ms±13.9 | 348.4 ms±8.2 | 324.6 ms±4.9 | 317.7 ms±8.0 | 2,094.5 ms±23.5 |
| 可打字时间(热)重复启动到可输入为止 | 42.4 ms±4.3提速 12.96× | 549.6 ms±10.0 | 345.1 ms±6.2 | 321.3 ms±9.2 | 240.4 ms±5.9 | 2,097.1 ms±40.8 |
| 安装体积安装所占的磁盘空间 | 59.6 MB±0.0缩小 2.89× | 172.1 MB±0.0 | 492.4 MB±0.0 | 446.8 MB±0.0 | 456.0 MB±0.0 | 960.1 MB±0.0 |
| 内存(RSS)启动后的整个进程树 | 106.0 MB±1.3小 5.73 倍 | 607.4 MB±0.9 | 226.9 MB±0.4 | 344.4 MB±3.1 | 138.1 MB±0.7 | 194.6 MB±0.3 |
外部 harness 结果是使用我们的自定义运行时套件测量的。由于没有统一的基准标准,比较时应谨慎解读。
这种更加模块化的代码库和更强的编译时检查也将帮助我们更快地交付新功能,并在错误到达用户之前发现更多问题。
下一步
随着 Rust 移植的完成,我们正在为 Prime Agent 的每个部分都带来同样的细致关注,从日常系统交互到跨多个代理的复杂工作。基础设施层面的改进已经完成,我们正在加速推进能力和评估工作,并将此次重写背后的多代理工作流开放给大家使用。
Prime Agent 也将更紧密地融入 Prime Intellect 生态系统,让您能够在整个技术栈上工作,包括云代理集群、推理、追踪、沙箱、评估、托管训练等。
通过此次重写,我们还发布了原生支持 Windows(测试版)的 Prime Agent,并支持通过 Homebrew 安装。Prime Agent 仍然是开源的,可通过一条命令安装:
curl -fsSL https://app.primeintellect.ai/prime-agent/install.sh | sh或在 Windows 上:
irm https://app.primeintellect.ai/prime-agent/install.ps1 | iex如果您希望在 Prime Agent 上工作,我们正在招聘。
参考文献
[1] Karten, S., Zhang, A. L., Thomas, K., Müller, S., Bakouch, E., Auras, D., Senghaas, M., Obeid, F., Dunas, K., Hagemann, J., & Jaghouar, S. (2026). Prime agent:一种自我改进的 RLM harness [预印本]. arXiv. https://arxiv.org/abs/2608.23552
[2] Karten, S., Appapogu, R. D., & Jin, C. (2026). 高性能 RL 环境的自动生成. 载于第三届语言建模会议论文集 (COLM 2026). https://openreview.net/forum?id=UmpTwqxiY0
来源:Hacker News · primeintellect.ai