For AI agents: the complete documentation index is available at /llms.txt, the full documentation bundle is available at /llms-full.txt, and this page is available as Markdown at /docs/latest/source/index.md.

从一个小 Agent 读懂 Pi

本系列基于 Pi v0.85.1 源码。不是官方文档的翻译,而是一条读码路径:先做一个很小的 Agent,再看 Pi 为了让它真正能用,加了哪些边界。

如果你只有半小时,先读 从一个最小 Agent 开始。读完后,你应该能用自己的话解释:模型为什么需要工具、Agent 为什么需要循环,以及这些东西在 Pi 里分别落在哪一层。

系列导航

文档先记住什么难度
从一个最小 Agent 开始模型提计划,程序执行,循环把两者接起来入门
前置知识与学习路径需要什么基础,按什么顺序读入门
环境搭建与调试把仓库跑起来,用断点看一次数据流入门
从终端到 TUI输入 pi 之后,控制权怎样交给界面核心
从输入到 LLM 循环一条消息如何变成模型调用和工具执行核心
核心架构与设计哲学Pi 为什么这样拆,以及先不要读哪些目录核心
pi-ai:Models 运行时与 Provider模型、认证和 Provider 怎样接到一起深入
项目信任与认证项目资源何时能跑,凭证从哪来深入
上下文压缩与会话分支长会话如何摘要,树形会话如何分叉深入

速览:Pi 是什么?

Pi 是一个终端里的编码 Agent。它把三件事分开:

用户输入
  → 模型决定“直接回答”还是“调用工具”
  → 程序校验并执行工具
  → 把结果交回模型
  → 重复,直到得到最终回答

对应到源码,先记住三个角色:

角色它做什么先看哪里
模型根据上下文回答,或提出工具调用pi-ai 的 Models / Provider
循环执行工具,把结果放回上下文,再请求模型packages/agent/src/agent-loop.ts
产品终端交互、会话、认证、项目信任、扩展packages/coding-agent

日常使用的主路径是:

CLI / TUI
  → AgentSession(消息预处理、压缩、扩展、会话)
  → Agent(生命周期)
  → runAgentLoop(LLM → 工具 → 再 LLM)
  → streamFn
  → ModelRuntime.streamSimple()
  → Provider

AgentHarness 也在仓库里,但是更通用、偏实验性的会话运行时。读 pi 命令本身时,不要从它开始。

读完后你会得到什么?

  1. 能用自己的话解释 Agent,而不是只会背 API 名称。
  2. 能写出一个带工具的简易 Agent,并知道它还缺哪些生产能力。
  3. 能沿着一次真实输入读懂 Pi 的核心源码。
  4. 知道项目信任、认证和压缩各自守哪条边界。
  5. 再按需要学习 Extension、Skill、自定义 Provider 和 TUI。

快速开始

仓库用 npm workspaces,不是 pnpm。开发规则见上游 AGENTS.md。

git clone https://github.com/earendil-works/pi.git
cd pi
npm install --ignore-scripts
npm run check

从源码运行,优先用仓库脚本(它会保留你当前的工作目录):

./pi-test.sh

要给单个入口打断点时,再用 TypeScript 源码:

npx tsx packages/coding-agent/src/cli.ts --help

Node.js 要求 >= 22.19.0。日常读码不需要先 npm run build。