Pi 的 Rust 实现来了:rpi,不止一个终端 Agent
如果你熟悉 Pirpi 可以理解为它的 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 中上游归属与 MIT 许可原文展开查看https://github.com/bigfish1913/pi-rust/blob/d73d4c79b6a399c375827b5df812e235c3a3c9ae/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-todo0.2.1——维护具体待办。支持新增、查看、完成、删除和清空任务也可以给任务加标签。默认清单属于当前会话项目级清单则用于长期积压事项两者独立保存避免新会话接手上一段对话的未完成计划。rpi-goal0.1.6——保存项目目标。用来记录当前要完成什么、推进到哪里并支持暂停、恢复和归档。目标可以配置轮次或时间预算耗尽后自动暂停。它关注的是持续目标todo 关注的是目标下面的一项项工作。rpi-plan-mode0.1.4——先探索再执行。进入计划模式后工具范围收紧到只读探索及计划完成操作适合先阅读仓库、比较方案。完成的计划写入.rpi/PLAN.md再恢复此前的工具集避免还没理清方案就开始修改文件。人机协作把需要确认的决定交还给人rpi-ask-user0.1.5——结构化提问。支持选项、自由输入、多选和补充说明适合确认目标平台、实现方案或操作范围。问题会进入 TUI等待回答后再返回工具结果超时或取消会关闭请求。没有交互式 UI 的宿主会明确报错。rpi-permissions0.1.4——管理工具权限策略。提供规则检查、授权、撤销和列举拒绝规则优先于允许规则。插件负责给出策略判定宿主需要在工具执行前接入检查才能强制执行它不是系统级沙箱不能把“安装插件”当成权限隔离已经完成。代码分析定位关系检查改动描述委派rpi-codegraph0.1.5——查询代码关系。提供符号搜索、调用者与被调用者、影响范围、相关源码和索引状态查询。它对本地 SQLite 索引做限定范围的查询不是每次把整个仓库塞进上下文。使用前需要安装外部 CodeGraph CLI并为项目建立索引。rpi-lens0.1.4——执行有限的代码检查。可以运行git diff --check、cargo check、cargo fmt --check和 Clippy把诊断结果交给 Agent。工具设有超时和输出上限不开放任意命令适合改动后的检查但不能代替项目自己的测试套件。rpi-subagents0.1.4——描述子任务委派。delegate_task将任务整理成带角色、轮次和超时限制的委派描述并限制递归委派。这个发布版不负责启动完整的子 Agent实际调度由宿主完成它是多 Agent 工作流的一块接口不是装上就自动并行工作的调度平台。网络工具搜索线索、阅读原文、接入外部服务rpi-websearch0.1.4——查找公开资料。使用无需 API key 的搜索来源返回标题、URL、摘要和来源信息并在可用时补充 Wikipedia 结果。适合发现文档和参考线索正文依据仍应通过抓取原文核实搜索失败也需要处理。rpi-webfetch0.1.4——读取网页正文。获取公开 HTTP(S) 页面提取限量可读文本。它限制私有地址、带凭据的 URL 和过大的响应失败会作为工具结果返回方便 Agent 换来源而不是因为一个网址失败就中断整轮工作。rpi-mcp-adapter0.1.4——发送 HTTP JSON-RPC 请求。注册mcp_request可以向指定端点发送方法、参数和请求 ID并设置超时。这个发布版是 HTTP 传输适配不是完整的 stdio 或持久连接客户端要接哪种 MCP 服务需要先确认其传输方式。观测与交互渠道看清运行过程增加使用入口rpi-langfuse0.4.1——追踪模型与工具执行。将会话、模型请求、工具调用、Agent 轮次和压缩过程送到 Langfuse帮助查看耗时、token 用量和失败位置。也提供手工评分、prompt 版本管理与 trace 查询工具。使用前需要配置 Langfuse 地址和项目凭据。rpi-im-message0.1.9——接入飞书/Lark。通过长连接接收消息支持文本、Markdown 和卡片发送配置后也可把消息交给当前 Agent 自动回复。适合把终端中的工作接入协作渠道但需要配置应用权限、允许的会话范围及自动回复模型。rpi-voice0.3.6——给 TUI 加语音输入和朗读。支持按键说话、连续对话和回复朗读识别结果可先进入编辑框也可配置为发送。识别可以使用本地 SenseVoice 或兼容接口朗读使用网络 TTS自动播报默认关闭不会安装后立即读出所有内容。rpi-server0.3.4——给自己的客户端提供会话服务。提供 TCP JSONL / JSON-RPC 接口、会话管理和运行事件订阅让其他程序可以发送任务并观察进度。它是服务集成层不是现成 GUI也不能仅凭相似命令名称默认与 CLI 内置远程模式完全互换。这些扩展可以围绕一项任务组合。例如为 Rust 项目修复一个问题先确认方案用 plan-mode 探索仓库、组织计划存在多个可选方案时通过 ask-user 请用户决定。定位并推进改动用 CodeGraph 查询调用关系、判断影响范围用 todo 跟踪具体待办。CodeGraph 需要提前建立项目索引。检查并观察结果用 lens 执行 Rust 检查再按项目要求补充测试需要追查模型请求或工具失败时接入 Langfuse。这是组合示例不是安装后自动运行的流水线。任务目标、执行权限和验证命令可以写入项目规则技能文件组织工作方法插件提供所需工具。插件需匹配平台与宿主能力并以当前用户权限运行。插件接口是扩展边界不是安全沙箱。性能优势更快启动更轻的内存占用现有基准中rpi 在启动速度、就绪内存和长会话重载上显示出明确优势。下面将启动、重载与工具循环放在一张表中数值越低越好。Pi 均为0.87.1rpi 版本按行标注不能把历史结果换标为当前安装示例中的 0.3.16。测试项目rpi 版本rpiPi--version启动至退出0.3.617.5 ms169.5 ms启动至响应get_state0.3.617.7 ms189.5 ms空会话就绪 RSS0.3.612.0 MiB91.5 MiB重载 100 条历史消息至就绪0.3.1516.9 ms194.9 ms重载 1,000 条历史消息至就绪0.3.1528.8 ms197.0 ms重载 5,000 条历史消息至就绪0.3.1581.6 ms212.5 ms5,000 条消息重载后 RSS0.3.1550.8 MiB116.8 MiB连续 20 次工具调用0.3.1563.1 ms104.9 ms连续 100 次工具调用0.3.15378.6 ms402.7 ms测试环境与方法启动基准来自 2026 年 9 月 30 日的公开记录Windows 11 build 26200、x86_64、release 构建、Node v25.9.0。双方使用独立空配置、空工作目录与离线模式计时丢弃 3 次预热取 11 次测量中位数。RSS 是进程驻留内存单独采样 3 次。会话重载与工具循环实测于 2026 年 10 月 6 日Windows 11 build 26300、Ryzen 9 7950X、Node v25.9.0。双方使用独立测试配置、无扩展和本地确定性模型端点不调用云模型。表中这一组计时均丢弃 2 次预热、测 5 次报告中位数重载后 RSS 来自单独一次采样不是峰值内存。会话样本采用双方各自的原生 JSONL 格式逻辑文本相同用户与助手交替发言每条约 1,000 个字符。每次启动前恢复原始样本操作系统文件缓存未清空就绪以响应get_state为准随后发出请求核对模型收到的消息数量和尾部标记。这里测的是已完成会话的重新加载不含 TUI 渲染、压缩组合与执行中断后的恢复。工具循环在表中列出 20 和 100 次调用两种规模每次读取同一份 208 字节文件核对结果成功及模型请求次数分别对应 21 和 101 次模型请求。计时从提交任务到各自的运行结束通知不含 CLI 启动。这张表可以得出几项具体结论启动与内存优势明确。公开基准中Pi 的版本命令启动、RPC 就绪耗时分别约为 rpi 的 9.7 倍、10.7 倍rpi 就绪 RSS 低约 87%。长会话重载更快、占用更低。三个文本会话规模下rpi 重载耗时均更短5,000 条消息时Pi 重载耗时约为 rpi 的 2.6 倍rpi 就绪 RSS 不到 Pi 的一半。20/100 次工具循环。20 次调用时 rpi 耗时少约 40%100 次调用结果接近暂不判定稳定领先。工具循环每一轮请求都会携带累积的对话和工具结果后面的请求处理的历史更多。总耗时还包含模拟模型服务、RPC 事件消费和会话运行开销并不是一次小文件读取耗时乘以调用次数。目前未拆分各环节耗时差距原因尚未定位测试也未包含真实模型生成、项目编译和测试因此不预测真实编码任务的完成速度。基准原文、原始数据与复现脚本展开查看公开启动基准https://github.com/bigfish1913/pi-rust/blob/d73d4c79b6a399c375827b5df812e235c3a3c9ae/docs/performance/benchmark-vs-pi.md会话重载及 20/100 次循环https://blog.laofu.online/benchmarks/rpi-pi-runtime-20261006.json复现脚本https://blog.laofu.online/benchmarks/bench-rpi-pi-runtime.py已经在用 Pi值得换吗如果现有 Pi 工作流已经满足需求没有必要仅为更换实现语言而迁移。如果你正在用 Rust 开发产品希望直接接管工具、运行事件和会话状态或者编写原生扩展rpi 提供了另一条集成路径。它的特点是Rust 库、CLI 和扩展共享一套核心而不是承诺模型回答会更聪明。选择这条路径也需要管理模型凭据、执行权限、插件依赖和错误处理。rpi 提供运行机制具体工作流仍由你决定。开始使用与参与通过 Cargo 安装cargo install rpi-cli --version 0.3.16安装后按使用文档配置模型凭据再运行rpi。不想从源码编译也可以下载预编译 CLI。使用文档https://rpi.laofu.online/docs.html预编译发行https://github.com/bigfish1913/pi-rust/releases需要扩展时再逐个安装例如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 返回固定文本展示消息和运行结束事件不需要模型密钥。先跑通这条路径再接入真实模型和文件工具更容易区分控制流程问题与模型服务问题。欢迎试用也欢迎从一个具体工具、模型接入或扩展开始贡献。遇到问题时请附上版本和复现步骤帮助我们定位。官网与文档https://rpi.laofu.online/核心仓库https://github.com/bigfish1913/pi-rust扩展仓库https://github.com/pi-rust/rpi-package软件包目录https://rpi.laofu.online/packages.html个人博客https://blog.laofu.online/

