5.9 KiB
Note
本文档由 WeHub 基于上游 README 翻译整理,属于社区翻译,非官方中文文档。
English · 原始项目 · 上游 README
原作者、版权与许可证归属以原始项目及本仓库 LICENSE 文件为准。
默认情况下,新贡献者提交的新 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 的信息:
所有软件包
| 软件包 | 说明 |
|---|---|
| @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 extension:将
pi和提供商认证保留在宿主机上,同时将内置工具和!命令路由到本地 Linux 微型虚拟机中。 - Plain Docker:在本地容器中运行整个
pi进程,以实现简单隔离。 - OpenShell:在策略控制的沙箱中运行整个
pi进程。
贡献
贡献指南请参阅 CONTRIBUTING.md,项目特定规则(适用于人类与 agent)请参阅 AGENTS.md。Pi 的更长期计划也可在 RFCs.
开发
npm install --ignore-scripts # Install all dependencies without running lifecycle scripts
npm run build # Build all packages
npm run check # Lint, format, and type check
./test.sh # Run tests (skips LLM-dependent tests without API keys)
./pi-test.sh # Run pi from sources (can be run from any directory)
供应链加固
我们将 npm 依赖变更视为经审查的代码变更。
- 直接外部依赖锁定为精确版本。内部 workspace 软件包仍使用版本范围。
.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 workflow 会运行npm audit --omit=dev以及npm audit signatures --omit=dev。 - Shrinkwrap 生成对依赖 lifecycle 脚本设有显式允许列表;新的 lifecycle 脚本依赖在通过审查前会导致检查失败。
分享你的开源编码 agent 会话
如果你在开源工作中使用 Pi 或其他编码 agent,请分享你的会话。
公开的开源会话数据有助于用真实世界的任务、工具使用、失败与修复来改进编码 agent,而非仅依赖玩具基准测试。
完整说明请参阅 X 上的这篇帖子.
要发布会话,请使用 badlogic/pi-share-hf. 阅读其 README.md 了解设置说明。你只需要 Hugging Face 账户、Hugging Face CLI 以及 pi-share-hf。
你也可以观看 这段视频, 其中展示了我如何发布我的 pi-mono 会话。
我会定期在此发布自己的 pi-mono 工作会话:
许可证
MIT