# 术语、选型与学习检查表

## 用术语表达问题，而不是代替理解

这个章节是阅读时的速查表与阶段检查表。目标是 L1 的准确表达：看到一个缩写，能用自己的话说明它解决什么问题、边界在哪里，再跳到相关章节深入。不要把记住所有名词当作转型完成。

同一个名词在不同产品中可能有不同定义。Agent、memory、session 和 workflow 尤其容易含糊。讨论方案时应该给出运行行为，例如“由代码决定步骤”或“模型根据工具结果选择下一步”，而不只说“这是一个智能体”。

## Web 与后端术语

| 术语 | 中文解释与用途 | 需要注意的边界 |
| --- | --- | --- |
| Runtime | 运行时，负责执行程序并提供系统 API | Node 与浏览器都执行 JS，但可用能力不同 |
| Event loop | 事件循环，调度回调与异步完成 | CPU 密集同步计算仍会阻塞主线程 |
| I/O | 输入输出，例如网络、磁盘与数据库 | 等待外部系统时应考虑超时与取消 |
| Stream | 流，逐步处理数据而不必一次加载全部 | 一个 chunk 不对应业务消息边界 |
| Backpressure | 背压，消费者跟不上时限制生产速度 | 忽略它会积累内存 |
| DTO | 数据传输对象，定义跨边界的字段 | 不应该直接暴露所有数据库字段 |
| Schema | 数据结构与约束描述 | 结构通过不代表事实或权限正确 |
| Middleware | 中间件，处理请求链上的通用逻辑 | 顺序会影响认证、校验和错误处理 |
| Idempotency | 幂等，重复同一操作不增加额外副作用 | 需要明确操作身份与并发实现 |
| Transaction | 事务，把相关数据库操作作为一个单元 | 不能自动回滚已经发出的外部邮件 |
| Isolation | 隔离性，描述并发事务如何互相观察 | 不同级别有不同异常与成本 |
| Migration | 数据迁移，按版本改变数据库结构 | 回滚代码不保证能回滚不兼容数据 |
| Session | 会话，服务端识别持续用户身份的机制 | 不等于聊天对话，也不等于模型上下文 |
| RBAC | 按角色分配权限 | 还要检查具体资源是否属于允许范围 |
| Tenant | 租户，一个相互隔离的组织或数据空间 | 查询、缓存和任务都要带正确范围 |
| Queue | 队列，把任务与执行时间解耦 | 消费者应假设任务可能重复到达 |

## Node 与 Electron 新课程术语

这些术语会在新课程中反复出现。先能区分它们，再进入具体 API；不要求在第一天背完整张表。

| 术语 | 中文解释与用途 | 对应学习入口 |
| --- | --- | --- |
| ESM / CommonJS | 两套模块协议，决定依赖如何声明、加载和导出 | [模块系统](node-module-system.html) |
| cwd | 进程的当前工作目录，不一定是源码文件所在目录 | [第一个 Node 程序](node-start.html) |
| libuv | Node 用于事件循环与部分异步工作的平台层；并非所有异步都走同一个线程池 | [事件循环](node-event-loop-deep.html) |
| Buffer | 固定长度字节序列；编码决定字节怎样解释成字符 | [Buffer 与编码](node-buffer-encoding.html) |
| Worker thread | 用独立 JavaScript 执行线程处理工作；不是为每个普通 I/O 默认创建一个线程 | [进程与 Worker](node-process-workers.html) |
| main / renderer | 主进程管理应用和系统能力，渲染进程承载网页 | [桌面运行模型](electron-mental-model.html) |
| preload | 页面脚本之前运行的桥接脚本，在渲染进程中执行，不能当作第三个进程 | [隔离与能力桥](electron-preload-isolation.html) |
| contextIsolation | 隔离页面与 preload 的 JavaScript 世界，不替代业务参数验证 | [隔离与能力桥](electron-preload-isolation.html) |
| sandbox | 限制渲染进程直接使用系统资源，权限操作通过受控接口完成 | [安全边界](electron-security-boundaries.html) |
| IPC | 进程间通信，需要定义输入、输出、发送者、错误和资源生命周期 | [IPC 合同](electron-ipc-contracts.html) |
| userData | 应用的用户数据目录，不是安装资源目录，也不天然代表加密存储 | [本地数据](electron-local-data.html) |
| ASAR | Electron 常用的应用资源归档格式，不是源码加密或数据保险箱 | [打包与分发](electron-package-release.html) |
| ABI | 二进制接口兼容约定，影响原生模块能否被目标运行时加载 | [本地数据](electron-local-data.html)、[升级维护](electron-upgrade-maintenance.html) |
| revision / schemaVersion | 前者描述业务数据修改版本，后者描述持久化结构版本 | [完整笔记项目](electron-project.html) |

