前六篇讲的是上线前(评测)与上线后看(可观测、可追溯)。这一篇讲两件补充的事。第一件是运行时:上线后在请求路径上拦住坏输出——guardrails、置信度与拒答、幻觉检测、fallback——它们是评测发现的失效模式在生产里的最后一道网。第二件是物理世界:自动驾驶、机器人、工业控制的失败可能致命且不可逆,”评测”不能在真实世界里做,于是验证被做成了一门独立的工程——仿真。地图把它作为应用栈的对照案例;这一篇讲仿真的层次、开环与闭环、sim-to-real、覆盖率与长尾、影子模式,以及它与数字 agent 的沙箱环境、录制回放、红队集的同构关系。

本篇要回答的核心问题是:

运行时 guardrails 在哪一步拦什么,幻觉检测的实际手段与成本是什么?1 物理世界的仿真有哪些层次,开环与闭环、sim-to-real、覆盖率各是什么问题?2 影子模式与 HIL / SIL 是什么,数字 agent 的评测与物理世界的验证有什么同构?3

一、总览

1. 两条防线

%%{init: {"flowchart": {"wrappingWidth": 320}}}%%
%% 图:请求路径上的两道检查与 fallback;评测发现的失效模式做成运行时检查
flowchart TB
    U["请求"] --> I["输入侧检查:注入特征、越界请求、敏感信息(只降概率,不是防线)"]
    I --> LLM["模型 / agent"]
    LLM --> O["输出侧检查:schema、引用是否存在、置信度、幻觉检测、敏感词"]
    O -- "通过" --> Rr["返回用户"]
    O -- "不通过" --> FB["fallback:拒答 + 说明 / 降级到更保守的 prompt 或模型 / 转人工"]
    E["上线前的评测(第一到四篇)发现的失效模式"] -. "做成运行时检查" .-> O

上线前与运行时两条防线
  上线前 运行时
目的 证明改动更好(分布上) 拦住这一次的坏输出(单次)
手段 评测集、judge、门禁 guardrails、置信度、拒答、在线 judge 拦截、fallback
代价 评测成本、发布延迟 每请求的延迟与成本、误拦
关系 评测发现失效模式 → 运行时加对应的拦截 → 拦截事件进 bad case 队列 → 评测集补 闭环

2. 物理与数字

数字 agent 与物理世界的对照
  数字 agent 物理世界(自动驾驶 / 机器人)
失败的代价 可回滚(多数) 不可逆、可能致命
能在生产里试吗 灰度、影子可以 不行——验证在真实世界之外
“测试环境” 容器快照、录制回放、评测集 仿真(一门工程)、日志回放、影子模式、封闭场地
长尾 bad case 队列积累 仿真放大稀有场景
自主级别的判据 能自动验证到什么程度(《工具、Agent 与 harness(08):memory 与 human-in-the-loop》) 同一判据的最严格版本:SAE 每升一级验证体系跳一个量级

3. 本文的章节安排

第二章运行时 guardrails;第三章置信度、拒答与幻觉检测;第四章 fallback;第五章物理世界为什么不能在生产里试;第六章仿真的层次;第七章开环 / 闭环、sim-to-real、覆盖率;第八章影子模式、HIL / SIL 与同构;第九章实践建议。

二、运行时 guardrails

1. 位置

%% 图:输入侧与输出侧检查的位置
flowchart TB
    U["用户输入"] --> I["输入侧检查"]
    I -->|"通过"| C["上下文组装"]
    I --> B["拦"]
    C --> M["模型"] --> O["输出侧检查"]
    O -->|"通过"| A["工具 / 呈现"]
    O --> F["拦 / 改写 / 重试 / 降级"]
    classDef check fill:#eef6ff,stroke:#5b8fd6,color:#222
    classDef stop fill:#fdecea,stroke:#c0392b,color:#222
    class I,O check
    class B,F stop

2. 输入侧

