pi

Pi 是一个支持自我扩展、基于终端的编程智能体框架,提供统一的多供应商 LLM API。

TypeScriptMITAgent
⭐ GitHubhttps://github.com/earendil-works/pi
91,592
Star 数
+0
Star 增速
2026年8月17日
最后更新
7
点击数

1. 项目概述

Pi 是一个支持自我扩展、基于终端的编程智能体框架,构建于 Claude Agent SDK 之上,为开发者提供一个交互式 CLI,可在单一统一运行时中规划任务、编辑代码、运行工具并支持多个 LLM 供应商。

2. 背景与定位

Pi 的创建旨在让开发者拥有一个可完全掌控和扩展的编程智能体,而非绑定在某个 IDE 或平台中的封闭式单一厂商助手。其核心使命是提供一个轻量级、可组合的“智能体运行框架”:一个管理工具调用和状态的运行时、一个终端 UI 以及一个模型抽象层,所有这些均以独立软件包的形式提供,以便团队能够基于 Pi 自身使用的相同原语来构建自己的智能体。

与同类编程智能体项目相比,Pi 在三个方面具有差异化优势:

  • 设计上不依赖特定供应商 — Pi 没有硬编码单一 AI 厂商,而是提供了一个统一的 LLM API (pi-ai),通过单一接口与 OpenAI、Anthropic、Google 及其他供应商进行交互。
  • 可组合架构 — CLI、智能体运行时、模型层、终端 UI 和遥测功能均为独立软件包,开发者可以复用单个组件,而无需使用整个应用程序。
  • 注重供应链安全 — 该项目锁定了依赖项并提供 shrinkwrap 文件,体现了对这个以主机级权限运行的工具在可重现、可审计构建方面的刻意关注。

3. 功能分类

🧠 智能体运行时
核心软件包,负责处理工具调用循环及对话/应用状态。

  • 工具调用与结果处理
  • 跨会话状态持久化
  • 可扩展的工具注册机制
  • 用途:为任何 CLI 或应用提供运行自主编程智能体所需的“大脑”。

🌐 多供应商 LLM 层
对多个大语言模型 API 的统一抽象。

  • 支持 OpenAI
  • 支持 Anthropic (Claude)
  • 支持 Google
  • 不依赖特定供应商的请求/响应类型定义
  • 用途:允许开发者在不重写应用逻辑的情况下切换或混合使用模型供应商。

💻 交互式 CLI
旗舰级 pi-coding-agent 终端应用程序。

  • 终端内的交互式编程会话
  • 通过工具进行文件编辑和命令执行
  • 基于会话的工作流
  • 用途:开发者在日常工作中使用 Pi 处理真实代码库的主要入口。

🎛️ 终端 UI 库
用于构建丰富终端界面的专用软件包 (pi-tui)。

  • 差分渲染以实现流畅更新
  • 用于智能体输出的可复用 UI 原语
  • 用途:驱动 Pi 自身的 CLI 体验,也可复用于构建其他基于终端的智能体工具。

📊 遥测框架
中立的遥测契约和类型化模式 (pi-telemetry)。

  • 结构化、类型化的事件模式
  • 中立设计(不绑定单一分析后端)
  • 用途:让团队能够在不被锁定到单一遥测供应商的前提下观察和改进智能体行为。

4. 核心亮点

  • 自我扩展的运行框架 — Pi 的构建方式使开发者能够扩展和重塑智能体本身,而不受限于固定的功能集。
  • 多供应商灵活性 — 通过一致统一的 API 接口在 OpenAI、Anthropic、Google 和其他 LLM 供应商之间切换。
  • 模块化软件包设计 — 五个专注的软件包(CLI、智能体核心、AI 层、遥测、TUI)可独立采用或组合使用。
  • 终端优先的用户体验 — 差分渲染终端 UI 确保交互式会话快速响应,无需离开命令行。
  • 安全透明性 — 项目明确文档说明其未内置文件系统、进程、网络或凭证访问的权限系统,而是为需要隔离的团队发布了容器化方案(Gondolin、原生 Docker、OpenShell)。
  • 可重现构建 — 锁定的依赖项和 shrinkwrap 文件保障了该默认以完整主机权限运行的工具的供应链完整性。

5. 按角色划分的使用场景

  • 通用开发者:将 pi-coding-agent CLI 作为日常结对编程助手,直接在终端中编写、编辑和调试代码。
  • 平台/工具工程师:基于 pi-agent-corepi-aipi-tui 构建自定义编程智能体或内部开发者工具,无需从零开始。
  • 注重安全的团队:在授予主机级任务之前,在已文档化的容器化方案(Gondolin、Docker、OpenShell)之一中运行 Pi,以限制文件系统、网络和凭证访问。
  • DevOps/SRE:将中立的 pi-telemetry 模式集成到现有的可观测性管道中,以监控智能体的使用情况和可靠性。

6. 快速入门

查找所需内容 — 从官方文档站点开始:

https://pi.dev/docs/latest

安装与运行

npm install --ignore-scripts
npm run build

使用缓存的模型数据进行完全离线重建:

npm run build:offline

从源码运行 CLI 以进行本地测试:

./pi-test.sh

贡献代码

npm run check   # 代码检查、格式化和类型验证
./test.sh        # 运行测试套件

请参阅仓库中的 CONTRIBUTING.mdAGENTS.md 以获取贡献指南。

7. 项目结构

pi/
├── packages/
│   ├── pi-coding-agent/   # 交互式 CLI(主入口)
│   ├── pi-agent-core/     # 智能体运行时:工具调用与状态管理
│   ├── pi-ai/             # 统一的多供应商 LLM API
│   ├── pi-telemetry/      # 中立的遥测契约/模式
│   └── pi-tui/            # 终端 UI 库(差分渲染)
├── CONTRIBUTING.md        # 贡献指南
├── AGENTS.md              # 智能体相关开发笔记
├── test.sh                # 完整测试套件运行器
└── pi-test.sh              # 直接从源码运行 CLI

软件包的拆分反映了 Pi 的设计理念:CLI 只是底层智能体运行时、模型层和 UI 工具包的一个消费者,所有这些均可独立复用。

8. 相关生态

  • Claude Agent SDK — Pi 智能体运行框架所基于的底层 SDK。
  • LLM 供应商 — 通过 pi-ai 抽象层访问的 OpenAI、Anthropic 和 Google API。
  • 容器化工具 — Gondolin、Docker 和 OpenShell 被文档化为安全运行 Pi 的补充隔离层。
  • npm 注册表 — Pi 以 @earendil-works/pi-coding-agent 及相关作用域软件包的形式分发。

9. 许可证

Pi 基于 MIT 许可证 发布。

  • ✅ 可免费使用、复制、修改和分发,包括用于商业目的
  • ✅ 可基于 pi-agent-corepi-aipi-tui 免费构建衍生工具
  • ❌ 不提供任何保证;作者不对因使用而产生的损害承担责任
  • ℹ️ 原始版权和许可声明必须保留在软件的副本或重要部分中
  • ℹ️ Pi 默认以主机进程权限运行且无内置访问控制 — 在授予其敏感环境访问权限前,请查阅容器化指南

10. 常见问题解答

问:Pi 支持哪些 LLM 供应商?
答:通过其 pi-ai 软件包,Pi 在单一统一 API 背后支持 OpenAI、Anthropic、Google 及其他供应商。

问:让 Pi 在我的机器上运行命令安全吗?
答:Pi 没有内置权限系统来限制文件系统、进程、网络或凭证访问 — 它默认以主机进程权限运行。如需隔离,请使用已文档化的容器化方案之一(Gondolin、Docker 或 OpenShell)。

问:如何从源码安装和构建 Pi?
答:运行 npm install --ignore-scripts,然后运行 npm run build(或使用 npm run build:offline 进行离线重建),最后使用 ./pi-test.sh 从源码运行。

问:我可以只使用 Pi 的一部分吗,比如终端 UI 或智能体运行时?
答:可以。Pi 被拆分为独立的软件包(pi-coding-agentpi-agent-corepi-aipi-telemetrypi-tui),因此您可以单独采用某些组件而无需完整的 CLI。

问:我该如何贡献代码?
答:在提交更改前运行 npm run check./test.sh,并遵循仓库中 CONTRIBUTING.mdAGENTS.md 的指南。

11. 快速链接

12. 总结

Pi 为开发者提供了一个不依赖特定供应商、可自我扩展的编程智能体,既可用作现成的终端 CLI,也可作为一组可组合的构建模块(智能体运行时、模型层、终端 UI、遥测)来构建自定义智能体。它最适合那些希望掌控自己的 AI 编程工具而非使用封闭式单一厂商助手的开发者和平台团队 — 前提是需明确理解访问控制和隔离是运维人员的责任,而非内置功能。