OpenCode Go 额度查询与反向代理部署教程

本文基于两个开源项目,解决 OpenCode Go 日常使用中的两个需求:用 opencode-go-dashboard 搭建多账号额度看板(Cloudflare 全栈),用 AxonHub 统一反向代理 OpenCode Go API。

背景

OpenCode Go 是一个 AI 编程平台,提供对多种大模型的 API 访问。在日常使用中常常需要:

  1. 查询额度:跟踪 Rolling / Weekly / Monthly 用量,避免超出限制
  2. 反向代理:统一管理 API 端点、密钥和模型路由,方便与各类 AI 客户端(Claude Code、Cline 等)集成

本文基于两个开源项目实现上述需求:

一、部署额度查询面板

项目简介

opencode-go-dashboard 是一个基于 Cloudflare Workers + D1 + React 的自部署面板,功能包括:

  • 多账号额度集中展示(Rolling / Weekly / Monthly 百分比用量)
  • 用量接近上限时高亮预警
  • 一键刷新单账号或全部账号
  • 查看历史使用记录(按模型、提供方、Token 数量)
  • Auth Cookie 仅存储在服务端 D1,不返回浏览器

前置条件

环境要求
Node.js20+
Cloudflare 账号注册 dash.cloudflare.com
Wrangler CLIv4+(npm install -g wrangler

步骤 1:克隆与安装

git clone https://github.com/Ruinique/opencode-go-dashboard.git
cd opencode-go-dashboard
npm install

步骤 2:创建 D1 数据库

登录 Cloudflare 并创建 D1 数据库:

npx wrangler login
npx wrangler d1 create opencode-go-dashboard

命令会输出如下内容:

✅ Created database 'opencode-go-dashboard' at <region>
database_id: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

将输出的 database_id 填入 wrangler.jsonc

{
  "d1_databases": [
    {
      "binding": "DB",
      "database_name": "opencode-go-dashboard",
      "database_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" // 替换这里的占位符
    }
  ]
}

步骤 3:配置管理密码

本地开发环境:

cp .dev.vars.example .dev.vars

编辑 .dev.vars

ADMIN_PASSWORD=你的强密码

生产环境部署前还需设置 Secrets:

npx wrangler secret put ADMIN_PASSWORD
# 输入你的强密码

步骤 4:数据库迁移

# 本地预览前
npm run db:migrate:local

# 生产部署前
npm run db:migrate:remote

步骤 5:本地预览(可选)

npm run preview

默认在 http://localhost:8787 启动,同时运行 Worker API 和前端。

仅开发前端 UI(不经过 Worker):

npm run dev

步骤 6:部署到 Cloudflare

npm run deploy

部署成功后,Wrangler 会输出类似 https://opencode-go-dashboard.<your-subdomain>.workers.dev 的地址。

绑定自定义域名(可选)

wrangler.jsonc 中取消注释 routes 配置:

"routes": [
  {
    "pattern": "dashboard.your-domain.com",
    "custom_domain": true
  }
]

域名需已在 Cloudflare 账号中,然后重新执行 npm run deploy

使用说明

  1. 登录:打开部署后的地址,输入设置的管理密码

  2. 添加账号:点击「添加账号」,填写:

    • 显示名称:便于识别的别名
    • Workspace ID:格式为 wrk_xxx,可在 OpenCode 工作区 URL 中找到
    • Auth Cookie:从浏览器开发者工具中复制 auth Cookie 值

    如何获取 Auth Cookie:

    • 在浏览器中登录 opencode.ai
    • 按 F12 打开开发者工具 → Application(应用程序)→ Cookies
    • 找到 auth Cookie,复制其值(以 Fe26. 开头)
  3. 刷新额度:点击「刷新」更新单个账号,或「全部刷新」更新所有账号

  4. 查看历史:点击账号可查看详细的历史用量记录(按模型、提供方分类)

  5. 编辑/删除:Cookie 过期后,编辑对应账号并粘贴新的 Cookie

面板展示内容

面板会展示每个账号的以下信息:

指标含义
Rolling Usage滚动周期内的用量百分比
Weekly Usage本周用量百分比
Monthly Usage本月用量百分比
Plan当前订阅计划
颜色预警用量 ≥80% 黄色、≥95% 红色高亮

二、反代 OpenCode Go(AxonHub)

为什么需要反向代理

  • 统一 API 端点:多个 AI 客户端只需配一个 AxonHub 地址
  • 模型路由:可通过模型映射切换不同上游模型
  • 密钥管理:在 AxonHub 中集中管理,客户端无需持有上游密钥
  • 负载均衡:自动故障转移和密钥轮换
  • 成本追踪:每次请求的 Token 消耗和费用明细

AxonHub 简介

AxonHub 是 All-in-one AI 网关,支持用 OpenAI SDK 调用 Anthropic、Gemini 等模型,也支持自定义 OpenAI 兼容的提供商。

核心特性:

特性说明
Any SDK → Any Model同一个 SDK 调用任意模型
请求追踪完整的请求链路可观测性
智能负载均衡<100ms 自动故障转移
成本追踪每次请求费用明细
模型映射灵活的重命名和路由规则

快速本地部署

# 下载并解压(macOS ARM64 示例)
curl -sSL https://github.com/looplj/axonhub/releases/latest/download/axonhub_darwin_arm64.tar.gz | tar xz
cd axonhub_*

# 直接运行(默认 SQLite)
./axonhub

访问 http://localhost:8090,首次运行按引导初始化系统(创建管理员账号)。

其他系统架构的下载链接请查看 GitHub Releases

Docker 部署

git clone https://github.com/looplj/axonhub.git
cd axonhub

# 使用 PostgreSQL 或其他支持的数据库
export AXONHUB_DB_DIALECT="sqlite"

docker-compose up -d

配置 OpenCode Go 通道

方案 A:直接添加为 OpenAI 兼容通道

OpenCode Go 提供 OpenAI 兼容的 API,因此可以作为 OpenAI 类型通道添加。

  1. 登录 AxonHub 后台 → 通道管理新建通道
  2. 填写以下信息:
字段
名称OpenCode Go
类型openai
Base URLhttps://api.opencode.ai/v1
API Key你的 OpenCode Go API Key
支持的模型根据你的订阅计划填写(如 claude-sonnet-4gpt-4o 等)
  1. 点击测试连接验证配置
  2. 通过后启用通道

方案 B:通过模型关联实现智能路由

如果你想同时使用多个提供商(如同时使用 OpenCode Go 和直连 OpenAI),可以设置模型关联:

  1. 在 AxonHub 中创建 OpenCode Go 和 OpenAI 两个通道
  2. 进入模型管理模型关联
  3. 将同一模型(如 claude-sonnet-4)关联到 OpenCode Go 通道(高优先级)和 OpenAI 通道(低优先级)
  4. AxonHub 会优先走 OpenCode Go,失败时自动回退到 OpenAI

方案 C:通过模型映射适配客户端

许多客户端使用固定的模型名(如 claude-3-5-sonnet),而 OpenCode Go 上名称可能不同。在通道的模型映射中配置:

客户端请求的模型实际发送到上游的模型
claude-3-5-sonnetclaude-sonnet-4-20250514
gpt-4ogpt-5.4
deepseek-chatdeepseek-v3

使用 AxonHub 调用 OpenCode Go

配置完成后,所有客户端只需指向 AxonHub 的地址 http://localhost:8090/v1,即可透明地调用 OpenCode Go 上的模型。

Python 示例(OpenAI SDK):

from openai import OpenAI

client = OpenAI(
    base_url="http://localhost:8090/v1",  # AxonHub 地址
    api_key="your-axonhub-api-key"         # AxonHub API Key
)

# 调用模型(AxonHub 自动路由到 OpenCode Go)
response = client.chat.completions.create(
    model="claude-sonnet-4",
    messages=[{"role": "user", "content": "Hello!"}]
)
print(response.choices[0].message.content)

Claude Code 配置:

# 设置环境变量,让 Claude Code 走 AxonHub 代理
export ANTHROPIC_BASE_URL="http://localhost:8090/v1"
export ANTHROPIC_API_KEY="your-axonhub-api-key"

或者创建 ~/.claude/config.json

{
  "proxy": {
    "baseUrl": "http://localhost:8090/v1",
    "apiKey": "your-axonhub-api-key"
  }
}

Cline / Continue 等 VSCode 插件配置:

在插件的 API 配置中填写:

Provider: OpenAI Compatible
Base URL: http://localhost:8090/v1
API Key: your-axonhub-api-key

三、进阶配置

AxonHub 服务器部署

生产环境建议使用 PostgreSQL 或 TiDB:

# config.yml
server:
  port: 8090
  debug: false

db:
  dialect: "postgresql"
  dsn: "postgres://user:pass@host:5432/axonhub"

log:
  level: "info"

多 API Key 负载均衡

在 AxonHub 通道中配置多个 OpenCode Go API Key,系统自动轮换:

sk-opencode-key-1
sk-opencode-key-2
sk-opencode-key-3
  • 同一个 Trace ID 始终使用相同的 Key(会话一致性)
  • 不同请求随机选择 Key
  • 单个 Key 失败自动切换到下一个

使用 AxonHub 的请求追踪

在请求中透传追踪 ID,可在 AxonHub 后台查看完整的请求链路:

curl http://localhost:8090/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer your-axonhub-api-key" \
  -H "AH-Trace-Id: my-trace-id" \
  -d '{
    "model": "claude-sonnet-4",
    "messages": [{"role": "user", "content": "Hello"}]
  }'

