Verboo Code 在 CI 中的用法:用 vbk_ API key 实现无头认证
返回博客
文章dev toolshow toclaude codeverboo codetutorial

Verboo Code 在 CI 中的用法:用 vbk_ API key 实现无头认证

Mafra2026年9月9日阅读约 4 分钟

你的 CI 流水线调用 verboo 时,就算配置了密钥,认证还是失败吗?在 Verboo Code v0.15.17 及更早版本中,这是预期行为:CLI 的启动认证关卡只认 OAuth 会话,所以一个完全有效的 vbk_ API key,在没有交互式终端的环境里根本用不上。v0.15.18 修复了这个问题。本文给出今天就能用的确切命令,所有内容都直接在 verbeux-ai/code 源码中核实过。

为什么普通的 Verboo Code 登录在 CI runner 里行不通?

因为它依赖打开浏览器。当你在有交互式终端的机器上运行 verboo 时,CLI 会检测到会话缺失,自动打开 code.verboo.ai 完成 OAuth。GitHub Actions runner、GitLab CI runner,或者任何一次性容器,既没有交互式终端也没有浏览器,这个流程根本没法完成。

源码里的一条注释直接说明了这个设计:"Verboo 认证关卡。有 TTY 时自动打开浏览器,无头模式下抛出明确错误"(src/main.tsx,由原始葡萄牙语注释翻译而来)。

Verboo Code 用哪个环境变量来实现无浏览器认证?

ANTHROPIC_API_KEY。不是 Router 文档里建议直接调用 HTTP 接口时使用的 VERBOO_API_KEY:它和 Claude Code 生态系统里其他地方使用 API key 的变量是同一个,也是 Verboo Code 启动关卡最先读取的那个。如果这个值以 vbk_ 前缀开头,CLI 就会把它当作有效的无头会话:

export ANTHROPIC_API_KEY="你的vbk_密钥"
verboo -p "运行测试套件并修复失败的部分" --output-format json

这个密钥不会拿去校验 /api/me,因为那个接口会拒绝 API key。它是通过 Authorization: Bearer 直接对路由端点 code.verboo.ai/router/v1/models 做校验的。这个端点选择记录在引入该功能的代码评审里(verbeux-ai/code 仓库的 PR #43):团队是在确认第一个端点不接受这类密钥之后,才换了端点。

我在哪里创建 vbk_ 密钥?

code.verboo.ai 的控制面板上,右上角的 "Create API key" 按钮会带你到密钥管理页面。每个密钥都绑定一个模型组,所以在把值粘到 CI 密钥里之前,先选好你平时就在用的那个组。

能不能不用固定密钥,继续用 OAuth 会话,同时又不在服务器上开浏览器?

可以。verboo auth login --headless 会跑完整的 OAuth 流程,不依赖那台机器上的浏览器:CLI 会打印一个 URL,你在任意其他设备上打开它,确认登录,再把授权码粘贴回服务器的终端。这正是团队自己描述为"适合服务器/CI"的方案,但和 API key 有一个重要区别:这里始终有一个人参与一次,所以它更适合持久化服务器或自托管 runner,而不是那种每次运行都从零诞生又销毁的一次性 runner。

方式是否需要人工介入最适合
ANTHROPIC_API_KEY=vbk_...不需要,一次都不需要一次性 runner(GitHub Actions、GitLab CI)
verboo auth login --headless需要,一次,在另一台设备上持久化服务器或自托管 runner
Verboo Code 无头认证关卡流程图,从 CI 执行的命令到会话验证通过或明确报错
Verboo Code 的无头认证关卡:没有有效密钥时,报错是明确的,而不是静默失败。已在 verbeux-ai/code 的 PR #43 中核实。

密钥错误或过期时,屏幕上会显示什么?

一条具体的信息,不是泛泛的登录提示:"API key inválida ou expirada"(API key 无效或已过期)。如果既没有 vbk_ 密钥,也没有 OAuth 会话,且终端没有 TTY,信息会变成 "Não autenticado no Verboo. Execute verboo /login em um terminal interativo antes de usar o modo headless."(未在 Verboo 完成认证,请在交互式终端中执行 verboo /login 后再使用无头模式)。这两句话在源码里(verbooStartupAuth.ts)就是这样精确写死的,还有单元测试保证两者不会互相混淆。

API key 认证会跳过什么我应该知道的检查吗?

会,而且是有意为之。服务条款确认流程和权益检查(用来确认你的订阅是否有效)都依赖只接受 OAuth 的接口。走 API key 这条路径时,Verboo Code 会跳过这两步,直接进入会话。对常见场景来说这是安全的,但如果你的流水线需要在条款变更或订阅到期时阻止执行,光靠这个密钥是不会自动做到的。

CI 流水线每天要跑同一个任务几十次,而且没人盯着终端。在 Verboo Code 上,每一次调用都使用开放模型加无限 token,所以测试失败后再跑一次,从来不是预算问题。

喜欢这篇文章吗?
把知识分享给你的朋友。
// 继续阅读

相关文章