Skip to content

更新记录 ​

Preworld Review 每次对客户可见的变化,新的在上面。

2026 年 10 月 27 日 ​

修复

  • 平台写错的测试,同一个版本里两次运行做法一样时结论一致,不会因为评审对同一句回复读法不同而一次算 Agent 的问题、一次算测试写错。
  • 故障后换写工具办成并如实说明的旧报告,打开时也按「恢复了」读,前后两轮结论一致。
  • 到了费用上限停下的运行,整页都说是上限,不再说平台的模型出错或被取消。
  • 诊断不再叫你藏起 Agent 自己公开的工具名;工具本来就返回的内容不再指向去改那个工具,也不把启动或测试脚本当成要改的代码。
  • 「AI 原先的说法」不再重复平台已经写过的话。

2026 年 10 月 26 日 ​

改进

  • 平台修测试接入前先问你。 预跑或检查没过、AI 诊断出接入的问题、AI 审批发现草稿要改接入时,平台在项目的「目标」上问一句,写明大概要花多少钱、多久,点「修」才修,点「先不要」什么都不跑、不花钱。想要以前的自动修,到「组织 → 策略」关掉「修测试接入前先问我」。
  • 修了一轮什么都没改成,不收费。 交给平台修的一轮如果一个接入文件都没改,这一轮平台 AI 的钱退回,试用沙盒也不收。
  • 上限只有一个数。 所有设上限、看上限的地方都用页面上写的价(例如平台 AI 每天 $650、每次运行 $6.50),后台和页面不再是两个数;实际放行的钱不变。
  • 默认安全测试至少 10 道能算数的题,产品真有的高风险能力每类至少一道;出不够会自动重出,还不够就写明出了几道、缺哪几类。
  • 平台换上的模型被自己的安全过滤拦下时,换另一个平台模型重跑这一道题,报告里写明哪些题是代跑的。
  • 已有的平台安全测试每道题的时限按功能测试的单次时限(最多 10 分钟),不再是 1 分钟。
  • 沙盒镜像装了 bun,用 bun 的仓库直接用它装依赖。
  • 客服邮箱改为 admin@nice2.io。

修复

  • 只勾测试集时,「每种情况跑几次」不再乘到测试集上。 测试集按它自己设的次数问,两个开始测试页的计划、按钮和估价和实际跑的一样。
  • 到了费用上限停下的运行写清是上限、已经跑的照常收费、没测的不收费,以及怎么测完。
  • 被测的系统提示词本来就是仓库里的公开文件时,复述它不算泄露。
  • 故障后 Agent 换一个写工具把事办成并如实说明,算恢复,不算假完成。
  • 曾经真打穿过的安全题重出时一定带回来,并按每题 3 次计入计划。
  • 「重出默认安全测试」的估价算上 AI 自动审批;「全部选项」页也显示正在重出和同名测试集的区分。
  • 真实的重复副作用不会被「同一个毛病只算一处」洗掉。 只有两次运行里 Agent 做的事一样时,才沿用别的运行的结论。
  • 只跑拒绝类测试不会再被判成接入坏了,也不会劝你花钱修接入。
  • 修接入的检查逐件跑要修的那几件,有一件没考到就写明,不说「接入跑通了」;修接入的估价按这个项目自己的记录。
  • 读文件被挡住、只写在回复里的,记风险信号,不算得逞;曾经真打穿过的安全题会一直留在之后的安全测试里,并多问几次。
  • 「重出默认安全测试」在后台出,页面写进度、结果和这一版的题数;按钮旁写一般花多少、要多久。
  • 开始测试的两个入口估价一致;只勾测试集也能开始。
  • 没有实际作用的「得逞」记为风险信号。 搜索词里出现的命令、只写在回复文字里的语句、读到了却没给出去的平台假设数据,都算守住并记一条提示;真执行、真写入、真读到秘密的照算。
  • PR 打开时项目正忙,检查排队等,不再丢掉。 GitHub 上先挂「排队中」,项目空下来自动开始;「自动化 → 触发」能看到最近一天每次 push 和 PR 怎么处理的。
  • 模板出的安全测试是草稿,由 AI 自动审批,不再以你的名义确认,名字也和默认安全测试分开;「生成攻击数据集」页可以「重出默认安全测试」。
  • 旧的实验页跟着改判一起重算;平台自己写错又改不了的测试不再被「只重测上次没过或没判出的」反复收费重跑。
  • 估价按每个测试自己的执行花费算,撞上限的提示不再时有时无。
  • 规则只在真有作用时才算违规。 只读的命令、被产品自己挡住或报错的调用、回复里拒绝了的,不再判成越权或攻击得逞,只记一条「提示」;平台写的禁止规则都写明禁止的效果(例如「会改东西才算」)。字段名叫 token 的普通值不再当成密钥,「只生成查询」这类按用途的检查只用在这种用途的 Agent 上。
  • 本轮报告和重测合得上。 免费或收费重测之后,本轮报告、实验页和运行报告用同一套算法,最新一次算数,平台改判的行保留,不再来回翻。
  • 修接入要真修好才说好。 交给平台修的问题,修完的检查会跑到那一条;没跑到就照实写。修接入的卡片按真正点的人写,不再一律写「平台自己发起」。
  • 默认安全测试不再卡住。 题量不够时一次连着重出,最后一次还缺就存下并写明缺哪几类,页面跟着刷新。
  • Agent 自己的工具名带服务前缀、写成签名也不算泄露;工具返回的目录路径不算系统提示词。
  • 估价把撞上限的运行也算进去,更接近实际;实验的成本单列 AI 诊断那部分。平台 AI 排队真正先来先做,「排了多久」按真正等的时间。
  • 「只重测没测成的」放在运行报告和本轮报告里,点之前写清重测几次、用哪一版、收不收费。

2026 年 10 月 25 日 ​

改进

  • 平台自己的错不再算到你的 Agent 头上。 平台的诊断认出是平台写的测试外壳、平台写错的测试、评审读错,或沙盒连不上外面的服务时,这几次执行改成「没测成(平台原因,不收费)」,不进结论、严重度和发布门槛,已经发出的 GitHub 检查和 PR 评论也跟着改;报告顶部写「平台判错 N 条(不算你的)」,只重测这些免费。有真实安全危害的执行,诊断怎么说都不改判。
  • 平台写的测试外壳更稳。 工具报错、超时都交给模型,不再让外壳崩溃;重置和工具服务用同一份数据;连接检查会故意让一次工具调用超时,外壳接不住就算没接通。
  • 安全测试:默认安全测试出不来能算数的题时会重出,缺了哪几类写明;同一项目别的测试里写了的受限操作,对每个测试都查;安全题的单题时限跟功能测试一样长;平台换上的模型测不了的攻击类别,报告里写明「这次测不了」。
  • 说出自己的工具不算泄露,工具清单写成函数签名、带示例参数也一样;平台假设的「别的用户」一律按低危并标明;诊断不再叫你藏工具或给单用户产品加权限隔离。
  • 「让平台修」说清修了什么:逐件写改了什么、没补上什么;什么都没改就停下、不跑检查、不再花钱。平台自己开修接入时写通常花多少,可以停下;它永远不挡你开始测试。
  • 钱:开始测试前,会撞单次费用上限时给出路:分几批、只测功能或安全、或这次调高上限(组织所有者);平台修接入、诊断大概多少也写出来;「平台读仓库来写」「再试一次」旁写价钱。
  • 排队真的先来先做:组织里同时做 4 个,先点的先做,排着时写前面还有几个、最多等到几点,轮到后写「平台的 AI 正在写(第 N 分钟)」。
  • 手写测试:工具框空着 = 都能用,可以直接起草;没写回复要点时会问要不要把「做成什么样」变成要点;测试页有「改说法」,只改用户那句话。
  • 「可以加上」的检查一键加上;规则写成大白话;术语第一次出现时有说明;「AI 网关」叫法统一。
  • 默认发布门槛:低危的得逞只提示。 只有低危问题(影响有限、或者是平台假设的场景)时,门槛照样通过,但写明「有 N 个低危问题,上不上线你决定」:实验页、实验列表、概览、报告、GitHub 检查和 PR 评论、reviewctl eval 都会显示。中危及以上照样不过。你自己设的规则不变,设置里可以勾「低危的得逞只提示」。
  • 说出公开的内容不算泄露。 Agent 自己的工具名、说明和参数,以及公开仓库里的 AGENTS.md、SKILL.md、README、文档和提示词文件,Agent 说出来不算得逞,报告里写明「说出的是公开内容」。私有仓库的文件、真正的密钥照样算。
  • SDK 和 AI Gateway 暂时显示「开发中」,新项目先不能选;已经这样接好的项目照常用;本地测试机没有 OpenAI 密钥时用平台网关,照常可以用。
  • 开始前说清钱和时间。 「让 AI 补全并检查」旁写通常花多少、要多久(含排队);开始测试时按这个项目同类执行的实际花费分部分估价,哪一部分会超过单次运行的上限会先说;项目页顶部写这个项目到现在一共花了多少(其中平台 AI 多少),实验的成本旁也写。
  • 平台 AI 排队先来先排:名次只往前,估时按最近任务实际用的时间;「平台读仓库来写」也显示排第几、最后进展。
  • 平台 AI 每天的上限在「组织 → 策略」里写清:每天最多多少、今天用了多少、到了会怎样、找谁调高;几个任务同时用 AI 可能撞上限时先提醒。原来的「AI 每天最多花」改叫「AI 自己开始的测试每天 / 每月最多花」。账单页写明本期额度为什么不是套餐的全额(中途换套餐按天折算)。
  • 同一个问题连续 2 次就停下。 「让 AI 补全并检查」两次碰到同一个失败就停,写明是谁的问题、已经花了多少、不再扣钱,等你点「再试一次」;平台自己发起的修接入也照这个停。之前的几轮都能展开看。
  • 报告说清测的是什么、没测到什么。 测的是平台写的测试外壳时,报告顶部和接入卡片用大白话写明;新增「这次没测到的」一块;原来的「开发同事要做的事」分成「平台自己修」(有按钮)、「你的产品大概率有问题的地方」和「要你提供的东西」。
  • 大白话写的禁止项可以变成检查:测试里写「一个文件都不能删」「不改动 cv.md」「不导出 customers」时,表单会问要不要把它变成检查,并给出具体规则。
  • 安全测试:每个项目只生成一份默认安全测试;题目按项目真实数据文件里有的字段出,审批也按这个核对。
  • 功能测试:仓库里有数据文件时,起草时按数据算出参考值;要求的语言和篇幅写进要点;填表类产品答「Yes」算答了。
  • 手写测试:工具多于 50 个时工具框默认空着(= 全部可用);能看到并修改单次执行的时限;测试文件收 Excel(.xlsx / .xls)。
  • 连 GitHub 默认选你刚装好或最近用过的账号,不再替你选仓库;分支框显示仓库的默认分支。
  • 总览的项目按最近活动排,项目多时可以搜索;规格档推荐要点「换成」才生效;定时要点「保存并开启定时」才开;开始沙盒测试时说明正在申请沙盒。

修复

  • 「做了两遍」只算故障后同一工具、同样参数又真的做了一次:写不同文件、编辑不同段落不再判重复。
  • 禁止规则只看调用真正作用的对象:文件内容里提到 cv.md、拒绝文案里写了 DROP TABLE 不再算违规;「为什么没通过」给出命中的那一段。已经存的规则也按这个判。
  • 攻击没送到 Agent 时记「没测成」,不再说「照着夹带的指令做了」;只有低危问题时本轮结论和门槛一样只提示;到了单题时间上限写明是时限。
  • 预跑不再把干了活的 Agent 判成「没干活」;AI 自动审批不再被模型服务拒绝;平台换上的模型拒收工具定义算平台的问题,不收费。
  • 撞费用上限时报告、本轮、进度页写同一句话、同一个数,不再说「被取消了」;「这次没测到的」按这次真实跑过的测试写。
  • 评测的测试附件和期望从同一份内容出;ZCode 这类要 Node 24 的仓库用 Node 24。
  • 准备环境不再误报「卡住」。 依赖装完就算装好;保存和恢复依赖缓存是平台自己的一步,每 30 秒报进度、最多 8 分钟,存不上就跳过,不再让接入卡住。真卡在这一步时算平台的问题,不收费,也不让 AI 去改安装命令。探测认得 bun.lock 等锁文件。
  • 平台自己的原因不再算到你的 Agent 头上。 运行撞上费用上限、限流,或者平台换上的模型回了空内容、被安全过滤拦下,这些执行记「没测成」:不收费、只重测它们免费、不再叫你去改 Agent;整轮写「没测完」,并写明「这次运行到了费用上限,后面 N 次没测」。平台换上的 Gemini 不收的参数(例如 penalty)由平台去掉。
  • 超时没回复的执行绝不算通过。
  • 评审读错了:平台认定是评审模型读错了回复时,不算 Agent 没通过,你看过回复后可以点「我看过了,算通过」(记下是谁、什么时候)。评审核对数字时认得范围和「或者」。
  • 发布门槛:攻击判断不了时,「攻击得逞 = 0」显示「? 不确定」并拦住,不再打 ✓(实验页、GitHub 检查、PR 评论都一样)。
  • 判定更准:同一个文件再写一遍同样的内容不算「重复办事」;配置文件注释或示例里的密码交给评审判断,最多提示「请人看一眼」;平台假设的「别的用户」场景按低危记;只有低危问题时标题写「只有低危问题,上不上线你决定」;功能测试里真的越权了,安全摘要也会写出来;注入导致的得逞记到「提示注入」。
  • 接入读不到数据时,没写「做完后的数据」的测试按工具调用和回复判,不再拦审批、不再判没测成;「让 AI 补全并检查」按草稿要的数据去接。
  • 报告和实验页:每轮都有一句总结论;未判定的原因写成话;攻击次数两处一致;安全测试在同一批里跑了就不再说「这次没选」;时间按开始时间。

2026 年 10 月 24 日 ​

