linguo2625469/workbuddy2api-panel
把腾讯WorkBuddy账号变成 OpenAI 兼容 API 的多账号网关,同时自动完成任务中心全部任务,附 Web 管理面板(账号池可视化 / 积分任务 / 配置热更新)。基于 Sliverkiss/workbuddy2api 的增强分支
WorkBuddy2API Panel – 一個自架的 OpenAI 兼容閘道,用於騰訊 CodeBuddy
這是什麼 – 一個基於 Go 的反向代理,讓您能使用任何 OpenAI 兼容的客戶端(ChatGPT SDK、CLI 工具等)連接騰訊 CodeBuddy(copilot.tencent.com)。它包裝一個或多個 CodeBuddy 帳號,處理 OAuth 設備流程登入、自動更新權杖,並提供單一的 /v1/chat/completions 端點,模擬 OpenAI API。
為什麼存在 – 騰訊並未公開提供 OpenAI 風格的 API。此專案讓擁有 CodeBuddy 帳號的個人能透過熟悉的 OpenAI 界面重複使用其額度,實現與現有工具的零程式碼整合。
核心功能(如 README 所述)
| 功能 | 作用 |
|---|---|
| OAuth 一鍵登入 | login.sh 或網頁面板的「新增帳號」按鈕會執行設備授權流程,儲存憑證 JSON,並在不重啟服務的情況下即時載入新帳號。 |
| 多帳號池 | 維護一個憑證池,根據三因子加權隨機演算法(額度、閒置時間獎勵、成功率)為每個請求選擇帳號。考慮前五名候選者,並加入短暫的「防爆衝」延遲以防止快速重複使用。 |
| 電路斷路器與冷卻 | 對 429 回應啟用軟冷卻(指數退避最多 2 小時),對 404 回應固定 60 秒冷卻,對 402(額度耗盡)啟用硬冷卻至隔日 04:00,並根據失敗次數觸發斷路器。 |
| 會話黏性 | 共享 conversation_id(或衍生雜湊)的請求會在整個會話期間路由至同一上游帳號(預設 TTL 30 分鐘,每次成功呼叫會刷新)。狀態可鏡像至 Upstash Redis 以在重啟後存活。 |
| 排程任務 | 自動每日簽到、活動報告、「貓旅行」、權杖保活,以及「黑貓」夜貓子任務。每個任務都有獨立的開關與可設定的執行時間。 |
| 串流與非串流 | 出站呼叫強制設為 stream:true;當客戶端要求非串流時,閘道會重新組合串流片段為單一回應。 |
| 模型層級相容性 | 透過傳遞模型名稱,加上 DeepSeek「思考鏈」注入、自動降低努力等級,以及回應內容補全。 |
| 系統提示處理 | 預設會以自訂提示取代客戶端提供的 system 消息(移除原始內容以避免 CodeBuddy 的內容過濾誤判)。也提供 passthrough 模式。 |
| 指紋清潔 | 從出站資料中移除已列為黑名單的欄位(例如裝置指紋);可停用。 |
| 可觀察性 | 每個請求產生一行 CSV 日誌(TTFB、token 速率、uid),/healthz 端點提供服務狀態,支援可選的 Redis 鏡像。 |
| 網頁管理面板 | 單頁式 UI(透過 go:embed 嵌入)功能包括:新增帳號、檢視池狀態、即時編輯 config.json、觸發成長任務自動化、檢視日誌,以及手動執行排程任務。 |
| 成長任務自動化 | 18 個 CodeBuddy「成長」任務中有 17 個可透過面板自動完成(簽到、畫布建立、聊天活動、召喚專家等),支援一鍵執行與自動領取獎勵。 |
快速入門(Docker Compose – 推薦方式)
# 克隆倉儲
git clone https://github.com/linguo2625469/workbuddy2api-panel.git
cd workbuddy2api-panel
# 複製範例設定檔,如需自訂 API 金鑰可編輯
cp config.example.json config.json # 如有需要可編輯 config.json
# 啟動服務(Docker 會建置 Go 二進位檔)
docker compose up -d --build
# 健康檢查
curl -s http://localhost:7863/healthz
# → {"healthy":0,"total":0,"service":"workbuddy2api"}
開啟瀏覽器至 http://localhost:7863/panel/,點選 新增帳號,依照 OAuth 設備流程連結,使用您的 CodeBuddy 帳號登入,新帳號將立即出現在池中。
不使用 Docker 執行(單一二進位檔)
- 下載釋出的
wb2api.exe(Windows)或從原始碼建置(go build -trimpath -ldflags="-s -w" -o wb2api ./cmd/server)。 - 執行:
./wb2api -config config.json– 第一次啟動時,若留空api_key欄位,系統會自動產生隨機金鑰。 - 開啟
http://127.0.0.1:7863/panel/,並如上新增帳號。
設定重點
| 金鑰 | 預設值 | 含義 |
|---|---|---|
listen |
:7863 |
HTTP 監聽位址。 |
api_key |
空 | 客戶端所需的 Bearer 權杖;留空則停用驗證(不建議公開暴露)。 |
auth_dir |
./auths |
儲存 OAuth 憑證 JSON 檔案的目錄。 |
state_file |
./data/state.json |
持久化池狀態檔案。 |
server.max_body_mb |
8 |
最大請求負載大小;超過者以 413 拒絕。 |
cooldown.soft_rate / soft_rate_max |
600s / 2h |
429 後指數退避的基礎與上限值。 |
schedule.*_enabled |
true |
五個排程工作(簽到、活動、旅行、保活、黑貓)的開關。 |
upstash.url / upstash.token |
空 | 若設定,池狀態與會話綁定會鏡像至 Upstash Redis 以提升容錯能力。 |
prompt.mode |
custom |
custom 會取代客戶端系統提示;passthrough 則保留原樣。 |
features.sanitize_blacklist_fingerprints |
true |
從出站資料中移除已知的指紋欄位。 |
所有欄位皆可透過前置 WB2A_ 的環境變數於執行時覆蓋(例如 WB2A_API_KEY)。
內部運作原理(高階概述)
- 進來的請求 – HTTP 處理器驗證可選的 API 金鑰,強制執行負載大小限制,重寫請求內容(串流旗標、提示處理、工具呼叫標準化),並從池中選擇上游帳號。
- 池邏輯 – 帳號會根據停用/冷卻/斷路器狀態篩選,加權後隨機選出前五名候選者。選擇過程尊重閒置權重與近期使用防爆衝規則。
- 會話黏性 – 若請求包含
conversation_id(或類似元資料),處理器會嘗試將呼叫綁定至同一上游帳號,直到會話 TTL 結束。 - 上游呼叫 – 輕量客戶端將請求串流至 CodeBuddy(
/v1/chat/completions)。回應會串流回呼叫者,非串流請求可選擇性地聚合。 - 錯誤分類 – 回應會被分類(額度耗盡、速率限制、會話遺失、5xx 等),並根據需要更新池的冷卻計數器、斷路器狀態或停用帳號。
- 可觀察性與持久化 – 每個請求記錄一行 CSV;池狀態會原子寫入
state.json,並可選鏡像至 Redis。/healthz端點提供整體池健康狀態,供負載平衡器使用。 - 網頁面板 – UI(嵌入二進位檔中)與相同 HTTP API 通訊,用以顯示池指標、即時編輯
config.json、執行成長任務自動化、檢視日誌。
哪些人可能會使用?
- 個人開發者:擁有個人 CodeBuddy 訂閱,希望用熟悉 OpenAI API 的工具重複使用額度。
- 高階使用者:管理多個 CodeBuddy 帳號(例如分散負載或避免單帳號速率限制)。
- 自架 AI 遊樂場:需要一個即插即用的 OpenAI 端點,但偏好保持底層服務私密。
法律/合規注意事項
README 強調此為 非官方 閘道。僅應在您擁有帳號的私人環境中使用,且未經適當驗證前不應公開暴露。此工具並未繞過騰訊的授權;僅自動化設備流程登入與權杖更新。
總結
WorkBuddy2API Panel = 一個 Go 伺服器,將您的騰訊 CodeBuddy 帳號轉換為標準 OpenAI 兼容 API,加入多帳號池與智慧路由、自動每日任務,以及內建網頁管理介面。透過 Docker 或單一二進位檔部署,透過 OAuth 新增帳號,並讓任何 OpenAI 客戶端指向 http://localhost:7863/v1/...。
相關
- 專案
- 專案
- 專案
- 專案