附录 D — 术语表

D.1 判定相关

中文 英文 一句话 首见
判定 verdict 一次检查得出的结论,绑定在它观察到的那个版本上 章节 11
内容违规 policy violation 这次改动触碰了规则,退出码 1 小节 11.3
基建故障 infrastructure failure 判不了,退出码 2 小节 11.3
假绿 测试通过但实际没有验证任何行为 小节 12.3
变异验证 mutation verification 拿掉修复,测试必须重新变红 小节 12.2.1
哨兵下限 sentinel 一条规则至少应该看到多少个事实 小节 13.4.3
报数模式 report-only 测量并报告,但不拦截 小节 13.7
债务台账 baseline 被审阅过的历史违规清单,只允许单调收敛 小节 13.3

容易混淆的两组:

  • 判定 vs 检查 —— 判定是结论,检查是产生结论的动作
  • 报数模式 vs 豁免 —— 前者仍在测量,后者不再测量

D.2 结构相关

中文 英文 一句话 首见
不变量 invariant 一条必须保持的事实 章节 14
载体 规则存放的地方,由”什么时候需要到达”决定 小节 8.2
被挣得 earned 一个结构层必须由真实的第二个实例证成 小节 6.2
单一写者 single writer 一份可变状态只有一个地方能改 小节 4.3
组合根 composition root 唯一知道自己 owner 全部依赖的地方 小节 6.3
稀疏测量 只观测本次真正变化的那个子空间 小节 17.2

容易混淆的一组:

  • 不变量 vs 规则 —— 不变量是必须保持的事实,规则是它的可执行形态。 一个不变量可以没有规则(靠人评审),一条规则背后一定有一个不变量。

D.3 控制相关

中文 英文 一句话 首见
回路 loop 测量 → 比较 → 修正 → 再测量 小节 2.3
前馈 feedforward 在扰动产生影响之前补偿掉它 小节 5.4
反馈 feedback 测量输出,发现偏差后修正 小节 5.4
被控对象 plant 你要控制的那个东西 小节 2.3
增益 gain 每单位测得的误差,施加多少修正 小节 17.1
回路延迟 loop delay 从产生改动到判定回到手里的时间 小节 17.1
串级控制 cascade 快内环抑制大部分扰动,慢外环处理漏过来的 小节 17.3
死区 deadband 误差在某个范围内时不动作 小节 15.3.1
抗积分饱和 anti-windup 防止追一个到不了的目标时修正量无界增长 小节 8.7
传感器故障 sensor fault 测量本身坏了,而不是被测的东西坏了 章节 18
解析冗余 analytical redundancy 用第二个独立通道验第一个 小节 18.2.3
机内自检 BITE 主动注入已知故障,看传感器响不响 小节 18.2.4
观测器 observer 用模型加可测量,估计测不到的状态 小节 19.3
可观测性 observability 能否从输出推出内部状态 小节 19.1
参考输入 setpoint / reference 输出应该是多少,必须来自回路之外 小节 20.2
稳定裕度 stability margin 距离失稳还剩多少余量 小节 17.5

容易混淆的两组:

  • 前馈 vs 反馈 —— 按有没有用到输出来分,不按快慢分。 一个很快的检查仍然是反馈。
  • 增益 vs 吞吐 —— 增益是每单位误差施加的修正,吞吐是单位时间的产出。 两者在书里高度相关,但不是同一个量。

D.4 哪些词可以去别处查,哪些不能

这份表里的词分两类,而分清它们对读者有实际用处。

借来的词可以去它们的原领域查,而且那里的经验大多能用: 增益、回路延迟、串级控制、死区、抗积分饱和、传感器故障、 解析冗余、机内自检、观测器、可观测性、参考输入、稳定裕度 —— 这十二个全部来自控制工程,任何一本控制导论都讲得比我细。 借它们的价值在 小节 17.13.2:它们背后有几十年的经验, 而你不必重新撞一遍。

本地的词查不到,因为它们是这套系统自己长出来的: 载体、被挣得、假绿、报数模式、债务台账、哨兵下限。 这些词描述的是具体的机制,不是普适的概念 —— 它们在别的地方可能有别的名字,也可能根本没有名字。

区分的实际意义是:遇到一个借来的词觉得没讲透,去查原领域; 遇到一个本地的词觉得没讲透,那就是书没写好。 这份表的”首见”那一列给的正是后一种情况的去处 —— 每个词在书里第一次被完整定义的地方。

还有一个需要提醒的:借来的词只借了定性的部分小节 17.14)。你在控制教材里读到的 增益整定方法、频域分析、传递函数,在这里全都用不上, 因为这个系统没有传递函数。借它们的名字是为了借它们的结构, 不是为了借它们的计算

D.5 书里刻意避免的几个词

有些常用词在书里被刻意避开了,因为词的选择会影响思考的形状。 “AI 编码规范”被换成了载体和判定边界,因为它暗示这是一份给人看的文档; “提示词工程”被整个避开,因为我的立场是问题不在那一层; “质量门禁”被换成判定;“最佳实践”被整个避开, 因为写不出失败形态的建议不该被叫做实践; “AI 幻觉”被换成语义失败;“自动化”被换成判定或观测器, 因为它太笼统,掩盖了”它在做什么”这个问题。