输入侧的运行时检查
检查 手段 动作
注入 规则(已知模式)+ 分类器 + 对工具返回的隔离标记 标记 / 拒绝 / 降低该段内容的权重
敏感信息 PII 识别 脱敏后继续,或拒绝
越界请求 分类器(这不是本产品处理的事) 拒答出口
长度与格式 规则 截断 / 拒绝
速率与配额 《模型作为组件(06):客户端工程——重试、超时、幂等、限流与流式解析》 限流

输入侧对注入的检测只是降低概率——真正的防线是 《工具、Agent 与 harness(05):权限、沙箱与安全边界》的四层与 L6 的分层防御;这里的检查是第一层。

3. 输出侧

输出侧的运行时检查
检查 手段 动作
格式与 schema 规则(《Prompt 与上下文工程(03):结构化输出——约束解码、schema 设计与失败修复》的解析层) 带错误重试一次 → 降级
业务校验 规则(金额范围、日期合法、id 存在) 同上
引用存在性 规则(引用的块 id 在检索结果里) 去掉无依据的断言或重试
敏感信息 PII / 凭据识别 脱敏 / 拦
有害内容 分类器 拦 + 记录
忠实度(抽样) 在线 judge(第四篇) 低分标记;高风险场景同步拦
动作 《工具、Agent 与 harness(05):权限、沙箱与安全边界》的四层 权限 / 审批 / 沙箱

4. 代价

每项检查加延迟(规则微秒到毫秒、分类器几十毫秒、judge 几百毫秒到秒)与误拦率——把正常请求拒了是另一种失败(第三篇的误拒率)。同步拦截只放在高风险路径(对外发送、不可逆动作、合规敏感),其他走异步标记进队列。

%% 图:运行时 guardrails 的位置与代价——输入侧(注入 · PII · 越界 · 长度 · 限流)在上下文组装之前拦;输出侧(schema · 业务校验 · 引用存在 · PII · 有害 · 忠实度 · 动作四层)在工具执行与呈现之前拦 / 改写 / 重试 / 降级;规则微秒级同步做,分类器几十毫秒,judge 几百毫秒只放在高风险路径同步、其余异步标记进队列
flowchart TB
    U["用户输入 / 工具返回"] --> IN["输入侧检查<br/>注入模式(规则 + 分类器)· PII 脱敏 · 越界分类 · 长度 · 限流"]
    IN -->|"通过 / 标记或降权后继续"| CTX["上下文组装 → 模型"]
    IN -->|"拦"| BLOCK["拒绝 / 拒答"]
    CTX --> OUT["输出侧检查<br/>schema · 业务校验 · 引用存在性 · PII / 凭据 · 有害内容"]
    OUT -->|"过"| HR{"高风险路径?<br/>对外发送 · 不可逆 · 合规敏感"}
    HR -->|"是"| SYNC["同步:忠实度 judge(几百 ms)+ 动作四层"]
    HR -->|"否"| ACT["工具执行 / 呈现"]
    HR -. "否:异步抽样" .-> ASYNC["异步:judge 抽样标记进队列<br/>不加请求路径延迟"]
    SYNC -->|"通过"| ACT
    SYNC -->|"不过"| STOP["拦"]
    OUT -->|"不过"| FIX["带错误重试一次 → 降级 / 拒答出口"]
    C["代价:每项检查加延迟 + 误拦率<br/>规则 µs · 分类器几十 ms · judge 几百 ms–s"] -.-> OUT
    classDef n fill:#fff7e0,stroke:#c98a00,color:#222
    classDef dec fill:#eef6ff,stroke:#5b8fd6,color:#222
    classDef ok fill:#eefaf0,stroke:#4d9a5c,color:#222
    classDef bad fill:#fdecea,stroke:#c0392b,color:#222
    class U,IN,CTX,OUT,SYNC,ASYNC n
    class HR dec
    class ACT ok
    class BLOCK,STOP,FIX,C bad

三、置信度、拒答与幻觉检测

1. 模型没有可靠的置信度