## AI 应用术语

| 术语 | 中文解释与用途 | 需要注意的边界 |
| --- | --- | --- |
| Token | 模型处理文本等输入的基本单位 | 不等于一个汉字或一个英文单词 |
| Context window | 单次模型处理可容纳的上下文范围 | 容量大不代表每个细节都能准确利用 |
| Prompt | 发送给模型的指令与示例 | 无法代替服务端权限和安全约束 |
| Context engineering | 组织当前任务所需信息、工具与状态 | 核心是选择有用信息而非无限追加历史 |
| Hallucination | 生成缺乏事实支持的内容 | 语气自信不代表有依据 |
| Embedding | 把内容映射成向量表示 | 相似度不是事实正确性概率 |
| RAG | 先检索证据再生成回答的方法 | 不改变模型参数，需要管理资料生命周期 |
| Chunk | 文档切分后的检索单元 | 太小缺上下文，太大可能稀释信号 |
| Hybrid search | 组合关键词和向量等检索方式 | 分数尺度不同，不能总是直接相加 |
| Reranker | 对候选结果重新排序的模型或规则 | 增加质量也可能增加耗时与成本 |
| Grounding | 把回答约束在提供的证据上 | 引用看起来正确仍需核验支持关系 |
| Structured output | 按 schema 输出结构化结果 | 类型合法不代表业务内容合法 |
| Tool calling | 模型提出结构化工具调用请求 | 真正执行由程序决定与完成 |
| Workflow | 由代码预定义的多步骤流程 | 不要求每一步由模型决定 |
| Agent | 根据环境反馈动态选择动作的执行循环 | 需要步数、时间、权限和预算边界 |
| MCP | 连接模型应用与外部能力的协议 | 协议版本、传输与认证需要对齐 |
| Memory | 跨步骤或会话保留的信息 | 来源、权限、保留期限和失效规则很重要 |
| Fine-tuning | 用数据调整已有模型的参数 | 不保证把最新资料准确变成可更新知识库 |
| Inference | 使用模型参数计算输出 | 与训练是不同运行阶段 |
| Quantization | 使用较低数值精度表示模型等计算内容 | 资源节省与质量、硬件支持有关 |

## 质量、部署与指标

**Latency** 是耗时，需要区分首事件、首字和总完成。**p95** 表示观察样本中约 95% 的延迟不超过该值，不能只报平均数而忽略慢请求。**Throughput** 是单位时间处理量，与并发数不是同一个概念。

**Precision** 关注选出来的结果里有多少是正确的，**Recall** 关注所有正确结果里找到了多少。**Accuracy** 是整体判断正确比例，在类别极不均衡时可能掩盖失败。**Eval set** 是固定评测样例，开发集用于调试，保留集用于减少针对样例过拟合。

**Trace** 把一次请求跨多个组件的执行连接起来，**Span** 是其中一个操作区间，**Log** 是事件记录，**Metric** 是可聚合的数值。三者结合才能判断故障范围和频率。日志里存在原始模型文本，并不自动意味着日志适合长期保留。

