linguo2625469/workbuddy2api-panel
把腾讯WorkBuddy账号变成 OpenAI 兼容 API 的多账号网关,同时自动完成任务中心全部任务,附 Web 管理面板(账号池可视化 / 积分任务 / 配置热更新)。基于 Sliverkiss/workbuddy2api 的增强分支
WorkBuddy2API Panel – 腾讯CodeBuddy用の自己ホスト型OpenAI互換ゲートウェイ
何であるか – Goで作られたリバースプロキシで、任意のOpenAI互換クライアント(ChatGPT SDK、CLIツールなど)を腾讯CodeBuddy(copilot.tencent.com)に対して使用可能にします。1つ以上のCodeBuddyアカウントをラップし、OAuthデバイスフローでのログインを処理し、トークンを自動更新し、OpenAI APIを模倣する単一の /v1/chat/completions エンドポイントを提供します。
なぜ存在するか – 腾讯は公開されたOpenAIスタイルのAPIを提供していません。このプロジェクトにより、CodeBuddyアカウントを持つ個人が、既存のツールとゼロコードで統合できる馴染み深いOpenAIインターフェースを通じて、自身のクレジットを再利用できます。
コア機能(READMEに記載)
| 機能 | 機能内容 |
|---|---|
| OAuthワンクリックログイン | login.sh またはWebパネルの「アカウント追加」ボタンがデバイス認証フローを実行し、認証情報JSONを保存し、サービスの再起動なしに新しいアカウントを即時ロードします。 |
| マルチアカウントプール | 認証情報のプールを維持し、クレジット、アイドルタイムボーナス、成功確率の3要因に基づく重み付きランダムアルゴリズムでリクエストごとにアカウントを選択します。上位5候補を検討し、短い「バースト防止」遅延を設けて急速な再利用を防ぎます。 |
| 回路ブレーカー&クールダウン | 429応答に対してソフトクールダウン(指数バックオフで最大2時間)、404に対して固定60秒クールダウン、402(残高不足)に対して翌日の04:00までハードクールダウン、さらに失敗回数に基づくブレーカーを備えます。 |
| セッションスタイネス | conversation_id(または派生ハッシュ)を共有するリクエストは、セッションの寿命中(デフォルトTTL 30分、成功した呼び出し毎に更新)同じアップストリームアカウントにルーティングされます。状態はUpstash Redisにミラーリングして再起動後も保持できます。 |
| スケジュールタスク | 自動的な毎日のログイン、活動報告、「猫の旅」、トークンの維持、そして「ブラックキャット」の夜行性タスク。各タスクには独立したオン/オフスイッチと設定可能な時間帯があります。 |
| ストリーミング&非ストリーミング | 外部呼び出しは stream:true に強制されます。クライアントが非ストリーミングを要求した場合、ゲートウェイはストリーミングチャンクを再構成して単一の応答を生成します。 |
| モデルレベル互換性 | モデル名のパススルーに加え、DeepSeekの「思考チェーン」挿入、自動的な努力レベルの低下、応答コンテンツのバックフィルを実装しています。 |
| システムプロンプト処理 | デフォルトでは、クライアントが提供する system メッセージをカスタムプロンプトに置き換えます(元のメッセージを削除してCodeBuddyのコンテンツフィルターによる誤検出を回避)。passthrough モードも利用可能です。 |
| フィンガープリントのクリーニング | ブラックリストに登録されたフィールド(例:デバイスフィンガープリント)は、送信ペイロードから削除されます。無効化も可能です。 |
| 観測性 | 各リクエストごとに1行のCSVログ(TTFB、トークンレート、uid)、サービスステータスを報告する /healthz エンドポイント、オプションのRedisミラーリングを備えます。 |
| Web管理パネル | 単一ページUI(go:embedで埋め込み)で、アカウントの追加、プールの健全性の確認、config.jsonのライブ編集、成長タスク自動化のトリガー、ログの確認、スケジュールタスクの手動実行が可能です。 |
| 成長タスク自動化 | CodeBuddyの「成長」タスク18件のうち17件が、パネルからワンクリックで自動的に完了できます(ログイン、キャンバス作成、チャット活動、エキスパート召喚など)および自動報酬取得が可能です。 |
クイックスタート(Docker Compose – 推奨方法)
# リポジトリをクローン
git clone https://github.com/linguo2625469/workbuddy2api-panel.git
cd workbuddy2api-panel
# 例の設定ファイルをコピーし、必要に応じて編集
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フィールドが空の場合はランダムな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 |
5つのスケジュールジョブ(ログイン、活動、旅、維持、ブラックキャット)のスイッチ。 |
upstash.url / upstash.token |
空 | 設定すると、プール状態とセッションバインディングがUpstash Redisにミラーリングされ、クラッシュ耐性が向上します。 |
prompt.mode |
custom |
custom はクライアントのシステムプロンプトを置き換えます;passthrough はそのまま残します。 |
features.sanitize_blacklist_fingerprints |
true |
送信ペイロードから既知のフィンガープリントフィールドを削除します。 |
すべてのフィールドは、WB2A_ で始まる環境変数(例:WB2A_API_KEY)で実行時にオーバーライド可能です。
内部での動作概要(高レベル)
- 受信リクエスト – HTTPハンドラはオプションのAPIキーを検証し、ペイロードサイズ制限を適用し、ペイロードを書き換え(ストリームフラグ、プロンプト処理、ツールコール正規化)し、プールからアップストリームアカウントを選択します。
- プールロジック – アカウントは無効/クールダウン/ブレーカー状態でフィルタリングされ、重み付けされ、ランダムに上位5候補が選ばれます。選択はアイドル重みと最近の使用防止ルールを尊重します。
- セッションスタイネス – リクエストに
conversation_id(または類似のメタデータ)が含まれる場合、ハンドラはセッションのTTL中、同じアップストリームアカウントに呼び出しをバインドしようとします。 - アップストリーム呼び出し – 限られたクライアントがCodeBuddy(
/v1/chat/completions)にリクエストをストリーミングします。応答はクライアントにストリーミングされ、必要に応じて非ストリーミング呼び出し用に集約されます。 - エラー分類 – 応答は(残高不足、レート制限、セッション喪失、5xxなど)に分類され、プールはクールダウンカウンタ、ブレーカー状態、またはアカウントの無効化を適切に更新します。
- 観測性と永続化 – 各リクエストはCSVログ1行を出力;プール状態は
state.jsonに原子的に書き込まれ、オプションでRedisにミラーリングされます。/healthzエンドポイントはロードバランサ用に全体のプール健全性を報告します。 - Webパネル – UI(バイナリに埋め込み)は同じHTTP APIと通信し、プールメトリクスの表示、
config.jsonのライブ編集、成長タスク自動化の実行、ログの確認を行います。
どんな人が使うか?
- 個人開発者:個人のCodeBuddyサブスクリプションを持っているが、OpenAI APIしか理解できないツールで再利用したい人。
- パワーユーザー:複数のCodeBuddyアカウントを管理している人(例:負荷分散やアカウントごとのレート制限回避)。
- 自己ホスト型AIプレイグラウンド:ドロップイン可能なOpenAIエンドポイントが必要だが、下位サービスをプライベートに保ちたい人。
法的/コンプライアンスに関する注意
READMEでは、これは非公式のゲートウェイであると強調しています。所有するアカウントのみで使用し、プライベート環境で使用し、適切な認証なしにパブリックに公開してはいけません。このツールは騰訊のライセンスを回避するものではなく、単にデバイスフローのログインとトークンの更新を自動化するだけです。
TL;DR
WorkBuddy2API Panel = 腾讯CodeBuddyアカウントを標準のOpenAI互換APIに変換するGoサーバー。スマートルーティングを備えたマルチアカウントプール、自動的な毎日のタスク、組み込みのWebUIを備えています。Dockerまたはシングルバイナリでデプロイし、OAuthでアカウントを追加し、任意のOpenAIクライアントを http://localhost:7863/v1/... に接続できます。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト