什么是 Pi?
Pi 是由 Mario Zechner 开发的一个极简 AI Coding Agent。与市面上动辄上百个工具的编码助手不同,Pi 的核心理念是少即是多——它只有四个工具:Read、Write、Edit、Bash,以及所有 Agent 中最短的系统提示词。
但它的极简外表下藏着真正的威力:Pi 可以自我扩展。当你需要新功能时,不是去下载插件或技能包,而是让 Agent 自己写代码来拓展自己的能力。
架构剖析
Pi 是一个 TypeScript monorepo,由四个核心包组成:
- pi-ai:统一多供应商 LLM API 层,支持 OpenAI、Anthropic、Google 等主流模型提供商
- pi-agent-core:Agent 运行时,负责 tool calling 和状态管理,这是整套系统的核心
- pi-coding-agent:交互式 Coding Agent CLI,开箱即用的编码助手
- pi-tui:终端 UI 库,支持差分渲染,让 TUI 流畅如丝
pi-agent-core 核心机制
pi-agent-core 实现了一套简洁但强大的 agent loop:
- 消息管理 — 支持标准 LLM 消息(user、assistant、toolResult),也可扩展自定义消息类型
- convertToLlm — 桥接层,过滤 UI 专用消息,转换自定义类型为 LLM 可理解的格式
- 事件流 — 完整的事件系统(message_update、text_delta、tool_execution_start/end)
- 生命周期钩子 — beforeToolCall、afterToolCall、context、session_start 等丰富的扩展点
核心循环逻辑非常直接:接收消息 → 调用 LLM → 执行工具 → 返回结果,循环往复。
扩展即灵魂
Pi 最迷人的设计在于它的扩展系统。作者 Mario 说得很直接:如果我不需要它,它就不会被构建。
- Pi 没有内置 MCP 支持——这不是偷懒,是哲学。想要 MCP?让 Agent 自己写
- 扩展可以注册工具给 LLM 调用,也可以渲染自定义 TUI 组件(进度条、文件选择器、数据表格,甚至 Doom 游戏)
- 扩展状态可持久化到会话文件,支持热重载:Agent 写代码 → 自动重载 → 测试 → 迭代
Flask 作者 Armin Ronacher 是 Pi 的重度用户。他的 /answer、/todos、/review 等扩展全部由 Pi 按他的需求自动生成,没有一行代码是他亲手写的。他甚至完全用 Pi 自己生成的技能替换了所有 MCP 和浏览器自动化工具。
会话树:分支的魔力
Pi 的会话系统是一个树形结构。你可以从主会话分支出子会话去修 bug,修完后切回主会话,Pi 自动总结子会话中的变更。这意味着做支线任务不会污染主会话的上下文。
这个特性对多 Agent 协作也至关重要——一个 Agent 可以 spawn 子 Agent 处理子任务,然后合并结果。
OpenClaw 背后的引擎
今年火爆全网的 OpenClaw 通讯 Agent 平台,其底层正是 Pi。OpenClaw 使用 pi-agent-core 作为 Agent 运行时,利用扩展系统构建了丰富的插件生态,支撑起了多平台即时通讯接入、技能系统、会话管理等复杂功能。
这证明了 pi-agent-core 不仅适用于 CLI 编码场景,也能作为企业级多渠道 Agent 平台的坚实基础。
总结
Pi Agent Core 代表了一种新的 Agent 设计范式:不追求大而全,而是追求小而精 + 无限可扩展。极简核心 + 自扩展能力 + 会话树机制,让它成为当下最优雅的 AI Agent 框架之一。
如果你正在搭建自己的 Agent 系统,pi-agent-core 值得一试。
- GitHub:https://github.com/earendil-works/pi
- 官网:https://pi.dev
- npm:@earendil-works/pi-agent-core
Pi Agent Core:极简 AI Coding Agent 核心解析