最近做了一个 Rust 项目:pi-rust。把 TypeScript 版的 Pi 编码助手用 Rust 重写,命令叫 rpi ,性能和内容占用相对于原版都提升了很多。
为什么要用 Rust 重写?
-
学习 Rust 首先就是想学 Rust 。我想找一个能持续写下去的项目。Agent 涉及异步请求、流式输出、文件操作和状态管理,后面还有终端界面和插件。这些需求会逼着我把 Rust 用起来:共享状态怎么处理,错误怎么往上传,异步任务怎么取消,接口怎么拆。选 Pi 来重写,也有一个好处:有现成的项目可以参考。遇到一个功能,可以先看原版怎么做,再考虑在 Rust 里怎么实现。写完以后还有东西可以对照,不至于只凭自己的想象判断是否合理。
-
想弄明白一个 Agent 是怎么工作的 平时用 AI 编码工具,看到的是输入需求、等它改代码。自己实现一次,就得处理那些界面上看不见的细节。 模型返回一个工具调用以后,谁去执行?工具出错了,要把什么结果交给模型?流式消息还没结束,用户取消了怎么办?程序中断后,下一次启动看到的历史应该是什么? 这些问题在调一次聊天 API 时未必会遇到,做完整 Agent 就绕不过去。 核心循环其实不长:请求模型,发现工具调用,执行工具,回传结果,再请求模型。周围的错误处理、取消、会话保存,才是需要花心思的地方。