把 Qoder / WorkBuddy / TraeWork 多账号聚合成 OpenAI 兼容 API —— ai-proxy Windows 本地部署实录

项目地址:https://github.com/C3H3-AI/ai-proxy
> 本文记录在 Windows 本机、无 Docker 环境下,从源码编译部署
C3H3-AI/ai-proxy 的完整过程,
以及踩到的坑。所有命令均可照抄复现。

一、项目介绍

ai-proxy 原本是一个 Home Assistant 加载项(Go 语言编写),核心能力是:

  • 把 WorkBuddy/CodeBuddy、TraeWork(SOLO)、Qoder 三个平台的多个账号,聚合成一个标准的 OpenAI 兼容 API(/v1/chat/completions、/v1/models,支持流式输出)
  • 模型前缀路由:模型名加 workbuddy/、traework/、qoder/ 前缀,自动路由到对应平台
  • 多账号轮转 + 粘性路由:连续 50 次成功或遇错才换号,最大化会话缓存复用
  • 定时任务:每日自动签到(WorkBuddy/TraeWork)、token 保活、积分冷却
  • 自带 Web 管理面板(容器内)
聚合后的 API 可以直接填进任何支持 OpenAI 协议的客户端——包括 Qoder 自身的自定义模型设置,实现"账号 A 的额度给账号 B 的会话用"、多号积分池化等玩法。

工作原理简图:

任意 OpenAI 客户端
      │  http://127.0.0.1:7863/v1  (Bearer <你的代理Key>)
      ▼
