Pi source-guided course
从一句对话开始,
造出完整桌面 Agent。
不先背 API。每一章先实现一个看得见的需求,再沿真实调用链进入 Pi 源码。
当前完成 36 / 36 章 · 源码基线 Pi v0.82.0
随手查阅
九份附录,把源码事实放在手边。
附录与速查
- A源码地图速查
包、入口、阅读顺序与调用链索引。
- B核心类型速查速查
Model、Message、Tool、Agent、Session、Skill 与 Extension。
- C事件时序表速查
Agent、Turn、Message、Tool 与 Session 生命周期。
- DSkills 速查速查
目录、Frontmatter、发现、触发、测试与分发。
- EExtensions 速查速查
注册、事件、工具、Provider、生命周期与错误语义。
- FSession 格式速查速查
JSONL、Header、Entry、Branch、Compaction 与 Custom Entry。
- G配置与环境速查速查
Provider、认证、模型、项目、用户与资源配置。
- H故障排查手册速查
模型、工具、会话、Skills、Extensions、SDK 与 RPC。
- I术语表速查
全书关键概念的简明定义与关联。
第一条主线
一次对话,足够打开整个框架。
课程地图
功能逐步生长,概念反复加深。
先让桌面 Agent 开口说话
- 1桌面 Agent 的第一句回答已完成
从一次最小模型调用认识 pi-ai、Provider、Model 与 Context。
- 2让回答逐字显示已完成
理解 AssistantMessageEventStream 与流式事件。
- 3展示 Thinking、Token 和错误状态已完成
把模型内部状态转换为桌面应用可以展示的数据。
- 4让用户自由切换模型已完成
理解 Provider、模型目录、认证和跨 Provider 兼容。
让桌面 Agent 不只是聊天
- 5让 Agent 查询桌面信息已完成
从一个文件查询工具认识 ToolCall 与 ToolResult。
- 6为什么需要 Agent Loop已完成
理解模型判断、工具执行与结果反馈形成的循环。
- 7在界面中显示工具执行过程已完成
把 Agent 事件映射成清晰的界面状态。
- 8并行工具、取消和失败恢复已完成
处理并发执行、中止、错误和停止条件。
- 9给危险操作增加用户确认已完成
建立工具权限、审批、信任与沙箱边界。
让桌面 Agent 拥有记忆
- 10多轮对话到底保存了什么已完成
区分 Agent Message、LLM Message、UI Message 与 Context。
- 11保存和恢复会话已完成
理解 Session、Entry、Repository 与持久化。
- 12会话为什么是一棵树已完成
认识 Fork、Branch 与从历史节点重新尝试。
- 13对话太长了怎么办已完成
理解上下文溢出、切点、摘要与压缩记录。
- 14在运行过程中改变 Agent 的方向已完成
使用 Steering、Follow-up 和队列控制正在运行的 Agent。
System Prompt 与上下文工程
- 15System Prompt 不是一段固定文字已完成
理解动态 Prompt、项目上下文和资源合并。
Skills:给 Agent 提供可复用的专业能力
- 16为什么 Agent 需要 Skill已完成
区分 Skill、Tool、System Prompt 与 Extension。
- 17创建第一个 Skill已完成
实现一个可运行的错误日志分析 Skill。
- 18Skill 是如何被发现和加载的已完成
走读目录扫描、Frontmatter 解析与资源冲突诊断。
- 19Skill 是如何被触发和执行的已完成
理解显式调用、自动匹配与渐进式加载。
- 20设计高质量 Skill已完成
构建可触发、可执行、可验证并且安全的 Skill。
- 21Skill 的测试、分发与治理已完成
覆盖测试、包分发、冲突处理和安全治理。
Extensions:改变 Pi 的运行方式
- 22为什么 Pi 需要 Extension已完成
从工具审批需求理解事件驱动扩展。
- 23Extension 的完整加载过程已完成
走读发现、模块加载、Factory 注册和 Runtime 绑定。
- 24Extension API 与 Runtime 原理已完成
理解注册阶段、运行阶段与 AgentSession Bindings。
- 25事件系统与拦截链已完成
追踪一次请求经过的观察、修改和阻止事件。
- 26通过 Extension 添加和包装工具已完成
理解 Tool Definition、Wrapper、审批与审计。
- 27通过 Extension 改变 Agent 行为已完成
为 Prompt、输入、模型、压缩和会话选择扩展点。
- 28高级扩展:Provider、资源与运行环境已完成
扩展模型、认证、Skills、资源、沙箱和外部服务。
- 29构建可靠的 Extension已完成
处理错误、取消、冲突、重载、并发和版本兼容。
将 Pi 嵌入桌面 Agent
- 30选择正确的集成层次已完成
比较 pi-ai、agent-core、Harness、SDK 与 RPC。
- 31使用 SDK 嵌入桌面应用已完成
使用 AgentSession、Services 和 Runtime 组织应用。
- 32使用 RPC 隔离 Agent已完成
设计桌面进程与 Pi 子进程之间的事件协议。
- 33桌面 Agent 的应用状态设计已完成
把对话、流、工具、权限和会话事件映射成 UI 状态。
把所有内容串起来
- 34组装完整桌面 Agent已完成
把对话、工具、记忆、Skills 和 Extensions 接到一起。
- 35完整源码调用链走读已完成
从用户输入一直追踪到模型回复、工具执行和会话保存。
- 36生产化与测试已完成
完成安全、恢复、评估、诊断、打包和升级检查。