Skip to content

术语表

全书关键术语的统一定义。每个词条给出:定义、首次讲解章节、深入章节。译法全书统一(见排版约定)。按主题分组,组内按学习顺序排列。

语言与运行环境

术语定义讲解章节
JavaScript(JS)最初为浏览器设计、现已通用的动态类型编程语言1.1
Node.js让 JavaScript 在浏览器之外运行的运行时环境,提供文件、网络、进程等 API1.1
TypeScript(TS)在 JavaScript 之上增加静态类型系统的语言,需编译/转换为 JS 后执行1.1
编译(compile)/ 类型检查把 .ts 源码检查并转换为 .js 的过程;类型只存在于编译期1.2
tsx直接运行 .ts 文件的命令行工具(内部完成即时转换),Pi 的 pi-test.sh 也用它1.2
npmNode.js 的包管理器:安装依赖、运行脚本、访问 registry1.3
package.json一个 npm 包/项目的清单文件:名称、版本、脚本、依赖1.3
依赖锁定(lockfile)package-lock.json 精确记录整棵依赖树的版本,保证可复现安装1.3
monorepo / workspaces单仓库多包结构;npm workspaces 让多个包共享一次安装并互相链接1.3 · 深入 4.3
模块(module)/ ESM以文件为单位的代码组织方式;ESM 是使用 import/export 的标准模块系统1.4
tsconfig.jsonTypeScript 项目的编译与检查配置1.2

TypeScript 类型系统

术语定义讲解章节
类型(type)编译期对值的形状约束;运行时会被完全擦除2.1
optional 属性? 标记的可缺省对象属性2.1
readonly标记属性不可再赋值的修饰符2.1
any / unknown关闭类型检查的逃生舱 / 类型安全的「未知」,使用前必须收窄2.1 · 2.4
interface描述对象形状的类型声明2.2
type(类型别名)给任意类型起名字的声明,常用于联合与组合2.2
结构化类型(structural typing)TS 按「形状」而非「名字」判断类型兼容2.2
union(联合类型)A | B:值是若干候选类型之一2.3
字面量类型(literal type)以具体值为类型,如 'text'422.3
可辨识联合(discriminated union)用公共字段(常为 type)区分成员的联合类型;Pi 的消息、内容块、事件都是它2.3
never「不可能出现」的类型,常用于 switch 的完备性兜底2.3
泛型(generic)带类型参数的函数/接口/类,让容器不丢内容物的类型2.4
类型收窄(narrowing)通过 typeof/in/instanceof/判别字段等把宽类型缩小为具体类型2.4
type guard形如 x is T 的自定义收窄函数2.4

异步与事件

术语定义讲解章节
事件循环(event loop)Node.js 单线程调度异步任务的机制2.5
Promise表示「未来才有结果」的对象,三态:pending/fulfilled/rejected2.5
async/await以同步写法消费 Promise 的语法2.5
异步迭代器(Async Iterator)可以逐个、异步地产生值的对象;LLM 流式输出的天然形状2.6
异步生成器(async function*)用 yield 产生异步序列的函数2.6
for await…of消费异步迭代器的循环语法2.6
事件订阅(on/emit)「发生了什么就通知谁」的解耦模式;Node 内置 EventEmitter2.7
AbortController / AbortSignal标准取消原语:controller 发令,signal 层层传递到最底层 I/O2.7 · 深入 5.6

LLM 与 Agent

