-
Notifications
You must be signed in to change notification settings - Fork 195
Home
Sliverkiss edited this page Sep 14, 2026
·
3 revisions
把 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;/healthz带realm_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"}]}'详细步骤见 Deployment 与 Configuration。
- 完整配置字段 → Configuration
- 部署(Docker / 源码 / 内置工具)→ Deployment
- 国际版账号接入 → International
- 请求报错 / 冷却行为 → Error-Handling
- 账号池如何选号与限流 → Pool-Mechanism
- 定时任务与开关 → Scheduler
- HTTP 接口字段说明 → API-Reference