四、整合架构

                    ┌─────────────────────────┐
                    │ opencode-go-dashboard   │
                    │ (Cloudflare Workers)    │
                    │                         │
                    │ 多个 OpenCode Go 账号   │
                    │ 额度集中展示             │
                    └──────────┬──────────────┘
                               │ 通过 Auth Cookie 查询
┌──────────────┐    ┌──────────────────┐    ┌──────────────┐
│ AI 客户端     │───▶│ AxonHub          │───▶│ OpenCode Go  │
│ (Claude Code │    │ (AI 网关)        │    │ (API 提供商)  │
│  Cline       │    │ 本地或服务器部署   │    │               │
│  OpenRouter  │    │ 统一端点/模型路由  │    │ 多模型访问     │
│  等)          │    │ 负载均衡/日志     │    │               │
└──────────────┘    └──────────────────┘    └──────────────┘
  • 额度看板:通过 opencode-go-dashboard 随时查看剩余额度
  • API 代理:通过 AxonHub 统一管理所有客户端的 API 调用
  • 两者独立:额度查询和 API 代理互不依赖,可单独部署

常见问题

Cookie 有效期取决于 OpenCode 的登录会话时长。过期后编辑对应账号,粘贴新的 Cookie 即可,无需重新部署。

Q2:Opencode-go-dashboard 显示「无法解析额度数据」

OpenCode 的页面结构可能变更,更新项目到最新版本,或者提 GitHub Issue

Q3:AxonHub 连接测试失败

  • 确认 API Key 没有多余空格
  • 确认 Base URL 可以访问(https://api.opencode.ai/v1
  • 检查 OpenCode Go 账号是否有足够的余额

Q4:客户端报 “Model not found”

  • 确认通道的「支持的模型」列表中已添加该模型
  • 检查模型映射配置是否正确
  • 确认通道已启用

验证与自查

  1. 额度看板:npm run deploy 后访问面板地址,输入管理密码能登录并看到账号额度
  2. AxonHub:curl http://localhost:8090/health 返回健康状态
  3. 通道连通性:在 AxonHub 后台点击「测试连接」,返回成功且显示延迟
  4. 端到端:用 curl http://localhost:8090/v1/chat/completions 发一次请求,能收到模型返回的 JSON

参考链接