相关新闻

Javaweb药店管理系统实战:从数据库设计到库存预警的完整案例

Javaweb药店管理系统实战:从数据库设计到库存预警的完整案例

简介:这是一套基于Java Web技术栈的药店管理系统完整项目,面向Java Web初学者、课程设计学生及需要实战练手的开发者,帮助理解Web开发、数据库设计与业务流程管理的综合应用。系统涵盖用户管理、药品管理、销售管理、库存管理、报表统计与权限…

2026/10/20 14:22:32 阅读更多 →
TPS259483AYWPR+STM32F103RC工业电源主动防护方案

TPS259483AYWPR+STM32F103RC工业电源主动防护方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 15:08:43 阅读更多 →
JavaWeb课设医院预约挂号系统:从环境配置到事务并发实战

JavaWeb课设医院预约挂号系统:从环境配置到事务并发实战

简介:一套面向JavaWeb课程设计与期末大作业场景的医院预约挂号管理系统完整项目,源自已获导师认可的高分作业。代码覆盖普通用户注册登录、科室与医生信息浏览、在线预约挂号、后台管理及预约记录处理等核心流程,前端静态页面保留了界面效果与…

2026/10/20 15:55:26 阅读更多 →

最新新闻

Django图书馆座位预约系统:从并发控制到状态机设计的完整实践

