Skip to content

快速开始:在沙盒里把整个 Agent 真跑起来 ​

连一个 GitHub 仓库,大约 30 分钟拿到第一个沙盒运行的实验。

这是只有 Preworld Review 提供的接法:每次运行都在一台全新的虚拟机里起你们的 Agent 和测试后端,每个测试按正常、故障、攻击三种条件发过去,记下每一次工具调用,做完读回数据核对,然后删掉虚拟机。结果和别的实验一样:有分数、和基线的比较、发布门槛,还有带着每个问题证据的完整报告。

开始之前 ​

  • 一个 Preworld Review 账号(见快速开始)。
  • 一个 GitHub 仓库,你能在它所在的账号或组织里装 App。
  • 一个能用一条命令启动的 Agent,比如 node dist/agent.js --message "{{task}}",它通过 HTTP 或 MCP 调用工具。
  • Agent 的工具所连系统的测试版:能用 Docker Compose 起来,能重置,能读出数据。别让运行连到生产系统或真实的客户数据。
  • Agent 需要的密钥。模型密钥可以不给:用 OpenAI 接口的 Agent 可以改用平台的模型。

1. 建项目,连上仓库 ​

  1. 在项目列表点「新建项目」,选「会调用工具的 Agent」,起个名字。
  2. 打开目标,在接法里选「连 GitHub 仓库(推荐)」。
  3. 点「去 GitHub 装 App」。在 GitHub 上选 Only select repositories,只勾要测的仓库;装完会自动回到向导。
  4. 选仓库和分支,看完数据边界后勾「我知道了」,点「保存绑定」。

目标下的 GitHub 向导:装好 App,选好仓库和分支,确认数据边界

平台的 App 对代码只有读权限;它唯一会写的,是你们打开检查后在测过的提交上挂的一条检查。每次运行都开一台全新的虚拟机,我们叫它沙盒,默认在伦敦,跑完就删。全部权限见连 GitHub 仓库。

2. 写测试接入文件 ​

平台照 .reviewctl/review.yaml 在沙盒里装依赖、起测试后端、启动 Agent。仓库里已经有这个文件,就照它跑;没有的话,向导按探测到的运行时、锁文件和 Compose 文件起草一份:补上启动 Agent 的命令和它的工具在哪里,点保存。它存在平台的覆盖层里,不会改你们的仓库。也可以点「让 AI 补全并检查」,由平台的 AI 写好并检查(怎么做的)。

向导探测到的仓库信息和起草的 review.yaml

一份最小的示例:

yaml
schema_version: 1
project: { id: prj_01J8ZK3Q9MXYZ0000000000000, name: expense-agent, domain: expense }

services:
  compose: docker-compose.test.yml     # 测试后端,起在 Agent 旁边

agent:
  driver: command
  command: [node, dist/agent.js, --message, "{{task}}"]   # {{task}} 换成每道测试题
  env_passthrough: [OPENAI_API_KEY]                        # 值来自项目密钥

attach:                                # 工具调用经过平台,才能记录和注入故障
  mode: http_proxy
  base_url_env: EXPENSE_TOOLS_BASE
  upstream_base_url: http://127.0.0.1:47591/tools
  routes:
    claim_submit: { method: POST, path: /claim_submit }

