跳转到内容

模块 XVII —— agent 模拟与测试沙箱

模块 XVII 是测试沙箱:它在一个隔离、临时的环境中运行一个 agent 场景, 确定性地重放一个历史会话,并在部署之前比较两个变体。它是模块 XII(评估)的同类——XVII 在隔离中执行并产出输出,XII 衡量它们的质量——且两者解耦:彼此都不导入对方。 本页是沙箱当下所做之事及其诚实限制的参考。

沙箱编目运营方编写的场景:一系列步骤输入,加上一次运行被允许触及的工具与资源的 mock 响应。 一个场景是一个合成夹具——没有机密、没有生产句柄——在被持久化之前被钳制。三种流程在其上运行:

  • 场景模拟 —— 针对其 mock 执行一个场景的步骤,产出逐步输出(可选地针对一个评估套件评分)。
  • 重放 —— 重建一个历史会话的输入时间线,并针对 mock 确定性地重新运行它, 使得相同的输入产出相同的输出。
  • 部署前/后比较 —— 针对一个基线和一个候选变体运行同一个场景,对两者评分, 并连同差量记录一个裁决(improved / regressed / unchanged / inconclusive)。

本模块拥有四个实体:一个可变的 scenario、一个可变的 runrunning → 终态)、 一个仅追加的逐步 output,以及一个仅追加的部署前/后 comparison。每次运行都记录哪个 runner 运行了它、该 runner 是否为 isolated、临时状态是否被 destroyed、逐步计数, 以及——若配置了一个 scorer——套件、分数和通过裁决。

隔离是协议契约的一项属性,按运行加以证明,而非一项声称。默认的进程内 runner 在构造上即隔离: 它只接收步骤与 mock 规范,不持有指向存储、网络或任何机密的句柄;一个请求 mock 中不存在的资源的步骤 产出一个确定性的 mock-miss 标记,并且绝不触及一个真实资源;状态存在于该调用中并在返回时被丢弃, 因此该运行记录 destroyed。在运营方置备下,一个 OS 级运行时支撑在同一接口之后—— 一个临时、加固、出口受控的实例,其后端(gVisor 或 Firecracker microVM)由策略选择并由预检门控。 每次运行都记录真实后端及其 isolated 标志,因此一个降级或可移植的后端是可见且可审计的,绝不被隐藏。

沙箱不在事件总线上发出;它产出其他模块在不与其耦合的情况下读取的持久化证据。 它的输出由模块 XII 通过一个仅在组合根中装配的适配器评分——这两个同类共享一份薄端口契约, 而非一次导入。它的部署前/后比较是部署模块用于门控一次提升的决策证据,并且它馈送 XII 跟踪的 回归基线。启动一次运行、一次重放或一次比较是一个特权、租户级、受审计的操作 (editor 及以上可运行;部署比较是一个 admin 决策)。