earendil-works/pi

GitHub: earendil-works/pi

一个集编码代理、统一LLM接口和多种前端(CLI、TUI、Web、Slack)于一体的AI Agent工具包,旨在简化开发者构建和部署智能自动化任务。

Stars: 62912 | Forks: 7637

pi logo

Discord

pi.dev domain graciously donated by

Exy mascot
exe.dev

# 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),但也可以让代理自行解释 ## 分享你的 OSS 编码代理会话 如果你使用 pi 或其他编码代理进行开源工作,请分享你的会话。 公开的 OSS 会话数据有助于通过真实世界的任务、工具使用、失败和修复来改进编码代理,而不是玩具基准测试。 完整解释请参见 [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` 工作会话: - [badlogicgames/pi-mono 在 Hugging Face 上](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)。 ## 开发 ``` 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 依赖变更视为经过审查的代码变更。 - 直接外部依赖锁定到精确版本。内部工作区包保持版本范围。 - `.npmrc` 设置 `save-exact=true` 和 `min-release-age=2`,以避免在 npm 解析过程中出现同日依赖发布。 - `package-lock.json` 是依赖的事实依据。除非设置了 `PI_ALLOW_LOCKFILE_CHANGE=1`,否则预提交会阻止意外的锁文件提交。 - `npm run check` 验证锁定的直接依赖、原生 TypeScript 导入兼容性以及生成的编码代理 shrinkwrap。 - 已发布的 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=dev` 和 `npm audit signatures --omit=dev`。 - Shrinkwrap 生成为依赖生命周期脚本提供了明确的允许列表;新的生命周期脚本依赖在审查之前会检查失败。 ## 许可证 MIT
标签:AI代理工具包, Apex, GNU通用公共许可证, Hugging Face, MITM代理, Mono仓库, Node.js, Petitpotam, Slack机器人, SOC Prime, TypeScript, vLLM, Web用户界面, 人工智能, 代理运行时, 会话分享, 命令行界面, 多提供商LLM, 安全插件, 工具调用, 开发工具, 开源, 文本用户界面, 机器学习, 状态管理, 用户模式Hook绕过, 统一LLM API, 编码代理, 编程工具, 网络调试, 自动化, 自动化攻击, 远程代码执行