Skip to content
Sliverkiss edited this page Sep 14, 2026 · 3 revisions

WorkBuddy2API

把 CodeBuddy 账号变成 OpenAI 兼容 API 的多账号网关。

⚠️ 合规须知:本项目是非官方网关,使用 CodeBuddy 账号作为上游,仅限本人授权账号、本机 / 私有环境测试

这是什么

WorkBuddy2API 是一个自托管的 OpenAI 兼容反向代理网关

  • 将 CodeBuddy(copilot.tencent.com)账号包装为统一的 /v1/chat/completions 服务;
  • 通过 OAuth 设备授权login.sh)获取账号凭证,网关侧自动刷新 token、调度账号池、治理流量;
  • 面向个人多账号场景:多账号共享、单号故障自动换号、冷却 / 熔断防雪崩、会话粘性保证多轮上下文不跳号;
  • 同时适配**国内版(CN,copilot.tencent.com / www.codebuddy.cn)与国际版(Global,www.workbuddy.ai)**账号,共享同一账号池,由账号 realm 或请求模型名前缀决定路由;
  • 对客户端只暴露 OpenAI 兼容接口,现有 SDK / 前端 / 工具 零改造接入

核心能力

  • 🔑 OAuth 设备授权login.sh 免密登录一次完成,支持多账号连续添加
  • 🔄 多账号池调度 — 三因子加权随机选号(积分占比 ×10 + 闲置补偿 + 成功率 ×3)、Top-5 候选短名单、防惊群、在途租约限流
  • 🛡️ 分级熔断与冷却 — 429 软冷却 600s 起指数退避(封顶 soft_rate_max)、404 固定 60s 浅冷却、402 硬冷却至次日 04:00、连续失败熔断、6004 模型级独立冷却
  • 🧲 会话粘性 — 同一会话尽量绑定同一账号,TTL 滚动续期,失败自动解绑,可镜像 Redis 防重启丢失;按模型判定可用性——模型被 6004 限额时立即重分配
  • 💰 成本优先选号 — 按每次响应的实测扣费(usage.credit)记账 (账号, 模型),免费 / 便宜的号优先
  • 定时任务调度 — 签到(09/21 点)+ 对话活跃上报(10 点)+ 猫猫旅行(09/21 点)+ token 保活(22 点),四类独立开关
  • 流式 + 非流式 — 出站强制 stream:true;SSE 帧按规范白名单重建;非流式由本地聚合为单响应
  • 🧠 推理模型兼容 — DeepSeek 思维链注入(thinking.type=enabled + 默认档)、reasoning_content 多轮回填、effort 档位自动降级
  • 💬 系统提示词体系 — 网关自有提示词替换客户端 system(默认 custom);passthrough 遇拦截自动降级重试
  • 🗑️ 指纹脱敏 — 出站请求体黑名单指纹字段清洗(可关闭),与提示词体系两层叠加
  • 🌐 国际版兼容(Global Realm)--realm=global 登录、注册激活 + region 完善、trial 领取;[realm:]model 前缀路由;分池选号
  • 📊 可观测 — 每请求一行表格日志(TTFB / token 速率 / uid);/status 透出 realm_totals / rate_limited_models / disabled_reason/healthzrealm_servable
  • 💾 状态持久化 — 池状态本地原子落盘 + Upstash Redis 异步镜像(可选),重启择新恢复

文档目录

页面 内容
Home 总览 + 链接目录(本页)
Configuration config.json 全字段说明 + 环境变量清单
Deployment Docker Compose + 源码构建 + 容器内工具
International 国际版登录 / 前缀路由 / 配置 / 行为差异
Error-Handling 错误分类表 + 冷却策略
Pool-Mechanism 选号 / 冷却 / 熔断 / 粘性 / 账本 / 限额台账
Scheduler 定时任务 + 国际版门控差异
API-Reference /v1/chat/completions + /v1/models + /status + /healthz

快速开始

# 1. 复制配置并登录账号
git clone https://github.com/Sliverkiss/workbuddy2api.git
cd workbuddy2api
cp config.example.json config.json
./login.sh            # 或 ./login.sh --realm=global 登国际版

# 2. 构建并启动
go build -o wb2api ./cmd/server
./wb2api              # 默认监听 :7863

# 3. 调用
curl http://localhost:7863/v1/chat/completions \
  -H "Authorization: Bearer test_key" \
  -H "Content-Type: application/json" \
  -d '{"model":"deepseek-r1","messages":[{"role":"user","content":"hi"}]}'

详细步骤见 DeploymentConfiguration

使用方法一览

Clone this wiki locally