Skip to content

常见问题 ​

在左栏找到你看到的现象,右边是原因和修法。引用的提示和产品中文界面上显示的一样。

「检查一次」或预跑没通过 ​

连 GitHub 仓库的项目,「检查一次」或等着的测试预跑没通过时,平台的 AI 先按检查结果和日志自己修测试接入(见预跑)。下面是它修不了,或者你想自己修时的对照。

现象原因修法
Agent 的日志说缺某个密钥或变量,或者它的模型不认密钥缺项目密钥,或者名称和 review.yaml 里的不一样「密钥」一节列出了 review.yaml 和测试按名字要的值,还缺的标着「还缺」:点名字填进表单,加上值。见项目密钥。
services 启动失败(docker compose up exit 1):env file /work/repo/.env not found仓库的 Compose 文件用 env_file 读 .env,而 .env 放真实密钥,一般不提交到仓库,沙盒克隆下来就没有测试用不着这些服务时(比如 Agent 自己的 Web 服务,而测试直接调用它的函数),去掉 review.yaml 的 services。要用的话,把 services 写成一个个服务(image、ports、env、ready),值从密钥或 runner_env 给。平台起草的接入文件和 AI 写的都会避开这种 Compose 文件。见 services。
Agent 连不上它的工具或数据库:127.0.0.1 上 connection refused服务的端口没发布在 127.0.0.1 上,或者容器里的服务只监听 localhost在 Compose 文件里写成 "127.0.0.1:47591:47591",或者写进 ports;让服务监听 0.0.0.0。见 services。
command not found,或者执行以 “agent exited … without a JSON result” 结束agent.command 写错了、执行目录不对,或者 Agent 没输出结果命令从仓库根目录执行(自带镜像:镜像的 WORKDIR)。标准输出的最后一行必须是一个带 text 的 JSON 对象。见 command 方式。
exec format error,或者找不到 aarch64 的包沙盒的架构和你们的代码或镜像不配不用你们操作。平台从预跑的日志里认出这个问题后,会自动换到另一种架构再预跑一次,项目的设置先不动。通过了,平台就把「设置 → 沙盒 → 架构」改过去,在页面上写明,并给出「改回」。两种都没通过时,两次的结果都会写出来,这时要看代码或镜像本身。见架构。
「试运行没通过:测试没有进到 Agent」Agent 没启动,或者没接到任务检查 agent.command 或 agent.endpoint,以及沙盒日志里 Agent 的输出。
「试运行没通过:平台看不到 Agent 调用工具」Agent 直接调用工具,没经过工具代理让 Agent 从 attach.base_url_env 读工具地址,或者从 REVIEW_MCP_CONFIG 读 MCP 配置。见 attach。
「试运行没通过:附件没有交到 Agent」Agent 没读测试文件在命令里传 {{files_json}},或者读 REVIEW_FILES 和 REVIEW_FILES_DIR。
「试运行没通过:看不出 Agent 在用模型做决定」Agent 没上报它调用模型的次数在最后那行 JSON 里(或 HTTP 回复里)带上 usage.model_calls。
Agent 调 Responses API(/v1/responses)时平台回 HTTP 400 错误,写明了平台的模型不收的东西项目没有 OPENAI_API_KEY,项目的模型是 Gemini 3.8 Flash,平台用 chat completions 应答它。OpenAI 的托管工具、按 file_id 给的文件、存着的提示词模板、conversation 和后台模式都要 OpenAI 自己的服务器。错误代码是 previous_response_not_found 时,指的那次回复已过 6 小时、发的时候是 store: false,或者平台之后重启过托管工具换成函数工具,文件内容和整段对话放进 input。或者在项目页头把模型换成 GPT 模型。见 Agent 的模型。
「试运行没通过:测试机上的评审模型用不了」评审模型没有密钥,或者模型名写错了用平台提供的评审模型,或者加上它的密钥。见评审模型的密钥。
「试运行没通过:Agent 在每次测试的上限内没做完」budget.per_attempt 对这个任务太小调大 budget.per_attempt 的 minutes 或 model_calls。
「检查一次之前还差 N 个值:……」review.yaml 按名字读的值(像密钥的 env_passthrough、状态读取和数据重置的地址变量),项目密钥和 runner_env 里都没有在「密钥」一节加上。不是秘密的值,点「写进 runner_env」。确定 Agent 用不着的,点「仍然检查一次」。
「还没有确认过的测试,平台用内置的问题检查时要一个身份变量,沙盒里没有……」没有确认过的测试,也没有身份变量,review.yaml 只在仓库里在 review.yaml 的 runner_env 里加一个合成的测试身份(例如 AGENT_TEST_USER: test-user-1),或者点「让 AI 补全并检查」。
「测试机不在线:试运行在测试机上跑……」本地测试机没在运行在测试机上运行 reviewctl runner start。

review.yaml 保存不了 ​

读不通的文件,网页编辑器不保存,并写明哪一行、哪个字段不对。在测试机上,reviewctl doctor 以退出码 3 结束。

现象原因修法
「YAML 写得不对:第 … 行第 … 列附近……」缩进不齐、冒号后面少了空格、引号或括号没配对改那一行。
「不认识这个字段,检查拼写或者删掉它」任何一层写了 schema 里没有的字段对照参考。
「这里直接写了密钥……」文件里写了密钥的值删掉它,把变量名加进 agent.env_passthrough,值放进「密钥」。
「缺了启动命令……」driver: command 却没写 agent.command写上命令。
「缺了这个字段」或「应该是……」必填字段没写,或者类型不对在参考里查这个字段。
沙盒运行以「仓库里没有 .reviewctl/review.yaml」结束仓库和覆盖层里都没有这个文件在目标下的向导里存一份到覆盖层,或者提交一份到仓库。

虚拟机一直没接上平台 ​

现象原因修法
「第一台虚拟机开机后 12 分钟没接上平台……自动重开了一台」虚拟机没开起来,或者连不上平台。这段时间不收费。不用你们操作:平台删掉它,自动重开一台(同一次测试,同一个人发起的)。
「平台自动重开的那台也没起来……」重开的那台也没起来不用你们操作:平台已经把任务编号和两台的开机日志发给我们的工程师,查清后联系你们。两次都不收费。
「云上第一次没能建起虚拟机……」云上暂时建不了这台虚拟机(配额、可用区没有资源等)。不收费。不用你们操作:平台过一分钟自动再建一次;还不行,同上通知我们的工程师。
「等待沙盒名额……」同时在跑的沙盒已经到了组织策略的上限等一等,或者请所有者调高「同时在跑的沙盒数」。见上限。

运行失联或被截断 ​

现象原因修法
「虚拟机中途没了」,或任务以 lost 结束运行中沙盒或测试机不再应答先重置测试后端,因为已经跑的部分可能改了数据。再发起时,勾选确认已经核对过。在有人确认之前,自动触发和 API 发起的运行都会被拒(409 lost_job_unacknowledged)。如果是沙盒里的测试,并且 review.yaml 用到的后端都在沙盒里,平台会自己核对,任务页写「平台已核对」,不用勾选。规则见失联以后。
「到了单次运行的时间上限(组织策略)……」运行超过了「单次运行最长时间」已执行的部分照常出报告。沙盒里的测试,在报告页点「补跑没执行的 N 次」,平台另开一台沙盒只跑没执行的那几次,结果合进本轮报告(见补跑)。以后少跑一些测试,或者请所有者在套餐范围内调高上限。
「准备环境卡住:……15 分钟没有输出(最后一行:……)」或「准备环境到了时间上限:……」沙盒准备环境的一步一直没有输出,多半是某个包的安装脚本在下载或编译 Agent 用不到的东西,或者在等一个连不上的地址只装 Agent 要的包,或者跳过用不到的安装脚本;也可以点「让 AI 补全并检查」,它照日志这样改。见准备环境卡住。
「准备环境卡住:依赖已装完,卡在保存依赖缓存……」或「……卡在恢复依赖缓存……」平台自己保存或恢复依赖缓存的那一步停住了,依赖本身没问题平台的问题,不用改测试接入,这次不收费:过一会儿再试一次。
「同一个问题连续 2 次:……已经停下」「让 AI 补全并检查」两次检查都卡在同一个错误上,再自动改下去多半还是一样看那次检查的日志,或手动改接入文件;要 AI 再来一轮就点「再试一次」。停下后不再扣钱。
运行中出现「本月的沙盒小时用完了……」每月的小时用完了见到了上限。
一次运行显示「没跑起来」测试根本没进到 Agent,结论不可信按上面的办法修好接入,再跑一次。
「这个项目已有排队或执行中的任务……」一个项目同时只能有一次运行等它结束,或者取消它。

登录 ​