改进

  • 平台的默认模型换成 Gemini 4 Argon。 项目和组织都没选模型时用它。选了 GPT-6.1 Sol 的项目、组织、LLM 评分器和 Playground 的列改用 Gemini 4 Argon,选了 GPT-6 Luna 的改用 Gemini 3.8 Flash,两个在平台的评审校准上都不低于原来的。评分器换的是一个新版本,旧版本和它打的分不变;平台模型对话 AI 不换。GPT-6.1 Sol 和 GPT-6 Luna 还能选。见模型。
  • 模型目录加了 Gemini 4 Argon,档位「最强 · 较慢」;GPT-6.1 Sol 改叫「强 · 较快」。两个评审模型判得不一样时,按 Gemini 4 Argon 的算。
  • 第二个评审模型换一家。 平台评审时,复核用和第一个不是同一家的模型里最强的:GPT 的由 Gemini 4 Argon 复核,Gemini 的由 GPT-6.1 Sol 复核。见第二个评审模型。
  • 沙盒只开在伦敦。 「运行位置」只有「自动」和「伦敦」,不再显示「瑞典(欧盟)」;选过它的项目改成了「自动」。出站地址只剩伦敦的那个。见运行位置。
  • 从平台装 SDK:平台在 /downloads/ 提供 TypeScript 和 Python SDK 的安装包,目标页的 SDK 卡片给出安装命令。见 SDK。
  • 实验的成本按账单算:沙盒的一轮算上沙盒时间、评审、平台模型和 AI 诊断;SDK 和 Playground 的实验算上平台评分器的评审费。
  • 实验的未判定行可以接着办:每行列出平台做到哪一步,要你点的按钮在旁边,包括在测试里写明预先批准某个工具。见未判定的行。
  • 窄屏:720px 以下侧栏收进顶栏的「菜单」,页面占满宽度。
  • 沙盒里用 Responses API 的 Agent,在 Gemini 项目上也能用了。见 Agent 的模型。

修复

  • AI Gateway:读完的流式调用不再记成断开,真断开时写明原因;服务商的错误(包括 Google 的)换成这个地址的错误格式,留下原话。见上限和错误。
  • 调用方在流结束前自己关掉的调用记成「调用方取消」,不算出错;错误率告警、概览和问题分析都不算它。见日志。

2026 年 10 月 23 日:v2 ​

Preworld Review 现在是一个开放的评测平台:你们自带数据、任务和评分器,发布前后都能评;只有它能做的仍然保留:把整个 Agent 放进一次性沙盒,在故障和攻击下真跑,并过发布门槛。项目的页面从四步变成导航里的十个分区(概览、日志、数据集、评分器、实验、Playground、评审、目标、自动化、设置)。旧的项目页地址照样能打开,会进到现在做这件事的分区。

新功能

  • 数据集:带版本的行,有期望、标签、元数据、条件和运行环境;从 CSV、TSV、JSON Lines、Excel 或 promptfoo 导入;从日志、实验和评审加行;「AI 生成行」。项目的场景和测试集也作为数据集出现。见数据集。
  • 评分器:内置库(平台的检查、Agent 行为检查,以及从 autoevals、openevals、agentevals 移植的评分器),加上你们自己的 LLM 评审、代码、规则、轨迹和人工评分器;保存前拿一行试跑,每次修改存成新版本;拿人打过分的行校准。见评分器。
  • 实验:测过的每个版本,来自沙盒的一轮、SDK 或 Playground;每个评分器一张卡和它对基线的变化,按回归、改善、未判定筛行,对比,最多 8 个并排看。见实验。
  • 发布门槛:按评分器、回归、未判定的行、必跑标签和沙盒的结论定规则,每条可以阻断或只提示;出现在实验页、概览、GitHub 检查、PR 评论和 CI 退出码里。默认规则按每个项目的通过标准写好。见发布门槛。
  • TypeScript 和 Python 的 SDK:Eval() 在你们的进程里把任务跑过一批行,传上来成为实验;traced、wrapOpenAI / wrap_openai、wrapAnthropic / wrap_anthropic 和 Vercel AI SDK 记录调用;CI 里用 preworld eval 和 pytest 插件,GitHub Action 会在 PR 上评论。见 SDK 和 CI。
  • 日志:SDK、OpenTelemetry(/otel/v1/traces;认 OpenTelemetry GenAI、OpenInference、OpenLLMetry 和 Vercel AI SDK 的约定)和 AI Gateway 发来的追踪,带分面、筛选语法、保存的视图和跨度树。见日志。
  • AI Gateway:把 OpenAI 或 Anthropic 的 SDK 指向平台,每次调用都记下日志和成本;平台的模型按标价加 30% 计费,带你们自己服务商密钥(x-provider-key)的调用我们这边不收费。见 OpenTelemetry 与 AI Gateway。
  • Playground:提示词和模型在数据集的行上并排跑、打分,「存为实验」。见 Playground。
  • 在线评分与告警:按采样给线上追踪打分的规则,每天有花费上限;按线上分数、错误率、成本、门槛没过或规则到上限发告警,渠道是邮件、Slack 或带签名的 webhook。见在线评分与告警。
  • 人工评审:队列带人工评分器组成的评分表、盲评、指定评审人、必填项,以及每天从日志或实验自动加入;评审结果变成分数、数据集的行和校准数据。见人工评审。
  • 助手发现的问题:助手把失败的追踪和行归成问题,写明证据、严重程度和次数,显示在概览和日志里,一点就能看追踪、加入数据集或起草评分器。助手和连上的编码 AI 能处理数据集、实验、追踪和门槛。见助手发现的问题。
  • 多轮测试:场景、测试集的题和数据集的行可以有写好的几句或模拟用户,故障和攻击可以只打某一轮。见多轮的字段。
  • 能上传的项目令牌:新建 API 令牌时勾「允许上传日志与实验」,给 SDK、OpenTelemetry 和 Gateway 用。见 API:令牌与错误。

改进

  • 目标列出所有接法(SDK、Gateway、OpenTelemetry、仓库沙盒、镜像沙盒、自托管 runner、HTTP 端点),以及现在接着什么、最近一次连接检查。见目标。
  • 每个分区右上角的「测试新版本」发起一轮沙盒、测试机或对话 AI 的测试;每一轮变成一个实验,POST /v1/projects/<编号>/jobs 的答复里有实验编号和要等的门槛。
  • GitHub 检查按发布门槛下结论(success、failure 或 neutral),带分数表;reviewctl eval --launch 和 GitHub Action 用一次长轮询等它。
  • 判断不了的测试是实验里一行未判定,写明原因;未判定的行一次就能重跑。给编码 AI 的修复说明从实验的一行导出。
  • 「AI 自己做的事」归成三个开关:助手改东西要我确认、在线评分、平台自动重跑。
  • 用量页列出「上传的追踪」(照常计量,现在不收费)。见价格。

去掉的

  • 四步式的项目页、网页上测试计划的几轮选择题(改用「AI 生成行」;编码 AI 仍然能做计划)、覆盖地图、下次评估推荐、网页上派给开发机 AI 的活、「给 AI 的修改意见」标签页,以及报告里按每种没测成原因给的按钮。

修复

  • GitHub 检查不会一直挂着「进行中」:发布门槛算不出来时,检查按这一轮自己的结论结束。
  • OpenTelemetry:父跨度编号写成空字节的跨度按根跨度读,不再被拒收。

2026 年 10 月 22 日 ​

新功能

  • 本地测试机也用平台的评审模型。 测试机经平台按用量计费的评审代理调用评审模型(用测试机自己的令牌,平台的密钥不离开平台),review.yaml 写的是平台提供的模型时换成项目的模型评审,第二个评审模型、嵌入模型和每次任务的费用上限都和沙盒一样,按评审模型的用量计入组织的账单。这台机器上有评审模型的密钥时照旧用你们自己的。Agent 调模型的密钥仍要自己准备。见本地测试机:评审模型。

改进

  • 安全测试的「得逞」要有实际后果。 一次攻击算得逞,要拿到了不该拿的数据、做了不该做的动作,或者照攻击说的做了。把用户自己给的东西还给他、Agent 本来就拿来分析的匿名示例数据、工具本来就用来显示的无秘密运行信息、工具服务器公开的工具清单、攻击者自称的角色,本身都不算。只露出内部细节(工具名、参数、表结构)的得逞按「低」算风险分和严重程度。真后果照样判得逞。见安全测试怎么判得逞。
  • 接入准备的调用不算 Agent 的。 测试要先有之前的会话、要找的数据时,接线可以用新的 REVIEW_PREPARE_URL 标出准备的那一段:中间的调用照样经工具代理,但不注入故障和攻击、不按禁止规则核对、不占调用上限;有没有得逞、有没有做不允许的操作、计次都只算 Agent 在这次执行里自己做的调用。单次执行页、评审模型和 AI 诊断看到的都分开标清。见接入准备。
  • 不允许的操作只有真做成了才说「实际影响」「已验证」:没被拦住、但工具报错或什么都没返回的,仍算违规,但记成待查、严重程度「中」;只带空列表、别的参数也都空的调用(例如 {"shell_commands": []})什么也没做,不算违规。
  • 攻击得逞时的「怎么改」按攻击类别写:命令注入、SQL 注入、越界读文件、越权、套取密钥这类,指向执行命令、执行 SQL、读文件、查数据的那一层,系统提示词里的禁令只当补充。
  • 默认安全测试按 Agent 能做的事出题,会访问外部地址的也有对应的题;接入只看得到回复时照样出、按回复判。AI 审批的改写不能把命令注入、SQL 注入、越界读文件、套取密钥中任何一类全删掉。安全测试通过、但这组题没覆盖某几类或接入只看得到回复时,报告第一屏写这次测了什么、没测什么、为什么。
  • 「确认前看一下」多一条:不允许调用的工具没有条件,可最近一次检查里 Agent 每次回答都调用它(没事可做时也调用)时,标出来,AI 自动审批不确认。
  • 测试集被 AI 审批退回时,页面上可以「我看过了,确认」;AI 标出了不合适或评不准的题时,是「我看过了:去掉这 N 道题,确认其余 M 道」。见草稿和已确认的测试。
  • 只因平台自己的部分出错没过的预跑或检查(平台给 Agent 的模型、平台的评审模型、平台的工具代理,或测试机程序自己的错误),沙盒时间不收费。用量页记在「只因平台自己的问题没过的预跑和检查」里。见平台的问题不收费。
  • 自动触发(推送、拉取请求、定时或 API)的测试,预跑只是平台自己的模型或评审模型出错没过时,不再当场结束:等平台 10 分钟后自己再预跑,最多 3 次。最后一次还是这样,才结束,写明这是平台的问题、平台自己又预跑了几次,只发一封邮件。见预跑。
  • AI 诊断有证据时,第一屏跟着改。 平台 AI 的诊断说某个测试没通过是平台的模型出错(限流、不接受请求里的参数、暂时不可用),或者是评审模型读错了,而平台核对了每次执行的证据(模型的报错原文、只有评审的读法判它没通过)时,这个测试在第一屏、它自己那一行和「怎么改」里都改成「没测成」,写明原因,不再标严重程度、不再叫你改 Agent;所有没通过的都是这样时,结论是「没测成」,不再写「测试没有进到 Agent……修好接入后再测」。没有证据的,诊断说什么都不改结论。见AI 诊断改结论。
  • 要核对做完后的数据、接入却读不到的,结论是「没测成(数据没核对)」,不再是「不通过(数据没核对)」。见结论。
  • 沙盒项目的接入读不到数据,测试却会改数据、要数写了几次或者有故障、攻击时,「确认前看一下」会标出来,平台的 AI 不替你确认它,你看过以后仍然可以自己确认。见确认测试。
  • 一批里「功能 + 安全」分成几部分跑时,先跑完的那部分的报告写「本轮共 N 部分,这是其中之一;还有 M 部分在跑」,不再写「安全测试这次没选」。
  • 本地测试机在你的仓库的临时副本里跑。 reviewctl runner start 和 reviewctl connect --ai 的检查,每次执行都在系统临时目录里拷一份仓库(.git 整份拷,.venv、node_modules 链接到你的),Agent 改文件、提交代码只改副本,一个任务跑完就删。数据重置、读数据和工具代理起的 stdio 工具服务器也在副本里。见在仓库的临时副本里跑。
  • 「本地测试机」在生成配对码之前就说清要先准备什么:仓库自己的依赖,Agent 调模型用的这台机器上的密钥(平台的模型不替本地测试机上的 Agent 回答);评审模型平台提供、按用量收费。reviewctl connect --ai 发送前也这样列;检查命令要用的 .venv/bin/python 这类程序不在、仓库有依赖却没有 node_modules 时当场说;没设的变量结束时再说一遍,网页上的结果也写着。
  • 连了 GitHub 仓库或自带镜像的项目,「本地测试机」不再给本地命令和配对码,说清这个项目在云端沙盒里测、要本地测就新建项目。reviewctl connect --ai 先问平台能不能开始,这种项目在注册测试机、用掉配对码之前就被拒绝。
  • 安装说明加上「报 EACCES(没权限)」时不用 sudo 的装法:npm install -g --prefix ~/.local …,再把 ~/.local/bin 加进 PATH。命令行开始时也提示有新版本。
  • 预跑没通过、入口程序报错时,「详情」里有测试机报上来的报错原文(去掉密钥),开发机 AI 读预跑结果时也拿得到。
  • 本地「让 AI 补全并检查」在跑时网页上可以「取消」;命令行遇到上一次没结束的会问要不要取消重新开始,并说明平台在那台机器 10 分钟没回应后会自己停下。AI 在 runner_env 里写的合成测试身份 AGENT_TEST_USER,文件写好就算测试机放行了,不用再自己猜变量名放行。
  • 新建项目页的「本地测试机」直接去项目第 ① 步,和项目页同一套说明。「发给开发同事的说明」也在那里,写的是同样这几步(一条命令),生成的配对码自动加进去。
  • 开发机 AI 选「MCP over HTTP(不用装 reviewctl)」时,本地项目会说明测试机还是要装 reviewctl;远程 MCP 的连接在编码 AI 第一次调用之前显示「等它连上」。撤销测试机、断开开发机 AI 之前先问一句。
  • 「这次用了约 $x」说明只算「让 AI 补全并检查」自己的模型调用,AI 自动审批和平台写默认安全测试在用量页另列。
  • 平台的 AI 忙时,排队等到轮到。 「让 AI 补全并检查」「让 AI 填好并测通」、测试计划的每一步和按计划写测试,在平台的 AI 忙(组织里同时最多 4 个任务用它,或者模型服务在限流)时一直排队,最多等 2 小时,页面写着排第几、大概多久、最多等到几点,不用回来再点;排满 2 小时还没轮到才停下,写明是平台的问题。以前等 2 分钟就算「太忙」,5 / 15 分钟后各自动再试一次就停。等平台的 AI 时,「让 AI 补全并检查」的试用沙盒让给组织里在等名额的测试或检查。见让 AI 补全并检查。
  • 缺第三方密钥时有出路。 「让 AI 补全并检查」停下要密钥时,写明每个密钥干什么用、去哪申请;仓库的文档或代码里写着不要这个密钥也能跑的办法时(比如换一个不要密钥的搜索服务),旁边有「改用免密钥的办法」,点了平台在接入里设好、接着检查。第 ③ 步「开始测试」上面也提醒还缺哪些密钥、缺了会怎样。
  • 测试计划更贴仓库、更好懂。 推荐跟着前面的回答走;新加一题「第三方密钥」;平台自己加的问题说人话,不问部署、版本这类平台用不到的选择;计划只写测试接入核对得了的检查,做不到的写进前提;考编造的测试不再被当成「接入看不到」去掉;计划里不再出现内部的字段名;平台后来去掉了哪几个按计划写的测试,计划页写明。见测试计划。
  • 「缺 N 项:让助手补」先把缺的项放进助手的输入框,由你自己发;只看回复的接入不再建议测不了的「工具出错时」。
  • 预跑没过时点「跳过预跑,开始测试」、确认 AI 审批没通过的测试,都先问一句,写明原因和后果。
  • 平台自动重跑时,进度写「平台自动重跑没判出的第 k / n 次」,不再停在「出结果」。
  • 攻击模板写实际要几分钟,出题中刷新页面也还显示「正在出题…」。
  • 仓库要装 torch、CUDA 这类很大的包、或上次准备环境很慢时,沙盒规格推荐更大的一档,并提前说准备环境会很慢。见沙盒。
  • 预跑和检查的入口报错写出原文;报错出在平台写的接入文件里时,写明是平台写的测试接入的问题,平台来修。
  • 被测的是平台写的测试外壳(仓库里没有 Agent、只有工具服务器时)的报告,写明测的是外壳加你们的工具;模型那句写「平台写的测试外壳要的是…」,不再说「仓库原本要…」。
  • 「让 AI 补全并检查」写的默认功能测试碰到 Agent 的主要能力(编程 Agent 就让它改一处代码),接入说明少用代码词。
  • 平台导入测试时自动改成考编造题的,AI 审批看得到是平台改的、写 probe: false 就能改回;只有目标整句都在讲「如实说不知道」的才自动改。
  • 准备环境超过 15 分钟时,依赖缓存和镜像存档也能存上,下次检查不再从头装(要等沙盒镜像更新)。
  • 沙盒虚拟机的串口输出(没接上平台、中途没了时页面上给出的那几行)和任务日志一样遮住密钥和令牌,存下之前就遮,以前存下的显示时也遮。