┌───────────────────────────┐
│  serverd (Go, 单二进制)     │
│  ├─ 前缀路由: qoder/* 等    │
│  ├─ 账号池: 轮转+粘性+冷却   │
│  ├─ 调度器: 签到/保活/刷新   │
│  └─ 凭证: data/auths/*.json │
└───────────────────────────┘
      │
      ▼  各平台私有协议(设备码登录换取的 token)
 Qoder / WorkBuddy / TraeWork 上游

二、部署环境

项目值
系统Windows 11 (amd64)
已有条件无 Docker、无 Go
网络GitHub 直连不稳定(git clone 被重置,API/raw 站可用)

三、部署步骤

1. 安装 Go 工具链

winget install -e --id GoLang.Go --accept-source-agreements --accept-package-agreements --silent

会安装当前最新的 Go(我这里是 1.27,满足项目要求的 go 1.25.0)。

2. 获取源码(绕过 git 直连问题)

git clone https://github.com/... 被连接重置,改用 codeload 下载压缩包,实测可用:

curl -sL -o ai-proxy.tar.gz \
  https://codeload.github.com/C3H3-AI/ai-proxy/tar.gz/refs/heads/master
tar -xzf ai-proxy.tar.gz && mv ai-proxy-master ai-proxy

项目 Go 模块零第三方依赖(纯标准库),所以不需要 GOPROXY 翻墙拉包,这是源码编译路线能顺利跑通的关键。

3. 编译

cd ai-proxy/src
go build -o bin/ ./cmd/...

产出 5 个二进制:

文件用途
serverd.exe代理服务主程序
ctl.exe查看/管理已登录账号
login_qoder.exeQoder 设备码登录
login.exeWorkBuddy/CodeBuddy 登录
logintrae.exeTraeWork 登录(支持 refreshToken 直登)

4. 编写配置

在 ai-proxy/ 下创建 config.json(API Key 自己随机生成一个,下文占位 <YOUR_API_KEY>):

{
  "listen": {"host": "127.0.0.1", "port": 7863},
  "api_key": "<YOUR_API_KEY>",
  "auth_dir": "data/auths",
  "state_file": "data/data/state.json",
  "region": "cn",
  "cooldown": {"hard_credit": "12h", "soft_rate": "60s", "err_threshold": 3, "err_cooldown": "10m"},
  "schedule": {"checkin_times": ["09:00","21:00"], "keepalive_hours": [22]},
  "upstream": {"timeout_seconds": 120}
}

并创建数据目录:

mkdir -p data/auths data/data

官方 Docker 版还带一个 7870 端口的 Web 管理面板(login_ui.py),但它写死了容器路径 /app、/data,Windows 本机跑不了——纯 CLI 方式完全够用。

5. 启动服务

src/bin/serverd.exe -config config.json

看到 ai-proxy listening on 127.0.0.1:7863 即成功。验证:

curl http://127.0.0.1:7863/healthz        # -> ok
curl -H "Authorization: Bearer <YOUR_API_KEY>" \
     http://127.0.0.1:7863/v1/models      # 初始为空列表(还没有账号)

6. 添加 Qoder 账号(设备码流程)

# ① 生成授权链接
src/bin/login_qoder.exe url -authdir=data/auths -state=data/qoder-login-state.json

把输出的 https://qoder.com.cn/device/selectAccounts?challenge=... 链接在浏览器打开,选择账号并确认授权。

# ② 轮询换取 token —— 注意这是一次性检查!
src/bin/login_qoder.exe poll -authdir=data/auths -state=data/qoder-login-state.json

未完成授权时返回 login pending 并以退出码 1 结束,需要循环重试直到输出账号 JSON。一行轮询脚本(bash):

until src/bin/login_qoder.exe poll -authdir=data/auths -state=data/qoder-login-state.json; do sleep 5; done

成功后凭证自动写入 data/auths/qoder-<uid>.json。

7. 重启服务加载账号(重要)

serverd 只在启动时读取 auths 目录,新加的账号不会热生效:

taskkill /IM serverd.exe /F
start src\bin\serverd.exe -config config.json

再查 /v1/models,就能看到全部 qoder/* 模型了。发一条真实请求确认端到端通畅。

四、客户端接入

配置项值
Base URLhttp://127.0.0.1:7863/v1
API Key你 config.json 里设置的那个
模型名必须带前缀:qoder/qwen3.8-max、qoder/auto、qoder/cheapest …
当前 Qoder 侧可用模型(上下文以 180K 为主):auto、cheapest(按价格自动选)、qwen3.8-max/flash、qwen3.7-max/plus/flash、deepseek-v4-pro(96K)、deepseek-flash、glm-5.3/5.2、glm-5.3-flash(1M)、kimi-k3、kimi-k2.8-preview、minimax-m2.7。

在 Qoder 设置 → 模型 → 自定义里填上述信息即可(模型名记得写全 qoder/xxx,否则 400)。

五、定时任务真相(已核对源码)

  • 自动签到:每天 09:00、21:00 对每个账号触发,但该时刻服务必须在运行,停了不补签
  • Qoder 账号没有签到:internal/qoder/client.go 的 DailyCheckin 直接返回"qoder 暂无签到活动",签到只对 WorkBuddy/TraeWork 实际生效
  • Token 保活:每天 22:00 刷新,Qoder 适用(refreshToken 约 30 天)
  • 冷却:积分不足冷却 12h、限流 60s、连续 3 错冷却 10min、低积分(<10)自动冷却到次日

六、踩坑小结

  1. git clone 被重置 → codeload tarball 下载解决
  2. login_qoder poll 是一次性检查不是阻塞轮询 → 外面套循环
  3. 加完账号模型列表还是空 → serverd 要重启
  4. 客户端测试连接 400 → 模型名忘带 qoder/ 前缀
  5. 上下文别填 1M → 除 glm-5.3-flash 外上限都是 180K(deepseek-v4-pro 96K)

七、风险与合规提示

  • 这是第三方个人维护仓库(非官方),运行它意味着账号令牌交给第三方代码处理,建议先读一遍 src/ 再跑(代码量不大,Go 单模块)
  • 多账号轮转、自动签到等玩法可能违反相关平台服务条款,存在账号风控风险,后果自负
  • 服务默认只绑定 127.0.0.1;改监听地址前想清楚谁能访问你的账号池

部署环境:Windows 11 + Go 1.27,ai-proxy master@2026-09-20(v1.1.0b15)。

返回首页