自建服务

几个 CodeBuddy 账号,我收进了一个池子

Administrator 47 阅读 0 评论

手头有几个 CodeBuddy 账号,有的是自己注册的,有的是朋友送的。积分都不一样,有的还剩一大截,有的早就见底。

平时没觉得有什么。真到连着用的时候才烦——客户端只认一个 API Key,想换号就得改配置、重启,偶尔还要重新登录一遍。一天来回几次,人就麻了。

后来在 GitHub 上翻到 workbuddy2api,正好是干这个的:把几个账号收进一个池子,对外只露一条 OpenAI 兼容的接口。客户端一行代码都不用改,把 base_url 指过来、填上 Key 就行。

我在自己的服务器上部署了一份,用了有一阵。下面是用下来的感受,最后附一份部署教程。

几个号怎么轮

我一开始想得很简单:轮流用不就行了。真跑起来才知道没那么简单——有的号正在限流,请求过去就卡着;有的号积分快过期,却一直轮不到;还有的号其实积分早就用光了,非要等排到它才报错。

这些它自己会处理,有两件事我用下来觉得挺省心。

一是同一个对话不会乱跳号。多轮对话中间要是换了账号,上游的缓存会失效,不光慢,上下文偶尔还会串。它会把同一个对话粘在同一个号上,闲置一阵子才释放。

二是它优先用免费的额度。每次请求成功,上游会回一个积分消耗,它折算成每千 token 的单价记下来,跑一段时间就摸清了每个号在每个模型上是免费还是收费。选号时优先用免费的,免费号忙不过来才动别的。我手头这几个号哪个免费、哪个快没钱了,自己根本记不住,这一层最省心。

还有个细节:限流是按模型算的。某个模型被限,换一个模型马上能用,不用等整个账号恢复。

面板是我自己用 Codex 写的

项目本身不带管理面板,作者把这块留给了社区项目单独维护。我不想再装一套,就用 Codex 照着它暴露出来的接口自己写了个页面,读账号状态和模型数据。

我自己做的管理面板首屏

页面上能看到累计的 Token、请求数、成功率,下面是账号池——每个号的成败、连败、最近一次成功时间,再下面是模型用量表。UID 和昵称我打了码。

我平时看得最多的是可用模型列表,每个模型后面标着上游给的倍率,x0.00 就是免费。哪些能白嫖一眼就清楚,不用挨个去试。

可用模型列表:按免费与收费分组,并标注上游倍率

绑定账号也不用开终端了

以前加号要跑命令行脚本:终端吐一条授权链接,复制到浏览器登录,然后盯着终端等轮询。能用,但每次都得开个终端。

面板里直接做了个绑定向导。先选国内版还是国际版:

绑定账号第一步:选择国内版或国际版

选完,会申请一条一次性的授权链接,然后开始轮询:

绑定账号第二步:打开登录页并等待授权完成

点「打开登录页」,用要绑的号登录就行。登录完弹窗自己往下走,账号直接进池子,不用重启,回面板刷一下就能看到。

部署教程

1. 拉代码、准备配置

需要 Docker 和 Docker Compose。

git clone https://github.com/dandanliangle/workbuddy2api.git
cd workbuddy2api
cp config.example.json config.json

然后编辑 config.json,至少把 api_key 设上。留空就是不鉴权,公网部署一定要设。

2. 添加账号

./login.sh

按提示打开授权链接、登录,完成一个账号的绑定。要加多个账号,重复执行即可。

如果是在非 root 用户下部署,登录脚本落盘的凭证属主可能和容器里的用户对不上,网关读不到,/status 里账号数是 0。这时执行 chown -R 10001:10001 ./auths;之后再加账号要进容器里跑 ./login.sh。

3. 启动

docker compose up -d --build
curl -s http://localhost:7863/healthz
# {"healthy":2,"total":3,"service":"workbuddy2api"}

返回里 healthy 不为 0,就说明账号已经读进去了。

4. 接入客户端

把客户端的 base_url 指到网关,Key 填 config.json 里的 api_key:

base_url: http://<服务器地址>:7863/v1
api_key:  <config.json 里的 api_key>

5. 验证

curl -sN http://127.0.0.1:7863/v1/chat/completions \
  -H "Authorization: Bearer <api_key>" \
  -H "Content-Type: application/json" \
  -d '{"model":"deepseek-v4-flash","messages":[{"role":"user","content":"hi"}],"stream":true}'

能正常出内容就通了。

不想用 Docker 也行,源码构建就是一个 go build;Windows 下仓库里带了启停脚本。

项目地址:github.com/dandanliangle/workbuddy2api

评论