pi
AI agent工具包,集成了可交互的 coding agent CLI、统一多提供商LLM API、终端UI库、Web UI库及Slack机器人。亮点在于模块化架构,各组件可独立使用,且支持vLLM pods部署,适合快速构建定制化AI编码助手。项目采用MIT许可,今日新增444星,社区活跃。
README
新贡献者的 issue 和 PR 默认会自动关闭。维护者会每天检查自动关闭的 issue。请参阅 CONTRIBUTING.md。
Pi Agent Harness 单体仓库
这是 pi agent harness 项目的所在地,包含我们的自可扩展编码 agent(智能体)。
- @earendil-works/pi-coding-agent:交互式编码 agent CLI
- @earendil-works/pi-agent-core:带工具调用和状态管理的 agent 运行时
- @earendil-works/pi-ai:统一的多提供商 LLM API(OpenAI、Anthropic、Google……)
想了解更多关于 pi 的信息:
分享你的 OSS 编码 agent 会话
如果你将 pi 或其他编码 agent 用于开源工作,请分享你的会话。
公开的 OSS 会话数据有助于用真实世界的任务、工具使用、失败和修复来改进编码 agent,而不是用玩具基准。
完整说明请参见 X 上的这篇文章。
要发布会话,请使用 badlogic/pi-share-hf。阅读其 README.md 了解设置说明。你只需要一个 Hugging Face 账户、Hugging Face CLI 和 pi-share-hf。
你也可以观看这个视频,我在其中展示如何发布我的 pi-mono 会话。
我会定期在此发布自己的 pi-mono 工作会话:
所有包
| 包 | 描述 |
|---|---|
| @earendil-works/pi-ai | 统一的多提供商 LLM API(OpenAI、Anthropic、Google 等) |
| @earendil-works/pi-agent-core | 带工具调用和状态管理的 agent 运行时 |
| @earendil-works/pi-coding-agent | 交互式编码 agent CLI |
| @earendil-works/pi-tui | 带差异渲染的终端 UI 库 |
关于 Slack/聊天自动化和工作流,请参见 earendil-works/pi-chat。
贡献
请参阅 CONTRIBUTING.md 了解贡献指南,以及 AGENTS.md 了解项目特定规则(适用于人类和 agent)。
开发
npm install --ignore-scripts # 安装所有依赖,不运行生命周期脚本
npm run build # 构建所有包
npm run check # 代码检查、格式检查、类型检查
./test.sh # 运行测试(若无 API key 则跳过 LLM 相关测试)
./pi-test.sh # 从源码运行 pi(可在任意目录执行)
供应链加固
我们将 npm 依赖变更视为需要审查的代码变更。
- 直接外部依赖固定到精确版本。内部工作区包保持版本范围。
.npmrc设置了save-exact=true和min-release-age=2,避免 npm 解析时使用同一天发布的依赖。package-lock.json是依赖的事实来源。预提交钩子会阻止意外的 lockfile 提交,除非设置了PI_ALLOW_LOCKFILE_CHANGE=1。npm run check验证固定的直接依赖、原生 TypeScript 导入兼容性以及生成的 coding-agent shrinkwrap。- 发布的 CLI 包包含
packages/coding-agent/npm-shrinkwrap.json,从根 lockfile 生成,以锁定 npm 用户的传递依赖。 - 发布前的冒烟测试使用
npm run release:local构建、打包并在仓库外创建隔离的 npm 和 Bun 安装。 - 本地发布安装、文档记录的 npm 安装以及
pi update --self在支持的地方使用--ignore-scripts。 - CI 使用
npm ci --ignore-scripts安装,定时运行的 GitHub workflow 会执行npm audit --omit=dev和npm audit signatures --omit=dev。 - Shrinkwrap 生成有一个显式的依赖生命周期脚本白名单;新的生命周期脚本依赖在审查通过之前会失败。
许可证
MIT