模型说”我确定”不代表确定(《模型作为组件(01):失效模式——非确定性、幻觉、上下文与越界,把「模型会出错」拆成七条可检测的性质》)。可用的信号:结构化输出里的显式拒答出口(《Prompt 与上下文工程(03):结构化输出——约束解码、schema 设计与失败修复》)——模型自己说”信息不足”比自己打的置信分可靠;logprobs(部分 API 提供)对短答案有一定校准;自一致性——同一问题采样 k 次看一致率,一致率低说明不确定(成本 k 倍,只用于高风险)。

2. 拒答的设计

该拒的拒、不该拒的不拒(第三篇的两半)。运行时:拒答出口被触发时给用户的呈现(L7)——说明缺什么、下一步能做什么,而不是一句”无法回答”;拒答率进面板(骤升 = 检索 / 权限 / 模型出问题——《检索与知识接入(07):检索评测与运营》)。

3. 幻觉检测的实际手段

幻觉检测的实际手段
手段 做法 成本 适用
引用对照 答案的每个断言必须能定位到检索结果的某块(规则 + 轻量 judge) 低到中 RAG
自一致性 k 次采样,断言在多数样本里出现才保留 k 倍 高风险单步
事实核对工具 让模型(或另一个 agent)用检索 / 计算器验证关键断言 中到高 数字、日期、实体
结构化证据 schema 里要求每个结论带 evidence 字段引用原文 低 抽取、分类
结果校验 agent 声称完成 → 读回状态核对(《工具、Agent 与 harness(09):可靠性、评测与运营 agent》) 低 agent
judge 抽样 faithfulness judge 跑在流量抽样上 中 全部(异步)

没有一种能”检测所有幻觉”;能做的是让高风险断言必须有依据、没有依据的不呈现为事实(L7 的呈现)。

四、fallback

《模型作为组件(06):客户端工程——重试、超时、幂等、限流与流式解析》讲了方向性:推理状态不可跨供应商、加密的压缩 item 不可跨供应商、工具 schema 的方言差异。运行时 fallback 的层次:重试(同模型,瞬时错误)→ 降档(同家族更小的模型,容量或超时)→ 跨供应商(大故障;会话状态要可读才能带过去)→ 降级到非模型路径(规则回答、转人工、”稍后再试”)。每一级的触发条件、超时预算(《模型作为组件(06):客户端工程——重试、超时、幂等、限流与流式解析》的四层超时)、以及 fallback 后的质量标记(这次回答来自降档模型——进 trace,评测时分开看)。

%% 图:运行时 fallback 的四级梯子——瞬时错误先同模型重试;容量或超时降档到同家族更小模型;大故障跨供应商(会话状态要可读才能带过去,加密压缩 item 与推理状态带不过去);最后降级到非模型路径:规则回答、转人工、稍后再试;每一级触发条件不同,fallback 后的回答在 trace 里标来源
flowchart TB
    E["一次调用失败"] --> L1{"瞬时?429 · 5xx · 网络"}
    L1 -->|"是"| R1["① 重试:同模型<br/>退避 + 抖动 · 重试预算"]
    L1 -->|"容量 / 超时持续"| R2["② 降档:同家族更小模型<br/>Opus → Sonnet"]
    R2 -->|"整家不可用"| R3["③ 跨供应商<br/>会话状态要可读 · 推理状态与加密压缩 item 带不过去 · prompt 可能要调"]
    R3 -->|"都不行"| R4["④ 非模型路径<br/>规则回答 · 缓存答案 · 转人工 · 「稍后再试」"]
    R1 & R2 & R3 -.->|"trace 标记:这次回答来自哪一级"| T["评测时分开看"]
    classDef dec fill:#eef6ff,stroke:#5b8fd6,color:#222
    classDef a fill:#eefaf0,stroke:#4d9a5c,color:#222
    classDef b fill:#fff7e0,stroke:#c98a00,color:#222
    classDef c fill:#fdecea,stroke:#c0392b,color:#222
    class L1 dec
    class R1 a
    class R2,R3 b
    class R4 c
    class E,T b

