SuperAPI AI 工具集

provider

智能体与模型

查看项目

更新于 10-26 18:53

技能介绍

provider(bro)

本技能只负责策略,所有机制都由 bro CLI 实现。

用途

bro 代理 Anthropic Messages API:把 claude 指向 bro 监听器后,请求经 bro 转发到配置的上游。代理持有鉴权——客户端出示 bro 的会话令牌,上游看到的则是服务器环境中的真实凭据。协议本身不被改动,SSE 流、tool_use 以及 /v1/models 发现均原样透传。

两种端点形态

  • 宿主机监听器:由 bro provider serve 启动,用户级、不绑定仓库,默认绑定知名端口 4545。每个 provider 状态目录只能有一个实例,由 provider.json.lock 强制。这是持久接线方式。状态保存在 $XDG_STATE_HOME/bro/provider.json(0600)。没有单独的启动步骤——bro provider ensure(即 apiKeyHelper)按需解析或拉起监听器。
  • 仓库级 serve:由 bro serve 启动,是 facade 宿主;当服务器环境携带上游密钥时也会接上 /v1/*(serve.json 记录 provider: true)。仓库级、使用临时端口,是回退方案和按运行指定端口的逃生通道(显式固定 ANTHROPIC_BASE_URL),并非日常端点。

/v1 平面本身取决于配置:要么是 serve.backend / providers.<name> 的 acp 控制器(从全局配置层读取——启动仓库的配置不会泄漏进机器级服务),要么是使用 BRO_PROVIDER_API_KEY、指向 BRO_PROVIDER_UPSTREAM(默认 api.anthropic.com)的环境密钥字节代理。

命令

  • bro provider serve [--port N]:在 127.0.0.1 前台运行宿主机监听器(默认 4545)。若同一 provider 状态目录中已有监听器存活,或没有可服务的内容(全局配置中无 serve.backend/providers.*,环境变量中无上游密钥)则拒绝启动。很少手工调用——通常由 ensure 拉起。
  • bro provider ensure [--port N]:解析或拉起宿主机监听器,打印会话令牌(即 apiKeyHelper)。流程为探测 → 分离式拉起 → 轮询 → 向 stdout 输出令牌;失败时以退出码 1 结束并向 stderr 输出。
  • bro provider url:打印 ANTHROPIC_BASE_URL 应指向的端点。
  • bro provider token:打印会话令牌——监听器失效时经由 ensure 路径自愈,契约相同。
  • bro provider env:打印 export ANTHROPIC_BASE_URL=… 和 export ANTHROPIC_AUTH_TOKEN=…,可直接 eval "$(bro provider env)";注释中附带 settings.json 配置块。
  • bro provider env --json:原样打印 ~/.claude/settings.json 配置块:{"env":{"ANTHROPIC_BASE_URL":…},"apiKeyHelper":"bro provider ensure"}。

解析规则(感知当前工作目录)

url/token/env 选择同一端点:

  1. 环境变量中设置了 ANTHROPIC_BASE_URL → 精确匹配 URL(localhost、默认端口、末尾斜杠会被规范化;路径也必须匹配:带路径的 base 不会选中只提供根锚定 /v1/* 的监听器),先匹配存活的宿主机监听器,再匹配当前仓库存活的 serve——helper 跟踪客户端的实际目标,从不猜测;
  2. 未设置 → 使用存活的宿主机监听器(每个 provider 状态目录一个网关);
  3. 否则使用当前仓库中已接上 provider 平面的存活 serve;
  4. 仍无 → 以退出码 1 结束——错误的令牌比非零退出更糟。

一次性接线

在 ~/.claude/settings.json 中写入:

{
  "env": { "ANTHROPIC_BASE_URL": "http://127.0.0.1:4545" },
  "apiKeyHelper": "bro provider ensure"
}

此外无需其他配置。每次启动后首次鉴权刷新会拉起监听器;所有 claude(任意仓库、任意面板)都走同一个监听器。令牌保持动态——helper 每次调用时从活状态文件解析,因此监听器重启不会让客户端令牌过期。

信任边界

与 serve 相同:

  • 仅绑定回环地址 127.0.0.1,不接受 --host;
  • 每个 /v1/* 请求必须以 Authorization: Bearer 或 x-api-key 出示会话令牌(claude 按其凭据解析结果发送其中之一);
  • 0600 状态文件意味着“能读令牌”等同于同 UID 的本地进程;
  • 回环 Host 与 Origin 检查可阻止浏览器访问。