|
| 1 | +# 第零章 · Pi Agent 全景导读 |
| 2 | + |
| 3 | +> Pi 是一个开源的 TypeScript AI Agent 框架,由 Mario Zechner(libGDX 作者)创建。 |
| 4 | +> 它的核心理念:**LLM + Tools + A Loop** —— 用最少的代码实现最大的灵活性。 |
| 5 | +
|
| 6 | +--- |
| 7 | + |
| 8 | +## 0.1 Pi 是什么 |
| 9 | + |
| 10 | +Pi 是一个 **Agent Harness**(智能体运行框架),不是一个 AI 模型,而是让 AI 模型"动起来"的引擎。 |
| 11 | + |
| 12 | +把 LLM 比作大脑,Pi 就是身体——它负责: |
| 13 | + |
| 14 | +- 把你的指令发给 LLM |
| 15 | +- 接收 LLM 的回复和工具调用请求 |
| 16 | +- 执行工具(读文件、写代码、运行命令) |
| 17 | +- 把执行结果反馈给 LLM |
| 18 | +- 如此循环,直到任务完成 |
| 19 | + |
| 20 | +``` |
| 21 | +你(用户) |
| 22 | + │ |
| 23 | + ▼ |
| 24 | +┌─────────────────────────────────┐ |
| 25 | +│ Pi Agent Harness │ |
| 26 | +│ ┌───────┐ ┌──────┐ ┌──────┐ │ |
| 27 | +│ │ pi-ai │→│ core │→│ CLI │ │ |
| 28 | +│ └───────┘ └──────┘ └──────┘ │ |
| 29 | +│ ↕ ↕ ↕ │ |
| 30 | +│ LLM API 工具执行 终端UI │ |
| 31 | +└─────────────────────────────────┘ |
| 32 | +``` |
| 33 | + |
| 34 | +## 0.2 设计哲学 |
| 35 | + |
| 36 | +Pi 的设计哲学可以概括为三个词:**极简、透明、可扩展**。 |
| 37 | + |
| 38 | +| 维度 | Pi 的做法 | 为什么 | |
| 39 | +|------|----------|--------| |
| 40 | +| **极简** | agent-core 仅 ~1500 行代码、5 个核心文件 | 更少的代码 = 更少的 bug、更容易理解 | |
| 41 | +| **透明** | 不隐藏 LLM 交互细节,所有事件可订阅 | 开发者需要知道 Agent 在做什么 | |
| 42 | +| **可扩展** | Extension 是一等公民,不是后补丁 | 核心保持精简,功能通过扩展叠加 | |
| 43 | + |
| 44 | +Pi **故意不做**的事情: |
| 45 | + |
| 46 | +- 没有内置权限系统(交给容器/沙箱) |
| 47 | +- 没有 MCP 协议(工具通过 TypeScript 直接注册) |
| 48 | +- 没有 Plan Mode(不内置规划能力) |
| 49 | +- 没有子 Agent(不内置多 Agent 编排) |
| 50 | + |
| 51 | +这不是功能缺失,而是刻意的取舍——**核心只做引擎,其余交给扩展**。 |
| 52 | + |
| 53 | +## 0.3 Monorepo 结构 |
| 54 | + |
| 55 | +Pi 的源码以 monorepo 组织,包含以下核心包: |
| 56 | + |
| 57 | +``` |
| 58 | +pi-mono/ |
| 59 | +├── packages/ |
| 60 | +│ ├── ai/ ← pi-ai:LLM 抽象层 |
| 61 | +│ ├── agent/ ← pi-agent-core:Agent 运行时 |
| 62 | +│ ├── coding-agent/ ← pi-coding-agent:编码 Agent CLI |
| 63 | +│ ├── tui/ ← pi-tui:终端 UI 库 |
| 64 | +│ ├── server/ ← pi-server:HTTP 服务 |
| 65 | +│ ├── storage/ ← 存储抽象 |
| 66 | +│ └── evals/ ← 评估框架 |
| 67 | +├── package.json |
| 68 | +└── tsconfig.json |
| 69 | +``` |
| 70 | + |
| 71 | +核心只有前三个包,它们构成 Pi 的**三层架构**(下一章详解)。 |
| 72 | + |
| 73 | +## 0.4 Pi 与同类工具的对比 |
| 74 | + |
| 75 | +```plantuml |
| 76 | +@startuml |
| 77 | +skinparam packageStyle rectangle |
| 78 | +skinparam backgroundColor transparent |
| 79 | +
|
| 80 | +package "Claude Code" { |
| 81 | + [MCP 协议] as mcp |
| 82 | + [内置权限系统] as perm |
| 83 | + [内置计划模式] as plan |
| 84 | + [Hook 扩展] as hook |
| 85 | +} |
| 86 | +
|
| 87 | +package "Pi Agent" { |
| 88 | + [TypeScript 扩展] as ext |
| 89 | + [Operations 接口] as ops |
| 90 | + [无内置权限] as noperm |
| 91 | + [无 MCP] as nomcp |
| 92 | +} |
| 93 | +
|
| 94 | +package "Cursor" { |
| 95 | + [IDE 集成] as ide |
| 96 | + [Rules 系统] as rules |
| 97 | + [专有协议] as prop |
| 98 | +} |
| 99 | +
|
| 100 | +note bottom of "Pi Agent" |
| 101 | + 定位:平台(Platform) |
| 102 | + 核心极简,一切可替换 |
| 103 | +end note |
| 104 | +
|
| 105 | +note bottom of "Claude Code" |
| 106 | + 定位:产品(Product) |
| 107 | + 开箱即用,功能完整 |
| 108 | +end note |
| 109 | +@enduml |
| 110 | +``` |
| 111 | + |
| 112 | +| 维度 | Pi | Claude Code | Cursor | |
| 113 | +|------|------|------|------| |
| 114 | +| 定位 | 平台/框架 | 产品/工具 | IDE 插件 | |
| 115 | +| 扩展方式 | TypeScript Extension | Shell Hook | Rules | |
| 116 | +| 工具协议 | 无(直接注册) | MCP | 专有 | |
| 117 | +| 工具后端 | 可插拔 Operations | 固定本地执行 | 固定 | |
| 118 | +| 权限系统 | 无(外部处理) | 内置审批 | IDE 级别 | |
| 119 | +| 模型支持 | 30+ Provider | Anthropic | 多个 | |
| 120 | + |
| 121 | +## 0.5 学习路线图 |
| 122 | + |
| 123 | +本系列文档按照以下顺序组织,每一章都以前一章的知识为基础: |
| 124 | + |
| 125 | +```plantuml |
| 126 | +@startuml |
| 127 | +skinparam backgroundColor transparent |
| 128 | +skinparam ActivityBackgroundColor #f8f9fa |
| 129 | +skinparam ActivityBorderColor #dee2e6 |
| 130 | +
|
| 131 | +start |
| 132 | +:第0章 全景导读; |
| 133 | +note right: 你在这里 |
| 134 | +
|
| 135 | +:第1章 三层架构; |
| 136 | +note right: 宏观理解 |
| 137 | +
|
| 138 | +fork |
| 139 | + :第2章 pi-ai 层; |
| 140 | + note right: LLM 如何接入 |
| 141 | +fork again |
| 142 | + :第3章 Agent Loop; |
| 143 | + note right: 引擎如何运转 |
| 144 | +end fork |
| 145 | +
|
| 146 | +:第4章 工具系统; |
| 147 | +note right: Agent 的"手" |
| 148 | +
|
| 149 | +:第5章 消息系统; |
| 150 | +note right: Agent 的"语言" |
| 151 | +
|
| 152 | +:第6章 事件流; |
| 153 | +note right: Agent 的"神经" |
| 154 | +
|
| 155 | +:第7章 上下文工程; |
| 156 | +note right: Agent 的"记忆" |
| 157 | +
|
| 158 | +:第8章 会话管理; |
| 159 | +note right: Agent 的"历史" |
| 160 | +
|
| 161 | +:第9章 扩展系统; |
| 162 | +note right: Agent 的"成长" |
| 163 | +
|
| 164 | +:第10章 术语表; |
| 165 | +note right: 速查手册 |
| 166 | +
|
| 167 | +stop |
| 168 | +@enduml |
| 169 | +``` |
| 170 | + |
| 171 | +**建议学习方式**: |
| 172 | + |
| 173 | +1. **第一天**:读完第 0-3 章,建立全局认知 |
| 174 | +2. **第二天**:读完第 4-6 章,理解核心机制 |
| 175 | +3. **第三天**:读完第 7-9 章,掌握高级特性 |
| 176 | + |
| 177 | +每章末尾有"检查清单",确认自己理解后再进入下一章。 |
| 178 | + |
| 179 | +--- |
| 180 | + |
| 181 | +**下一章**:[第一章 · 三层架构](01-three-layers.md) — Pi 的骨架是怎么搭的 |
| 182 | + |
0 commit comments