Skip to content
 
 

Repository files navigation

pi logo

Discord npm

新贡献者提交的 issue 和 PR 默认会被自动关闭。维护者每天审核被自动关闭的 issue。详见 CONTRIBUTING.md

Pi Agent Harness

这是 Pi agent harness 项目的主仓库,包含我们的自扩展编程 agent。

了解更多关于 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=truemin-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=devnpm audit signatures --omit=dev
  • Shrinkwrap 生成对依赖生命周期脚本有明确的允许列表;新的生命周期脚本依赖在审查前会导致检查失败。

分享你的开源编程 agent 会话

如果你使用 Pi 或其他编程 agent 进行开源工作,请分享你的会话。

公开的 OSS 会话数据有助于通过真实任务、工具使用、失败和修复来改进编程 agent,而非依赖玩具基准测试。

完整说明请参见这篇 X 上的文章

要发布会话,请使用 badlogic/pi-share-hf。阅读其 README.md 了解设置说明。你只需要一个 Hugging Face 账号、Hugging Face CLI 和 pi-share-hf

你也可以观看这个视频,其中展示了我如何发布我的 pi-mono 会话。

我定期在此发布自己的 pi-mono 工作会话:

许可证

MIT

pi.dev 域名由以下慷慨捐赠

Exy mascot
exe.dev

About

AI代理工具包:统一LLM API、代理循环、TUI、编码代理CLI

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages