Perslis Defense
PERSLIS DEFENSE · 第一章 · 运行时

运行时。

规划器 —— 习得的、脚本的或人类的 —— 负责提议。地板决定什么可以执行。这条边界就是全部产品,而且它是一份在四个领域里都未曾改变的契约。

契约

像素 / 遥测  →  事实  →  可容许集合  →  目标  →  投影  →  记忆  →  动作
                              ▲                                    │
                              └──────────  一次带证据的拒绝  ───────┘

只有最左边那一级是领域专用的。把 Atari 像素换成 CARLA 车辆状态、Doom 画面、判例法或基因变异,改变的只是事实抽取器 —— 而且我们用一条依赖边而非示意图来证明:freeway-floor 原样导入了 invaders_floor.failure_memory。

可容许集合就是机制本身

多数安全层位于规划器之后,否决它的输出。这一层位于之前:规划器从来看不到完整动作空间,只看到地板在当前状态下已经宣告为可容许的部分。

事后否决

规划器先给出动作,检查器拒绝,规划器再试。延迟无界,规划器可能被逼入死角,而且这种拒绝不携带规划器能利用的理由。

事前限制

选项在被选择之前就已消失。单趟、延迟有界,而且地板移除某项时会指名它所应对的危险,并引用赢得该规则的那些事件。

一条无法指名危险的规则在构造时就被拒绝。描述危险不存在的签名,可以与死亡任意高度相关,却依然是迷信 —— 事前拒绝它们,比事故之后再去解释便宜得多。

回路中没有模型

运行时不含权重,也不做任何推理调用。它在平台上离线运行,没有网络,也没有推理预算 —— 因此不存在哪个供应商能对你平台所依赖的这一层限流、涨价或停止支持,也不存在下个季度行为就变了的依赖。

相同状态进,相同决策出,每一次都如此。这正是第五章那份日志有价值的前提:一个非确定性的安全层无法回放,而无法回放的层无法取证。

执行器共 303 行仅依赖标准库的 Python,可直接下载 →

下一章

第二章 —— 我们真正测量到了什么,包括它在哪里失效 →