Skip to content

自动化 ​

项目的自动化让测试不用点「测试新版本」也能跑起来:push 时、PR 时、按时,或者由你们自己的 CI 发起。项目的 API 令牌、「平台自动重跑」和在线评分与告警也在这里。

自动测试做什么 ​

不管是什么触发的,每次自动测试项目的测试都:

  • 先预跑,再测全部已确认的测试(场景每个只跑 1 次、只有正常情况时,测试本身先当预跑)。场景跑几次按通过标准的要求,取其中最大的「每次测试跑几次」,没有要求就跑 1 次;测试集按它自己设的次数问;
  • 变成一个实验,按发布门槛下结论;
  • 以打开它的人(或建 API 令牌的人)的身份运行,和这个人手动发起的一样计费;
  • 测完给这个人发邮件,写明结论并附上链接(一起开始的几部分只发一封)。

预跑没通过时,连 GitHub 仓库的项目先由平台自动修测试接入,最多一共检查 10 次(见预跑),修好了这次测试就接着跑。修不好,或者不是连仓库的项目,这次测试当场结束,邮件里写明原因,只发一封。下一次 push、定时或 API 调用照常能跑。

一个项目同一时间只跑一个测试。遇到别的测试正在排队或执行,这次自动测试就不发起;平台因为别的原因拒绝发起时(测试机不在线、余额用完)也一样。这次测试本该以谁的身份运行,平台就给谁发邮件说明原因,同一个项目同一个原因一天最多一封;定时下面也会显示原因。

手动发起的测试不发邮件。

push 和 PR ​

只有连 GitHub 仓库的项目才有。打开自动化,找到「触发」。「连 GitHub 仓库」向导检查通过后,最后也有一个到这里的链接。

  1. 勾上要自动跑的时机:
    • 「push 到 main 时自动跑」(写的是你绑定的分支):测被 push 的那个提交。
    • 「PR 打开或更新时自动跑(从 fork 来的 PR 不跑)」:PR 打开、更新或重新打开时,测 PR 最新的那个提交。
    • 「每次 push 或 PR 自动测完,在那个提交上挂一条 GitHub 检查」:见下文。
  2. 点「保存」。每个开关后面写着以谁的身份运行:「保存后以你的身份运行」,或打开它的那个人。

同一个提交在一个项目里只测一次,不管有几次 push 或几个 PR 带着它。

push 或 PR 来的时候项目正在跑别的测试或检查(一个项目同一时间只跑一个),这一次不会丢:它排着队,项目空下来就自动开始(平台每分钟看一次),不用再推提交;打开了检查开关的,提交上先挂一条「排队中」的检查,开始后就是这一轮的检查。排着的时候 PR 关掉了、又推了新的提交(测新的那个)、或者开关关掉了,就不测了,检查写明为什么;等了 6 小时项目还没空也不再等。「触发」下面列着最近一天 GitHub 发来的 push 和 PR,每个写着已开始测试(有链接)、在排队,还是没测和为什么。刚开的 PR 不在这个列表里,是 GitHub 还没把消息发给平台:过一两分钟刷新,一直没有就再推一次提交。

GitHub 检查 ​

打开检查开关后,每一轮 push 或 PR 测试都会在它测的提交上写一条检查(check run),名字是 Preworld Review。测试开始后它显示为进行中,这一轮最后一部分结束时,按这一轮的发布门槛给出结论:

结论什么时候
success门槛通过,这一轮每部分都跑完了
failure门槛没通过
neutral没有门槛规则,或者有部分没跑完、也没有确定没过的

检查里是门槛的表格(每个评分器的平均、和基线比的变化、改善和回归的行数、每条规则和实得值)、要先处理的问题和实验的链接,不写 Agent 的输出、攻击的原文或密钥。PR 触发的那一轮,同一张表还会作为一条评论贴在 PR 上,每一轮更新它(不会发第二条)。评论用的是 App 的「Pull requests:读写」权限;App 申请它之前装的安装还是只读,要由 GitHub 上这个组织的所有者在 GitHub 上接受 App 的权限更新,在那之前这一轮只挂检查,检查里会写明要怎样才有评论。平台不会建 PR 或改代码。

挂检查要用 GitHub App 的 Checks 写权限。App 安装时就和其他权限一起申请了这一项,平台只在打开了检查的项目上用它。如果你们是在 App 加上这项权限之前装的,要由 GitHub 上这个组织的所有者在 GitHub 上接受 App 的权限更新。在那之前,或者 GitHub 拒绝写这条检查时(403 / 404),页面上会写明;自动测试照常跑,只是不挂检查。App 的权限见连 GitHub 仓库。

想在你们自己的工作流里卡住(或者两边都要),见 CI 与 GitHub Action。