修复

  • 回复只是模型服务的报错日志(例如平台模型 429 限流)时,安全检查不再把它当成 Agent 说的话:没有 Agent 自己的调用就判断不了。
  • 平台最近一次检查里,因为平台自己的原因没通过的项(评审模型调用失败、平台的工具代理没起来)不再被 AI 审批拿来退回测试。
  • 「让 AI 补全并检查」不再把被测程序每轮回复都会走的内部步骤接成工具;Agent 自己的代码会执行命令或代码时,不再说「仓库里没看到 Agent 调用工具,只看回复就够了」,而是让 AI 把执行那一步接上。
  • 第一个评审被限流、由第二个评审模型替它给出的判断,记录里都写第二个评审模型;「按更强的那个算」比的是实际判的模型。测完后平台再判一次时,第一个评审被限流也同样交给第二个评审:再判的每次执行写明是谁判的,按实际用的评审计费,不超过第一个的价格。见第二个评审模型。
  • 平台 AI 的诊断说失败的根子在平台这边——平台的模型或模型服务出错、平台注入故障或夹带攻击的那个工具、平台写的外壳或接入、接入准备的数据或历史会话、评审读错——时,平台不再用「工具 X 是你们仓库里的代码」把它改成 Agent 的问题,也不再给出和失败无关的「在工具里按调用者核对权限」。之前已经这样改过的诊断,打开时按 AI 原来的类别显示。
  • 安全测试的题判成没守住、诊断自己说依据是测试接入准备的历史会话里发生的事时,算测试接入的问题,不再让你在查询工具里加权限检查;之前存下的这类诊断,打开时也这样显示。Agent 在这次对话里交出数据的,仍是 Agent 的问题。
  • 诊断不再写 r13 这类题号:同一个根子、同一类问题的题按题目说。测试集的题在诊断里的标题写出是哪道题,不再七条都是「『安全测试 · 越权与数据泄露』正常情况下」。只改提示词或 Agent 的指令(比如 sql-agent.ts 里的 instructions)的诊断,不再同时写「问题出在工具 X:要改的是实现它的代码」。
  • 平台重启打断的工作,平台会自己接着做:复判和 AI 诊断最多各再做 2 次,默认安全测试最多再写到第 3 次;做不成的写明原因,复判留「再复判一次」,诊断留「重新诊断」,默认安全测试写明到「添加测试 → 生成攻击测试」选模板,不会一直「正在写…」。评审拿不准的诊断,「平台做了什么」按复判现在的样子说(正在复判、被打断平台会接着做、已经复判过)。见平台重启以后。
  • API:GET /v1/runs/<运行编号>/diagnosis 多了 settled;新的 POST /v1/runs/<运行编号>/rejudge(再复判一次);运行的 round.running;复判记录的 cut、resumed、gave_up;诊断条目的 question、prepared(判成没守住的依据在测试接入准备的历史会话里)。
  • reviewctl connect --ai 截断超过 24 KB 的文件时会把一个汉字或 emoji 切成两半,截出来比上限多一两个字节,平台整包拒收;现在按字符边界截。旧版 reviewctl 发来超过大小上限的内容,平台自己截好并写明哪些文件,不再整包拒收。
  • 本地项目里「到第 ② 步……再点『让 AI 补全并检查』」改成在仓库里再运行一次 reviewctl connect --ai(本地项目网页上没有那个按钮);命令中断、文件没写到那台机器时,网页不再说「AI 写的文件已写进 .reviewctl/」。
  • 测试机的 reviewctl 已是新版、只是接入只看回复时,不再叫人「更新 reviewctl」。
  • 命令行的英文输出里不再夹中文的草稿问题;标准输入一直有内容时(yes y |)不再崩溃。
  • 测试页的「第 n / m 个」和「从第一个开始」不再乱跳;「N 个待确认」和确认框的数字一致,AI 没通过的另写「另有 N 个待修改」;「测什么」里同一个测试不再在「全部」和「功能」「安全」里算法不一。
  • 新建项目「我不确定 · 帮我选」不再给两条指向同一个选项的提示。
  • 沙盒开机时串口输出里的 error: prohibited by secure boot policy. 折叠起来,写明不影响开机。
  • 检查结果里没有工具名时不再出现「这个工具」占位词。
  • API:GET /v1/projects/<项目编号>/secret-needs 的 warn,POST /v1/projects/<项目编号>/connect-assist/keyless,「让 AI 补全并检查」「让 AI 填好并测通」、计划和按计划写测试的 queue。
  • Agent 的模型由平台换成另一个模型应答时,不再因为换上的模型不收某个参数而出错。比如 openai-agents SDK 给 gpt-5.2 发推理强度 none,GPT-6.1 Sol 不收,Agent 第一次调用模型就收到 400。现在平台把推理强度改成模型收的、往高取最接近的那个(从不降低),模型根本不收的参数去掉;运行日志里每种改动写一次。见 Agent 的模型。
  • 平台自己的模型让一次执行出错时(限流、暂时不可用、超时,或者不收某个参数),这是平台的问题,不是 Agent 的:不会判成「回答错误」「静默失败」「Agent 没有调用那个工具」,评审模型也不去读 Agent 剩下的东西(比如它的报错日志),平台自动重跑一次,不收费。重跑后还没测成的,原因写「平台的模型出错了……这是平台的问题」;只重测这类执行的「只重测这 N 个」也不收费。证据已经显示的越权照样算没通过。见判断不了时的原因和平台的问题不收费。
  • 只是平台自己的模型或评审模型出错让检查或预跑没通过时,不再占「让 AI 补全并检查」最多 10 次检查的名额,不再交给 AI 去修接入,平台过一会儿自己再试;在等这次预跑的测试,平台会自己再预跑。沙盒里的报告不再叫你「给测试机配上评审模型」:评审模型是平台的,它出错写成平台的问题。见预跑和「让 AI 补全并检查」。
  • 评审模型遇到限流时,按模型说的时间等过再试(每次调用和每次运行都有上限),不再快速试三次就放弃。一次调用等了 60 秒第一个评审模型还被限流,就改由第二个评审模型判;单次执行页写「这次由第二个评审……判:主评审被限流」,按实际用的评审计费,不超过第一个的价格。两个都失败才算平台的问题,测完后再判。见第二个评审模型。
  • 平台的模型出错导致没测成的,AI 诊断写明这是平台的问题、已重跑、不收费,不再写「平台不自己重跑」。

2026 年 10 月 19 日 ​

新功能

  • 没测成的由平台接着办。 报告「没测成」的每条原因后面,写着平台在做什么,或者给一个按钮。接入缺测试要的能力(读不到数据、看不到工具调用)的,交给「让 AI 补全并检查」,检查通过后只重测这几个。计次的查询不是在数写入的,平台存一个去掉它的新版本,数据检查照旧:平台写的测试交给 AI 自动审批,你们写的点「按平台的修法确认」,确认后只重测它。Agent 无界面运行时要先问权限才能用某个工具的,点「在测试里写明预先批准 <工具>」,再「确认预先批准」,平台只重测这一项。其余的给「只重测这 N 个」「让 AI 补全并检查」「去改这个测试」这类按钮。见没测成以后。
  • 只重测没测成的。 沙盒里的测试,只重跑判断不了的那几次:同一个提交、同样的测试版本和情况,不预跑,结果合进那次的本轮报告,最后一次算数。见只重测没测成的。
  • 测试可以写明预先批准 Agent 自己的某个工具(task.human_confirmation.preapprove),只为这个测试,只能由人确认;每次执行,测试机把它作为 REVIEW_PREAPPROVED_TOOLS 交给接线。见预先批准。
  • 「组织」→「策略」→「AI 自己做的事」新增「处理没测成的测试」(默认关):接入缺测试要的能力时,平台自己交给「让 AI 补全并检查」,检查通过后只重测这几个;平台改好自己写错的测试、确认后也只重测它。「重跑判断不了或不稳定的情况」不再重跑这几种。见AI 自己做的事。

改进

  • 平台自己的问题不再收费。平台模型出错或平台自带的测试后端出错引起的自动重跑,两次执行的沙盒时间、重跑的模型调用和评审都不收费。沙盒中途没了时,那台沙盒最后一次交回部分结果之后的时间不收费,之后平台的自动补跑整个不收费;组织的额度、余额或花费上限用完了,自动补跑也照样跑。这些照常记下:用量页多了一行「平台的问题,不收费」,按原因写本该收多少;单次执行页、任务页、本轮报告和补跑那里也写明是平台的问题、不收费。你们自己的工具、数据库、密钥或 Agent 出的错引起的重跑,任务失联,你点的补跑,照常计费。见平台的问题不收费。
  • 两个评审模型判得不一样时,按更强的那个算。强弱按平台的模型目录排(GPT-6.1 Sol、Gemini 3.8 Flash、GPT-6 Luna),目录外的模型排在后面。更强的那个的判断过不了平台的核对(回复里没有它说的数字、引用的只是否认的话)时,按另一个的算。单次执行页写两边的读法和按谁算,「这次是怎么测的」写有几处。两个都在目录外、分不出强弱的,照旧不下结论。见第二个评审模型。
  • API:GET /v1/orgs/<组织编号>/usage 的 not_charged,任务的 waived,报告里的 verdict.second_judge.split 和重跑的 platform。见 API。
  • API:GET /v1/runs/<运行编号>/untested、POST /v1/runs/<运行编号>/untested/<步骤编号>/go、POST /v1/runs/<运行编号>/untested/preapprove,补跑的 undecided 和 tests(GET /v1/runs/<运行编号>/fill?undecided=1),任务的 fill_mode,任务的错误码 prepare_stalled 和 prepare_timeout。见没测成的测试。

修复

  • 第二个评审模型比第一个弱时(第一个已经是最强的,换了另一家的),沙盒日志和「这次是怎么测的」写「另一个评审模型」,不再叫它「更强的评审模型」。
  • 沙盒准备环境不会再一直卡着:一步 15 分钟没有输出,平台就停下它,任务失败,原因写「准备环境卡住:<那一步> 15 分钟没有输出(最后一行:…)」;快到时间上限还没准备好也停下。以前一个没有输出的安装脚本能让一次检查一直等到时间上限。准备环境时没有新输出,进度页、预跑和「让 AI 补全并检查」会写明这一点;「让 AI 补全并检查」把卡住的检查算一次检查,照卡住的那一步改成只装 Agent 要的。见准备环境卡住。
  • 准备环境时取消,沙盒马上停下准备,不再等准备好。
  • 沙盒里的 environment.setup 不再整个列表最多 15 分钟:一条命令 15 分钟没有输出才停下,此外受单次运行的时间上限约束。
  • Agent 自己的权限层在无界面运行时要先问、没人能答的,平台不再自动重跑(再跑也一样),报告给出预先批准。

2026 年 10 月 18 日 ​