backend:                               # 每次执行前重置数据,结束后读出来核对
  mode: own
  reset: { type: http, url: http://127.0.0.1:47591/reset, state_ref_path: $.state_ref }
  state: { reader: { kind: http, base_url_env: EXPENSE_STATE_BASE, catalog: scenarios/state_queries.yaml } }

runner_env:                            # 给测试机自己用、不是秘密的值
  EXPENSE_STATE_BASE: http://127.0.0.1:47591

scenarios: { dir: scenarios }

project.id 照抄就行,云上运行时平台会换成你们项目自己的编号。每个字段的含义见 review.yaml 参考。

端口要发布在 127.0.0.1 上

Agent 只能访问发布出来的端口:Compose 里写成 "127.0.0.1:47591:47591",容器里的服务监听 0.0.0.0。

3. 加密钥 ​

在向导的「密钥」一步,平台列出 review.yaml 和测试按名字要用到的值,并写明每个由谁提供。还缺的会标出来,第一个已经填进表单,补上值就行。不是秘密的值,比如上面状态服务的地址,可以写进 runner_env(「写进 runner_env」)。不加 OPENAI_API_KEY 时,Agent 的模型调用由平台的模型应答,按用量计费(见 Agent 的模型)。

向导的「密钥」一步:已保存的密钥只显示末四位

平台收到密钥就把它密封起来,保存后读不回原文,页面上只显示末四位,日志里也会被替换掉。见项目密钥。

4. 写测试 ​

沙盒里的测试是场景:Agent 真去做的一件事,写明做成什么样算完成、做完数据应该是什么样、哪些工具能调哪些不能调、在哪几种条件下跑。场景是项目「来自场景」那个数据集里的行。

打开数据集 →「全部测试(详细列表)」:

办法适合
「让 AI 帮你写测试」「平台读仓库来写」:平台的模型以只读方式读你们的仓库,写好主要任务、边界情况和出故障时的功能测试;也可以「让开发机 AI 读代码」,或者用几句话说说
「生成攻击数据集」(数据集页上方的视图)安全测试:泄露数据、越权、在读到的内容里夹带指令
「新建测试集」已经有一张表:每行一道测试题和期望的结果
「手写一个场景」填用户会怎么说、做成什么样算完成、什么绝对不能做

AI 写的草稿默认再由 AI 审一遍,没问题就自动确认(「自动审批」,默认打开);第一个功能测试确认后,平台还会自己写一套默认的安全测试。第一次跑,2–3 个功能测试加 1–2 个攻击测试就够了。详见场景与测试集。

5. 检查连接,然后测一个版本 ​

  1. 在目标下仓库的向导里点「检查一次」。平台开一台沙盒,克隆、装依赖、起测试后端,把一个测试跑一次,看测试是不是真的进到了 Agent。每个阶段和日志都能看到。它不是对 Agent 的测试,也不会生成实验。最近一次检查留在目标 →「连接检查」里。
  2. 通过后,点**「测试新版本」**(每个分区的右上角)。选要测什么(「全部」「只测功能」「只测安全」或「只重测上次没过或没判出的」)和每项测几遍,点「开始测试」。

一次连接检查:沙盒的每个阶段和日志

「开始测试」先预跑一次,预跑通过才正式开始;每项测 1 遍、只测正常情况时不另外预跑,正式测试本身先当预跑。中途随时可以取消,运行会在当前这次执行结束时停下,已经跑完的部分照常保留。

检查没通过?

页面会写明哪一步出了问题,并给出沙盒日志。最常见的是缺项目密钥、端口没发布在 127.0.0.1 上、Agent 命令写错。连仓库的项目,平台的 AI 会按检查日志修测试接入,再检查一次。更多见常见问题。

6. 看实验 ​

这次运行变成实验下的一个实验。最上面是发布门槛的一句话:「通过发布门槛」或「未通过发布门槛」,带每条规则的实得值。项目一开始有按通过标准写好的默认规则:测试结论要是「通过」,攻击一次都不能得逞,关键任务都要跑到。下面是每个评分器一张卡(「任务完成」「重复副作用」「攻击得逞」…),写着和基线比的变化,再下面每个测试、每种条件一行。

一次沙盒运行的实验:发布门槛、分数和每一行

  • 点一行,看它的对话、跨度或工具调用、每个分数和理由。「导出修复说明」把修改意见存成文件,交给你们的编码 AI。
  • 平台判断不了的行是未判定,写明原因(接入读不到数据、评审模型出错、沙盒中途没了……);它从不算通过。
  • 「完整报告」打开这次运行的报告:每个问题写着用户说了什么、调了哪些工具、哪条数据检查没过、怎么修(完整报告)。

把修复推上去,再点一次「测试新版本」:新的实验会和上一个逐行比较。

小贴士 ​

只连测试环境:Agent 会真的调工具、改数据。同一个测试多跑几遍,比如 3 遍,碰巧过一次不算数。一开始少放几个测试,跑稳了再加故障情况和攻击。

下一步 ​

  • 发布门槛:规则,以及按它卡住 PR。
  • 自动化:push、PR、定时自动测。
  • 目标:改用自带镜像、自托管 runner 或 HTTP 端点。

本站的法律文件都是草稿,待律师审阅,尚未生效。