模块 XVII —— agent 模拟与测试沙箱
模块 XVII 是测试沙箱:它在一个隔离、临时的环境中运行一个 agent 场景, 确定性地重放一个历史会话,并在部署之前比较两个变体。它是模块 XII(评估)的同类——XVII 在隔离中执行并产出输出,XII 衡量它们的质量——且两者解耦:彼此都不导入对方。 本页是沙箱当下所做之事及其诚实限制的参考。
沙箱编目运营方编写的场景:一系列步骤输入,加上一次运行被允许触及的工具与资源的 mock 响应。 一个场景是一个合成夹具——没有机密、没有生产句柄——在被持久化之前被钳制。三种流程在其上运行:
- 场景模拟 —— 针对其 mock 执行一个场景的步骤,产出逐步输出(可选地针对一个评估套件评分)。
- 重放 —— 重建一个历史会话的输入时间线,并针对 mock 确定性地重新运行它, 使得相同的输入产出相同的输出。
- 部署前/后比较 —— 针对一个基线和一个候选变体运行同一个场景,对两者评分,
并连同差量记录一个裁决(
improved/regressed/unchanged/inconclusive)。
实体与隔离保证
Section titled “实体与隔离保证”本模块拥有四个实体:一个可变的 scenario、一个可变的 run(running → 终态)、
一个仅追加的逐步 output,以及一个仅追加的部署前/后 comparison。每次运行都记录哪个
runner 运行了它、该 runner 是否为 isolated、临时状态是否被 destroyed、逐步计数,
以及——若配置了一个 scorer——套件、分数和通过裁决。
隔离是协议契约的一项属性,按运行加以证明,而非一项声称。默认的进程内 runner 在构造上即隔离:
它只接收步骤与 mock 规范,不持有指向存储、网络或任何机密的句柄;一个请求 mock 中不存在的资源的步骤
产出一个确定性的 mock-miss 标记,并且绝不触及一个真实资源;状态存在于该调用中并在返回时被丢弃,
因此该运行记录 destroyed。在运营方置备下,一个 OS 级运行时支撑在同一接口之后——
一个临时、加固、出口受控的实例,其后端(gVisor 或 Firecracker microVM)由策略选择并由预检门控。
每次运行都记录真实后端及其 isolated 标志,因此一个降级或可移植的后端是可见且可审计的,绝不被隐藏。
它消费什么、产出什么
Section titled “它消费什么、产出什么”沙箱不在事件总线上发出;它产出其他模块在不与其耦合的情况下读取的持久化证据。 它的输出由模块 XII 通过一个仅在组合根中装配的适配器评分——这两个同类共享一份薄端口契约, 而非一次导入。它的部署前/后比较是部署模块用于门控一次提升的决策证据,并且它馈送 XII 跟踪的 回归基线。启动一次运行、一次重放或一次比较是一个特权、租户级、受审计的操作 (editor 及以上可运行;部署比较是一个 admin 决策)。
运行生成的场景
Section titled “运行生成的场景”用 olivares modules on sandbox 启用该可选模块。生成、场景创建和执行需要编辑者或管理员权限;查看者可以检查保存的场景、运行和输出。
创建不含末尾换行的模板:
printf '%s' '{{subject_kind}}:user{{index}}@example.test' > seed.txt将此合成响应保存为 mocks.json:
[{"resource":"agent:user1@example.test","response":"first synthetic account"}]olivares sandbox generate --count 2 --seed-file seed.txt -o json > steps.jsonolivares sandbox scenarios create --name generated --steps-file steps.json --mocks-file mocks.json -o jsonolivares sandbox scenarios run <scenario-id> --variant candidate -o jsonolivares sandbox runs get <run-id> -o jsonolivares sandbox runs outputs <run-id> -o json使用创建返回的场景 ID,再使用执行返回的运行 ID。默认 inproc-mock runner 将第一个输入解析为上述响应;第二个返回 [[mock-miss:agent:user2@example.test]]。mock 未命中增加 steps_error,但这是预期合成结果:运行仍记录 status: completed、steps_total: 2、steps_ok: 1、steps_error: 1、isolated: true 和 destroyed: true。它不向真实资源发出请求。本例不请求评分,也不证明操作系统级运行时的适用性。匹配使用精确输入文本,包括模板文件中的换行。
场景、运行和输出在引擎重启后仍可用。关闭模块会移除路由访问,而不删除已保存数据;重新开启恢复访问。这些记录限定到租户,其他组织无法读取。
- 模块 XII —— 质量、评估与测试 —— 对输出评分的那个同类。
- 模块目录 —— XVII 所处的位置以及 Govern/Actuate 划分。
- 架构概览 —— Intelligence 层。
- 治理与审批 —— 对一个部署前/后裁决采取行动。
- 诚实与限制 —— 贯穿产品的 deny-closed 接缝。