社区里已有多个把 CodeBuddy 的 AI 服务桥接成 OpenAI 兼容 API 的 Python 项目,Buddy-2API-Go 用 Go 把它们完整重写了一遍,并在单账号的使用场景下把体验打磨得更顺手:一份凭证、一个二进制、一个内置 Web 面板,开箱即用。
核心思路:用 CodeBuddy / WorkBuddy 的在线 AI 服务作为后端(默认中国端点
copilot.tencent.com,可切换国际端点),对外暴露 OpenAI 兼容的/v1/chat/completions接口,任何支持 OpenAI API 的客户端都能直接接入。
为什么重写成 Go
原版 Python 实现功能完整,但部署依赖 Python 运行时,多实例更吃力。Go 版本把这些痛点一次解决:
- 单文件部署:
go:embed把前端面板打进同一个二进制,零外部依赖,复制到服务器就能跑 - 资源占用低:SQLite 用
modernc.org/sqlite(纯 Go、无 cgo),交叉编译随便出任意平台 - 依赖极简:仅
chi、modernc.org/sqlite、cron/v3三个非标准库依赖
项目定位为个人单账号使用,明确不接受「号池」(多账号池 / 多凭证轮询)相关的功能,天然与「轻量、自用」的方向一致。
核心特性
- OpenAI API 兼容:
/v1/chat/completions(流式透传 / 非流式聚合)与/v1/models端点,可无缝替换 OpenAI API。 - 模型动态加载:模型列表从上游
/v3/config实时拉取并缓存,cn / global 两套端点自动适配,不用手动维护。 - OAuth 设备流登录:管理后台扫码授权即可绑定账号,token 过期自动刷新,401 时刷新后重试一次。
- 多 API Key 管理:随机 / 自定义 Key,支持备注、启停、使用量统计。
- 官方余额查询:实时拉取额度包明细,本地缓存,标注到期 / 临期。
- 每日自动签到:独立开关,cron 定时或时间范围内随机二选一,失败重试 + 末班兜底(23:50 补签),也可手动领取。
- 请求仪表盘:请求量、Token、模型分布、Key 用量等聚合统计。
- 指纹头伪装:出站请求复刻官方 CLI 指纹头,且 chat 请求绝不携带
refresh_token。
工作流程
| |
项目不存储对话内容,数据库只保存元信息,日志也不记录请求 / 响应正文。
技术栈
| 项目 | 说明 |
|---|---|
| 语言 | Go 1.25+ |
| 依赖 | 仅 chi、modernc.org/sqlite(纯 Go 无 cgo)、cron/v3 |
| 存储 | SQLite(API Keys / 请求日志 / 缓存) |
| 前端 | go:embed 单 HTML,内嵌 Alpine.js + 手写 SVG 图表,无外部依赖 |
| 安全 | bcrypt 密码哈希、常量时间 API Key 比对 |
| 部署 | 单二进制 / Docker / 预编译 Release |
部署与使用
三种方式任选:下载 Releases 预编译二进制(Linux / Windows / macOS 全平台)、Docker 部署(ghcr.io/echoping07/buddy-2api-go),或 Go 1.25+ 源码构建。
启动后访问管理面板(默认 http://127.0.0.1:10082),默认密码 password 登录后,在「账号」页扫码完成 OAuth 授权,「密钥」页创建 API Key,即可在任意 OpenAI 兼容客户端中使用:
| |
默认密码仅用于首次登录,请尽快在管理后台修改(或通过环境变量
BUDDY2API_ADMIN_PASSWORD指定)。二进制直跑默认只监听127.0.0.1,公网部署务必放到反代后面并加 TLS。
安全设计
面向个人使用,内置了多项加固措施:管理密码 bcrypt 哈希存储、API Key 常量时间比对、日志只记元信息不记正文、chat 请求绝不携带 refresh_token、二进制默认仅监听本机回环地址。
相关链接
本项目仅供学习交流使用。请勿用于绕付费、绕限制或任何可能损害服务提供方利益的行为。