五、物理世界为什么不能在生产里试

一次自动驾驶的失败可能致命、不可逆、且发生在你控制不了的环境里;一次机器人的失败可能损坏设备与伤人;一次工业控制的失败可能停产。数字 agent 的”灰度 1% 流量看看”在这里不成立——1% 的车祸不是可接受的实验代价。于是验证被推到真实世界之外:仿真、日志回放、影子模式、封闭场地,最后才是有安全员的真实道路。这条路径与 《工具、Agent 与 harness(08):memory 与 human-in-the-loop》的六级人机分工同构:SAE L2 → L3 → L4 每升一级,对应的不是模型换了一代,是验证体系跳了一个量级。

六、仿真的层次

仿真的层次
层 做什么 优点 局限 代表
场景仿真 可编程的场景(车、人、天气、路况)与物理引擎,系统在其中闭环运行 可复现、可参数化、能放大稀有场景(”雨夜横穿的行人”生成一万种变体) 渲染与行为模型与真实有差距 CARLA 一类开源仿真器;各厂自建
日志回放 真实采集的传感器数据重放给感知与规划模块 真实数据、覆盖真实分布 开环:系统的动作不改变后续输入(你刹车了,回放里的车还是照原来的轨迹开) 各厂的回放平台
传感器仿真 渲染相机 / 激光雷达 / 雷达的物理级信号 测感知模块 渲染真实度、传感器噪声模型 游戏引擎 + 物理渲染;神经渲染
数字孪生 特定场地(工厂、港口、园区)的高保真复制 对固定场景极准 只覆盖该场地 工业机器人、物流
世界模型生成 用生成模型合成场景与传感器数据(文本 / 布局 → 视频) 长尾场景的多样性、成本低 生成的物理一致性、与真实分布的差距要验证 NVIDIA Cosmos 一类世界基础模型;各厂的生成式仿真
封闭场地 真车真机器人在受控场地 真实物理 贵、慢、场景有限 测试场

一个成熟的验证体系是这些层的组合:场景仿真跑百万级场景、日志回放跑真实分布、传感器仿真验感知、封闭场地验物理、真实道路验整体——与数字世界的”单元测试 → 集成 → 影子 → 灰度”是同一形状。

%% 图:自动驾驶的验证漏斗与数字 agent 的同构——百万级场景仿真(闭环、可放大长尾)→ 日志回放(真实分布、开环)→ 传感器仿真验感知 → 封闭场地验物理 → 影子模式(真车真路、不控制)→ 有安全员的真实道路;右边是数字世界的同一形状:单元测试 → 录制回放 → 容器评测 → 影子 → 灰度 → 全量
flowchart TB
    subgraph PHY["物理世界:验证在真实世界之外"]
        direction TB
        P1["场景仿真:百万级场景 · 闭环 · 放大长尾"] --> P2["日志回放:真实传感器数据 · 开环"] --> P3["传感器仿真:验感知模块"] --> P4["封闭场地:真车真机器人"] --> P5["影子模式:真路上读全部、决策全部、不控制"] --> P6["真实道路 + 安全员"]
    end
    subgraph DIG["数字 agent"]
        direction TB
        D1["单元测试 · 容器快照的闭环评测"] --> D2["录制回放:开环"] --> D3["集成测试:接真实工具(沙箱账户)"] --> D4["影子模式:新旧并跑只记录"] --> D5["灰度 1–5%"] --> D6["全量"]
    end
    PHY ~~~ DIG
    classDef p fill:#fff7e0,stroke:#c98a00,color:#222
    classDef d fill:#eefaf0,stroke:#4d9a5c,color:#222
    class P1,P2,P3,P4,P5,P6 p
    class D1,D2,D3,D4,D5,D6 d

七、开环、闭环、sim-to-real、覆盖率

1. 开环 vs 闭环

