# pi **Repository Path**: RexHuang936/pi ## Basic Information - **Project Name**: pi - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-06-06 - **Last Updated**: 2026-07-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 以下是该 README.md 的中文翻译: ---
> 新贡献者提交的新 Issue 和 PR 默认会被自动关闭。维护者每天会审查自动关闭的 Issue。详见 [CONTRIBUTING.md](CONTRIBUTING.md)。 --- # Pi Agent Harness 单体仓库 这是 pi agent harness 项目的仓库,包含我们的自扩展编程智能体。 * **[@earendil-works/pi-coding-agent](packages/coding-agent)**:交互式编程智能体 CLI * **[@earendil-works/pi-agent-core](packages/agent)**:支持工具调用和状态管理的智能体运行时 * **[@earendil-works/pi-ai](packages/ai)**:统一的多提供商 LLM API(OpenAI、Anthropic、Google 等) 了解更多关于 pi 的信息: * [访问 pi.dev](https://pi.dev),项目官网,包含演示 * [阅读文档](https://pi.dev/docs/latest),也可以直接向智能体询问以了解其自身 ## 分享你的开源编程智能体会话 如果你使用 pi 或其他编程智能体进行开源工作,请分享你的会话记录。 公开的开源会话数据有助于基于真实世界的任务、工具使用、失败和修复来改进编程智能体,而非依赖玩具级基准测试。 完整说明请参见 [X 上的这篇帖子](https://x.com/badlogicgames/status/2037811643774652911)。 要发布会话,请使用 [`badlogic/pi-share-hf`](https://github.com/badlogic/pi-share-hf)。阅读其 README.md 了解设置说明。你只需要一个 Hugging Face 账号、Hugging Face CLI 和 `pi-share-hf`。 你也可以观看[这个视频](https://x.com/badlogicgames/status/2041151967695634619),了解我如何发布我的 `pi-mono` 会话。 我定期在以下地址发布我自己的 `pi-mono` 工作会话: - [Hugging Face 上的 badlogicgames/pi-mono](https://huggingface.co/datasets/badlogicgames/pi-mono) ## 所有包 | 包 | 描述 | |---------|-------------| | **[@earendil-works/pi-ai](packages/ai)** | 统一的多提供商 LLM API(OpenAI、Anthropic、Google 等) | | **[@earendil-works/pi-agent-core](packages/agent)** | 支持工具调用和状态管理的智能体运行时 | | **[@earendil-works/pi-coding-agent](packages/coding-agent)** | 交互式编程智能体 CLI | | **[@earendil-works/pi-tui](packages/tui)** | 支持差异渲染的终端 UI 库 | 关于 Slack/聊天自动化和工作流,请参见 [earendil-works/pi-chat](https://github.com/earendil-works/pi-chat)。 ## 权限与容器化 Pi 不包含用于限制文件系统、进程、网络或凭证访问的内置权限系统。默认情况下,它以启动它的用户和进程的权限运行。 如果你需要更强的隔离边界,请对 Pi 进行容器化或沙箱化。详见 [packages/coding-agent/docs/containerization.md](packages/coding-agent/docs/containerization.md),其中介绍了三种模式: - **OpenShell**:将整个 `pi` 进程运行在受策略控制的沙箱中。 - **Gondolin 扩展**:将 `pi` 和提供商认证保留在主机上,同时将内置工具和 `!` 命令路由到本地 Linux 微虚拟机中。 - **普通 Docker**:将整个 `pi` 进程运行在本地容器中,实现简单隔离。 ## 贡献 贡献指南请参见 [CONTRIBUTING.md](CONTRIBUTING.md),项目特定规则(适用于人类和智能体)请参见 [AGENTS.md](AGENTS.md)。 ## 开发 ```bash npm install --ignore-scripts # 安装所有依赖,不运行生命周期脚本 npm run build # 构建所有包 npm run check # 运行代码检查、格式化和类型检查 ./test.sh # 运行测试(没有 API 密钥时跳过依赖 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 工作流运行 `npm audit --omit=dev` 和 `npm audit signatures --omit=dev`。 - Shrinkwrap 生成对依赖生命周期脚本有明确的允许列表;新的生命周期脚本依赖在通过审查之前会导致检查失败。 ## 许可证 MIT