**CI** 在变更时自动检查构建和测试，**CD** 自动化发布流程；自动化不等于没有回滚或环境区分。**Container** 打包运行环境，**Image** 是生成容器的模板；数据需要卷或外部持久化，不应只保存在可随时重建的容器文件系统。

**SLO** 是服务目标，例如成功率和响应时长；**Error budget** 把可靠性目标转成可用的失败预算。个人项目先记录真实可测指标，不必一开始建设复杂平台，但要避免凭感觉描述“稳定”。

## 按问题选技术

先问数据是否需要准确更新、是否涉及用户权限、操作是否有副作用、失败能否重试、结果如何验证。以下是设计判断的起点，不是强制选型清单。

- 精确查订单、统计金额：优先数据库查询和普通代码。
- 总结资料、提取自然语言字段：模型加结构校验与证据检查。
- 经常更新的私人资料问答：考虑检索与权限过滤，再生成回答。
- 已知固定步骤：优先显式工作流，便于测试和排错。
- 下一步依赖动态反馈：可考虑受控 Agent，设置停止条件。
- 文件解析很慢：考虑后台任务，不让请求一直占用等待。
- 大量重复读取且可容忍短期旧值：评估缓存，并设计失效。
- 有明确私有化与硬件约束：再评估本地推理及运维成本。

选型说明至少写出“当前问题、选择、代价、以后何时更换”。不要让一个流行工具倒过来决定产品必须有什么需求，也不要把无需部署第三方服务误认为没有维护成本。

## 分阶段能力检查表

**全栈基础通过条件**：能从零实现有鉴权的接口，设计关系数据，执行迁移，保护资源归属，处理事务失败，并把应用部署到可访问环境。能解释前端与服务端分别信任什么。

**模型应用通过条件**：能接入一个真实供应商，记录版本与配置，处理结构错误、超时、拒答、流中断与用量。能判断哪些错误可以重试，哪些需要修改输入或降级。

**知识库通过条件**：能维护文档更新与删除，建立固定问题集，区分检索遗漏和生成错误，提供可核对引用，保证权限在检索前过滤和访问时复查。

**业务 Agent 通过条件**：工具权限由服务端控制，写操作有确认和幂等，执行有限步数与时间，失败可恢复，日志能追踪结果。能解释为什么需要动态选择，而不是固定流程。

**个人专业优势通过条件**：复杂状态仍然易理解，长内容可阅读，取消与重试行为准确，键盘与移动端可用。你能够接管 AI 生成的代码，定位问题并说明方案取舍。

## 练习

挑选五个容易混淆的术语，用自己的业务例子解释区别：Token 与字符、会话与上下文、类型与校验、RAG 与微调、取消与撤销。每组给出一个误用后会出现的错误。

<details>
<summary>参考答案</summary>

把 token 当字符会估错上下文预算；把会话记录等同于当前上下文会误以为模型看到所有历史；把类型断言当校验会接受外部坏数据；用微调代替实时资料检索可能保留过期知识；把关闭请求当撤销操作会让用户以为任务未创建，而数据库已经写入。

</details>

## 自测

**问：Embedding 相似度 0.9 能否展示成“答案 90% 正确”？** 答：不能，两个量没有这种直接对应关系。

**问：学习一套 Agent 框架是否等于掌握 Agent？** 答：还要理解执行循环、工具契约、权限、恢复与评测。

**问：什么时候需要继续深入训练？** 答：当任务确实需要调整模型行为，并且已有数据、基线与评测能证明必要性时。

## 官方参考与继续学习

- [MDN：Web 技术文档](https://developer.mozilla.org/en-US/docs/Web)
- [Node.js API](https://nodejs.org/api/)
- [PostgreSQL 文档](https://www.postgresql.org/docs/)
- [Hugging Face：LLM 课程](https://huggingface.co/learn/llm-course/chapter1/1)
- [MCP 规范](https://modelcontextprotocol.io/specification/latest)
- [OpenTelemetry：可观测性概念](https://opentelemetry.io/docs/concepts/observability-primer/)