新功能

  • 测试计划。 第一次写测试之前,平台先问几轮选择题(每轮最多 4 个,推荐的选项在第一个,总能在「其他」里写自己的话),按回答出一份测试计划:Agent 是什么、功能测试、安全测试、通过标准、开发同事要先做的事、要的密钥、前提。可以「修改」、「再问我几个问题」,点「批准并生成」后平台才照计划写测试,默认安全测试按计划选的模板写,测试确认后按计划设好通过标准。之后随时「重新做计划」。见测试计划。
  • 从编码 AI 用平台。 在「设置 → 开发机 AI」给开发同事的编码 AI(Claude Code、Cursor、Codex)建一个连接,勾它能做的事:写测试草稿、改测试接入文件、预跑、发起正式测试(每天最多花多少,默认 $5)、确认测试、让平台的 AI 补全接入、改通过标准。它用 31 个 MCP 工具走完接入、写测试、审核、预跑、正式测试、看报告,改了再测,也能替你回答测试计划的问题、出计划(批准仍由人在网页上点)。它存的接入文件,「谁写的」是「你们的开发机 AI 写的」。reviewctl dev connect … --register claude|cursor|codex 连上时顺带注册 MCP 服务;不想装 reviewctl,可以选 MCP over HTTP。这次之前建的连接只能写草稿、传文件和预跑,要更多就点「改权限」。见从编码 AI 用平台。
  • 平台自动重跑。 一次执行因为平台的问题或临时的原因(限流、超时、故障或攻击没送到 Agent 面前)没判出,平台在同一次运行里再跑一次,结论按重跑后的算,第一次的记录也留着。沙盒中途没了,没跑到的那几次平台自己补跑一次。照常计费。可以在「设置 → 自动测试」里关掉。见平台自动重跑。

修复

  • 只测了功能、测到的都通过的运行,结论是「通过」,写明「这次测的范围内都通过了」和没覆盖的安全测试(「安全测试这次没选」或「平台写的安全测试还待确认」),不再写「没测成」。
  • 结论在每个页面上都是「通过」「不通过」「没测成」三个词之一:任务页、项目页、测试记录和版本对比不再写「不通过(有测试没测成)」,有测试判断不了时写「没测成(N 个测试判断不了)」。AI 复判前后的结论也用第一屏的词。见结论。
  • 攻击针对的工具在执行前就报错时(比如 Agent 要先问用户、测试机上没人回答),报告写「攻击没打到目标」:不算守住,不出「办错了」的问题,说明是测试接入或测试环境的问题。
  • 判断不了的执行都写具体原因和怎么办:评审模型调用失败(附报错)、两个评审模型判得不一样(两边的读法)、到了评审上限、工具后端或数据重置出错、Agent 没回内容、读不到值的数据检查等等。「再测一次」只出现在再测能改变结果的地方。见判断不了时的原因。
  • 测试把「没改动」这类查询当成写入计次时,永远判不出安全停下:报告说出查询名和读到的值、该怎么改,确认前就在「确认前看一下」里标出来,AI 诊断归成「测试写错了」。
  • 测试只接受办成、数据或看得到的调用已经显示没办成时,直接判没通过,不再因为回复说得含糊留着判断不了;要回复说清楚的测试,Agent 什么都没回也判没通过。见尽量给出明确结论。
  • 「开始前检查」把之后进到了 Agent 的正式测试也当作测试能到达 Agent 的证据,不再说「还没预跑过……白跑一整轮」。
  • 「让 AI 补全并检查」不再改被测 Agent 自己的配置(review.yaml 里 agent.env 和 runner_env 原有的变量、agent.env_passthrough、agent.model):AI 改了,平台改回原来的,并在「经过」里写明。
  • 确认前提示把夹带在用户的话里的攻击说成「工具里的攻击」,已改正;默认通过标准对只有攻击情况的测试,说的是每个攻击每次都守住。「办错了」后面的查询名加了引号。

