linguo2625469/workbuddy2api-panel

把腾讯WorkBuddy账号变成 OpenAI 兼容 API 的多账号网关,同时自动完成任务中心全部任务,附 Web 管理面板(账号池可视化 / 积分任务 / 配置热更新)。基于 Sliverkiss/workbuddy2api 的增强分支

WorkBuddy2API Panel – 一个自托管的腾讯 CodeBuddy 兼容 OpenAI 网关

这是什么 – 一个基于 Go 的反向代理,允许你使用任何兼容 OpenAI 的客户端(ChatGPT SDK、CLI 工具等)对接腾讯 CodeBuddy(copilot.tencent.com)。它封装一个或多个 CodeBuddy 账户,处理 OAuth 设备流登录、刷新令牌,并提供一个单一的 /v1/chat/completions 端点,模拟 OpenAI API。

为何存在 – 腾讯并未公开提供 OpenAI 风格的 API。该项目让拥有 CodeBuddy 账户的个人能够通过熟悉的 OpenAI 接口复用账户额度,实现与现有工具的零代码集成。


核心功能(如 README 所述)

功能 作用
OAuth 一键登录 login.sh 或网页面板的 添加账户 按钮运行设备授权流程,存储凭证 JSON 并热加载新账户,无需重启服务。
多账户池 维护一个凭证池,使用三因素加权随机算法(余额、空闲时间奖励、成功率)为每个请求选择账户。考虑前 5 个候选账户,并设置短“防突发”延迟以防止快速重复使用。
熔断器与冷却机制 对 429 响应启用软冷却(指数退避,最长 2 小时),对 404 固定 60 秒冷却,对 402(余额耗尽)硬冷却至次日 04:00,以及基于失败次数的熔断器。
会话粘性 共享 conversation_id(或派生哈希)的请求在整个会话期间被路由到同一上游账户(默认 TTL 30 分钟,每次成功调用刷新)。状态可镜像至 Upstash Redis 以在重启后保持。
定时任务 自动每日签到、活动报告、“猫旅行”、令牌保活以及“黑猫”夜猫任务。每个任务都有独立的开关和可配置的执行时间。
流式与非流式 出站调用强制启用 stream:true;当客户端请求非流式时,网关将流式分块重新组装为单个响应。
模型级兼容性 透传模型名称,支持 DeepSeek 的“思考链”注入、自动降低努力等级,以及响应内容回填。
系统提示处理 默认将客户端提供的 system 消息替换为自定义提示(移除原始内容以避免 CodeBuddy 的内容过滤误报)。也提供 passthrough 模式。
指纹净化 从出站负载中移除黑名单字段(如设备指纹);可禁用。
可观测性 每个请求一行 CSV 日志(TTFB、令牌速率、uid),/healthz 端点显示服务状态,支持可选的 Redis 镜像。
Web 管理面板 单页 UI(通过 go:embed 嵌入)用于:添加账户、查看池健康状态、实时编辑 config.json、触发增长任务自动化、检查日志,以及手动运行定时任务。
增长任务自动化 18 个 CodeBuddy “增长”任务中的 17 个可通过面板一键完成(签到、画布创建、聊天活动、召唤专家等),支持一键执行和自动奖励领取。

快速开始(Docker Compose – 推荐方式)

# 克隆仓库
git clone https://github.com/linguo2625469/workbuddy2api-panel.git
cd workbuddy2api-panel

# 复制示例配置并根据需要编辑 API 密钥
cp config.example.json config.json   # 如需自定义请编辑 config.json

# 启动服务(Docker 将构建 Go 二进制文件)
docker compose up -d --build

# 健康检查
curl -s http://localhost:7863/healthz
# → {"healthy":0,"total":0,"service":"workbuddy2api"}

在浏览器中打开 http://localhost:7863/panel/,点击 添加账户,按照 OAuth 设备流链接登录你的 CodeBuddy 账户,新账户将立即出现在池中。