其中”门禁”那一处值得展开。这个词自带一个两态的模型: 开或关,通过或拒绝。我的核心主张之一,就是两态是不够的小节 11.3)—— 必须有第三态。 用”门禁”这个词思考,很难想到第三态; 用”判定”这个词,第三态是自然的,因为”判不了” 本身就是一种判定结果。

“幻觉”那一处同样重要。把语义失败叫做”幻觉”, 会让人以为它是一种偶发的、可以被消除的缺陷 —— 它不是。 它是”从一个你无法完整指定的分布里采样”的必然结果 (小节 2.2),而这个认识决定了修法: 不是去消除它,是在它外面闭一个带测量的回路。 一个词的选择在这里直接决定了路线图指向哪一半。

D.6 几个词的中英对应有争议

标注几处翻译取舍。

invariant 译作”不变量”,数学上通常译”不变式”, 但在工程语境下”不变量”更常见,且不易和”表达式”混淆。 verdict 译作”判定”,也可译”裁定”或”结论”; 选”判定”是因为它同时是名词和动作, 而这套系统里两者确实是同一件事 —— 一次检查产生一个判定。

plant 译作”被控对象”,这是控制论的标准译法, 字面是”设备/装置”,在书里指的是模型加上它的运行环境。 setpoint 译作”参考输入”,也可译”设定点”; 两者在书里交替使用,因为”设定点”更直观, 而”参考输入”更强调它来自回路之外(小节 20.2)。

feedforward 译作”前馈”,这个词容易和”前置”混淆。 它的准确含义是在测量到误差之前就施加的控制作用, 依据是对扰动的先验知识,不是对输出的观测 —— 所以一个跑得很快的检查仍然是反馈,而不是前馈。

D.7 按主题重新索引

术语按定义分了三组,这里按你在什么情况下会需要它们再索引一遍, 因为查术语表的人通常不是按类别查的,是按处境查的。

当你在设计一道检查时,你需要的是判定、内容违规、基建故障、 哨兵下限、报数模式、债务台账这一组, 而核心问题是”这道检查坏了会表现成什么”(小节 18.14)。

当你在决定一条规则放哪时,你需要的是载体、前馈、反馈、不变量, 而核心问题是”它什么时候需要到达”(小节 8.2)。

当你在排查一次故障时,你需要的是假绿、单一写者、可观测性、观测器, 而核心问题是”七个形状里,这次是哪一个”(小节 4.10)。

当你在判断该不该继续投入时,你需要的是增益、回路延迟、 稳定裕度、串级控制、参考输入, 而核心问题是”现在的瓶颈在哪一侧”(小节 16.11)。

D.8 三个最容易被误用的词

“判定”不等于”检查”。 一次检查可能产出三种判定之一, 而”判不了”也是一种判定 —— 把两者混用会让人忘掉第三态的存在(小节 11.8)。

“覆盖”不等于”守住”。 覆盖率说的是”跑到了”, 而我关心的是”守住了”—— 两者的差距就是假绿的全部藏身之处 (小节 12.12)。所以书里 一条”必须写测试”的规则都没有(小节 A.9.1)。

“自动化”不等于”有判定”。 一个自动化的任务如果不产生 任何可被消费的结论,它只是”自动地做了一件事”, 而不是”自动地判断了一件事”。那 28 条定时任务全都是自动化的, 而它们没有一条产生判定(小节 9.6)—— 这个区分是那个四个月缺口的核心。

D.9 这里的用法比通常更窄

有三个词在这里的用法比通常更窄,值得单独标出来, 因为读者很可能带着更宽的理解进来。

“判定”在这里不包括”人看了觉得没问题”。 日常语境里一次评审通过也算一次判定, 而这里的判定要求同一份输入在不同时刻、 由不同执行者产生同样的结论—— 这条要求把人的判断排除掉了, 不是因为人不可靠,是因为人不可重复。

“规则”在这里不包括建议。 一条规则必须有一个 可执行的部分和一个明确的失败形态 (小节 8.3.1)。 “应该尽量复用共享层”不是规则,它是一个倾向; “重新实现共享层已提供的能力是一个缺陷”是规则, 因为它把倾向变成了一个分类判断。

“环境”在这里不包括运行环境。 我说的”环境” 指的是 Agent 动手前能读到的一切 —— 目录结构、 架构约束、规则的载体、可用的工具 —— 而不是操作系统、容器镜像或者环境变量。 后者在这里叫”执行环境”, 而它属于形状 G(本地≠远端)的范畴。

三处收窄的共同动机是一样的:让这些词能被用来做判断。 一个宽泛的”判定”没法回答”这道检查算不算判定”, 而收窄之后可以。这也是这份术语表存在的理由 —— 不是为了解释生词,是为了让书里的每一句话 都有一个确定的含义(小节 D.4)。

D.10 一句话记住整套词汇

如果把这份术语表压成一句话:

在一个你不能控制输出的系统外面, 用可信的测量(判定)画出边界(不变量), 让规则在正确的时刻到达(载体), 并且始终知道测量本身还活着(哨兵、冗余、自检)。

四个括号,对应全书四个部分 —— 而它们的顺序也是建设的顺序: 先有边界,再有到达机制,最后才有对测量本身的验证。

D.11 保留英文的

有三个词书里保留了英文。worktree 保留是因为它是版本控制的命令名, 译成中文之后读者没法拿它去查文档;skillguide 保留是因为它们是这套体系里的专有角色名, 译名会和普通的”技能”“指南”混淆;flake 保留是因为 “偶发失败”没有它准确,而且它在测试领域已经是通用术语。