一套运行时,托底
每一台会移动的机器。
一辆汽车、一架四旋翼、一条机械臂——安全问题都是同一个:在对世界有可信读数的前提下,这个被提议的动作是否可准入,而且我们能否独立于是谁提议了它来强制执行这一判定?Perslis Motion 引擎用六个阶段来回答它,每一次都以同样的方式。
Perslis 不是司机。
它是刹车。
Perslis 是位于概率智能与执行机构之间的安全与控制护栏。规划器——任何模型,你的或我们的——可以提议“变道”或“加速”。随后由一个确定性层判断该动作在当前状态、约束、权限与安全不变量下是否可准入。不可准入的动作,永远到不了执行机构。
模型无法绕过地板。
每条指令在执行前都必须经过准入层;没有通往执行机构的旁路。一个敌对或损坏的规划器,正是我们的测试。
不安全的指令被确定性地拒绝。
同样的状态、同样的指令、同样的裁决,每一次都如此——并附上写明触发不变量的收据。不是概率,不是策略,而是一条你能读懂的规则。
置信度或状态不足 → 进入已知安全状态。
当世界状态过期、传感器不一致、或规划器置信度低于门槛时,地板不猜:它驶向预先定义的回退——减速、停车、保持。
模型会开车。我们造刹车。
升级路径很简单:带上你的模型,装上刹车。能力仍是你的;准入、拒绝与安全回退成为模型之下的一层经验证的机制,并附带审计轨迹。
它不是规则引擎。
它只是一个问题。
核心原语不是一张庞大的 if-then 表格。它是一个问题,对控制器提议的每一个候选动作持续不断地发问:
这个被提议的动作,会不会在时域 H 内把机器驱入某个禁止状态?
如果接下来这段短时域内的可达集与某个禁止区域相交——一名行人、一条地理围栏、一个人体禁区——该动作就绝不会按提议执行。正是这个可达性检查让护盾真正安全,而不只是被动反应:它足够提早地刹车、钳制或接管,使那个禁止状态从一开始就不可达。
状态 → 可达性 → 不变量
→ 准入 → 执行 → 验证。
1 · 状态
对世界的类型化读数:位置、速度、加速度、朝向、轨迹、附近物体、边界、执行器状态。当下的落地依据是仿真的真值;真实部署则由经过验证的感知来喂给它。
2 · 可达性
把候选动作在时域 H 上前向投影。哪些状态变得可达?这就是"我们现在太近了"与"这个动作保证我们来不及停下"之间的区别——后者才是护底会据以采取行动的。
3 · 不变量
以约束形式陈述的安全集:最大速度与加速度、碰撞包络、地理围栏/道路/车道边界、最小间距、禁行区域、执行器极限。不变量可组合——每一条都进一步收紧动作。
4 · 准入
ALLOW · CLAMP · DENY · EMERGENCY。候选动作被原样执行、被收紧到最近的安全值、被拒绝,或被一个安全接管(刹车、悬停、停机)替换。
5 · 执行
只有被准入的动作才能抵达执行器。控制器从不直接触碰硬件——护底始终处在"提议"与"运动"之间的路径上。
6 · 验证与回退
每一次接管都被记录为一张凭据。若状态变得未知、矛盾、陈旧,或传感器掉线,运行时便切换到预先定义的安全行为——它从不在退化的世界里去问模型该怎么办。
换掉提议者。
引擎纹丝不动。
六个阶段里没有任何一环取决于是谁提议了这个动作。这正是重点:安全论证从不建立在"智能足够好"之上。你可以自由地更换驾驶者——
——而引擎毫无变化。这也是为什么你几乎可以在完全不挑选 AI 模型的情况下,就把它绝大部分建成。