定时 ​

打开自动化 →「定时」。

  1. 选「每天 9:00」「每周一 9:00」或「每小时」,或者在「cron(分 时 日 月 星期)」里自己写。
  2. 填「时区」(默认 Europe/London),比如 UTC、Asia/Shanghai。
  3. 点「保存并开启定时」。在那之前没有定时:这一节写着「还没有定时」,什么都不替你填好;改了没保存的也会写明。

定时最多每小时一次:「分」这一段只能写一个数,比如 0。表单上面会显示「下次:…」、带「看那次测试」的「上次:…」,以及以谁的身份运行。平台停机期间错过的几次,恢复后只补跑一次。取消勾选「开启」就暂停,点「删除定时」就删掉。

对话 AI 项目每次都把全部已确认的测试集发给项目连接的对话 AI。连了几个对话 AI 时会被拒绝,只留要测的那一个。

自动化里的触发和定时

API 令牌 ​

项目 API 令牌让你们的代码和 CI 使用这个项目。

  1. 打开自动化 →「API 令牌」。
  2. 填「名称」,比如「GitHub Actions」。给 SDK、OpenTelemetry 或 AI Gateway 用的令牌,勾上**「允许上传日志与实验」**。点「新建令牌」。
  3. 点「复制令牌」,存成 CI 里的密钥。令牌只显示这一次。

每个令牌都能发起本项目的测试,读它的任务、运行和 v2 对象;能上传的令牌还能传实验、数据集的行和追踪。页面上给出了填好项目的发起命令(「复制命令」),能上传的令牌还给出 OTLP 和 Gateway 的地址:

bash
curl -X POST https://<平台地址>/v1/projects/<项目编号>/jobs \
  -H "Authorization: Bearer $PREWORLD_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"commit":"<完整的 40 位提交号>"}'
字段意思
commit连仓库的项目:要测的提交。不写就测绑定分支最新的提交。
image_ref自带镜像的项目:要测的镜像,比如 ghcr.io/acme/agent:pr-7,按摘要固定,只用于这一次。
scopeall(默认)、functional、security 或 failed,和「测试新版本」表单里的选项一样。
repeats每个场景跑几次,1 到 5。不写就按通过标准的要求,没有要求就是 1。测试集按它自己设的次数。
notify写 false 就不在测完时发邮件。

带上 Idempotency-Key 请求头(8 到 128 个字符),CI 重试这一步时拿回的是第一次发起的那个测试,不会再开一个。答复里写着这一轮会变成的实验和它的门槛,可以等它;见 CI 和 API:令牌与错误。

令牌以 pj_ 开头,只在本项目里有效,以建令牌的人的身份运行。列表里写着每个令牌能做什么、是谁建的、上次什么时候用过;点垃圾桶按钮(「撤销 …」)撤销。建令牌的人离开组织、或项目被删除后,令牌就失效了。

打开它的人离开了 ​

push、PR 和定时的自动测试属于打开它们的人。这个人离开组织后,它们就不再发起测试;每当本该发起一次时,组织的所有者会收到邮件(同一个项目一天最多一封)。

要让它们接着跑,组织里的任何人都可以点「由我接手」。这个按钮在「组织」→「成员」的「离开的人打开的自动化」里(点项目名会打开它的自动化),开关旁边也有。接手之后,自动测试以接手的人的身份运行。组织的所有者关掉了「助手改东西要我确认」时(AI 自己做的事),它们会自动交给所有者,并记进审计日志。离开的人建的 API 令牌不会恢复,要重新建一个。

平台自动重跑 ​

自动化里还有「平台自动重跑」:「有测试因为平台或临时的原因没判出时,平台自动重跑」,默认开着。它管所有的测试,不只是自动触发的:一次执行因为平台这边出错、Agent 刚开始就遇到限流或超时、要测的故障或攻击没送到 Agent 面前而没判出,平台在同一次运行里再跑它一次;沙盒中途没了,没跑到的那几次平台自己补跑一次。平台自己的问题(平台模型出错、平台自带的测试后端出错、沙盒中途没了)引起的重跑和补跑不收费,用量页单列在「平台的问题,不收费」里。别的重跑(比如你们自己的模型限流)跟平时的测试一样计费。都守同样的上限。Agent 自己的权限层在无界面运行时要先问、没人能答的(HOST_CAPABILITY_UNAVAILABLE)不重跑:再跑也一样。不想要就取消勾选,点「保存」。哪些会重跑、哪些不会,见平台自动重跑;哪些不收费,见平台的问题不收费。

在线评分与告警 ​

在触发设置下面:按采样给线上追踪打分的规则,以及通过邮件、Slack 或 webhook 发出的告警。见在线评分与告警。

下一步 ​

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