English · Русский · 中文 · Español · Deutsch · Français · Português (BR) · 日本語
# Flock **Claude Code を使った AI 開発チームをサーバー上で動かし、チャットから指示しましょう。** Telegram や VK で機能を説明するだけで、チームがそれを計画し、ブランチ上で実装し、テストし、レビューして、PR を作成します。各チャットはそれぞれ隔離された専用ワークスペースで動作します。 [](https://github.com/duckbugio/flock/actions/workflows/ci.yml) [](LICENSE) [](go.mod) [](https://github.com/orgs/duckbugio/packages) Claude の **Pro/Max サブスクリプション**(トークン課金なし)または Anthropic API キーで動作し、**ビルド済み Docker イメージ**として配布され(ビルド手順は不要)、各チャットをそれぞれサンドボックス化されたワークスペースに隔離します。 ## クイックスタート(Docker) ```bash git clone https://github.com/duckbugio/flock cd flock/adapters/telegram cp .env.example .env # fill in the REQUIRED block (4 values) docker compose up -d ``` これによりビルド済みイメージ `ghcr.io/duckbugio/flock-telegram` が取得されます。ビルドも Ansible も不要で、あとは Bot にメッセージを送るだけです。最小限の `.env` は次のとおりです。 | 変数 | 内容 | |---|---| | `TELEGRAM_BOT_TOKEN` | [@BotFather](https://t.me/botfather) から取得 | | `TELEGRAM_BOT_USERNAME` | Bot の @ユーザー名(`@` は不要) | | `ALLOWED_USERS` | Bot の利用を許可する Telegram ユーザー ID のカンマ区切りリスト | | `CLAUDE_CODE_OAUTH_TOKEN` | `claude setup-token`(サブスクリプション) — *または* `ANTHROPIC_API_KEY` を設定 | [`.env.example`](adapters/telegram/.env.example) のそれ以外の項目には妥当なデフォルト値が設定されています。更新は後から `docker compose pull && docker compose up -d` で行えます。 ### Telegram の秘書モード @BotFather でボットの秘書モードを有効にし、Telegram でアクセスを許す個人チャットを選びます。アカウント所有者の ID を `ALLOWED_USERS` に追加してください。`SECRETARY_MODE=approval` は所有者へ送信・破棄ボタン付きの下書きを送り、`SECRETARY_MODE=auto` は直ちに返信します。返信にはボットで別途選択した AI プロバイダーとモデル(`AI_BACKEND`)を使用します。Telegram 側で別の AI モデルは選びません。Claude では秘書も通常の Flock エージェントとして動作し、ツール、MCP、Business チャットごとの永続的な会話履歴を利用します。自動返信前にプロバイダー側で支出上限を設定してください。[英語の詳細](README.md#telegram-secretary-mode)。 現在、秘書モードは `AI_BACKEND=claude` のみ対応します。他のプロバイダーではボットは動作を続けますが、Business メッセージは処理しません。 Flock のツールと MCP を使わせてもよい相手のチャットだけにアクセスを許可してください。承認の対象は返信の送信だけです。ツールは承認前に動作する場合があり、実行済みの操作は取り消せません。 > **リージョン:** **Anthropic がサポートするリージョン**でホストしてください(一部の国、例えば RU/CN などはジオブロックされています)。そうでない場合、Claude の呼び出しは失敗します。 **VK** も同じパターンで [`adapters/vk/`](adapters/vk/) に用意されており、同じコアの上に構築され、`ghcr.io/duckbugio/flock-vk` として公開されています。配布されるのは env テンプレートのみ(compose ファイルはありません)。`cp .env.example .env` のあと、`docker run --env-file .env ghcr.io/duckbugio/flock-vk` を実行します。Claude の認証とコア設定は Telegram と同じで、トランスポート用の 3 つの変数のみが異なります。 | 変数 | 内容 | |---|---| | `VK_BOT_TOKEN` | コミュニティアクセストークン(VK コミュニティ → 管理 → API の利用 → アクセストークン) | | `VK_GROUP_ID` | コミュニティの数値 ID(ロングポーリングサーバー + メンション解析用) | | `VK_ALLOWED_USERS` | Bot の利用を許可する VK ユーザー ID のカンマ区切りリスト | ## 主な特長 - **会話そのものがタスクの起点** — チャットでやりたいことを説明し、返ってくる PR をレビューするだけ。エージェントのシェルとエディタはコンテナ内にサンドボックス化されています。 - **単発のプロンプトではなく、本物の開発チームのパイプライン** — 仕様優先の受け入れ基準、ビルド/回帰テストのゲート、そしてループを断ち切る arbiter を備えています。 - **マルチトランスポート** — 現在は **Telegram** と **VK** に対応し、いずれも同じコアの上で動作します。新しいプラットフォームの追加はフォークではなく薄いアダプターで済みます。 - **インバウンド Webhook なしで PR に反応** — Bot は新しいレビューコメントを git ホストに対して*ポーリング*し、それぞれを PR を作成したチャットへ振り分けます。 - **サブスクリプションに優しい** — Claude Pro/Max トークン(トークン課金なし)または Anthropic API キーで認証できます。 ## 仕組み ``` You (in a chat): "implement X across the api + web services" → bot's Claude (Lead) → planner → confirm scope → coder ⇄ tester → PR per repo → reviewer (inline comments) ⇄ coder → arbiter ├ APPROVE → you merge └ ESCALATE → asks you ``` 5 つのサブエージェント — **planner → coder → tester → reviewer → arbiter** — は、[`core/agents/`](core/agents/) にネイティブな Claude Code サブエージェントとして配置されています。単なる質問にはそのまま回答し、ビルドの依頼があるとチームが起動します。**arbiter** はリスクを認識しサイクルを制限するループブレーカーで、エージェントが永遠に空回りしないようにします。ブランチは `duck/