无需 Docker 运行(单二进制文件)

  1. 下载发布的 wb2api.exe(Windows)或从源码构建(go build -trimpath -ldflags="-s -w" -o wb2api ./cmd/server)。
  2. 运行它:./wb2api -config config.json – 首次启动时,若留空 api_key 字段,将生成一个随机值。
  3. 打开 http://127.0.0.1:7863/panel/ 并按上述方式添加账户。

配置亮点

默认值 含义
listen :7863 HTTP 绑定地址。
api_key 客户端所需的 Bearer Token;留空则禁用认证(不建议公开暴露)。
auth_dir ./auths 存放 OAuth 凭证 JSON 文件的目录。
state_file ./data/state.json 持久化池状态文件。
server.max_body_mb 8 最大请求负载大小;超过则返回 413。
cooldown.soft_rate / soft_rate_max 600s / 2h 429 响应后指数退避的基准值与上限。
schedule.*_enabled true 五个定时任务(签到、活动、旅行、保活、黑猫)的开关。
upstash.url / upstash.token 若设置,池状态和会话绑定将镜像至 Upstash Redis 以实现崩溃容错。
prompt.mode custom custom 会替换客户端系统提示;passthrough 保持原样。
features.sanitize_blacklist_fingerprints true 从出站负载中移除已知的指纹字段。

所有字段均可通过前缀为 WB2A_ 的环境变量在运行时覆盖(例如 WB2A_API_KEY)。


内部工作原理(高层次概述)

  1. 入站请求 – HTTP 处理器验证可选的 API 密钥,强制执行负载大小限制,重写负载(流标志、提示处理、工具调用标准化),并从池中选择一个上游账户。
  2. 池逻辑 – 账户根据禁用/冷却/熔断状态过滤,加权后随机选择前 5 个候选账户。选择过程尊重空闲权重和近期使用防突发规则。
  3. 会话粘性 – 若请求包含 conversation_id(或类似元数据),处理器会尝试将调用绑定到同一上游账户,持续至会话 TTL 结束。
  4. 上游调用 – 一个轻量级客户端将请求流式发送至 CodeBuddy(/v1/chat/completions)。响应流式返回给调用者,非流式请求可选择性聚合。
  5. 错误分类 – 响应被分类(余额耗尽、速率限制、会话丢失、5xx 等),池更新冷却计数器、熔断状态或禁用账户。
  6. 可观测性与持久化 – 每个请求记录一行 CSV 日志;池状态原子写入 state.json,并可选镜像至 Redis。/healthz 端点为负载均衡器报告整体池健康状态。
  7. Web 面板 – UI(嵌入二进制文件中)通过同一 HTTP API 与服务通信,用于显示池指标、实时编辑 config.json、运行增长任务自动化和查看日志。

哪些人可能会使用它?

  • 个人开发者:拥有个人 CodeBuddy 订阅,希望用仅支持 OpenAI API 的工具复用额度。
  • 高级用户:管理多个 CodeBuddy 账户(例如分摊负载或规避单账户速率限制)。
  • 自托管 AI 实验环境:需要一个即插即用的 OpenAI 端点,但希望保持底层服务私有。

法律/合规说明

README 强调这是一个 非官方 网关。应仅用于你拥有的账户,在私有环境中使用,且未正确认证前不应公开暴露。该工具不绕过腾讯的许可协议;它仅自动化设备流登录和令牌刷新流程。


TL;DR

WorkBuddy2API Panel = 一个 Go 服务器,将你的腾讯 CodeBuddy 账户转化为标准的 OpenAI 兼容 API,增加多账户池、智能路由、自动每日任务和内置 Web UI 管理功能。通过 Docker 或单二进制文件部署,通过 OAuth 添加账户,并将任何 OpenAI 客户端指向 http://localhost:7863/v1/...

相关

  • 项目
  • 项目
  • 项目
  • 项目