现象原因修法
「登录链接不存在、已使用或已过期:重新发一封」登录链接 15 分钟内有效,只能用一次在登录页再要一封。同一个邮箱每小时最多发 5 封。
「邀请码不存在、已使用或已过期」邀请 14 天内有效,只能用一次请所有者重新邀请你。
「现在不开放注册:请组织的所有者邀请你」只有已经在某个组织里的人能登录请一个组织的所有者邀请你。
用 GitHub 或 Google 登录后:「现在不开放注册……已经有账号的……」那个账号上验证过的邮箱里没有你在平台上的邮箱在那个 GitHub 或 Google 账号上加上并验证你的邮箱,或者用邮箱登录。
「注册需要激活码……」或「激活码不对……」注册新账号要填激活码发邮件到 admin@nice2.io 要一个,填进「激活码」再点一次。同一次注册 15 分钟内都能接着用。
「……试激活码的次数太多了……」(429)同一次注册试满 5 次,或同一个网络一小时内试满 20 次回登录页重新开始,或者一小时后再试。
「登录取消了……」没有在 GitHub 或 Google 的页面上同意再点一次按钮。
「这次登录已过期或已经用过……」点按钮后超过 10 分钟,或在别的标签页里又开始了一次在一个标签页里再点一次按钮。
「这个账号上没有验证过的邮箱……」GitHub 或 Google 还没验证那个账号上的任何邮箱先在那边验证一个,或者用邮箱登录。
「这个 GitHub 或 Google 账号已经关联了平台上的另一个账号……」那个账号已经用来登录平台上的另一个人换一个账号,或者点「接受邀请并登录」接受邀请。
「先在浏览器里打开平台,同意《服务条款》和《可接受使用政策》,然后再试」(403 terms_required)还没同意现行的条款,比如条款更新了在浏览器里打开平台,勾选后点「同意并继续」。之后命令行马上就能用。
「CLI 令牌无效、已撤销或已过期……」90 天没用过、登录已满一年,或者被撤销了重新运行 reviewctl login。
命令行登录代码不被接受代码 10 分钟内有效重新运行 reviewctl login 拿新代码。

上传运行 ​

现象原因修法
“refusing to upload …: possible secrets in …”运行里的某个文件还有密钥的值或像密钥的字符串找到 Agent 在哪里把它打出来,改掉;给密钥变量起能被遮住的名字(见脱敏)。
「运行包解压后超过 512 MB」「运行包里的文件超过 10000 个」,或者单个文件超过 64 MB这次运行的证据太大让 Agent 和数据读取少写一些。被拒的运行包一点都不会保留。
“run … is already archived with different content”同一个编号的运行已经以别的内容上传过上传后的运行不能改;发起一次新的运行。
「运行包里的 … 不是 reviewctl 写出的格式」运行的文件被改过,或者 reviewctl 太旧升级 reviewctl,再跑一次。
「未登录:先运行 reviewctl login --api <url>……」没有保存的登录,也没有 REVIEWCTL_TOKEN登录,或者设 REVIEWCTL_API_URL 和 REVIEWCTL_TOKEN。

GitHub 和镜像 ​

现象原因修法
「这个 GitHub App 安装已经连在另一个组织上……」这个安装属于你们的另一个组织在那个组织里打开任一项目的「连 GitHub 仓库」,在第 1 步点这个账号旁的「断开」,再回来重新装。
「你的 GitHub 账号访问不了这个安装……」你在 GitHub 上登录的是别的账号用装了它的 GitHub 账号(或那个 GitHub 组织的所有者)登录 GitHub。
「安装链接已过期(一小时内有效)……」超过了一小时再点一次「去 GitHub 装 App」。
「这个安装没有勾选任何仓库……」在 GitHub 上没选仓库到 GitHub 的 App 设置里加上仓库。
「没读到镜像:……」镜像仓库要登录或拒绝了凭证、标签不存在、连不上镜像仓库,或者清单格式太旧保存「拉取凭证」、检查镜像地址,或者用新版 docker 或 buildx 重新推一次。
「镜像没有 … 版本,它只有 ……」架构设置选了镜像没有的架构「检查一次」会自己改在镜像有的架构上跑,通过了平台就把项目的「架构」改过去(可以改回)。开始测试时被拒,就把「架构」改成「自动」,或者为那个架构构建镜像。

到了上限 ​

现象原因修法
发起被拒,返回 402(「本月的免费额度 $5.00 已经用完了……」「这一期 Pro 的额度 $20.00 和余额都用完了……」「本月的花费已经到了组织所有者设的上限……」「本月的沙盒小时已经用完……」「预付的余额已经用完……」等)套餐或组织策略现在不让发起新的运行见测试发不起来的时候。
「你们的套餐最多……,组织策略只能在这以内调」组织策略的值超过了套餐的上限在上限以内设,或者换套餐。
「请求太频繁:… 秒后再试」(429)同一个地址每分钟超过 20 次登录请求等提示里的时间。
「试得太频繁了,请一分钟后再试」一分钟内「试一试」太多次等一分钟。
「今天助手的用量已到上限……」助手今天的上限用完了明天再用。
「平台暂停了这个组织……」我们暂停了这个组织找我们恢复。

联系我们 ​

写信到 admin@nice2.io,附上:

  1. 任务编号(job_…,在运行页面的地址里,/j/job_…),或者运行编号(run_…,在报告的地址里,/r/run_…)。
  2. 项目的名称或编号,你做了什么、什么时候做的。
  3. 看到的提示,复制成文字。

不要发密钥的值:我们用不到,你们存的那些我们也读不了。先看看服务状态里有没有已知的故障。

下一步 ​

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