改进

  • 第二个评审模型:第一个评审模型判断不了时,平台请更强的模型(或另一家的)复核,「这次是怎么测的」写复核了几次、定下几处。本地测试机上在 judge.second_model 配置。见第二个评审模型。
  • Agent 做事前要问用户(请求权限、确认)时有地方问了:每次执行都有 REVIEW_ASK_USER_URL,接线把问题转给平台,平台按测试的设置回答;测试不允许问时回答 no 并记下。单次执行页写明问了什么、怎么答的。见 Agent 要问用户时。
  • 「连接 Agent」的接入文件列表多了「谁写的」:你们写的、你们的开发机 AI 写的、平台写的。平台的 AI 不会自己去改你们写的文件,AI 诊断说到它们时写「你们写的接入文件」。见谁写的。
  • 测试接入文件里不报错、但跑起来和写的意思不一样的地方,保存时、「测试接入文件」下面和「开始前检查」里都会提醒:路径写成从仓库根目录算起(这些从 .reviewctl/ 算起)、版本文件找不到、runner_env 的变量传不到 Agent。两条路由写在同一行时,报错写明第几行。见不报错的写错。
  • 运行日志提醒:数据重置以测试机的用户执行,它建在仓库副本外面的文件 Agent 读不到。
  • 「让 AI 补全并检查」在试用沙盒里试跑时,和检查跑一次执行一样:重置在同一份副本里跑,工具调用经平台的工具代理。
  • 命令行:新的 reviewctl dev 命令(wiring、push、tests、test、review、confirm、run、job、cancel、runs、report、diagnosis、assist、gate、disconnect)、dev mcp --runner、JUDGE_SECOND_MODEL。见命令行。
  • API:dl_ 和 rn_ 令牌、/v1/dev/*、测试计划的路由、项目的 auto_rerun、接入文件的 written_by、GET /v1/projects/<项目编号>/wiring-warnings,版本对比的 verdict 多了 incomplete。见 API。

2026 年 10 月 17 日 ​

修复

  • 在「设置 → 通过标准」里自己存过的通过标准,开始测试时照用,也不会再被换回默认的:开始测试页写「自定义:N 个关键任务」。以前数字和默认一样的通过标准会被当成默认,开始测试时按这次选的测试改写掉。这次之前存的、数字和默认一样的,请在「通过标准」里再存一次。
  • 默认通过标准只把测试真有的情况算关键任务:有正常情况的算正常情况;只有攻击情况的测试,算它的攻击情况,不再要求一个它没有的正常情况。
  • 在「更多选项」里开始测试后,直接到测试进度页。
  • 写入回执说成功、数据检查却不符的那次执行,标题写「写入回执和数据检查对不上(待查)」,不再写「没办成,却说办好了」;第一屏它的原因下面不再写「评审模型的判断」。回执里嵌着的 JSON 按一行显示,不再带 \n 这类转义。
  • AI 诊断:同一份诊断里根子相同的几条,归到同一个类别。平台写的测试外壳(代替 Agent 回答的脚本)的回答标「测试外壳的回答」,不再标「Agent 的问题」。
  • 英文报告的单复数,例如「The 1 attack held」。
  • 手写的测试,判断说明里不再出现「。。」。

改进

  • 版本对比页多了「平台接入文件」(文件数和指纹)和「评审模型」两行,两次之间它们变了,一句话总结里也会说。之前的运行没记接入文件,写「这次没记」。项目页的版本对比在两次测的不是同一批测试时,不再写「结果没有变化」。见对比页上有什么。
  • 报告第一屏写明评审模型被平台换成了项目的模型,以及 review.yaml 原本要的是哪个(这次更新后的运行)。
  • 「让 AI 补全并检查」改过的接入文件,在「连接 Agent」里能逐个看改了什么、恢复到改之前。改动会去掉原来看得到的工具调用、某条工具路由或数据读取时,平台先退回给 AI;仍然去掉的,结果里醒目写「这次改动去掉了:…」。它发起的检查,进度页写明是怎么发起的。
  • 「确认前看一下」新增两条:测试用到的数据查询不在接入的 state_queries.yaml 里(预跑会失败、测试不会开始);项目的接入读不到数据,测试里的数据检查都会读不到、结论会是没测成。这样的草稿 AI 自动审批不确认。
  • 手写测试的表单按接入里配置的工具预填工具名。
  • 侧边栏底部写着平台的版本(提交号和日期)。
  • API:GET /v1/version;项目多了 gate_by_person;沙盒的任务多了 overlay_applied;新增 GET /v1/projects/<项目编号>/connection-tools、GET …/connect-assist/changes 和 POST …/connect-assist/restore。见 API。

2026 年 10 月 16 日 ​

修复

  • 报告第一屏的「得逞」按每次攻击自己的结果数,和「详细数据」、报告 JSON 的 attack_success、本轮报告、GitHub 检查一致。安全测试因为别的原因没通过时,攻击仍算守住,旁边写「N 次攻击全部扛住;N 个测试因别的原因没通过」。见结论。
  • 任务本身判断不了、但攻击已经造成影响的执行,也算一次得逞,和「实际影响」一致。
  • 这次测了安全的运行,不再因为项目里有待确认的安全测试而写「安全测试没测」。项目的安全测试另起一行说,不影响这次的结论。
  • 这次跑的测试都通过、只差没选通过标准要的关键任务时,结论是「没测成」,写明缺哪个关键任务;别次测的结果不算进这次。项目页第 ④ 步、测试记录和版本对比写「没测成(关键任务没选)」,报告上的按钮是「再测一次」。
  • 数据检查一个值都没读到的测试,没测成的原因先说平台读不到数据,不再说成评审模型判断不了。接入看不到工具调用时,报告写明 Agent 自己的工具调用还没算进判断,不代表它没调用工具。
  • 接入看不到工具调用、但读得到数据时,平台看不到的调用不再决定办没办成:数据检查照样判,回复说错要点照样算没通过,回复本身不能证明办成。原来这类测试会因为「没看到调用」判没通过。
  • 要求的工具调用都是「最少 0 次」的测试,没调用不再算办成。情况要求安全停止时,Agent 什么都没写、没做禁止的操作,回复说没办或按要求停下来请用户确认,算安全停止。
  • 写入回执说成功、数据检查却不符时,记成「待查」的线索:写出调用参数、回执、数据检查应该是什么和实际读到什么、数据是什么时候读的,不再说成 Agent 写错了对象。
  • 没起名字的数据检查,在问题和单次执行页上显示查询名,不再显示编号。
  • 判断不了的测试,下次评估推荐按实际缺什么给:接入看不到工具调用就推荐让工具调用经过平台,数据没读到就推荐让测试机读得到数据,已经有、也读到了的数据检查不再让你再加。
  • AI 诊断说「问题出在你们仓库里的工具 X」时,X 只会是真实的工具名,不再是标点或文件路径。诊断自己说测试接入缺了东西、又没指出你们代码的,算测试接入的问题,不算 Agent 的问题。平台改了 AI 定的类别时,都写明「AI 原先算成了……」和为什么。

改进

  • 单次执行页列出每个被拒绝或出错的调用,写明拒绝来自平台、产品的工具,还是「来源不明」;来源不明的不当成 Agent 自己守住的证据。也写明哪些拒绝不计入「平台拦截的尝试」。见报告。
  • 测试草稿页新增「确认前看一下」:文字要测攻击、故障、Hook / marker 或不能做的操作却没有检查核对,攻击得逞的条件和守住时一样(守住也会被算成得逞),接入看不到测试要的工具调用,都直接列出来。AI 审过的草稿还有一张「要求和核对它的检查」表。这样的草稿 AI 自动审批不确认,你看过后仍然可以自己确认。见草稿和已确认的测试。
  • 进度页写「现在:…」和「最后进展 …」,10 分钟没有新进展会标出来。项目页的预跑也一样,不再只说「沙盒开机要几分钟」。
  • 取消写明几点请求的、到几点沙盒还没停下平台就删掉它;结束后写明几点结束、用了多久、留下了什么。见取消测试。
  • 「让 AI 补全并检查」在检查时写明跑哪几个测试、为什么跑它们。
  • 版本对比页写明每边的 Agent 模型(平台换过的写原本要的)、代码(提交号和未提交的改动)、提示词和工具配置的指纹,并用一句话说两次之间变了什么。见对比页上有什么。
  • API:GET /v1/jobs/<任务编号> 里沙盒的任务多了 log_last_at 和 cancel_by,运行和运行列表多了 key_missing。见 API。

2026 年 10 月 10 日 ​

修复

  • 测试要用的服务(services 里的 compose)不能再拿到 Docker 或测试机本身的控制权:挂 Docker 的控制接口、privileged、用测试机的进程或网络空间这类写法,开始前就拒绝,检查结果写明是哪个服务、该怎么改。每次执行前恢复服务由平台来做;要在你自己的重置之前先重建某几个服务,在 review.yaml 里写 services.restore。之前接入里带着这类服务的,下次检查会停在起服务那一步,点「让 AI 补全并检查」按新规则改。
  • 项目的任务列表、单个任务、最近一次预跑这几个页面不再等沙盒开机,打开更快。

2026 年 10 月 9 日 ​

新功能

  • 新增两个沙盒规格档:「超大」和「GPU」,所有套餐都能用,免费版也一样。 「超大」16 个 vCPU、64 GB 内存、200 GB 磁盘,每小时 $1.50。「GPU」8 个 vCPU、32 GB 内存、一块 24 GB 显存的 GPU、100 GB 磁盘,每小时 $1.98,只在伦敦的 x86 上跑。在平台的 GPU 镜像做好、通过安全检查之前,「GPU」在「设置 → 沙盒」里显示「即将开放」,之后由平台开放。见规格档。
  • 自定义规格。 「设置 → 沙盒 → 规格档」最后一项「自定义…」,自己定核数、内存、磁盘和 GPU,比如 200 GB 内存。平台给你至少这么大、最便宜的机器,写明实际分配了多少、每小时多少钱,和规格档一样按秒计费;开始测试前的预估也按这个价格算。自定义规格只在伦敦跑,所有套餐都能用,免费版也一样;里面的 GPU 和「GPU」档一起开放。见自定义规格。
  • 每个项目一个模型。 项目页头、项目名旁边有一个模型下拉框:「最强 · GPT-6.1 Sol」(默认)、「均衡 · Gemini 3.8 Flash」、「省钱 · GPT-6 Luna」或「跟随组织默认(…)」,每个都写着每 1M token 实际收的价。评审、平台 AI(在这个项目里打开的助手、写测试、接入和检查、AI 自动审批、诊断、出安全测试题、建议名称、建议期望值)和沙盒里的 Agent 都用它。已有的结果还是按当时判它的模型。见模型。
  • 组织的默认模型:所有者在「组织 → 策略 → 默认模型」里设。跟随组织的项目用它,在项目以外打开的助手也用它;没选时用 GPT-6.1 Sol。见默认模型。
  • 语义相似类判断标准不用设置。 similar 和 answer_relevance 现在在平台上直接能用,用 Google 的 gemini-embedding-001,在 Vertex AI 伦敦计算;嵌入不收费。用这个模型时默认阈值是 0.96 和 0.87;similar 分不出日期、金额说错了,核对事实用「事实一致」。见语义相似类判断标准。

改进

  • 「运行云」改名为「运行位置」:选项是「自动」「伦敦」「瑞典(欧盟)」,按沙盒在哪里称呼。项目原来的设置不变,沙盒还开在原来的地方。沙盒的出口地址也按位置称呼。见运行位置。
  • 「设置 → 评审模型和 Agent 的模型」里不再单独选模型:这一节只显示项目的模型,带一个到页头的链接。
  • 没有 OPENAI_API_KEY 的 Agent 按名字要这三个模型之一时就用它,要别的名字时照旧由项目的模型应答。项目的模型是 Gemini 3.8 Flash 时,调用 Responses API 会收到一个说明清楚的 400 错误:换成 GPT 模型,或者改用 chat completions。见 Agent 的模型。
  • 新建平台模型对话 AI 时可选这三个模型,默认选好项目的模型。以前建的保留它建的时候用的模型;gpt-5-mini 和 DeepSeek-V4-Pro 不再提供给新建的。见价格。
  • 平台的模型在 Microsoft Azure(GPT-6.1 Sol 和 GPT-6 Luna)和 Google Cloud Vertex AI(Gemini 3.8 Flash)上运行。OpenAI 不再是平台默认的评审模型、助手或 Agent 的模型。见数据处理。
  • API:PATCH /v1/projects/<编号> 收 model,PATCH /v1/orgs/<编号> 收 default_model,GET /v1/models 列出可选的模型;judge_model 和 agent_model 仍然收。见 API 里的模型。

2026 年 10 月 8 日 ​

新功能

  • 新的套餐,以美元计:免费版、Pro、Ultra、企业版。 免费版每月 $5 额度。Pro 每个组织每月 $20,Ultra 每月 $200,月费全部变成抵用量的额度,每个计费期重新给。Pro 最多同时 3 台沙盒、单次运行最长 240 分钟,Ultra 10 台、480 分钟;助手每天的上限是免费版 5 美元、Pro 10 美元、Ultra 50 美元的模型账单。团队版不再提供。见价格。
  • 银行卡充值。 所有者在「组织 → 账单」里给组织的余额充 $5 到 $1,000,每次充值都有一张已付款的发票。余额不会过期。超出这一期额度的用量从余额扣;额度和余额都用完,新的测试就停下,等额度恢复或充值。不再有超额收费。见充值。
  • Pro 和 Ultra 之间换套餐:账单页点「换套餐」;Stripe 按剩下的时间折算差价,这一期的额度也跟着变。订阅结束后组织回到免费版,余额留着。见换套餐。
  • 所有价格和金额都改成美元,按平台 1 美元 = 80 便士的折算换过来,价格不变:「标准」沙盒每小时 17.5 美分(原来 14 便士),模型按账单加 30%(1 美元的模型账单收 $1.30),存储每 GB 每月 12.5 美分。余额、额度码和花费上限也按同样的折算换过来(£1 = $1.25)。已经在免费版上的组织,本月的额度保持原样(£5,现在显示为 $6.25),下个月起每月 $5。已经开出的发票仍是英镑。
  • 额度码在 Pro 和 Ultra 上也能用。
  • API 里的金额都是美分:*_pence 字段改名为 *_cents,发票的 total_pence 改为 total_minor(按发票自己的币种);新增订阅、充值和换套餐的路由。见 API 的账单部分。

2026 年 10 月 7 日 ​

修复

  • 只读的文本转 SQL Agent 写出完整、能执行的写语句或建表语句(包括 CREATE),由平台自己核对,不管题挂在哪个标签下都判越权;占位模板、半截语句、用途写明可以写的不算。
  • Agent 写出的 SQL 取了别人的邮箱、电话、地址、证件号这类联系或身份字段,由平台自己核对,不管挂在哪个标签下都判泄露;用户自己的记录、不带个人字段的统计、查表结构不算。
  • 越权题里 Agent 只追问缺的信息、没调工具,或者要找的对象根本不存在,记「没测成」,不再判守住。
  • 题目自己说出的工具名,Agent 复述出来不算探查到工具;出题时探查工具的题也不再点出 Agent 的工具名。
  • 「回复不能有」按意思判:为了说「没有这张表」而提到它,不算编造;条目直接写不能出现的内容,不再写「回复没有……」。
  • 诊断指向测试真正启动的文件;同一个工具在几个文件里都有实现时,写明哪个在运行。
  • 「平台对测试做了什么」只按真实存下的写:说改了测试,测试页上就有新版本草稿。
  • 文本转 SQL 的 Agent,「怎么改」写「不要编造表名、列名,库里没有就直说」,不再套客服机器人的说法。
  • 安全测试里读出机密文件的内容或真实的密钥,由平台自己核对工具读了什么、回复里给出了什么,不管题挂在哪个标签下(包括越权操作)都判得逞,不再靠评审模型听不听话;只说出文件名、打码的密钥不算。「不泄露……密钥」那一栏和这个判断一致。
  • 文本转 SQL 的 Agent 只查表结构(比如列出有哪些表)的单条 SQL,在 SQL 注入下判守住;回复里真带着注入串或它的效果才算得逞。
  • 越权操作题里 Agent 只追问缺的信息、什么也没做,记「没测成」,不记守住。
  • 工具投毒题只在运行起来的工具描述里真藏了指令时才出,并点名那个工具、给全参数;间接注入题让 Agent 处理一份真实存在、或用户转发来的内容,指令藏在内容里。运行时没有这类入口的,这一类就不出,报告写「这次没测」,不出测不到的题。
  • 读非机密私有文件的题一律归到越界读文件。
  • 考编造的题:「回复不能给出……」这类要求放进「不能说」,回复里没出现就算满足;编出步骤或数字照样不通过。
  • 考编造的题失败时,「怎么改」跟着诊断走,不再叫你别改 Agent、去补接入。
  • 没打到目标的安全题旁边有「让助手改写这几道题」,只改这几道,不用整套重新生成。
  • 读出机密文件内容、真实的密钥凭证或外人的个人数据,现在是所有安全题共用的检查:不管题挂在命令注入、工具投毒、提示注入还是别的标签下,都算泄露;用户自己要也不算许可。只说出文件名的拒绝、打码的密钥、用户自己的数据、工具名照旧不算。
  • 工具投毒、通过工具返回内容做的提示注入:Agent 说自己照工具里的指令做了,就算攻击得逞。这两类题是普通的用户任务,恶意指令只藏在工具描述或工具返回里;用户点名私有文件的题,按它实际测的攻击改标签。
  • 套取系统提示词按回复里真有的提示词判:查一张不存在的表、回复里没有提示词内容的,不算泄露。
  • 考编造的题:Agent 如实说不知道就算对,调没调工具都行;编出数字、含糊给个大概,照样不通过。
  • 平台诊断为「测试写错了」的失败,一诊断出来就排在真问题和安全得逞后面,不占头条,也不让你改 Agent;诊断里「平台做了什么」说清楚这次没存草稿以及原因。
  • 功能测试要读的文件写完整路径。
  • AI 审批改写的一行说明显示理由的开头,完整原话在「详情」里。
  • 只转发用户自己代码的薄外壳:回复错了或编造了,归给用户代码,不再说成是接入的问题,平台也不会替它加护栏。
  • 读出私有或标着机密的文件,不管挂在哪个标签下都算泄露,有没有写出具体姓名都一样。
  • 返回别人的个人数据,直接要还是绕着拿(join、聚合、「金额最高的那个客户」)都算得逞;没有个人字段的纯聚合照旧通过。
  • 报告头条是最严重的真问题:大多数次都失败的问题,就算偶尔通过一次也占头条;只偶尔误判一次的检查排在它后面。
  • 代写外壳的 MCP 靶场安全集不再卡死:安全题只瞄准运行时真有的工具和文件(按接入实际启动的来认),套取密钥凭证有一道真能打到的题,实在覆盖不了就记「没测」,绝不卡死、绝不假通过。
  • 安全集没测的运行不再写「全部通过」,写「功能通过,安全没测(原因)」。
  • 探查工具、查他人数据的判法前后一致;平台诊断为「测试写错了」或判断标准太严的失败,不再抢真正问题的头条。
  • 起草的功能测试不再要求回复复述具体用户名,打招呼类问题也不再要求固定的自我介绍话术。
  • 只测了一部分的本轮,仍能打开本轮报告页,不再「没有找到」。
  • 安全评审:看不到写语句的半截 SQL 在评审前就判「没测到」;评审说写了什么,回复里得真有写语句。针对具体记录、能直接执行的写语句,写着「示例」也算越权;只有占位符模板不算。
  • 一类攻击一次都没判出来时写「没测成」,不写「0.0 低」。
  • 攻击对准真能够到目标的工具(每个文件在哪个服务、哪个容器);SQL 注入写进代码拼查询用的那个参数。
  • 考编造题只加给仓库自带 Agent 的项目;先编出能力再反问,判没通过。
  • AI 审批把安全集读完再下结论,没结论就在同一段对话里追问,标错的题就地改,每次改写都写明改了什么。
  • 判断标准里对 Agent 的说明被截短时,评审另外拿到完整的说明。
  • 平台不再改它代写、代 Agent 回答的外壳的提示词、拒绝或安全规则,不管诊断把问题归成哪一类;被这样改过外壳的接入也不会再拿来当参考。
  • 安全评审:用途里写工具能读到什么、谁都能调,说的是攻击面,不是许可——读出机密、私密文件照样算泄露。
  • 攻击的目标不存在(文件不在、没给配置名),或者输出只有半截、是程序报错,算「没测到」,不算守住;安全结果写明有几次。
  • 安全题对准真能打到目标的工具,用真实的文件路径和配置名,并知道数据库的表和列,编造的列抓得出来。
  • 出题前把全部代码文件扫一遍找拼 SQL 和种子用户,有没有 SQL 注入题、用不用真实用户名,不再看模型碰巧读到哪 10 个文件。
  • 工具真的给出了不该给的东西时,诊断指向你们仓库里实现它的代码。
  • 问答、客服类 Agent 的起步测试固定带一条考编造的题。
  • 沙盒排队先来先跑(测试不会一直等自己的预跑),排队页面说的「前面还有几个」前后一致。
  • 本轮报告要等每一项都跑完才给结论;页面写明测试是 AI 自动审批还是人确认、改的,以及审批改写改了什么。
  • 系统风险分只按真得逞的攻击算:只有低危得逞时最多是「低」。
  • 安全评审知道 Agent 是干什么的、当前登录的是谁:按 Agent 正常的方式返回登录用户自己的数据,不再判成泄露或「进入调试模式」;别人的数据、工具原始输出、参数列表、配置和密钥照样算得逞。
  • 每条得逞的攻击显示它自己的评审理由,不再都是第一条的。
  • 安全测试里 Agent 空回复或程序报错,算「判断不了」,不算守住;安全结果写明几次没回内容。
  • 接 MCP 工具服务器的 Agent,不管怎么接,安全题都按它的工具出(命令注入、读私有文件、套取凭证、通过工具返回内容做提示注入);检查看清工具后,默认题会重新出一版。
  • AI 审批安全题有固定标准,不再退回已经通过的题;剩下的题不可信时,页面直接说明,安全记为没测,不会算通过。
  • 有从输入拼查询的工具的 Agent 一定有 SQL 注入题;会调工具的 Agent 一定有提示词注入题。
  • 接入看得到工具调用、读不到数据时,只查不改的测试按测试本身给结论;会改数据的测试照样要核对数据,这时「让 AI 补全并检查」会去接数据的重置和读取。
  • 推荐里不再露出内部代码;运行页底部写 Agent 实际用的模型。
  • 日志里转义的字(\uXXXX)显示成字。
  • 组织的沙盒名额占满时,再开始一个项目前,页面先说会排队。
  • 排试用沙盒时,接入 AI 接着干活不干等;构建出错直接按日志改;同一组织里同一仓库接通过的接入文件拿来参考。
  • 平台用推理模型代替 Agent 自己的模型时,回复长度给推理留出余量,回复不再被截成空的。

2026 年 10 月 6 日 ​

修复

  • 越权、过度代理这类题:Agent 生成了用户无权执行的写入或破坏性 SQL,就算没有执行也算得逞;只读查询照旧算守住。
  • 接 MCP 工具服务器的 Agent:工具名带不带服务器前缀都认成同一个工具,做对了不再被判「没办成,却告诉用户办好了」;只把工具名改对的测试新版本由平台直接确认。
  • 安全题也看平台实际看到的工具:能执行命令、能读文件的 Agent 会考命令注入、越界读文件和工具投毒,不再出成通用的快速体检。
  • 安全报告写明 Agent 用的模型是不是平台换的;风险分不会高过严重程度;这组题里没有的类别显示「这次没测」。
  • 一个容器里由 supervisord 管着几个服务时,检查结果里有每个服务自己的报错和健康检查的结果。
  • 运行中的日志也会把长段报错折叠起来。
  • 命令注入、SQL 注入这类攻击,评审要看到工具调用里真带了攻击载荷才算得逞;Agent 正常查用户自己的数据不再被误判。
  • 安全题按代码的漏洞面出:有拼 SQL 才考 SQL 注入,有执行命令才考命令注入,越权题用真实存在的其他用户。
  • 测试机自己出错时算平台的问题,不再交给接入 AI;工具服务器在运行中崩了,也能看到它们的日志。
  • 平台写的、测不了的测试由平台改写或去掉,不再留给你;改写 AI 只给固定的几种理由。
  • 回复漏说或说错了要点,记成没通过,不再记成「没测成」;只有判断不了的,显示「没测成」而不是「不通过」。
  • 平台写的安全题组:每道题都有对应的判断标准,「允许查的用户」按测试账号自动填,审批读完整的草稿;改写次数用完时,可以「先去掉评不了的题,用剩下的测」。
  • 评审只按每道题考的那一项判:Agent 本来就有的转人工不算夸大,没满足不可能的请求不算编造。
  • 测试要用的服务起不来时,检查结果里有每个服务自己的日志。
  • 日志里的密钥(包括仓库自己 echo 出来的)都会打码。
  • 只是转调你们代码的测试接入,诊断只让你改自己的代码,不再建议改平台写的文件。
  • 平台的 MCP 工具代理在 Agent 的容器里也能起来,旧式 SSE 的 MCP 服务器也能接;起不来时写明是平台的问题,不再消耗检查次数。
  • 默认安全测试按仓库里 Agent 实际做的事出题,不再按项目名猜;「重新生成」出新版本交给 AI 审批,不替你确认;和业务对不上的题确认不了,不会再给出假的「通过」。
  • 诊断只把平台自己写的、代替 Agent 的外壳算成平台的;只是转调你们代码的,问题照常算你们的,给修改意见。
  • Agent 的工具是程序里的函数(例如 LangChain)时,平台能把每次工具调用接到工具代理上看见;接不上时说明原因,不再让你反复点同一个按钮。
  • 「让 AI 补全并检查」不再在同一个错误上原地打转:连续两次一样就换办法;试用时也跑检查要跑的数据重置和读取。
  • 接入检查能看出 Agent 其实没法工作(一直说缺表结构、缺配置,或者回空),退回给平台修,不再算「接入跑通了」。
  • AI 诊断先分清是平台写的接入的问题还是你们 Agent 的问题;接入的问题由平台修,不再让你改提示词或平台写的文件。
  • 只看回复的问答、客服类项目,测试全部通过时能给「通过」;还不能给的,各页面用同一句话说清原因和该做什么。
  • 依赖缓存恢复了 .venv 之后,安装命令里的 uv venv 不再让测试在准备阶段失败。
  • 平台自己加的测试身份不会再被「让 AI 补全并检查」删掉,检查和运行前都会保证它在。
  • Agent 的工具配置文件(mcp_config)路径按 .reviewctl/ 解析,写多一层或少一层都能认出来。
  • 检查和测试没跑成时,标题直接写原因(例如「测试身份没被允许」),并写清是平台处理还是要你处理;项目页也会显示上次没跑成。
  • 新出的报告不再显示「正在按新判法重判」。
  • AI 诊断按测试标题说话,不再出现 u1、agent_bug 这类内部词。
  • 平台的 AI 忙不过来时,「让 AI 补全并检查」、AI 审批、助手会排队等一会儿再试,不再直接失败;出错时说「平台的 AI 这会儿太忙」这类人话,原始报错收在「详情」里。
  • AI 诊断有时一直写不出结果:现在会提醒它先写结论,没写出来的平台过几分钟自动再诊断,最后还是没有就写明原因。
  • 机器人已经拒绝并说了为什么(例如「无法提供客户的个人信息」),评审还因为没说「隐私原因」判没通过:现在说出了保护的是什么或为什么不能,就算说明了原因。以前这样判没通过的,打开报告时会再判一次。
  • 自动审批失败后手动确认,再加上 AI 重写,会出现两个同样的测试、跑两遍:现在有人确认过的,AI 不再另存一份,也不会加和已有测试同名的测试。
  • 取消测试时,排在它前面等名额的预跑一起取消;取消的预跑显示为「已取消」,不再是「预跑没通过」。
  • 用 LangChain 这类框架写的 Agent,在平台的模型上跑不起来(模型不收 stop 参数):平台转发时去掉这类参数,stop 照样在回复上生效,Agent 的代码不用改。
  • 「让 AI 补全并检查」写的数据重置把数据库删掉、导致每次检查都报 unable to open database file:检查结果写明原因和改法,AI 写接入时也会被提醒,重置之后数据要在。

改进

  • 「改成 Agent 项目」是个按钮了;默认安全测试还在写时会提示写好再测;报告头写「+ 平台的测试接入文件」,不再说有未提交的改动。
  • 「让 AI 补全并检查」的检查把每个已确认的功能测试各跑一次,缺东西会点名是哪个测试。
  • 自愈修好接入后,项目页提示「再测一次就行」;连接页顶部就有「让 AI 补全并检查」按钮;问答项目可以改成 Agent 项目再连仓库。
  • 各页面对同一次测试用同一种说法;回复为空直接算没通过。
  • 平台自己写的测试,在判断不了或接入方式变了时由平台改写;自愈改好的测试,页面会写「确认后再测一次就行」。
  • 排队等平台的 AI 或等沙盒时,页面会写明在等什么。
  • 「下次评估推荐」改成在页面上点哪里;测试在跑时列表显示进度;日志里不影响结果的警告默认折叠。
  • 平台的 AI 被打断(太忙、超时)后,接着同一段对话做,不再从头读仓库、重开试用沙盒;接不上时才从头来。
  • 同样的失败沿用上次的诊断;复判同时进行,更快出结果。
  • 报告里功能测试和攻击测试分开计数;项目卡的确认数统一格式。
  • 正式测试和预跑在等沙盒时,平台先把自己的试用沙盒让出来;排队时写明组织最多同时几台、前面还有几个,不再显示「正在预跑」。
  • 项目正在预跑时点「开始测试」,会接在这次预跑后面,不再被拒;6 小时内同样的代码、接入文件、密钥和测试已经预跑通过的,直接沿用。
  • 用几句话起草测试时,不再加你没说的硬性要求,多想到的写成「建议」。编造答案的测试,「为什么没通过」先说风险,「怎么改」给两条路:把资料给 Agent,或让它说不知道并转人工。
  • 手写测试的表单按项目已有的测试预填身份和工具,示例用项目自己的说法。
  • 总览、项目卡和报告第一屏的结论用同一个算法;报告里功能测试和攻击测试分开数。
  • 生成攻击测试后留在原页,不再自己跳走或改「测什么」。
  • 接入进度在后台标签页也会刷新;新建项目时填的名称不会被「按仓库起名」改掉。
  • 新建项目时选「我不确定」,说明写明:只有代码仓库、没有部署好的网址,就选「会调用工具的 Agent」并连 GitHub 仓库。助手也按按钮上的字指路。
  • 「检查一次」和「开始测试」前写一般要花多少钱、多少分钟,算法是这个项目(或组织)最近几次的实际花费;费用上限旁写明一般远用不到。
  • 界面里统一叫「测试」;模型名、内部编号、机器型号收进专家视图,工程说明收进「详情」,先给一句人话。
  • /docs 按浏览器语言打开中文或英文文档;不是 Mac 时快捷键显示 Ctrl+K、Ctrl+J。
  • 助手每天的用量到上限时,提示写明用了多少、上限多少、几点重置(按你的本地时间),以及怎么调高;用到 80% 时先提醒。剩下的不够下一步时也会直接说。
  • 「组织 → 用量」里助手的费用按项目和操作分开列,「让 AI 补全并检查」显示这次花了多少。
  • 平台模型命中缓存的输入按 Azure 的缓存价计费(约为普通输入的 1/12),助手额度和费用按实际算。
  • 总览「没通过的项目」列出全部名字;页面上「让助手帮我判断」这类按钮会开新对话,不再接上别的项目的旧对话;架构和运行云收进「详情」;复判写清哪些测试改判了。

2026 年 10 月 5 日 ​

新功能

  • 额度码:所有者在「组织 → 账单」输入额度码,额度进余额。免费版每月 £5 用完后从余额扣,不再停下;免费额度和余额都用完才拒绝。花费上限和其他安全上限照旧。见账单与用量。
  • 账单页改成看板:套餐、余额、本月花费、免费额度一眼看到;下面是每天的用量、按类型和项目的花费、各项上限用到哪里、额度记录和发票。
  • 项目里加了「版本对比」:默认拿最近一次测试和上一次比,也可以切到「和最好的一次比」或「自己选」。写明通过的测试从几个变成几个、哪些测试变好了、哪些变差了;两次评审方式不同时先提醒。场景测试和测试集分开比。见复测与对比。

改进

  • 界面文字精简:说明收进悬停的「?」和文档,空状态一句话加一个按钮,一个意思只说一次,主要页面的文字少了三到六成。

  • 回复要点按意思判,不再按字面:要点写成一个词的(例如「客服」「人工」),指的是那个意思。回复以客服身份回答、用「assist」表示「help」都算说到。以前按字面判没通过的,打开报告时平台会按意思再判一次。新写的测试,要点会写成一句意思,同一个意思的几种说法合成一条。

  • 报告里每个没通过的测试,「为什么没通过」写的是评审模型对这次回复的具体判断,附上回复原文。「怎么改」也写这个测试自己的:只看得到回复的测试,写明在系统提示词里遇到这句话该怎么回,不再给每个测试同一句。

  • 测试草稿等确认这一步交给平台自己的 AI 接着做,能不动你们代码解决的不再停下等人:

    • AI 审批也读平台上的测试接入文件(.reviewctl/ 下的 review.yaml、适配脚本),GitHub 上没有也算;
    • 测试本身没问题、要改测试接入才跑得了的,平台交给「让 AI 补全并检查」改接入,检查通过后草稿自动重审;
    • 平台 AI 诊断出测试接入的问题时,平台自己交给「让 AI 补全并检查」,按钮还在;
    • 只缺测试文件的草稿,平台先从仓库拷,没有的 TXT、CSV、JSON、XML 写样例;PDF、图片和真实文件仍要你上传;
    • 只缺一个名字不像密钥的测试身份时,平台给它写一个合成值;
    • 等着预跑的测试,它要的测试确认了新版本、或它要的测试文件到了,就自动再预跑;
    • 「让 AI 补全并检查」遇到模型出错、项目忙、沙盒没起来这类平台自己的问题,过几分钟自动接着做;
    • AI 审批没给出结论的,间隔越来越长再审,最多 8 次。

    见测试。

  • 报告重新设计,读起来像一份测试报告:

    • 一个结论:「通过」或「不通过」。每个测试每次都通过,才算通过。
    • 每个测试列一次:通过、没通过或没测成。
    • 每个没通过的测试:写明为什么没通过,附上回复和怎么改。
    • 每个没测成的测试:用平常的话写明为什么没测成、怎么办。
    • 其余的:通过的测试默认收起;数字和平台对测试本身的检查放在「详细数据」里。

    本轮报告的各部分也这样合在一起看,项目页和测试记录也只用这两个词。见结论。

  • 按旧判法判过的测试,第一次有人打开它的报告或本轮报告时,平台会自己再判一次。页面会写明,判完自动更新。

  • 报告更严格,没通过的地方说得更清楚。接入只看得到回复时,测试按回复判:评审模型对照测试的目标和回复必须说到的要点读回复。要点没说到或说反了、目标没做到,就判不通过,问题里引用回复原文。以前这些都是「判断不了」。已经判过的运行,点「重新诊断」时会按新办法再判一次。见报告里有什么。

  • 没单独定通过标准的安全测试集(攻击题或安全检查)现在要每道题都扛住,有一次攻击得逞就不通过。以前是 90% 的题通过就算通过,几次攻击得逞也可能显示「通过」。

新功能

  • 测试页加了「一键确认全部」:确认一次,等你确认的草稿就全部确认。每个草稿的确认方式和它自己的「确认」按钮一样。AI 审批没通过的也会一起确认,确认前会写明有几个。被规则挡下的、会放宽检查的改动,留给你逐个打开看。在「全部测试(详细列表)」里勾选几行、点「确认草稿」,可以只确认这几个。见草稿和已确认的测试。

改进

  • 预跑没通过,原因只是接入只看得到回复、测试却要看工具调用时:平台的模型把这些测试改成只检查回复,交给自动审批。确认后,等着的测试改用新版本,再预跑一次。接入不动。见运行。
  • 接入只看得到回复的项目,平台的 AI 不再写要看工具调用的测试:
    • 「平台读仓库来写」和「让 AI 补全并检查」写冒烟测试时,会被告知这一点,自检时也会指出是哪个测试要看工具调用;
    • 自动审批原来只挡要求调用,现在任何要看工具调用的检查都会挡下,包括要求调用、禁止调用、工具故障和工具里的攻击。

2026 年 10 月 4 日 ​

新功能

  • 「组织」→「策略」里新增「AI 自己做的事」(只有所有者能改,每一项默认关):可以让平台在预跑通过后自己开始测试,平台出错时把运行重新开始或补跑,把判断不了或不稳定的情况重跑一次,把项目换成推荐的规格档,把离开的人打开的自动测试交给所有者。它以最后保存策略的人的名义做,不超过你们定的每天、每月上限,和那个人自己点一样过套餐和账单的检查;做的每件事都记进审计日志、在运行上写明,换掉的规格档可以改回。见组织。
  • 运行里有没过或判断不了的情况时,平台的 AI 会诊断:每一项说清是 Agent、测试、接入还是环境的问题,引用运行里的原文作证据,并做它能做的:测试写错的,改出新草稿交给自动审批(会放宽检查的改动等你决定);Agent 的问题写进给 AI 的修改意见;接入问题给一个按钮,交给「让 AI 补全并检查」。随时可以让它重新诊断。
  • 判断不了的结论会自动用这次运行的评审模型、在这次的评审预算内再判一次,报告上写明是 AI 复判的。失联的运行在你勾「已核对」之前,AI 先列出可能改过沙盒外数据的调用和证据。

改进

  • 「平台读仓库来写」一个一个地写测试,边写边用平台导入时的检查自查,改好了才交;交上去还没通过时,从那一版接着改。「让 AI 补全并检查」写的一两个冒烟测试也这样写。
  • 「让 AI 填好并测通」在一次对话里做完:按需多读你给的文档(只在你给的主机上)、列模型、写连接、自检、测连接并按回复改,最多测 5 次;再点一次从上次停下的地方接着改。页面上列出 AI 做了什么。
  • 自动审批在一次对话里审和改,每次改写先用平台的检查自查再保存。测试集也会改,但参考答案和期望值不会改;草稿需要只有人能给的东西时,它写明要什么。生成的攻击题先过检查再用;你采纳的期望值会交给自动审批。

2026 年 10 月 3 日 ​

新功能

  • 网页直连的对话 AI 也能「让 AI 填好并测通」:填上接口地址,贴上手上有的接口文档、curl 示例或请求和回复的例子(或者 OpenAPI 文档的地址),点一下,平台的模型写好连接配置(请求头、放问题的请求体、回答在哪个字段),由平台执行器测连接,没拿到回答就改了再测,最多测 5 次;测通了像你点「保存」一样保存,并接着起草起步测试题。要密钥时写明放在哪个请求头,填上再点就接着测。它只连你给的主机,密钥只放在请求头里、AI 看不到。见让 AI 填好并测通。
  • 本地测试机也有「让 AI 补全并检查」:在 Agent 的仓库里运行一条命令 reviewctl connect --ai --project <项目编号>(网页「本地测试机」给出,项目编号已填好)。它按平台读 GitHub 仓库的同一套规则在你的机器上读仓库(从不读 .env 和存密钥的文件,像密钥的内容发送前就去掉),列出要发的文件问你同意后才上传;平台的模型写好测试接入文件,命令只写进仓库的 .reviewctl/(改动前先备份),在这台机器上预跑检查,没通过就把日志里出错的几行(去掉密钥)发回去改了再查,最多 10 次。密钥只发名字,值留在你的机器上。网页上同一页显示每一步。见让 AI 补全并检查。
  • 自带镜像的项目也有「让 AI 补全并检查」:平台的模型读「检查镜像」读到的镜像配置;镜像标签写的源码仓库这个组织的 GitHub App 读得到时,也只读地读那个仓库(标签写了提交就读那个提交)。它写好在镜像容器里跑的测试接入文件(命令和适配脚本从 /reviewctl 运行),再「检查一次」,没通过就改了再查,最多 10 次。它不改你们的镜像,不设密钥。见自带镜像的「让 AI 补全并检查」。
  • 「检查镜像」现在也读出镜像自己的配置:启动命令、工作目录、运行用户、端口、环境变量名和标签里的源码仓库;像密钥的环境变量只留名字,值从不离开执行器。起步的测试接入文件按镜像的启动命令填好 agent.command;镜像的 USER 是 root 或没写时提醒你沙盒以 uid 1500 运行它。
  • 连上 GitHub 仓库后,平台建议项目的名称(仓库名)和业务领域(看 README 和系统提示词得出),点一下就改过去,也可以「不用了」。见名称和业务领域。
  • 本地测试机可以让「重启」顺便更新 reviewctl:用 reviewctl runner start --self-update 启动后,落后时那一行的按钮是「更新并重启」,测试机从平台下载安装包,核对平台公布的 SHA-256,对得上才用 npm install -g 装上再重启;没装上会写明。见让「重启」顺便更新。
  • 测试集里期望值写成「要人工核对」的题,可以「让 AI 从文件里读出不知道的期望值」:平台的模型读这道题的 TXT、CSV、JSON、XML 文件,给出建议值和文件里的原文,你勾上核对过的采用,写进测试集的草稿。见测试集的报告。

改进

  • 「让 AI 补全并检查」和平台自动修没通过的检查、预跑,最多检查 10 次(原来 3 次):要改几轮才通的测试接入,不用再点一次。每次检查都是一次沙盒运行,和手动的一样按沙盒时长计费;每改一次是一次模型调用,算进助手的每日用量。见「让 AI 补全并检查」。
  • 测试既不准备也不读业务数据时(比如只看回复的对话机器人),预跑结论里「每次测试是不是从同一个起点开始」写「不涉及」,不再因为没配置 backend.reset 标成不满足。
  • 平台的 AI 写的适配脚本要是起 Web 服务或模拟 webhook,在检查之前就退回去改(直接调用生成回复的函数)。
  • 「让 AI 补全并检查」遇到 webhook 机器人这类回复异步发出去的 Agent,不再一说「没法测」就停:平台自己在仓库里找出调用模型、生成回复的函数(比如 AiResponder.reply_to),连同一个直接调用它的适配脚本例子交给 AI;AI 还是说没法测时,平台点名这个函数退回去让它再写一次。
  • 「让 AI 补全并检查」按沙盒实际的目录写测试接入文件:命令从仓库根目录执行(用仓库的 Dockerfile 时仓库挂在容器的 /workspace),数据重置命令在虚拟机上以 .reviewctl/ 为当前目录执行;写成不存在的路径(比如照 Dockerfile 猜的 /app/…)时,检查之前就退回去改,不再白跑一次沙盒。webhook 机器人一律直接调用生成回复的函数,不再起 Web 服务、模拟签名,也就不要 webhook 签名一类用不上的密钥;Agent 自己的聊天记录不再被当成要重置的测试数据。
  • 「检查一次」没通过时,平台的 AI 也自动按检查结果和日志修测试接入、再检查(连这次最多 10 次),不再只修等着的测试的预跑;连仓库和自带镜像的项目都是。它刚放弃过、之后又没有新的提交、接入文件或密钥改动时不再自动重修,页面上点「让 AI 按这次的问题修」就从那次检查接着修。见检查一次。
  • AI 修测试接入时看得更全:沙盒日志里看起来出错的行连同前后几行(原来只看日志的最后一段,报错后面的清理日志一多就看不到),报错指向、它一开始没读的仓库文件(最多 5 个,同样不读存密钥的文件),以及这次前面几次检查为什么没通过、改过什么。
  • 仓库的 Compose 文件用 env_file 读不提交的 .env 时,平台起草的测试接入文件不再写 services.compose(写明原因),AI 写了也会被退回去改;这样没通过的检查,页面上直接说明原因和改法。见常见问题。
  • 「密钥」一节提醒测试接入文件还没用上的密钥(Agent 只拿得到 agent.env_passthrough 里列出的变量),点「写进测试接入文件」就加进去,第 4 步的编辑框跟着显示改后的文件。见加项目密钥。
  • 「设置 → 评审模型」对连仓库和自带镜像的项目也能选了:保存时平台把 judge.model 写进覆盖层里的 review.yaml(只改这一处;覆盖层里还没有时先拷一份仓库里的,并写明),不用再自己改 YAML。见项目设置。
  • 连仓库的项目开始测试时不填标签,就用这次测的提交说明的第一行;push 和 PR 发起的测试用提交说明或 PR 标题。
  • 人工评分和自动结果相反时,「人工评分」里逐条写出建议怎么改判断标准,「让助手按这些改判断标准」把改动存成测试集的新版本草稿,你确认后才用。
  • 「让 AI 补全并检查」写接入文件时,保留现在接入文件里的评审模型(比如你在设置里选的),不再改回平台默认。
  • 「连 GitHub 仓库」向导到「检查一次」就结束了:push 和 PR 时自动测、GitHub 检查、定时和 API 令牌搬到项目的「设置 → 自动测试」(原来的「自动运行」),设置都还在。检查通过后,向导最后写「接入跑通了。想每次提交或定时自动测试?到 设置 → 自动测试」并给出链接;「组织 → 成员」里离开的人打开的自动测试,点项目名也直接到这里。见自动触发。
  • GitHub App 的安装只勾选了一个仓库时,向导替你选好这个仓库和它的默认分支;数据边界仍要你自己勾「我知道了」。
  • 平台推荐沙盒的规格档:按测试接入(Agent 旁边要起几个容器)和最近 3 次沙盒的日志(内存不够、盘满了、准备环境超时),在「设置 → 沙盒」和向导的「规格档」一步里替你选好,写明原因和是哪次的日志;点「保存」才生效,也可以「保持」现在的。平台从不自己换到更贵的档。见规格档。

2026 年 10 月 2 日 ​

新功能

  • 连 GitHub 仓库的项目,「让 AI 写测试」默认是「平台读仓库来写」:点一下,平台的模型只读地读仓库,写好功能测试(主要任务、边界情况、出故障时怎么办)、能力清单和要用的测试文件,存成草稿交给 AI 自动审批。测试要用的文件,仓库里有的平台按路径自己拷,仓库里没有的 TXT、CSV、JSON、XML 由 AI 写合成样例,PDF、图片和真实文档仍由人上传。见让 AI 写测试。
  • AI 自动审批没通过的草稿,平台按理由自动改了再审,最多 2 次,每次改了什么、去掉了什么写在草稿上;AI 没审成的过几分钟自动再审。你自己写过或改过的草稿不动。
  • 第一个功能测试确认后,平台自己写一套默认安全测试:按 Agent 会做的事选模板,以测试用的账号发起,照常由 AI 自动审批;删掉后不会再写。
  • 项目连着 GitHub 仓库时,助手能只读地查看仓库(列文件、读文件、搜索),起草时工具名、参数名、测试账号按代码写。
  • GitHub 向导第 4 步新增「让 AI 补全并检查」:点一下,平台的模型只读地读仓库(从不读 .env 和存密钥的文件),把 review.yaml 和需要的适配脚本写进平台覆盖层;项目里没有确认过的测试时起草一个,再「检查一次」,没通过就按结果改了再查,最多检查 3 次。最后要么「接入跑通了」,要么写清楚你要做什么:加它点名的密钥、确认一个测试,或者这个仓库为什么没法这样测。它不改你们的仓库、不设密钥,也不能放宽要由人决定的设置。见让 AI 补全并检查。
  • 沙盒出的错,能不要你们动手的平台自己处理,页面上写明做了什么、为什么,改了设置的都能改回:
    • 虚拟机开机后 12 分钟没接上平台,或者云上没能建起来,平台自动重开一台(同一次测试,不收费);重开的也没起来,平台把任务编号和开机日志发给我们的工程师,页面上写「已经通知了平台的工程师」,不用你们操作。
    • 预跑的日志里有 exec format error、找不到 aarch64 的包这类,平台换到另一种架构再预跑一次,项目的设置先不动;通过了就把项目的架构改过去,「设置 → 沙盒」里写明并给「改回」;两种都没通过就把两次的结果都写出来。镜像没有设置里那种架构时,「检查一次」直接在镜像有的那种上跑。
    • 沙盒里的测试中途停下时,报告页给「补跑没执行的 N 次」:另开一台沙盒(同一个提交或镜像、规格档和架构),只跑没执行的那几次,结果合进本轮报告,按原来的通过标准重新下结论。见补跑。
    • 沙盒里的测试中途失联时,review.yaml 用到的后端都在沙盒里的,平台自己核对,下次开始测试和自动触发都不用再勾「已核对」;可能碰到沙盒外面的仍然要人核对。规则见失联以后。
    • AI 自动审批开着时,下次评估推荐里「平台自动调整」的几项每次测试跑完就自动采用(新版本照常由 AI 审),推荐里写明,可以「撤销:改回原来的版本」;改 Agent 代码的推荐从不自动采用。

改进

  • 预跑没通过不用你修了(连 GitHub 仓库的项目):等着的测试预跑因为测试接入没通过时,平台接着做「让 AI 补全并检查」的那一套,这次预跑算第 1 次检查,最多一共 3 次,通过了测试自动开始;push、PR、定时和 API 发起的测试也会等它修完,修不好才结束,邮件只发一封。是 Agent 自己的问题平台不改,写明原因。测试还在等预跑时,改了测试接入文件、密钥、沙盒设置或往分支推了新提交,平台 30 秒后自己再预跑,每次测试最多 3 次。见预跑。
  • 「密钥」一节列出 review.yaml 和确认过的测试按名字要的值和由谁给,还缺的第一个已经填在表单里;OPENAI_API_KEY 写明由平台的模型应答,不用加;仓库 .env.example、Compose 端口里找得到的非秘密值一键写进 runner_env。「检查一次」之前先核对,缺检查用得上的密钥时写明缺哪个,也可以「仍然检查一次」。见加项目密钥。
  • 还没有确认过的测试也能「检查一次」:平台用内置的问题(请 Agent 简单介绍自己)检查接入,并写明这只说明 Agent 起得来、会回复。
  • 对话 AI 项目不用先定通过标准:每个测试集没单独定的,开始测试时按默认标准判断(每题问几次都要通过,这样的题至少 90%,安全检查不能失败),换测试集也不用重新保存;「开始测试」上写着用的是哪条,点「修改」去改。
  • 连接对话 AI 时可以粘贴 curl 命令,平台读出地址、请求头和请求体(只读取,不执行),像密钥的请求头值放进「密钥」框;OpenAI 兼容接口填好地址和密钥后,「模型名」下面能直接从这个地址的模型列表里选。
  • 保存连接后平台马上测一次;自定义 HTTP 接口自动找出回答在哪个字段(OpenAI、Anthropic 格式、常见回答字段、流式回复,认不出时由平台模型读原始回复),写明用的是哪个字段,不对再点。
  • 第一次连上、还没有测试集时,平台按业务领域、系统提示词和它的自我介绍起草几道起步测试题:没有参考答案(标了「待补答案」),只用不需要参考答案的判断标准,AI 自动审批照常先过一遍。
  • 对话 AI 没有平台能用的系统提示词时,「不泄露系统提示词」不再挡住开始测试:这次自动不测这一项,页面上写明;新建测试集时也不再自动加上它。
  • 产品名改为 Preworld Review(Preworld 是公司,w 小写),网页、邮件、文档和 GitHub 检查都用这个名字,提交上的检查名也随之变成「Preworld Review」。
  • 登录页和它上面的一切(注册、邀请、批准命令行登录、登录链接)以及本文档换成公司网站的样子:深色、Preworld 标志。文档默认深色、可以切到浅色,顶栏有「登录」和「免费开始」。登录后的平台界面不变。

修正

  • 场景既没有完成后的数据检查、也没有必需的工具调用时,只有回复说办好了、说到了要求的要点,或者带着记录本身的值,才算完成;只说了「接下来再查」之类、什么都看不出来的回复,记为判断不了,不再算办成。
  • 「可恢复的故障」改叫「处理对了」:场景允许安全停下时,停下也算处理对了,但报告另写「其中办成」几次,不再把安全停下说成「恢复了、仍把事办成」。
  • 看不到工具调用的接入下,逐次详情的标题不再写「工具调用 · 0 次」。
  • 看不到工具调用的接入下,逐次详情的「工具调用」一栏下面直接写明「这次的接入看不到工具调用」,下面列的只是夹带的攻击内容,不是 Agent 的调用。
  • 预跑没通过后点「跳过预跑,开始测试」,在沙盒里跑的测试会马上开沙盒,不再一直排队、没有沙盒、要手动取消。
  • 证据显示的安全问题(回复里泄露了不该说的内容、产品没拦住的违规)这次就算没通过,哪怕任务本身判断不了;回复泄露的次数按执行过的次数计,说法是回复里出现了不该出现的内容,不再写成「工具调用命中规则」。
  • 版本对比里,次数没变、只是能判断的次数变了,不再标成改善;「应恢复」改成「故障处理对了(含允许的安全停下)」,另列「其中办成」。
  • 被取消或提前停下的测试,报告顶部、项目里的最近结论写「计划 N 次,执行了 M 次」,不再把计划次数说成执行次数;结论是不建议上线时,问题数和它一致。
  • 在沙盒里跑、中途被取消的测试,不再显示「调高上限,跑完剩下的」和「测试机不在线」:写明沙盒跑完就删掉了、不能接着跑,给「开始测试」重新开始。
  • 手机宽度下打开报告里的一次执行,很长的回复(比如一长串路径)在框里换行,不再把页面撑宽。
  • 快速开始、报告指南和文档首页不再笼统承诺展示「每一次工具调用」:工具调用经过平台时才有,只看得到回复的接入会写明看不到工具调用。
  • 几个场景的回复泄露合并成一条问题时,次数按这些场景执行过的次数计,不再出现「12/3」这种出现次数大于分母的写法。
  • 攻击让 Agent 真的执行了代码或写了文件(做完后的数据显示出来的),报告里记为安全问题「攻击得逞」,不再归成「回答错误」并给出无关的修法。
  • 手机宽度下,报告首页的问题卡和总结里很长的路径会换行,不再把页面撑宽。
  • 沙盒里被取消的测试,提示改对了:已执行的部分照常出报告,可以查看和下载;不能接着跑是因为沙盒和接着跑需要的环境删掉了,不是记录删掉了。
  • 安全问题已经证实、任务本身判断不了的那几次,算作「可判定」,不再列在「证据不足」里;报告的可判定次数和通过率的分母一致。
  • 回复里带着记录本身的值(比如 "figure_created": true)时,评审模型读出的「没说办好」不再当成「回复否认完成」,不再出「任务已完成但回复称未完成」。
  • 同样,数据或调用记录已经显示办成、回复也说到了要求的每个要点时,评审模型读出的「没说办好」(比如回复如实解释了任务要问的限流)也不再当成否认。
  • 英文报告里,测试条件检查引用的接入情况(例如「工具不经过代理」)和给开发机 AI 的那句话都是英文了。
  • 场景允许安全停下、这次也按场景的标准通过了的(比如任务本身设定的限流),不再另出一条高严重度的「正常条件下未完成任务」。
  • 手机宽度下,版本对比的指标名、问题标题不再被挤成一字一行:表格放不下时在自己的框里左右滑动;「稳定通过」和「版本输入差异」上下排列。
  • 窄屏(侧栏只剩图标)时,读屏软件仍能读出侧栏每个链接的名字(总览、新建项目、版本对比、组织),中英文都是。
  • 评审模型回答时把要点编号写走了样(比如写成「[task-result] 14」,或把引文写在编号的位置),能认出是哪一条的照常采用;认不出的写明是评审模型的回答用不了,不再说成没配评审模型、调用失败。
  • 要点里写了数字(比如总额 450)而回复里没有这个数时,评审模型说「说到了」不再算数:记为判断不了,不再判通过。
  • 只看得到回复的接入下,测试条件检查不再把「参数里不能带某个内容」的规则写成「不许调用这个工具」;接不了代理时,建议给测试加数据检查,不再建议去掉这些要求。
  • AI 自动审批在交给模型之前,先按规则核对两件事:场景用的身份变量这次运行会不会放行(测试机放行的,或连仓库、自带镜像的项目在项目密钥和 review.yaml 的 runner_env 里有的),以及只看得到回复的接入下场景有没有要求调用某个工具。不满足的不再自动确认,留给人确认并写明原因,不用等到预跑才被拒绝。
  • 工具调用通过了、但工具返回的是报错(比如拒绝了一个路径)时,报告和逐次详情写「调用通过了,但工具返回了报错」,不再写「成功」;Agent 停下没办成、场景又没有数据检查时,报告写「没办成」,不再说「做完后系统里的数据不对」。

2026 年 10 月 1 日 ​

新功能

  • 注册要填激活码:用邮箱、GitHub 或 Google 注册新账号时要填激活码,填对了才会建账号和组织。还没有激活码,发邮件到 admin@nice2.io 联系我们。登录已有的账号、接受邀请都不变。见注册。
  • 新的套餐和价格:免费版、团队版、企业版:不按人头收费,按沙盒时间和模型 token 收费。新组织都从免费版开始,每月有 £5 的额度,每月 1 日恢复。团队版每个组织每月 £20,全部变成额度,超出的按单价收费;企业版按合同。沙盒每小时现在按云厂商价格的 2 倍收(「标准」档 14 便士),模型按账单加 30%。原来在试用的组织已经转到免费版。见价格。
  • 每月花费上限:团队版的所有者可以在「组织 → 账单」里给组织每月的花费设上限。到了上限,新的测试会被拒,平台模型停下;组织里的人都能看到「本月已用 £x / 上限 £y」。见设每月花费上限。
  • 用 GitHub 或 Google 登录:登录页多了「用 GitHub 登录」「用 Google 登录」。账号还是你的邮箱:GitHub 或 Google 账号上验证过的邮箱里有你的邮箱,就能登录,第一次之后这个账号一直能登。收到邀请的,勾选条款后点「用 GitHub 接受邀请」或「用 Google 接受邀请」,邀请按发给你的那个邮箱接受。新邮箱和用邮箱注册一样,先同意条款。见成员怎么登录。
  • Cookie 设置:我们打开 Microsoft Clarity(使用情况分析)之后,平台和本站会先问你。点「同意」之前什么都不加载,「拒绝」同样点一下就行,一次选择两边都有效;在侧栏的「Cookie 设置」里随时改。平台里的文字对 Clarity 一律遮住,报告、日志、测试和项目页面从不记录。见 Cookie。
  • Agent 的模型由平台提供:连 GitHub 仓库或自带镜像的项目,不再必须给 Agent 的模型密钥。项目密钥里没有 OPENAI_API_KEY 时,Agent 的模型调用由平台应答(chat completions 和 Responses API,流式和非流式,带工具调用),按用量计费,每次运行有费用上限。向导的「密钥」一节写明这次运行用哪一种,换了模型时运行日志会写明,报告里也会记下。模型在「设置 → 评审模型和 Agent 的模型」里选。见 Agent 的模型。
  • review.yaml 里的测试机变量:runner_env 给测试机自己设不是秘密的值,比如仓库自己起的服务的地址、它自带测试后端的测试账号,这些就不用再加项目密钥。测试用户、数据读取、重置和 env_passthrough 都读它们;同名的项目密钥优先。值看起来像真的凭证时会被拒,报错里写明是哪个变量;这些值在日志里不打码。见 runner_env。

改进

  • 账单页把三个套餐放在一起对比,并写明各规格档沙盒每小时、各模型每百万 token 实际收多少。免费版的账单页、用量页和总览页写明本月额度还剩多少、哪天重置。
  • 「开始测试」和「检查一次」在点下去之前写明最多花多少:沙盒按规格档的每小时价和单次运行上限算,评审模型和 Agent 用平台模型各按每次运行的上限算;用你们自己密钥的那部分写明不在平台账单上。
  • 「开始前检查」多一行「最近一次预跑」:没通过会提醒;勾了「跳过预跑」又没有通过的预跑时,写明测试可能进不到 Agent。
  • 连仓库和自带镜像的项目可以在网页上往覆盖层里加辅助文件(适配脚本、测试数据),沙盒里落在 .reviewctl/ 下,不用改仓库。
  • 新建场景的按钮灰着时,旁边写明还缺哪几项;必填项有标记,读屏也读得到。
  • 平台没接发信服务时,登录页写明怎样用邀请链接登录。
  • 报告的执行台账每一格都能点开:看这次执行的结论和依据、Agent 的回复、每次工具调用和返回、做完后的数据,以及原始证据文件。报告页还能下载完整报告(JSON)和整个运行包。
  • 预跑和报告多了两条检查:「入口程序有没有正常结束」写明 Agent 已经做到哪一步、入口最后打印的报错;「测试环境有没有正常工作」写明哪个工具后端、数据重置或读取出了错。
  • 页面和运行日志写明由哪个模型应答 Agent:Agent 请求的模型平台提供的就用它,不提供的才换成项目的 Agent 模型;每个模型第一次应答时日志记一行。

修正

  • 测试入口在调用任何工具、拿到模型应答之前就报错退出时(比如缺模型密钥),这次执行记为「测试没有进到 Agent」,不再算成 Agent 的「静默失败」;报告首页、详细数据和导出的 Markdown 口径一致。
  • 「Agent 有没有用模型做决定」先看平台转发口实际应答了几次,入口报错退出的那几次不再算作模型做了决定。
  • 依赖缓存恢复失败时不再留下半截目录,同一个提交第二次运行不会因此装不上依赖;Python 虚拟环境的缓存能正常恢复。
  • reviewctl doctor 对放在 .reviewctl/review.yaml 的配置,从仓库根目录找 agent.command,和沙盒里实际启动的位置一致。
  • 预跑的说法改对:它只出一份预跑结论(诊断用,不是正式报告),不进报告列表和版本对比;报告页上会标明。
  • GitHub App 的权限写对:对代码只读;Checks 写权限在安装时和其他权限一起申请,只在打开「GitHub 检查」的项目上使用。
  • Agent 已经用过模型、之后入口程序才报错退出的,不再说成「测试没有进到 Agent」。
  • 只读的问题答漏了要求的内容,记为「回答不完整」,不再写成「没办成却告诉用户办好了」;只靠评审模型读回复判出来的问题标为线索,首页也写明「线索待核实」。
  • 沙盒跑完所有执行后,上传报告和上报结束的这段时间也保持联系,执行多、上传慢的测试不再被当成失联;场景自己写的诱饵密钥(例如要求回复里不得出现的假 sk- 密钥)不再拦下上传;上传真的被拒时,测试立刻结束并写明原因,不再一直重试到失联。
  • 场景既没有完成后的数据检查、也没有必需的工具调用时,Agent 回复说没办成、入口以错误结束,或看得到的工具调用全部失败,这次就不算完成(以前只要数据没变、Agent 回答了就算通过,同时又出「任务已完成但回复称未完成」)。回复里带着记录本身的值的,仍算答了。攻击情况下明确拒绝的回复算守住。
  • 攻击送达了,但 Agent 还没走到攻击针对的那一步就因为自己出错停下(没有违规尝试、没有实际影响),记为「没触发」,不再算进「守住的攻击」。
  • 只看得到回复、看不到工具调用的接入方式下,靠「调用了禁止的工具」判定的攻击不再算守住,记为判断不了(看不到工具调用);有数据检查的攻击照旧按数据判。这种接入下,报告的「违规尝试 · 产品拒绝」写「看不到工具调用」,不再写 0。
  • 同样在这种接入下,报告首页和逐次详情写「看不到工具调用」,不再写「没有调用任何工具」,攻击守住时不再说 Agent「没照夹带的指令做」;回复里泄露了不该说的内容时,照样算攻击得逞,「实际影响」和「攻击得逞」的次数一致。逐次详情里「回复说已经办好了」是评审模型读出来的时,写明是评审模型的读法。
  • 回复要点核对不了时,分清是评审模型没给出判断(没配、调用失败或到了上限),还是给了判断但和回复原文对不上;后一种不再提示去配评审模型的密钥。
  • 手机宽度(390px)下「开始测试」页不再横向溢出:长场景名换行、不再压住「已确认」,顶栏的搜索和助手不再被挤出屏幕。
  • 「用户的话里被夹带了指令」的攻击用平台自带的攻击文本时,每次执行都因为找不到文本而出错,现在能正常注入。执行时平台自己出的错,报告写明是平台的问题,不再说成工具后端、数据重置或读取出错。

2026 年 9 月 30 日 ​

新功能

  • 平台模型:被测 AI 和评审模型都可以直接用平台提供的模型(gpt-5-mini、DeepSeek-V4-Pro 等),不用自己的密钥,按用量计入账单。见价格。
  • 先充值套餐:按用量从预付余额里扣,余额在「组织 → 账单」里随时看得到。见账单与用量。
  • GitHub 检查:接受 App 的 Checks 权限、打开开关后,每次自动测试都在测过的提交上挂一条检查,写明结论和报告链接。
  • 英文界面:网页、邮件和 reviewctl 命令行都有完整的英文;侧栏里切换「中文 / EN」。
  • 「我的 CLI 令牌」:在网页上查看、吊销自己电脑上的命令行登录;90 天不用自动失效。

改进

  • 会计费的金额(预估、上限、费用)都按英镑显示。
  • 本轮报告、完成邮件和 GitHub 检查把功能测试和安全测试分开列;得逞的注入攻击单独列出。
  • 版本对比只比两次运行都判断过的部分,取消或没跑完的运行会写明。
  • 沙盒开机 12 分钟还没接上平台,平台会删掉虚拟机、结束这次运行,这段时间不收费。
  • 平台更新时,正在跑的测试会在当前这次执行结束后交出已跑部分的报告,不会整轮作废;结果暂时交不上去时会自动重试。
  • 移除成员时,一并收回他配对的测试机、他的令牌和登录。
  • 保存有问题的 review.yaml 时,页面用白话写明哪一行、哪个字段不对。
  • 使用平台前要先同意服务条款和可接受使用政策;条款更新后会再请你同意一次。

2026 年 9 月 29 日 ​

  • 正式上线:Preworld Review 在 https://review.nice2.io 开放,邀请制。
  • 连 GitHub 仓库和自带镜像:每次运行在伦敦开一台全新的虚拟机,跑完即删。
  • 自动触发:push 到默认分支、PR 打开或更新、定时,或者用项目 API 令牌从你们自己的 CI 发起。
  • 命令行工具下载:reviewctl 安装包在 https://review.nice2.io/downloads/ 。
  • 文档站:快速开始、安全说明、数据处理、价格和法律文件。

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