跳到正文
Hacker News· piotrgrabowski·· 8 天前精选AI 评分78

Prime Intellect 用 2000 多个智能体把 Prime Agent 重写为 Rust

Rewriting Prime Agent in Rust

AI 导读

Prime Intellect 发布用 Rust 从零重写的 Prime Agent,整个重写由 Prime Agent 自己编排超过 2000 个智能体完成,跨 10000 多个 Prime Sandboxes,消耗 Prime Inference 的 GLM-5.3 端点超 2000 亿 token。

推荐理由

原文给出用 2000 多个智能体把自身从 TypeScript 重写为 Rust 的完整流程与性能对比数据,可迁移到多智能体编排实践。

正文 · AI 翻译

用 Rust 重写 Prime Agent

自 8 月推出 Prime Agent [1] 以来,它已被下载超过 30 万次,处理了超过 8 万亿个 token。今天,我们很高兴推出更快、更简洁、更可靠的 Prime Agent,它用 Rust 从头重写。

在两周时间里,Prime Agent 调度了一个由 2,000 多个 agent 组成的集群来端到端重写自身,在 10,000 多个 Prime Sandbox 中运行,使用了来自 Prime Inference 的 GLM-5.3 端点的超过 2000 亿个 token。这次 Rust 重写对 Prime Agent 的多 agent 能力进行了压力测试,包括我们一直在构建的沙箱和推理基础设施,用于支撑大规模 agent 集群、自主研究和强化学习。

为确保与 TypeScript 版本功能对等,Prime Agent 调度子 agent 对依赖进行拓扑排序,并用有限状态机来组织循环计算和正确性检查。与此同时,我们重写了代码架构,以便更易于维护和开发。随后,我们使用运行时基准测试和真实的 Prime Agent 轨迹来爬山优化性能指标并排查 bug。如今,Prime Agent 运行得更快,使用的资源也比大多数编码 agent 框架更少。

子 agent 深度

父级深度 1深度 2深度 3

Rust 实现

192.99B token
1,981 个 agent

性能爬山优化

35.70B token
228 个 agent

为什么选择 Rust

TypeScript 帮助我们快速推出 Prime Agent,但它的类型是可选的,在运行时会消失,错误以未检查异常的形式传播,渲染和解析大型会话等 CPU 密集型工作会在单个事件循环上与键盘输入竞争,而且每个进程都要为 JavaScript 运行时和垃圾回收器付出代价。我们希望保持同样快的交付速度,同时随着代码增长将其维持在更高标准,而 Rust 非常适合这一点:

  • 性能:Prime Agent 是一个长期运行的守护进程,每个会话有一个工作进程,而无需垃圾回收器的原生代码带来了我们所取得的大部分内存和启动改进。
  • 并发:一个守护进程同时流式传输模型输出、运行工具调用、在 agent 之间转发消息,并服务所有已连接的客户端。Rust 的 Send 和 Sync trait 让编译器检查哪些数据可以在线程之间移动、哪些可以共享。
  • 编译期保证:穷尽式枚举、所有权和生命周期在代码运行前就排除了一整类 bug,而 Clippy 的 pedantic lint 又增加了数百项检查,这在 agent 编写大部分代码时尤为重要。

除了这些明显的性能提升之外,这次重写还让我们有机会重新思考设计选择。我们对代码库进行了大幅模块化,并正在收获这次重写的回报,包括 Windows 支持、会话崩溃隔离,以及更一致的守护进程协议。

Prime Agent 如何重写自身

我们的目标是让 agent 尽可能少地依赖人工干预来自主完成重写。因此,所需的人工工作是设置适当的验证,以实现大规模自主部署。我们遵循了此前自动 Rust 翻译工作 [2] 的类似设置。每项规范都覆盖了不同类型的功能对等:

  • TUI 一致性:一套差分测试套件将 TypeScript 和 Rust 二进制文件并排运行,针对同一个脚本化模型进行对比,并 diff 各自渲染出的终端帧。它覆盖了用户流程,包括启动、斜杠菜单、工具调用、压缩、agents 视图、会话恢复、子代理和崩溃恢复。
  • Harness 一致性:同一次运行会 diff 会话记录以及每个二进制文件向模型提供商发送的请求,因此两者从相同输入产生相同的会话。
  • 协议一致性:守护进程协议中的所有消息类型都会与 TypeScript 实现进行核对,确保我们的 ACP 和守护进程协议 API 保持一致。
  • 功能一致性:由于脚本化流程无法覆盖整个界面,agents 逐组件审计了 TypeScript 产品,将每个组件分类为匹配、部分匹配或缺失。

有了对每种一致性的客观检查,agents 就能衡量自身进度,并在变更合并前发现回归,这让我们得以减少人工审查。剩余的 bug 和行为差异主要通过内部使用发现,这指导了我们后续在缺失功能、可靠性和界面打磨方面的工作。

