核心包
最后更新:2026-10-10
Pi 以 npm workspaces 单仓组织,包含四个核心包。可按需取用,也可整体安装。它们与总体架构的三层一一对应:pi-ai 落在核心循环/模型接入,pi-agent-core 横跨运行层与核心循环,pi-coding-agent 与 pi-tui 同属交互层。
包总览
| 包 | 职责 | 所在层 |
|---|---|---|
@earendil-works/pi-ai | 统一多供应商 LLM API | 核心循环 / 模型接入 |
@earendil-works/pi-agent-core | 代理运行时(工具调用、状态管理) | 运行层 + 核心循环 |
@earendil-works/pi-coding-agent | 交互式编码代理 CLI | 交互层 |
@earendil-works/pi-tui | 带差分渲染的终端 UI 库 | 交互层 |
pi-ai · 统一 LLM 接入
屏蔽 OpenAI、Anthropic、Google、Amazon Bedrock、Google Vertex、GitHub Copilot 等供应商的差异,提供统一的流式接口、工具调用协议与供应商工厂。换模型时只需改配置,不用改业务代码。一个最小用法示意:
import { streamSimple, openAI } from "@earendil-works/pi-ai";
const model = openAI({ model: "gpt-4o" });
for await (const ev of streamSimple(model, context)) {
// ev 可能是 message_update 或 toolCall
}
业务代码只依赖 streamSimple 这类抽象,因此供应商差异被收敛在包内部。支持的供应商与配置方式见模型供应商。
pi-agent-core · 代理运行时
Pi 的心脏。内置:
- 工具调用:工具注册、参数校验、结果回写。
- 状态管理:会话状态机,支持 JSONL 会话树、分支与断点续跑。
- 上下文构建:展开技能与模板、压缩长上下文。
这些能力正是核心概念里「工具回写」「会话树」「上下文压缩」的代码落点。围绕它,Pi 才具备「可自我扩展」的运行时基础。
pi-coding-agent · 编码代理 CLI
面向开发者的交互式命令行工具。进入仓库后即可让它阅读代码、修改文件、执行命令并自我纠错,是终端里的结对程序员。它建立在 pi-agent-core 之上,通过 pi-tui 渲染界面。本地运行与沙箱配置见运行与调试。
pi-tui · 终端 UI 库
提供带差分渲染能力的终端界面:长会话、长输出也只重绘变化的部分,体验接近原生应用。编码代理与调试界面都建立在它之上。它只关心「怎么画」,不关心「模型是谁」,因此可以在不触动内核的情况下单独演进。
外部集成
除了核心包,生态中还有 pi-chat(Slack / 聊天自动化)、pi-share-hf(把编码会话发布到 Hugging Face)等扩展。Pi 默认没有内置权限系统,需用容器化 / 沙箱加强边界(见 运行与调试)。想从最小依赖理解这套结构,可参考教学版与快速上手。
相关阅读
常见问题(FAQ)
Pi 由哪些 npm 包组成?
Pi 以 npm workspaces 单仓组织,包含四个核心包:pi-ai(统一多供应商 LLM API)、pi-agent-core(代理运行时)、pi-coding-agent(交互式编码 CLI)、pi-tui(带差分渲染的终端 UI 库)。它们按总体架构的三层分工。
pi-agent-core 为什么是核心?
因为它承载代理运行时:工具注册、参数校验与结果回写,会话状态机(JSONL 树/分支/断点续跑),以及上下文构建与压缩。核心循环与运行层的关键逻辑都落在它身上。
我只想改终端界面,需要动 pi-agent-core 吗?
通常不需要。终端界面建立在 pi-tui 之上,pi-coding-agent 负责交互式 CLI;二者都属于交互层。只要接口不变,改 UI 不会触碰运行层与核心循环。
pi-ai 支持哪些模型供应商?
pi-ai 统一接入 OpenAI、Anthropic、Google、Amazon Bedrock、Google Vertex、GitHub Copilot 等,并提供供应商工厂与流式、工具调用协议。最新列表见模型供应商一篇。
这些包必须一起安装吗?
不必。它们按 npm workspaces 单仓组织,可按需取用:可以只引入 pi-ai 做模型接入,也可以整体安装获得完整编码代理。具体依赖关系见各包文档与上游仓库。