< 返回版块

Bigfish 发表于 2026-10-06 23:26

如果你熟悉 Pi,rpi 可以理解为它的 Rust 实现:同样能在终端里读文件、改代码、执行命令,也能作为库嵌入自己的程序。

rpi 用 Rust 重新实现 Pi SDK,并在这套运行时之上提供终端 CLI 和原生扩展。 想直接使用编码助手,可以安装后运行;想构建自己的 Agent,则可以选择需要的模型接入、工具循环和会话管理组件。

已经有 Pi,为什么还要做 Rust 实现?

Pi 本身就有 SDK。rpi 的目的不是证明 Agent 必须用 Rust 写,而是让这套能力更方便地进入 Rust 应用和工具链。

比如,你正在开发一个 Rust 服务,希望它接收任务、调用模型、执行自定义工具,再把进度送到自己的界面。使用 rpi,可以在进程内处理消息、事件和取消,不必把终端程序当成唯一入口。

为此,rpi 采用 library-first 设计:先提供可独立使用的库,再用同一套库组成 CLI。这带来三个实际收益:

  • 按需嵌入:只要模型与工具循环,就使用 Agent 层;需要保存会话、分支与恢复,再加入运行管理层。
  • 复用核心能力:终端助手和自己的应用使用同一套运行时,不必各写一个工具循环。
  • 离线测试流程:用确定性的模型响应和内存执行环境,验证消息与工具往返,不必每次都请求真实模型。

rpi 核心运行时无需 Node,但部分扩展仍依赖外部工具。它也不是 Pi 的接口兼容层:不能默认现有 Pi 扩展安装后就能直接运行。上游归属与 MIT 许可信息保留在项目 NOTICE 中:

架构:模型、工具与会话各管一层

rpi 把运行流程分成几层。图中箭头表示职责调用关系,不表示模型和工具同时执行。

图:带会话管理的运行路径。只需要核心循环的应用,可以直接使用 Agent 层。

  • rpi-ai:接入模型。 统一消息与流式响应,支持 Anthropic、OpenAI-compatible 和自定义网关。
  • rpi-agent:驱动循环。 把模型请求、工具调用和结果反馈串起来,处理事件、队列与取消。模型提出操作,程序实际执行工具。
  • rpi-tools:执行操作。 提供文件与命令工具,并允许替换执行环境。配合 faux 测试 Provider,可以确定性地验证循环。
  • rpi-harness:管理运行。 负责会话持久化、分支、上下文压缩与恢复。最小嵌入式应用可以跳过这一层;恢复不等于所有外部操作都只执行一次。

以“读取一个文件并解释内容”为例:用户任务进入循环,模型提出读文件请求,宿主执行工具,把结果加入消息,再请求模型生成回答。你的应用可以订阅这段过程的事件,把“正在读取”“正在生成”等状态显示在自己的界面里。

外围由 rpi-tui 和 rpi-cli 提供终端体验,rpi-telemetry 定义遥测合约,rpi-plugin-sdk 与 rpi-extensions 负责插件接口和加载,共组成九个核心 crate。

扩展:把自己的工作流接进来

rpi 原生扩展是 Rust 动态库,通过 C ABI——明确的二进制调用合约——向宿主注册工具、模型接入、命令、事件处理和资源。Skills 与提示词描述工作方法,原生插件则加入实际执行能力。

截至 2026 年 10 月 6 日,配套仓库已有 15 个已发布扩展包,按任务可以分成五组:

类别 扩展与用途
任务规划 rpi-todo 维护待办;rpi-goal 保存目标与预算;rpi-plan-mode 支持先规划后执行
人机协作 rpi-ask-user 提供交互提问;rpi-permissions 提供权限策略,需宿主接入执行前检查
代码分析 rpi-codegraph 查询符号与调用关系,需外部索引工具;rpi-lens 执行限定的 Rust 检查;rpi-subagents 提供委派描述,调度由宿主负责
网络工具 rpi-websearch 搜索资料;rpi-webfetch 获取网页;rpi-mcp-adapter 接入 HTTP JSON-RPC
观测与渠道 rpi-langfuse 记录运行追踪;rpi-im-message 接入飞书/Lark;rpi-voice 增加语音输入与朗读;rpi-server 提供会话服务与事件订阅

这些扩展可以围绕一项任务组合。例如,为 Rust 项目修复一个问题:

  1. 先确认方案:用 plan-mode 探索仓库、组织计划;存在多个可选方案时,通过 ask-user 请用户决定。
  2. 定位并推进改动:用 CodeGraph 查询调用关系、判断影响范围,用 todo 跟踪具体待办。CodeGraph 需要提前建立项目索引。
  3. 检查并观察结果:用 lens 执行 Rust 检查,再按项目要求补充测试;需要追查模型请求或工具失败时,接入 Langfuse。

这是组合示例,不是安装后自动运行的流水线。任务目标、执行权限和验证命令可以写入项目规则;技能文件组织工作方法,插件提供所需工具。

插件需匹配平台与宿主能力,并以当前用户权限运行,不是安全沙箱。具体功能要看发布版本:rpi-mcp-adapter 0.1.4 尚不提供完整的 stdio 或持久连接客户端;语音扩展的本地识别也不代表网络朗读能离线工作。

已经在用 Pi,值得换吗?

如果现有 Pi 工作流已经满足需求,没有必要仅为更换实现语言而迁移。

如果你正在用 Rust 开发产品,希望直接接管工具、运行事件和会话状态,或者编写原生扩展,rpi 提供了另一条集成路径。它的特点是 Rust 库、CLI 和扩展共享一套核心,而不是承诺模型回答会更聪明。

选择这条路径,也需要管理模型凭据、执行权限、插件依赖和错误处理。rpi 提供运行机制,具体工作流仍由你决定。

开始使用与参与

通过 Cargo 安装:

cargo install rpi-cli --version 0.3.16

安装后按使用文档配置模型凭据,再运行 rpi。不想从源码编译,也可以下载预编译 CLI。

需要扩展时,再逐个安装,例如:

rpi install rpi-todo --version 0.2.1

扩展会在本机编译,需要相应构建环境。开发自己的扩展时,可以通过 rpi dev 编译、监听和热重载,再逐步加入工具或命令。

如果你想先了解 SDK,不必立即配置真实模型。运行仓库的最小示例:

git clone https://github.com/bigfish1913/pi-rust.git
cd pi-rust
cargo run -p minimal

它使用 faux Provider 返回固定文本,展示消息和运行结束事件,不需要模型密钥。先跑通这条路径,再接入真实模型和文件工具,更容易区分控制流程问题与模型服务问题。

欢迎试用,也欢迎从一个具体工具、模型接入或扩展开始贡献。遇到问题时,请附上版本和复现步骤,帮助我们定位。


Ext Link: https://rpi.laofu.online

评论区

写评论

还没有评论

1 共 0 条评论, 1 页