Skip to content

附录


A. 术语表

术语英文说明Java 等价
联合类型Union TypeA | B | C,值可以是多种类型之一sealed interface
判别式联合Discriminated Union通过公共字段区分的联合类型sealed + record 模式匹配
类型收窄Type NarrowingTypeScript 根据条件自动缩小类型范围instanceof 检查后的强制转换
泛型约束Generic Constraint<T extends Schema><T extends Comparable<T>>
类型守卫Type Guardx is Foox.type === "foo"instanceof
TypeBox-运行时 JSON Schema + 编译时类型推断的库Jackson + Bean Validation
Static<T>-从 TypeBox Schema 推导出 TypeScript 类型编译时生成的 POJO
async/await-异步编程语法糖CompletableFuture.join()
Promise-异步操作的容器CompletableFuture
解构赋值Destructuringconst {a, b} = objJava 16+ 模式匹配
展开运算符Spread[...arr, item]List.copyOf() + add()
闭包Closure捕获外部变量的函数Lambda 表达式
模块Module一个 .ts 文件就是一个模块一个 .java 文件
export-导出(公开)成员public
import type-仅导入类型信息,编译后删除无直接等价
satisfies-验证类型但不改变推断无直接等价
readonly-只读属性final
Optional (?😃-可选属性@Nullable
null 合并 (??)-a ?? b,a 为 null/undefined 时返回 bOptional.orElse()
JSONLJSON Lines每行一个 JSON 对象的文件格式类似 CSV 但用 JSON
Append-Only-只追加不修改的存储模式Event Sourcing
jiti-TypeScript 运行时加载器类似 ClassLoader

B. 设计模式索引

本书涉及的设计模式及其在 Pi 中的体现:

模式Pi 中的实例说明
策略模式AgentTool 接口每个工具是一个策略
工厂模式createReadTool(), createBashTool()工具创建通过工厂函数
观察者模式agent.subscribe(listener)事件订阅机制
适配器模式wrapToolDefinition()ToolDefinition → AgentTool
注册表模式apiProviderRegistry全局 Provider 注册表
模板方法Agent Loop固定的循环骨架,可变的钩子
依赖注入Operations 接口通过接口注入文件系统操作
建造者模式AgentOptions复杂对象的构建
命令模式ToolCallLLM 的工具调用是命令对象
状态模式AgentStateAgent 的运行状态
迭代器模式AssistantMessageEventStream流式事件的异步迭代器
拦截器模式beforeToolCall / afterToolCallAOP 的函数式实现
队列模式PendingMessageQueueSteering/FollowUp 消息队列
快照模式createContextSnapshot()不可变的上下文快照
ServiceLoaderregisterApiProvider()Java SPI 的 TypeScript 版本

C. 文件导航

快速查找关键文件:

想理解... → 看这个文件

你想理解文件路径
LLM 调用是怎么工作的packages/ai/src/stream.ts
消息类型有哪些packages/ai/src/types.ts
Provider 怎么注册的packages/ai/src/api-registry.ts
Agent Loop 核心循环packages/agent/src/agent-loop.ts
Agent 类的全部 APIpackages/agent/src/agent.ts
工具是怎么定义的packages/coding-agent/src/core/tools/read.ts
工具参数 Schemapackages/coding-agent/src/core/tools/read.ts (前 30 行)
会话怎么持久化的packages/coding-agent/src/core/session-manager.ts
上下文怎么压缩的packages/coding-agent/src/core/compaction/compaction.ts
扩展 API 全部接口packages/coding-agent/src/core/extensions/types.ts
扩展怎么加载的packages/coding-agent/src/core/extensions/loader.ts
怎么写一个扩展packages/coding-agent/examples/extensions/dynamic-tools.ts
AgentSession 怎么组装的packages/coding-agent/src/core/agent-session.ts (前 100 行)
CLI 入口在哪里packages/coding-agent/src/cli.ts
系统提示词怎么构建的packages/coding-agent/src/core/system-prompt.ts
内置工具有哪些packages/coding-agent/src/core/tools/index.ts
TUI 怎么实现的packages/tui/src/tui.ts

D. 延伸阅读

官方文档

TypeScript 学习资源

AI Agent 相关

设计模式

  • 《设计模式》-- GoF
  • 《Effective Java》-- Joshua Bloch
  • 《Clean Architecture》-- Robert C. Martin

E. 常见问题

Q: 我完全不懂 TypeScript,能读懂这本书吗?

A: 可以。第一章就是专门为 Java 开发者写的 TypeScript 速成。每一章都有 ⚡ Java 对照 标记,帮你把新概念映射到已知的 Java 概念。

Q: 我需要把 Pi 的源码克隆下来吗?

A: 强烈建议。本书的 📌 源码定位 标记指向具体的文件和行号,你可以边读边看源码。

Q: 我想基于 Pi 开发自己的 Agent,应该从哪里开始?

A: 先读完前六章理解核心架构,然后直接跳到第十一章动手实践。第十章的扩展系统是日常开发最常用的部分。

Q: 本书的源码版本会更新吗?

A: 本书基于 Pi v0.70.6。如果 Pi 有重大架构变更,我们会更新对应章节。

Q: 我发现书中有错误,怎么反馈?

A: 请开一个 Issue,或者直接提交 Pull Request。


第十一章:实战 | 目录

基于 MIT 许可证发布