开环:输入固定(回放),看系统的输出对不对(感知识别对了吗、规划给的轨迹合理吗)——便宜、真实数据、但测不了决策的后果。闭环:系统的动作改变环境,环境再给新输入(仿真器)——能测”刹车之后会怎样”、多步决策的累积效应、与其他参与者的交互。数字 agent 的对应:录制回放是开环(模型输出固定,看应用侧),带环境快照的 agent 评测是闭环(agent 的动作改变仓库状态,下一步看到新状态)。决策系统必须有闭环评测——两个世界都是。

%% 图:开环与闭环——开环:输入是固定的回放,系统输出不改变后续输入(你刹车了,回放里的车还是照原轨迹开),便宜、真实、但测不了决策的后果;闭环:系统的动作改变环境,环境再给新输入,能测「刹车之后会怎样」;数字 agent 里录制回放是开环、带环境快照的 agent 评测是闭环
flowchart TB
    subgraph OPEN["开环:日志回放 / 录制回放"]
        direction LR
        O1["固定输入 t₁"] --> S1["系统"] --> O2["输出:刹车"]
        O3["固定输入 t₂(车照原轨迹开)"] --> S1
        O2 -.-|"不影响"| O3
    end
    subgraph CLOSED["闭环:场景仿真 / 环境快照评测"]
        direction LR
        C1["输入 t₁"] --> S2["系统"] --> C2["动作:刹车"]
        C2 --> ENV["环境 / 仿真器:车距变大、后车反应"]
        ENV --> C3["新输入 t₂"] --> S2
    end
    OPEN ~~~ CLOSED
    OPEN -.- N1["便宜 · 真实分布 · 测感知与非决策部分"]
    CLOSED -.- N2["测决策的后果 · 多步累积 · 与他人的交互<br/>决策系统必须有它"]
    classDef o fill:#fff7e0,stroke:#c98a00,color:#222
    classDef c fill:#eefaf0,stroke:#4d9a5c,color:#222
    classDef n fill:#eef6ff,stroke:#5b8fd6,color:#222
    class O1,O2,O3,S1 o
    class C1,C2,C3,S2,ENV c
    class N1,N2 n

2. sim-to-real 差距

仿真里 99.99% 通过不等于真实世界 99.99%:渲染差异、物理简化、行为模型(仿真里的行人不像真人)、传感器噪声。手段:域随机化(在仿真里随机化光照、纹理、噪声让系统对差异鲁棒)、用真实数据校准仿真(回放与仿真的输出差异作为仿真真实度的度量)、神经渲染与世界模型缩小视觉差距、封闭场地与真实道路作为最终校准。数字 agent 的对应是第四篇的”离线—在线相关性”:评测集分数能否预测线上表现——同一个问题。

3. 覆盖率与长尾

几百万公里的真实里程覆盖不了每百万公里一次的事件;而这些稀有事件正是致命的。仿真的核心价值是放大长尾:从真实日志里挖出稀有场景 → 参数化 → 生成成千上万变体 → 闭环跑。覆盖率的度量:场景库的维度覆盖(天气 × 路况 × 参与者 × 行为)、真实日志里出现的场景类型有多少在仿真库里有对应、新采集的日志里”仿真库没见过”的比例(它下降说明覆盖在收敛)。数字 agent 的对应:评测集的类型覆盖、bad case 队列里”分类不了的新类”的比例(第六篇)。

