新贡献者提交的 issue 和 PR 默认会被自动关闭。维护者每天审核被自动关闭的 issue。详见 CONTRIBUTING.md。
这是 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 的信息:
| 包名 | 描述 |
|---|---|
| @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。
Pi 不内置限制文件系统、进程、网络或凭据访问的权限系统。默认情况下,它以启动它的用户和进程的权限运行。
如果你需要更强的隔离边界,请对 Pi 进行容器化或沙箱化。参见 packages/coding-agent/docs/containerization.md 了解三种方案:
- Gondolin 扩展:将
pi和提供商认证保留在宿主机上,同时将内置工具和!命令路由到本地 Linux 微型虚拟机中。 - 普通 Docker:在本地容器中运行整个
pi进程,实现简单隔离。 - OpenShell:在受策略控制的沙箱中运行整个
pi进程。
参见 CONTRIBUTING.md 了解贡献指南,AGENTS.md 了解项目特定规则(同时适用于人类和 agent)。Pi 的长期规划可在 RFCs 中查看。
npm install --ignore-scripts # 安装所有依赖,跳过生命周期脚本
npm run build # 刷新模型数据,然后构建所有包
npm run build:offline # 使用已有模型数据重新构建,无需网络访问
npm run check # Lint、格式化和类型检查
./test.sh # 运行测试(无 API 密钥时跳过依赖 LLM 的测试)
./pi-test.sh # 从源码运行 pi(可从任意目录执行)GitHub Releases 包含受版本 SHA256SUMS 文件保护的源码归档。解压后运行与官方独立二进制文件相同的构建脚本:
VERSION="<release-version>"
tar -xzf "pi-${VERSION}-source.tar.gz"
cd "pi-${VERSION}"
./scripts/build-binaries.sh --offline-model-data --platform linux-x64 --out "$PWD/out"源码归档包含用于该版本的已生成提供商模型数据。--offline-model-data 使用该快照构建,而非从实时提供商目录刷新。脚本仍会安装依赖、构建 monorepo、编译 Bun 可执行文件并准备其运行时资源。希望单独提供依赖的包维护者可传递 --skip-install --skip-deps。
我们将 npm 依赖变更视为需审查的代码变更。
- 直接外部依赖锁定到精确版本。内部工作区包保持版本范围。
.npmrc设置save-exact=true和min-release-age=2,避免在 npm 解析期间拉取当天发布的依赖。package-lock.json是依赖的最终真实来源。pre-commit 钩子会阻止意外的 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 工作流运行npm audit --omit=dev和npm audit signatures --omit=dev。 - Shrinkwrap 生成对依赖生命周期脚本有明确的允许列表;新的生命周期脚本依赖在审查前会导致检查失败。
如果你使用 Pi 或其他编程 agent 进行开源工作,请分享你的会话。
公开的 OSS 会话数据有助于通过真实任务、工具使用、失败和修复来改进编程 agent,而非依赖玩具基准测试。
完整说明请参见这篇 X 上的文章。
要发布会话,请使用 badlogic/pi-share-hf。阅读其 README.md 了解设置说明。你只需要一个 Hugging Face 账号、Hugging Face CLI 和 pi-share-hf。
你也可以观看这个视频,其中展示了我如何发布我的 pi-mono 会话。
我定期在此发布自己的 pi-mono 工作会话:
MIT