术语定义讲解章节
LLM(大语言模型,Large Language Model)输入 token 序列、预测输出 token 的模型;本书视为黑盒3.1
Provider(模型服务提供方)提供模型 API 的厂商/服务(Anthropic、OpenAI、Google…)3.1 · 深入 6.2
system / user / assistant三种消息角色:系统指令 / 用户输入 / 模型输出3.1
API Key调用模型服务的身份凭证3.1
Fake Model教学用的脚本化假模型:不联网、零成本、输出可控3.1
上下文(Context)一次模型请求携带的全部内容:系统提示词+历史消息+新输入3.2
token模型处理文本的基本单位(词元);计费与上下文窗口都以它计量3.2
上下文窗口(context window)模型单次请求能容纳的 token 上限3.2
流式输出(Streaming)模型边生成边分块返回;表现为一串增量事件3.3 · 深入 5.4
SSE(Server-Sent Events)HTTP 上服务器持续推送事件的传输格式,多数模型 API 用它做流式3.3
工具调用(Tool Calling)模型输出结构化「调用某工具」请求、应用执行后回填结果的协议3.4 · 深入 5.3
Tool Call一次具体的工具调用请求(含工具名与参数)3.4
工具结果(Tool Result)工具执行的返回,作为消息回到历史供模型继续3.4
参数校验(schema 校验)模型生成的参数是不可信的运行时数据,必须按 schema 验证3.4 · 深入 6.4
AgentLLM + 工具 + 循环 + 状态组成的自主执行体3.5
Agent Loop(Agent 循环)「请求模型→执行工具→回填结果→再请求」直至完成的循环3.5 · 深入 6.3
Agent Harness(Agent 运行框架)围绕 Agent Loop 的整套工程设施:状态、Session、取消、扩展、UI 解耦3.6
会话(Session)一次对话的持久化身份:可保存、恢复、分叉3.6 · 深入 5.56.5
上下文压缩(Context Compaction)历史过长时以摘要替换旧消息、释放上下文窗口的机制3.7 · 深入 6.6
扩展(Extension)不改核心源码为 harness 增加工具/命令/行为的代码插件3.7 · 深入 7.1
技能(Skill)以文档形式按需注入的「怎么做某类事」的知识3.7 · 深入 7.2

Pi 专有

术语定义讲解章节
pi-ai@earendil-works/pi-ai:统一多 Provider 的 LLM 接口层6.1
pi-agent-core@earendil-works/pi-agent-core:Agent 运行时(循环、工具执行、Harness)6.3
pi-coding-agent@earendil-works/pi-coding-agentpi 命令的产品层5.1
pi-tui@earendil-works/pi-tui:终端 UI 库(差分渲染)6.9
AgentSessioncoding-agent 的核心对象:组装模型、工具、扩展、会话为一体5.2
streamFn「向模型发起一次流式请求」的函数抽象;Harness 与具体 Provider 的解耦点6.1
交互模式 / print 模式 / JSON / RPC 模式pi 的四种运行模式,由 TTY 与 --mode 决定4.4 · 6.10
差分渲染(differential rendering)只重绘终端上变化部分的渲染策略6.9
会话树 / 分支(branch)Session 条目以 parent 指针构成的树;压缩与分叉产生分支6.5
SDK把 pi 作为库嵌入自己程序的编程接口6.11
Prompt Template(提示词模板)可复用的提示词文件(斜杠命令形式展开)6.7
TypeBoxPi 用于定义工具参数 schema 并做运行时校验的库6.4

工程与本书基础设施

术语定义讲解章节
commit hash / permalinkGit 提交的唯一编号 / 指向固定 commit 的不变链接4.2
canonical repository项目的官方权威仓库(区别于镜像/旧名重定向)4.2
CLI(命令行界面,Command-Line Interface)以文本命令交互的程序形态1.2
TUI(终端界面,Terminal User Interface)在终端里绘制的交互界面(Pi 的默认形态)4.1
TTY终端设备;程序据此判断自己是否连着交互式终端4.4
RPC(远程过程调用,Remote Procedure Call)进程间以协议互调功能;Pi 用 stdin/stdout 上的 JSONL6.10
JSONL(JSON Lines)每行一个 JSON 对象的文本格式;Pi 的会话文件与 RPC 协议均用它5.5
Mermaid用文本描述、在页面内渲染的图表格式(本书大量使用)阅读指南

本书分析的 Pi 版本:earendil-works/pi@c13ffe1(2026-07-30)