把 WorkBuddy / CodeBuddy(腾讯代码助手) 订阅变成本机可用的 OpenAI / Anthropic 兼容 API。
- 支持 Chat Completions、Responses 和 Anthropic Messages,包含工具调用与流式输出。
- 内置 WebUI:扫码添加账号,管理模型、凭证、日志与设置,无需桌面端。
- 多账号自动选路,兼容国内/国际站,自动刷新凭证。
- 按账号配置自动任务:国内默认签到后派 Buddy 旅行,可分别关闭;国际自动签到默认关闭。
需要 Git 和 Docker Compose;直接拉取 GHCR 已构建镜像(内含 WebUI),无需在本机编译。
git clone https://github.com/maiphucgiang/codebuddy2api.git
cd codebuddy2api
cp .env.example .env编辑 .env:将 CODEBUDDY2API_KEY 设置为自己的随机密钥,并指定镜像;升级时保留已有 .env:
CODEBUDDY2API_IMAGE=ghcr.io/maiphucgiang/codebuddy2api:latestdocker compose pull
docker compose up -d --no-buildlatest 跟随稳定发行版;需固定部署时改用已发布的版本标签。镜像功能以对应版本为准,不包含尚未合并的源码分支改动。
首次使用:
- 打开 **http://127.0.0.1:8787/dashboard**,使用刚设置的 API key 登录。
- 在「凭证管理」扫码添加国内或国际账号,也可导入
.info文件。 - 在「模型路由」查看可用模型,将其对外 ID 填入客户端。
按模板配置时仅允许本机访问。远程访问前请配置 HTTPS 并限制网络访问;保留并妥善备份 auth/ 数据目录。如需直接运行源码或在终端登录,见部署指南。
| 协议 | Base URL |
|---|---|
| OpenAI Chat / Responses | http://127.0.0.1:8787/v1 |
| Anthropic Messages | http://127.0.0.1:8787 |
- API Key:与 WebUI 登录使用同一个密钥。
- 模型:使用 WebUI 中的对外 ID,或查询
GET /v1/models。 - 国内、国际账号共用这些地址,无需额外的地域参数。Anthropic SDK 会自行追加
/v1/messages,不要把它写入 Base URL。
Codex CLI、Claude Code / CC Switch 等配置示例 →
.
├── converter.py # 网关入口:协议适配、选路、调度
├── app/ # 管理 API、凭证、目录、审计与策略模块
├── web/ # WebUI 前端(React/TypeScript,构建产物由网关托管)
├── tests/ # 离线回归测试
├── docs/ # 用户文档(中英双语)
├── examples/ # 客户端配置示例
├── scripts/ # 版本与依赖锁定工具
├── Dockerfile # 多阶段镜像:前端构建 + Python 运行时
├── docker-compose.yml # 推荐部署方式
├── .env.example # 全部运行时环境变量及注释
└── .github/workflows/ # CI:测试、镜像发布、CodeQL
| 指南 | 内容 |
|---|---|
| WebUI 使用指南 | 添加账号、模型路由、日志审计、设置与备份 |
| 部署指南 | 发布镜像、升级、反向代理/HTTPS、本地运行与命令行登录 |
| 客户端配置 | Codex CLI、Claude Code、CC Switch 与通用客户端 |
| 进阶参考 | 参数、API、模型调度、请求限制与故障排查 |
- 绑定域名后经 HTTPS 反代无法登录 WebUI? 将对外来源加入
admin_allowed_origins信任列表——见管理 Origin 校验。 - 没有 Docker? 准备依赖和 WebUI 后,直接
uv run converter.py或python3 converter.py,无需.env;首次本地启动保存默认 key 并仅在终端显示一次——见本地 Python 运行。 - 数据在哪里? 全部位于
auth/(Docker 中为/data/auth):凭证、设置与日志数据库——见数据与备份。 - 镜像标签怎么选?
latest跟随稳定版,edge跟随 main,版本标签固定某一发行版——见使用已发布镜像。 - Responses 工具输出/参数被压缩或需要完全原样? 设置
responses_projection_mode(默认balanced,设passthrough可完全关闭投影)及responses_projection_max_bytes(默认40000,0禁用单项裁剪)。balanced 裁剪保留头尾并显示原始 bytes、估算 tokens 与总行数,客户端地址不变——见 Responses 投影及详细说明。
本项目仅供个人学习使用,不得用于商业用途。与腾讯、WorkBuddy、CodeBuddy、OpenAI、Anthropic 无官方关联。本项目仅调用你已登录账号的官方接口,请仅在你合法拥有订阅的前提下使用;账号与凭据的一切使用责任及风险由使用者自行承担。
感谢 LINUX DO 社区提供开放、友善的技术交流平台。