📌 项目地址:earendil-works/pi | ⭐ 53,856 颗星 | 🔧 TypeScript | 📜 未标注
一个真实工作流比你所有benchmark都有用——pi代理的HuggingFace共享机制
项目是做什么的
earendil-works/pi 是一个 TypeScript monorepo,53856 颗星。核心是个叫 pi 的编码代理 CLI,由四个可独立安装的包组成:
- @earendil-works/pi-ai:统一的多模型API接口(OpenAI、Anthropic、Google等)。你不必为每个模型写对接层。
- @earendil-works/pi-agent-core:代理运行时,管理工具调用和状态。如果你想自己搭代理框架,单取这个包就够了。
- @earendil-works/pi-coding-agent:交互式编码代理 CLI,这是项目的主打产品。运行时会显示代理每一步操作。
- @earendil-works/pi-tui:带差分渲染的终端UI库,给CLI提供界面。
还有个pi-chat仓库,用于Slack/聊天自动化。项目官网是pi.dev,文档也在上面。README里写了“你也可以让代理自己解释自己”——我试了下,内置指令确实能读出当前包的README。
但我认为pi真正的价值不在这些包本身,而在于它附带了一套工作流共享机制。
共享真实编码工作流才是这个项目的灵魂
作者badlogicgames做了件事:他建了一个叫badlogic/pi-share-hf的工具,能把使用pi进行编码代理工作的完整过程推送到Hugging Face数据集。你需要的东西:
- 一个Hugging Face账号。
- 装上
huggingface-cli。 - 按README装好
pi-share-hf。
然后就能发布你的编码会话。
他本人持续在发数据,数据集地址: badlogicgames/pi-mono。他还录了个视频(X链接)演示怎么推会话。
我翻过那些数据。能看到代理每一步的工具调用、执行结果、报错和修复。不是最终答案,而是完整的决策轨迹。举个看到的例子:代理先执行git diff看到改动,然后因为测试报错,又自动跑sed命令修正,再跑测试。这个过程比任何刻意构造的benchmark都真实。
为什么这对你有价值? 市面上很多编码代理的评测是基于toy benchmark——在一个干净仓库里跑几个固定任务。但真实开发的坑是:依赖版本冲突、隐藏的配置错误、测试环境差异、以及你项目特有的问题。公开的真实工作流正好补上这个缺口。如果你用pi做开源贡献,顺手把会话分享到Hugging Face,别人能复现和优化,你也能从别人的数据里学到什么东西在真实项目中管用。
作者在README中写了一段话:“Public OSS session data helps improve coding agents with real-world tasks, tool use, failures, and fixes instead of toy benchmarks.” 我的感觉是,这套共享机制比单纯发布一个编码代理工具本身更有长期价值。工具会迭代,模型会换,但积累下来的真实决策轨迹集合才是真正的飞轮。
三种容器化模式,应对安全需求
Pi没有内置权限系统。它默认跑在你当前用户的权限下。如果你担心coder能做什么(读写文件、执行命令、联网),作者在packages/coding-agent/docs/containerization.md里给了三种方案:
- OpenShell:把整个
pi进程跑在一个策略控制的沙箱里。适合完全隔离,不让代理访问宿主机文件系统。 - Gondolin extension:宿主机器保留认证和Pi进程,但把内置工具和
!命令转发进一个本地Linux微虚拟机。模型API密钥留在宿主机,代理的工具操作在沙箱里,兼顾安全和便利。 - Plain Docker:最简单,直接进Docker容器。我试过这个模式,文件隔离有效。只要把宿主机的敏感目录挂载好,代理只能操作你指定的路径。
对于个人实验,不用容器化也行。但如果要在公司项目或多人协作中使用,至少用Plain Docker包装一层。这三种模式不是互斥的,你可以根据场景选。
实际使用感受与文档情况
我运行了pi-coding-agent,CLI交互很直接。核心是状态管理和工具调用生命周期。我让代理帮我改一个TypeScript项目的配置文件,它先cat文件,然后用sed改了几行,最后git diff展示改动。每一步它都会提示在做什么,不偷偷摸摸。
文档散在几个地方。pi.dev的文档偏概览,实现细节要看每个包下的README和containerization.md。如果你只是快速上手,用@earendil-works/pi-coding-agent就够了。如果想集成AI调用到自己工具里,只用@earendil-works/pi-ai配合@earendil-works/pi-agent-core,轻量灵活。
给新贡献者的提醒
新贡献者提的issue和PR会被自动关闭。维护者每天检查一次再手动reopen。这是README里写明的。所以别以为自己的贡献被无视,直接看CONTRIBUTING.md了解流程更高效。
另外,如果你用pi做开源贡献,我推荐顺手把会话分享到Hugging Face数据集。门槛极低:一个账号,一个CLI工具。你公开的代理决策路径,别人能复现和优化,而你也能从别人的数据里借鉴。这套机制是让编码代理领域从“benchmark竞技”走向“真实工作流改善”的一步。
我的看法:pi这个项目,工具的复杂度和生态都还在早期,但“共享真实工作流”这个设计决策,比很多花哨的特性更有前瞻性。如果你在试用编码代理工具,先把pi装上跑一轮,然后看看Hugging Face上别人的会话,会有帮助。
标签
编码代理, 工作流共享, HuggingFace, 容器化