我们在两个 8 核按需 CPU 节点上运行了所有编排器及其 agents,每个节点支持超过 100 个并发子代理及其各自的 CPython 内核。此外,由于在数十个 agents 同时运行时,编译、类型检查和 diff 会使任何单台机器饱和,我们为 agents 构建了将繁重工作外包给 Prime Sandboxes 的工具,使我们能够高度并行化移植工作。

TypeScript and Rust slash-command menus side by side, with differing terminal cells highlighted in amber in the Diff panel.
一个客观的 TUI 一致性验证器会比较 TypeScript 和 Rust 版本的终端帧并突出显示差异。

有限状态机的编排

一个单一的根 agent 编排了这次重写,并将工作划分为拓扑排序的任务。根 agent 不编写任何产品代码,从而可以自由地监控每个任务、合并已完成的工作,并在与我们协作确定优先级和决策的同时保持对重写的全局把握。我们还将生成和验证放在不同的 agents 中,因为编写代码的 agent 在评估代码时会有偏见。因此,编排器分配的每个任务都要经过四个 agents:

  • 规划者:创建整体机器规范,包括功能设计、作为基准的 TypeScript 行为以及验证器(一致性检查)
  • 实现者:在专用的 worktree 中编写 Rust 代码,以便功能可以并行开发。
  • 审查者:以对抗性方式检查拉取请求,使用与实现者不同的模型并在独立的上下文中,寻找该变更错误的理由。
  • 验证者:在一个全新的 Prime Sandbox 中编译并运行该功能的一致性检查和测试。

审查或验证失败会将功能连同发现的问题退回给实现者,两者都通过后 PR 才会合并。我们正在将这种模式构建到 Prime Agent 中,以编排一个有限状态机工厂,使这样的工作流可以一次定义、重复使用并更新。

Prime Agent orchestration workflow

架构重新设计

移植到 Rust 也给了我们重构代码库的机会。长期收益的很大一部分正来源于此:

  • 模块化:代码被拆分为九个 crate,依赖关系为单向图并由 Cargo 强制执行,TUI 唯一的内部依赖是共享类型 crate。最大的源文件现在约 2,500 行,低于 TypeScript 中的约 15,000 行,且没有文件超过 5,000 行,而 TypeScript 中有四个。
  • 隔离性:每个会话都在一个小型 supervisor 下的独立 worker 进程中运行,因此一个会话的故障不会影响其他会话继续运行,并且会话会持久化到磁盘,客户端可以在重启后重新连接。
  • 平台抽象:传输、进程控制和文件锁定都位于平台特定接口之后,因此像 Windows 支持这样的工作只需实现这些 trait,而无需重新调整 daemon。
  • 单一协议定义:客户端、daemon 和每个 worker 都针对共享类型 crate 中的相同消息类型进行编译,因此对协议的更改会在所有使用它的地方被检查。
  • 目录驱动的模型:将我们的模型和 MCP 列表移植到运行时获取的独立目录中,使我们无需发布 Prime Agent 即可推出新模型和插件。

优化工作

虽然自主工作流比我们预期的走得更远,但一致性检查只验证了它们所执行的行为。一旦主 RLM 循环达到一致,我们就把所有重写 agent 迁移到 Rust 上,使我们能够大规模地 dogfood Rust 版本(现在 Prime Agent Rust 正在递归地改进自己!)。后来,我们将内部团队迁移到 Rust 构建版本用于日常工作,这暴露了差分测试覆盖范围之外的 bug 和缺失行为。在整个 dogfood 周期中,我们让 agent 审查所有 beta 用户的日志和 trace,使我们能够自动诊断和解决用户发现的运行时和 agent 问题。我们还利用这次重写的机会重新设计了一些 UX/TUI 流程和面向模型的 API。

将重写提升到发布质量需要接下来几周的后续工作,从完成功能移植和修复 bug 到改进性能和打磨界面。Prime Agent 仍然编写并测试这些更改,而我们让人类参与其中,负责发现问题、指导更改并审查所有结果。

爬坡优化性能

在实现功能一致后,我们希望优化 Prime Agent 在所有用户流程中的运行时性能。我们采用了与重写相同的方法:给 agent 一种客观的方式来衡量自己的进展。我们构建了一个基准测试框架,用于衡量 Prime Agent 在各种运行时指标上的性能,并让 Prime Agent 通过深思熟虑的改进来爬坡优化其速度和资源使用。

已合并开放已关闭

9月26日

27

28

29

30

10月1日

2

3

4

#2856 限制会话目录缓存

性能基准测试在全新的 4 核、8 GB Prime Sandbox 上评估 Rust 和 TypeScript 版本的 Prime Agent,以及其他 agent 框架,每个基准测试都进行噪声检查,任何不稳定到无法比较的结果都会被保留。Agent 在真实终端中运行,通过屏幕模拟器驱动,针对脚本化模型,因此计时反映用户所见并排除推理。

在框架就位后,第二个编排器运行了一个为期三天的爬坡循环,只有一个目标:在不破坏一致性的情况下改进基准测试结果。每个实验都遵循相同的流程:

  1. Agents 对基准测试进行分析,找出时间和内存消耗在哪里,将最大的开销转化为一系列假设,然后由 orchestrator 分配给 workers。
  2. Workers 在同一个沙箱中构建当前代码和候选变更,并交替运行它们,同时运行相邻的基准测试以捕捉其他地方的回归。
  3. 两个 reviewer agents 分别运行在不同的前沿模型上,检查行为是否仍与 TypeScript 一致,输出在变更声称的地方是否保持字节级相同,以及面向模型的接口上没有任何回归。
  4. 变更合并,下一个实验从新的基线开始测量。

我们刻意没有给这个循环设定数值目标,因为固定的阈值往往会变成停止点。Agents 的唯一目标是在可测量的收益仍然存在的情况下,持续改进基准测试而不破坏一致性。在整个 hillclimb 周期中,该循环记录了超过 144 条实验和审计记录,合并了超过 69 个有效变更,提升了性能。以下是我们看到的一些重要领域中的显著改进:

TS 版本Hillclimb 前的 RustHillclimb 后的 Rust

冷启动

输入就绪延迟

快 14.18×

热启动

输入就绪延迟

快 13.34×

大会话内存

进程树 RSS · 10 MiB 会话

小 4.76×

安装大小

完整安装

小 2.89×

Agents 视图

视图切换延迟

快 6.09×

大部分收益来自三类变更:将工作从启动和渲染路径上移开,用事件驱动的等待替代轮询循环,以及在大会话完成加载后立即释放内存。

结果

总体而言,我们的 Rust 重写以及随后的性能 hillclimbing 使 Prime Agent 显著更快、资源效率更高。输入时间比 TypeScript 快约 14 倍,启动后使用的内存减少超过 80%,Prime Agent 是市面上最快的编码 agent harness 之一。

Prime Agent (Rust)Prime Agent (TypeScript)Claude Code v2.1.289Codex CLI v0.160.0Pi v1.0.3Hermes Agent v0.21.5
首次绘制从启动到首次可见输出23.6 ms±0.6快 30.63×722.8 ms±15.1264.6 ms±5.8296.8 ms±2.7306.3 ms±6.71,715.3 ms±10.3
输入时间(冷)全新启动到可以输入55.8 ms±4.9快 13.22×737.8 ms±13.9348.4 ms±8.2324.6 ms±4.9317.7 ms±8.02,094.5 ms±23.5
输入时间(热)重复启动到可以输入42.4 ms±4.3快 12.96×549.6 ms±10.0345.1 ms±6.2321.3 ms±9.2240.4 ms±5.92,097.1 ms±40.8
安装大小安装占用的磁盘空间59.6 MB±0.0小 2.89×172.1 MB±0.0492.4 MB±0.0446.8 MB±0.0456.0 MB±0.0960.1 MB±0.0
内存 (RSS)启动后的整个进程树106.0 MB±1.3小 5.73×607.4 MB±0.9226.9 MB±0.4344.4 MB±3.1138.1 MB±0.7194.6 MB±0.3

外部测试框架的结果是用我们的自定义运行时套件测得的。由于没有通用的基准标准,比较结果应谨慎解读。

这种更模块化的代码库和更强的编译时检查,也将帮助我们更快地交付新能力,并在错误到达用户之前捕获更多问题。

下一步

随着 Rust 移植的完成,我们将同样的细致关注带到 Prime Agent 的每一个部分,从日常的系统交互到跨多个智能体的复杂工作。既然基础设施改进已经完成,我们正在加速推进能力和评估,并让这次重写背后的多智能体工作流为你所用。

Prime Agent 也将更紧密地融入 Prime Intellect 生态系统,让你能够跨整个技术栈工作,包括云端智能体集群、推理、追踪、沙箱、评估、托管训练等。

通过这次重写,我们还发布了原生支持 Windows(测试版)并可通过 homebrew 安装的 Prime Agent。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: A self-improving RLM harness [Preprint]. arXiv. https://arxiv.org/abs/2608.23552

[2] Karten, S., Appapogu, R. D., & Jin, C. (2026). Automatic generation of high-performance RL environments. In Proceedings of the Third Conference on Language Modeling (COLM 2026). https://openreview.net/forum?id=UmpTwqxiY0

来源:Hacker News · primeintellect.ai