项目地址: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 管理面板(容器内)
工作原理简图:
任意 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.exe | Qoder 设备码登录 |
login.exe | WorkBuddy/CodeBuddy 登录 |
logintrae.exe | TraeWork 登录(支持 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 URL | http://127.0.0.1:7863/v1 |
| API Key | 你 config.json 里设置的那个 |
| 模型名 | 必须带前缀:qoder/qwen3.8-max、qoder/auto、qoder/cheapest … |
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)自动冷却到次日
六、踩坑小结
git clone被重置 → codeload tarball 下载解决login_qoder poll是一次性检查不是阻塞轮询 → 外面套循环- 加完账号模型列表还是空 → serverd 要重启
- 客户端测试连接 400 → 模型名忘带
qoder/前缀 - 上下文别填 1M → 除
glm-5.3-flash外上限都是 180K(deepseek-v4-pro96K)
七、风险与合规提示
- 这是第三方个人维护仓库(非官方),运行它意味着账号令牌交给第三方代码处理,建议先读一遍
src/再跑(代码量不大,Go 单模块) - 多账号轮转、自动签到等玩法可能违反相关平台服务条款,存在账号风控风险,后果自负
- 服务默认只绑定
127.0.0.1;改监听地址前想清楚谁能访问你的账号池
部署环境:Windows 11 + Go 1.27,ai-proxy master@2026-09-20(v1.1.0b15)。