我用 Rust 重写 Pi 编码助手,性能飙升 10 倍

1 天前
 coogoaa

最近做了一个 Rust 项目:pi-rust。把 TypeScript 版的 Pi 编码助手用 Rust 重写,命令叫 rpi ,性能和内容占用相对于原版都提升了很多。

为什么要用 Rust 重写?

  1. 学习 Rust 首先就是想学 Rust 。我想找一个能持续写下去的项目。Agent 涉及异步请求、流式输出、文件操作和状态管理,后面还有终端界面和插件。这些需求会逼着我把 Rust 用起来:共享状态怎么处理,错误怎么往上传,异步任务怎么取消,接口怎么拆。选 Pi 来重写,也有一个好处:有现成的项目可以参考。遇到一个功能,可以先看原版怎么做,再考虑在 Rust 里怎么实现。写完以后还有东西可以对照,不至于只凭自己的想象判断是否合理。

  2. 想弄明白一个 Agent 是怎么工作的 平时用 AI 编码工具,看到的是输入需求、等它改代码。自己实现一次,就得处理那些界面上看不见的细节。 模型返回一个工具调用以后,谁去执行?工具出错了,要把什么结果交给模型?流式消息还没结束,用户取消了怎么办?程序中断后,下一次启动看到的历史应该是什么? 这些问题在调一次聊天 API 时未必会遇到,做完整 Agent 就绕不过去。 核心循环其实不长:请求模型,发现工具调用,执行工具,回传结果,再请求模型。周围的错误处理、取消、会话保存,才是需要花心思的地方。

1212 次点击
所在节点    分享发现
7 条回复
EmptyDX
1 天前
10 倍不够,等 100 倍了再来看
Need4more
1 天前
好东西!可以独立使用,也可以做库嵌入,还可以远程跑在服务器。已经 star 了。

想问这个项目是用 ai 移植的还是 op 手写的?
coogoaa
20 小时 36 分钟前
@Need4more 一部分 op 大部分 ai
MarkLeeyun
19 小时 6 分钟前
@Need4more 期待后续分享,Rust 版用起来体验如何?
5ssl
16 小时 45 分钟前
我用 pi-web 啊
yusf
11 小时 21 分钟前
这个最大的瓶颈不应该是 llm 的请求吗 ?
coogoaa
7 小时 6 分钟前
@5ssl 也有 rpi-web 性能很好,占用资源很低

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1253973

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX