ITADN
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈

pi logo

Discord npm

默认情况下,来自新贡献者的新问题与 PR 会自动关闭。维护人员会每日检查这些自动关闭的问题。详情请参阅 CONTRIBUTING.md

Pi Agent Harness

这里是 Pi agent harness 项目的核心页面,其中包含了我们可自行扩展的编程代理。

如需了解更多关于 Pi 的信息:

  • 访问项目官网 pi.dev,其中包含演示内容
  • 阅读文档 CONTRIBUTING.md,您也可以让代理自行解释相关内容

所有软件包

软件包描述
@earendil-works/pi-telemetry与供应商无关的遥测协议、参考适配器、合规性测试以及类型化架构
@earendil-works/pi-ai统一的多提供商 LLM API(OpenAI、Anthropic、Google 等)
@earendil-works/pi-agent-core具备工具调用与状态管理功能的代理运行时环境
@earendil-works/pi-coding-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。关于 Pi 的长期规划内容也可在 RFCs 中找到。

开发相关

npm install --ignore-scripts  # Install all dependencies without running lifecycle scripts
npm run build         # Refresh model data, then build all packages
npm run build:offline # Rebuild using existing model data without network access
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)

从发布版本源码构建独立二进制文件

GitHub 发布版本中包含一个按版本划分的源代码归档文件,该文件由发布版本的 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 会使用该快照进行构建,而不会从实时的提供程序目录中获取最新数据。该脚本仍会安装依赖项、构建单仓库项目、编译 Bun 可执行文件,并整理其运行时资源。那些单独提供依赖项的包维护者可以传递 --skip-install --skip-deps

供应链加固

我们将 npm 依赖项的变更视为经过审查的代码变更。

  • 直接的外部依赖项会被锁定到确切的版本。而内部工作区包则仍保持版本范围。
  • .npmrc 会设置 save-exact=truemin-release-age=2,以避免在 npm 解析过程中出现同一天发布多个依赖项的情况。
  • package-lock.json 是依赖项的权威参考。除非设置了 PI_ALLOW_LOCKFILE_CHANGE=1,否则预提交机制会阻止意外提交锁文件。
  • npm run check 会验证被锁定的直接依赖项、原生 TypeScript 导入的兼容性,以及生成的编码代理压缩包。
  • 发布的 CLI 包中包含了从根锁文件生成的 packages/coding-agent/npm-shrinkwrap.json,用于为 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
  • 在生成压缩包时,会有一个明确的依赖项生命周期脚本允许列表;新的生命周期脚本依赖项在经过审查之前不会通过检查。

分享您的 OSS 编码代理会话

如果您在开源工作中使用 Pi 或其他编码代理,请分享您的会话数据。

公开的 OSS 会话数据有助于通过真实任务、工具使用情况、故障现象及修复方案来改进编码代理,而非仅依赖模拟测试。

如需完整说明,请参阅 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
慷慨捐赠