%% 图:用仿真放大长尾——几百万公里的真实里程里「雨夜横穿的行人」只出现几次;从日志里挖出这个场景、参数化(雨量 · 光照 · 行人速度 · 距离 · 车速)、生成一万种变体、闭环跑,把每百万公里一次的事件变成可以反复测的东西;覆盖率看新日志里「仿真库没见过」的比例是否在下降
flowchart TB
    LOG["真实日志:几百万公里<br/>「雨夜横穿的行人」出现 3 次"] --> MINE["挖出稀有场景"]
    MINE --> PARAM["参数化<br/>雨量 · 光照 · 行人速度 · 出现距离 · 车速 · 路面"]
    PARAM --> GEN["生成 10,000 种变体<br/>场景仿真 / 世界模型生成"]
    GEN --> RUN["闭环跑 → 失败的变体进回归库"]
    NEW["新采集的日志"] --> COV{"仿真库里有对应场景?"}
    COV -->|"有"| OK["覆盖"]
    COV -->|"没有:新类"| MINE
    COV -.- M["度量:「没见过」的比例下降 = 覆盖在收敛<br/>数字 agent 的对应:bad case 里分类不了的新类比例"]
    classDef n fill:#fff7e0,stroke:#c98a00,color:#222
    classDef dec fill:#eef6ff,stroke:#5b8fd6,color:#222
    classDef ok fill:#eefaf0,stroke:#4d9a5c,color:#222
    class LOG,MINE,PARAM,GEN,RUN,NEW n
    class COV dec
    class OK,M ok

八、影子模式、HIL / SIL 与同构

1. 影子模式

新版本的软件在车上跑,读全部传感器、做全部决策,但不控制车;它的决策与当前版本(或人类驾驶员)的决策对比,差异大的场景被记录、上传、进入仿真库。真实分布、真实硬件、零风险。Tesla 一类公开描述过这种做法。数字世界的影子模式(第四篇:新旧版本并跑只记录)是同一思想——只是数字世界还能灰度,物理世界影子几乎是上路前的最后一步。

2. HIL / SIL

SIL(软件在环):软件在仿真环境里跑,全部虚拟;HIL(硬件在环):真实的控制器硬件接仿真的传感器与执行器信号——测时序、硬件与软件的交互、实时性。数字 agent 的对应:SIL 是容器里的评测,HIL 是接真实的外部 API 与工具(但在沙箱账户里)。

3. 同构表

物理世界与数字 agent 的同构表
物理世界 数字 agent 共同的原则
场景仿真 容器快照的 agent 评测环境 可复现、可参数化的闭环环境
日志回放 录制回放 开环,测非决策部分
长尾场景放大 红队集、bad case 变换扩增 稀有失败要主动制造
sim-to-real 离线—在线相关性 测试环境要能预测生产
覆盖率 评测集类型覆盖、新类比例 不知道没覆盖什么最危险
影子模式 影子模式 真实分布零风险
SAE 分级 六级人机分工 验证决定自主
事故调查与场景回灌 事后分析 → 评测集 事故是最贵的用例

物理世界的代价高几个量级,所以它把这些做成了工程学科;数字 agent 正在低代价地重走这条路——两边可以互相借方法。

九、实践建议

  1. 列运行时 guardrails 表:输入侧与输出侧各查什么、用规则还是分类器还是 judge、同步拦还是异步标、误拦率多少;同步只放高风险路径。
  2. 高风险断言必须有依据:引用对照 + 结构化证据字段;没有依据的不呈现为事实。
  3. fallback 四级(重试 → 降档 → 跨供应商 → 非模型路径),每级触发条件与超时,fallback 标记进 trace。
  4. agent 评测必须有闭环环境(快照 + 动作改变状态),录制回放只用于开环回归。
  5. 做物理世界的团队:画出仿真层次与各层覆盖,量 sim-to-real 差距(回放 vs 仿真输出),维护场景库覆盖率与”新场景比例”,上路前影子。
  6. 借对方的方法:数字 agent 团队学场景库与覆盖率度量;物理团队学 bad case 队列与失败分类的运营。

十、本文小结

  • 两条防线:上线前证明分布上更好,运行时拦这一次的坏输出;拦截事件回到 bad case 队列闭环。
  • guardrails:输入侧(注入、PII、越界、长度、限流——只是第一层)、输出侧(格式、业务校验、引用存在、敏感、有害、抽样忠实度、动作四层);每项有延迟与误拦代价,同步只放高风险路径。
  • 置信度不可靠:用显式拒答出口、logprobs(短答案)、自一致性(k 倍成本);幻觉检测六手段(引用对照、自一致性、事实核对、结构化证据、结果校验、judge 抽样),原则是高风险断言必须有依据。
  • fallback 四级与方向性;标记进 trace。
  • 物理世界不能在生产里试 → 验证在真实世界之外:场景仿真、日志回放(开环)、传感器仿真、数字孪生、世界模型生成、封闭场地;闭环才能测决策;sim-to-real 用域随机化与真实数据校准;仿真的核心价值是放大长尾,覆盖率用场景维度与”新场景比例”度量;影子模式零风险测真实分布;SIL / HIL。
  • 同构:仿真 ↔ 容器评测环境、回放 ↔ 录制回放、长尾放大 ↔ 红队集、sim-to-real ↔ 离线在线相关性、覆盖率 ↔ 评测集覆盖、影子 ↔ 影子、SAE ↔ 六级、事故回灌 ↔ 事后分析。

十一、自测

  1. 一个对外发送邮件的 agent,团队想在发送前用 judge 同步检查忠实度,每次多 1.5 秒。合理吗?其他路径也要吗?

    答案

    合理——对外发送是不可逆的高风险路径,1.5 秒换一次拦截值得;同时应有引用对照与人审阅草稿(《工具、Agent 与 harness(08):memory 与 human-in-the-loop》的中间物)。其他低风险路径(内部草稿、只读查询)不要同步 judge,改异步抽样标记进队列——同步拦截的延迟与误拦要只花在高风险处。详见第二章。

  2. 为什么”让模型输出一个 0–1 的置信度”不是可靠的幻觉信号?有什么更可靠的替代?

    答案

    模型对自己的确定程度没有校准,”我 95% 确定”与实际正确率不对应(《模型作为组件(01):失效模式——非确定性、幻觉、上下文与越界,把「模型会出错」拆成七条可检测的性质》)。替代:显式拒答出口(模型说”信息不足”比打分可靠)、logprobs 对短答案的校准、自一致性(k 次采样看一致率)、引用对照(断言能否定位到检索结果)、结构化证据字段——原则是要依据不要自评分。详见第三章。

  3. 日志回放里新版本的规划模块给出了与旧版本不同的刹车决策,回放显示”通过”。为什么这个结论不可靠?该用什么?

    答案

    回放是开环:系统刹车了但回放里的其他车辆仍按原轨迹运动,看不到刹车之后的后果(后车追尾?前方情况变化?)。决策的后果只有闭环仿真能测——系统的动作改变环境、环境给新输入。日志回放只适合测感知等非决策部分。同理数字 agent 的决策要在带环境快照的闭环里评,录制回放只做开环回归。详见第七章。

  4. 仿真里 100 万个场景通过率 99.99%,真实道路测试的表现明显更差。列出三个可能原因与对应手段。

    答案

    sim-to-real 差距:(1)渲染 / 传感器噪声与真实不同——域随机化、神经渲染、用回放数据校准仿真;(2)仿真里其他参与者的行为模型不像真人——从真实日志学行为模型;(3)场景库覆盖不了真实长尾——用真实日志挖新场景回灌仿真库,监控”新场景比例”。度量差距本身:同一输入下回放与仿真的输出差异。详见第七章。

  5. 用同构表说明:数字 agent 团队的”bad case 队列 → 变换扩增 → 评测集”对应物理世界的什么?反过来物理世界的哪一项是数字团队最该借的?

    答案

    对应”事故 / 影子模式差异场景 → 参数化生成变体 → 场景库”——从真实失败挖场景、放大长尾、回灌测试环境。数字团队最该借的是覆盖率度量:场景库按维度的覆盖与”新采集里仿真库没见过的比例”——数字 agent 的评测集少有系统的覆盖度量,多靠 bad case 被动积累;主动定义类型维度并追踪”分类不了的新类比例”是可以直接搬的方法。详见第八章。

  1. 输入侧:注入(规则 + 分类器 + 工具返回隔离标记,只降概率,真防线在 L4 四层与 L6)、PII 脱敏、越界请求分类走拒答出口、长度格式、限流。输出侧:格式与 schema(带错误重试一次再降级)、业务校验、引用存在性(去掉无依据断言)、敏感与有害内容、抽样忠实度 judge、动作走 L4 四层。每项加延迟(规则毫秒、分类器几十毫秒、judge 几百毫秒到秒)与误拦率,同步拦截只放高风险路径(对外发送、不可逆、合规),其余异步标记进队列。置信度:模型自评分不可靠,用显式拒答出口、logprobs(短答案)、自一致性(k 倍成本)。幻觉检测六手段——引用对照(RAG,低到中)、自一致性(高风险单步,k 倍)、事实核对工具(数字日期实体,中到高)、结构化 evidence 字段(低)、结果校验(agent,低)、judge 抽样(异步);原则是高风险断言必须有依据、无依据不呈现为事实。fallback 四级:重试 → 降档 → 跨供应商(状态要可读)→ 非模型路径,标记进 trace。详见第二章到第四章。 ↩

  2. 层次:场景仿真(可编程可复现可放大稀有场景,CARLA 一类;渲染与行为模型有差距)、日志回放(真实数据真实分布;开环)、传感器仿真(物理级相机 / 激光雷达 / 雷达信号,测感知)、数字孪生(特定场地高保真)、世界模型生成(生成模型合成场景与传感器数据,NVIDIA Cosmos 一类;物理一致性要验证)、封闭场地(真实物理,贵慢有限);成熟体系是组合。开环(输入固定看输出对不对,便宜真实但测不了后果)vs 闭环(动作改变环境再给新输入,能测决策后果与多步累积)——决策系统必须闭环,数字 agent 同理(录制回放开环、快照环境闭环)。sim-to-real:仿真通过率不等于真实——用域随机化、真实数据校准仿真(回放 vs 仿真输出差异作为真实度度量)、神经渲染与世界模型、封闭场地与真实道路最终校准;对应数字世界的离线—在线相关性。覆盖率与长尾:真实里程覆盖不了百万公里一次的致命事件,仿真的核心价值是从日志挖稀有场景 → 参数化 → 生成成千变体 → 闭环跑;度量用场景维度覆盖与”新采集里仿真库没见过的比例”。详见第五章到第七章。 ↩

  3. 影子模式:新版本在车上读全部传感器做全部决策但不控制,与当前版本或人的决策对比,差异大的场景记录上传进仿真库——真实分布、真实硬件、零风险,是上路前的最后一步;数字世界的影子(新旧并跑只记录)同一思想。SIL 软件在环全虚拟;HIL 真实控制器硬件接仿真信号测时序与实时性;数字对应是容器评测与接真实外部 API 的沙箱账户。同构:场景仿真 ↔ 容器快照评测环境(可复现闭环)、日志回放 ↔ 录制回放(开环)、长尾放大 ↔ 红队集与变换扩增(主动制造稀有失败)、sim-to-real ↔ 离线—在线相关性(测试环境要能预测生产)、覆盖率 ↔ 评测集类型覆盖与新类比例、影子 ↔ 影子、SAE 分级 ↔ 六级人机分工(验证决定自主)、事故调查回灌 ↔ 事后分析进评测集。物理世界代价高几个量级所以把这些做成了工程学科,数字 agent 低代价重走同一条路,两边互借方法——数字团队最该借覆盖率度量,物理团队可借 bad case 队列与失败分类运营。详见第八章。 ↩

这篇对你有用?

本文由 arganzheng 创作,采用 CC BY 4.0 许可协议。在保留原文作者、署名以及完整原文链接(https://arganzheng.life/runtime-reliability-and-simulation-for-the-physical-world.html)的前提下,欢迎各种形式的转载、翻译或商业引用。


COMMENTS

评论存放在 GitHub Discussions, 用 GitHub 账号登录即可发表,支持 Markdown。 想针对正文某句话说?选中那段文字,点浮出的「评论」即可划线评论;觉得哪里写错了,发表时勾上「同时提交 Issue」。 有人回复你时 GitHub 会按你的通知设置发邮件,不用守在这里。

×