项目地址:
- 面板:https://github.com/ithtelab/workbuddy-manager
- 上游网关:https://github.com/Sliverkiss/workbuddy2api
把「多账号签到、OpenAI 兼容网关、密钥分发」从命令行脚本变成一个 Web 面板。本文覆盖两种部署形态与自启配置的常见坑。
这套东西是什么
workbuddy2api 是 Go 写的腾讯 CodeBuddy 账号池网关——多账号包装成 OpenAI 兼容接口,自带轮询、熔断、定时签到。能力强,但纯命令行:加号跑脚本、看状态用 curl、发密钥靠手改配置。
workbuddy-manager(MIT)是给上游配套的 Web 管理端:
| 以前 | 现在 |
|---|---|
| 跑脚本扫码加号 | 面板点一下,扫码即纳管 |
curl /status 看状态 | 仪表盘实时展示健康度与有效期 |
手改 config.json | 可视化设置,开关 + 数字框 |
| 全局共用一个 Key | 多密钥分发,独立配额与 IP 白名单 |
架构
下游客户端(OpenAI SDK)
│ Bearer wbk_xxx
▼
┌────────────────────────────────┐
│ workbuddy-manager :7864 │
│ 面板 · 密钥 · 日志 · 反代 │
└──────────┬─────────────────────┘
▼
┌────────────────────────────────┐
│ workbuddy2api(Go) :7863 │
│ 账号轮询 · 签到 · 熔断 │
└──────────┬─────────────────────┘
▼
腾讯 CodeBuddy
上游 config.json 的四类定时任务重启后自动恢复:每日签到、猫猫旅行、活跃上报、Token 保活。
效果图

部署方式怎么选
| 方式 | 适合场景 |
|---|---|
| 服务器一键脚本 | 云服务器公网运营,自动装齐上下游 + systemd |
| Docker Compose | 已在用 Docker 跑上游 |
| Windows 原生 | 常开的 Windows 机器,不想装 Docker |
Windows 原生部署
1. 前置
上游 workbuddy2api 已运行(默认端口 7863),并备好启停脚本(新版上游自带 start/stop-workbuddy2api.cmd)。
2. 配置
git clone https://github.com/ithtelab/workbuddy-manager.git
cd workbuddy-manager
Copy-Item .env.example .env
.env 关键项(路径用 /):
WB_MANAGER_HOST=127.0.0.1
WB2API_MODE=native
WB_UPSTREAM_DIR=<上游目录>
WB_AUTH_DIR=<上游目录>/auths
WB_UPSTREAM_CONFIG=<上游目录>/config.json
WB2API_START_SCRIPT=<上游目录>/start-workbuddy2api.cmd
WB2API_STOP_SCRIPT=<上游目录>/stop-workbuddy2api.cmd
WB2API_LOG_FILE=<上游目录>/data/server.err.log
两个约定:启动脚本要立即返回(前台运行会让「重启」误报超时),日志要写到 WB2API_LOG_FILE(否则面板任务页读不到记录)。
3. 构建并启动
py -3.11 -m venv .venv
.\.venv\Scripts\python.exe -m pip install -r server\requirements.txt
cd web; npm ci; npm run build:export; cd ..
powershell -ExecutionPolicy Bypass -File .\service-tools.ps1 start
打开 http://127.0.0.1:7864 登录(密码由 WB_ADMIN_PASSWORD 指定,未设则首启日志打印随机密码),登录后立刻改密。
4. 纳管与分发
- 「账号」页扫码添加账号,成功后自动首签、写授权文件、重载上游
- 「密钥」页新建密钥:可限定版本(国内/国际)、有效期、IP 白名单、模型白名单、Token 配额、积分配额(按上游真实扣费累计,任一超限即 429)
- 密钥明文只在创建时展示一次
开机自启的三个坑
无黑窗自启的推荐方案:启动文件夹 VBS + PowerShell 两层——VBS 只负责隐藏调用 PowerShell,实际启动逻辑放 start.ps1。
坑一:VBS 里做输出重定向会静默失效。cmd /c xxx.exe >> log 2>&1 实测进程和日志都不会产生。改用 PowerShell Start-Process -RedirectStandardError 原生重定向(Go 与 uvicorn 的主日志都在 stderr)。
坑二:不设工作目录,exe 静默退出。Start-Process 必须带 -WorkingDirectory,否则读不到配置文件直接退,无任何报错。
坑三:错过整点不补跑。调度器只取下一个整点,服务晚启动就会跳过当天任务——这类服务必须常驻,正是要做自启的原因。
核心逻辑(幂等,重复运行安全):
if (Test-Listening 7863) {
Add-Content $log "already listening - skip"
} else {
Start-Process -FilePath <上游exe> `
-WorkingDirectory <上游目录> `
-RedirectStandardError "$logDir\up-$stamp.log" `
-WindowStyle Hidden
}
核验自启看 launcher.log;核验签到执行看上游日志的 checkin done 汇总行(定时签到不写管理端的签到记录表)。
安全须知
- 账号凭证为明文 token:勿提交 git、勿外泄;备份凭证目录与
manager.db即可完整恢复 - 默认密码务必修改
- 公网访问务必套 HTTPS 反向代理
- 管理端身份与网关密钥彻底分离:API 密钥不能登录后台