Django图书馆座位预约系统:从并发控制到状态机设计的完整实践

1. 要把座位预约做明白,先想清楚这几个问题我相信每个做过校园信息化项目的开发者,都躲不过“图书馆座位预约”这道坎。尤其这两年在高校里,占座问题几乎成了图书馆管理员的日常噩梦:早上八点开馆,门口挤成一锅粥&…

2026/10/20 15:56:07 阅读更多 →
嵌入式Linux目录操作:closedir原理、常见泄漏陷阱与ElfBoard实战

嵌入式Linux目录操作:closedir原理、常见泄漏陷阱与ElfBoard实战

1. 从一次“打不开目录”的排查说起 在嵌入式Linux开发板上操作目录,很多人会下意识忽略一个细节:目录流跟文件描述符一样,用完了要关。做飞凌嵌入式ElfBoard开发的前几天,我写一个遍历根目录下所有子目录的小工具,代码…

2026/10/20 15:56:06 阅读更多 →
VSCode插件与配置同步:一行命令导出导入,多设备环境迁移不再头疼

VSCode插件与配置同步:一行命令导出导入,多设备环境迁移不再头疼

1. 换电脑重装插件这事,烦了我整整三年第一次被插件配置折磨,是我从一台用了四年的旧笔记本换到新工作机的时候。那时候不知道有同步方案,老老实实打开插件市场,凭记忆一个个搜名字、看简介、点安装。装到一半发现某个插件版本不兼…

2026/10/20 15:56:06 阅读更多 →
5个正在发生的软件工程转型:AI协作、体验与平台工程

5个正在发生的软件工程转型:AI协作、体验与平台工程

近几年各种技术社区里,关于“软件工程未来”的讨论几乎每个月都会换一个热点词。但说实话,大部分讨论停留在趋势复述的层面:AI要取代程序员、低代码要干掉前端、微服务要落幕……听多了容易麻木。我反而觉得,真正有价值的是那些长…

2026/10/20 15:56:06 阅读更多 →
RAGFlow 24.3 基于 DeepDoc 的复杂文档结构化解析实践

RAGFlow 24.3 基于 DeepDoc 的复杂文档结构化解析实践

做RAG应用的人,应该都体会过那种憋屈感:向量模型换了一个又一个,Prompt 调了一版又一版,最后一看召回结果,答案还是七零八落。问题往往不是出在模型身上,而是最前端那一关——文档解析。你喂给系统的 PDF 里…

2026/10/20 15:56:06 阅读更多 →
可编程幻灯片引擎:用代码生成PPTX的实践指南

可编程幻灯片引擎:用代码生成PPTX的实践指南

1. 项目概述:这不是一个PPT模板库,而是一套可编程的幻灯片生成引擎 “ppt-master”这个名字刚出现时,我第一反应是又一个打着“高级感”旗号卖模板的淘宝店。但真正花三天时间拆解它的源码结构、跑通本地构建流程、并用它生成了5份不同风格的…

2026/10/20 15:55:04 阅读更多 →

日新闻

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
ESP32舵机控制指南:原理、多路驱动与避坑实战

ESP32舵机控制指南:原理、多路驱动与避坑实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
位移法实现一阶低通滤波:单片机ADC采样降噪实战

位移法实现一阶低通滤波:单片机ADC采样降噪实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/19 17:32:41 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 10:02:08 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:45 阅读更多 →