Discord × Antigravity システム設計図(3チャンネル構成)
本設計図は、人間がDiscordの特定チャンネルに指示を投稿してから、AI(Antigravity)が自律実行し、最終的な完了報告が人間に返ってくるまでの「一連のワークフロー」を定めたものです。
1. インターフェース設計(フロントエンド)
整理された3つのチャンネルにそれぞれの役割(入力仕様・スラッシュコマンド)を割り当てます。
| チャンネル名 | 用途・役割 | 入力方式 | 説明 |
|---|---|---|---|
AI指示 | Antigravityへ直接作業を命じるメインの「戦場」 | 生テキスト または/task [指示]/mode [役職] | ここに書き込まれた内容は全て(ボットの返答やシステムメッセージを除き)、ローカルのAntigravityへ引き渡されるタスクとして処理されます。生テキストを打つだけで稼働します。 |
日記 | 日々の気づきや記録を残す「倉庫」 | 生テキスト | 自動化の対象外。journal_listener.py が定期的にテキストを回収し、Obsidianへ生データとして保存する機能のみに特化します。 |
AIチャット | 純粋な相談や壁打ち(コード操作なし) | 生テキスト または/ask [質問] | Antigravity側のリソース(PC操作等)は消費せず、Discord Botに搭載されたLLM(Gemini API)がそのままDiscord上で返信します。 |
2. 実行プロセスの詳細(AI指示 チャンネルの場合)
ユーザーが生テキスト(例:「〇〇の機能を実装して」)を投稿した際、以下の流れで自律実行まで移行します。
(a) 生テキストからローカルPCへの伝達メカニズム
- 受信: Discord Bot(
command_relay.py)がon_messageイベントにより、指定チャンネル(AI指示)のユーザー発言をフック(検知)します。 - キュー保存 (VPS): Botは、そのテキストを一文字も加工せず、VPS上の Hubサーバー(FastAPI)に対し
POST /pushを行い、指示内容をキュー(データベース)に保存します。このとき、Discord上では元メッセージに「✅(受付完了)」のリアクションが付きます。 - ポーリング (PC): ローカルPCで常駐稼働しているスクリプト(
poller.py)が、5秒おきにVPSサーバーへGET /pullで新着の指示がないか確認に行きます。 - 注入 (IDE): 新しいタスクが存在した場合、
poller.pyが指示を取得(JSON保存)し、すぐにcdp_injector.pyを呼び出してローカルポート127.0.0.1:8123(WebSocket)へテキストを送信します。 - 受動トリガー: Antigravityの裏口(
[[workbench.js]])がこのWebSocketを受信すると、自動的にIDE内のチャット入力欄にテキストをペーストし、Enterキーを押下する(実行ボタンを押す)イベントを発火させます。
(b) 計画立案から自律実行(Autonomous)までの仕組み
- 初期プロンプト受信: 前述の仕組みにより、Antigravity(AIエージェント)のチャットUI上にユーザーの原文が入力されます。
- Agentic Mode(プランニング):
- 賢いAIモデルを使用している場合、エージェントは即座にコードを書きません。まず自身の内部ツール(ターミナルやファイル検索等)を駆使して現在のワークスペースの状況を調査し、
Implementation Plan(実装計画)を作成します。
- 賢いAIモデルを使用している場合、エージェントは即座にコードを書きません。まず自身の内部ツール(ターミナルやファイル検索等)を駆使して現在のワークスペースの状況を調査し、
- 自律実行ループ:
- 計画が確定すると、エージェントは順番に「ファイルの編集」「ターミナルでのテスト実行」「エラーがあればデバッグ」というループを自律的に繰り返します。人間とは完全に独立してローカルPCのCPU・メモリ等のリソースを使い続けます。
3. フィードバックと実況(Discordへの返却)
実行中の「今の状態」や「終わった報告」を、チャンネルを増やさずに AI指示 チャンネル内で完結・可視化させる仕組みです。
(a) AIエージェント稼働中の実況(ステータス更新)
チャンネルを無駄に増やさず、ユーザーの投稿に対する**「スレッド(Thread)」または「Botからの返信(Reply)メッセージの編集」**を利用して進捗を表現します。
- 起点作成: Discord BotがVPSに送信成功した直後、ユーザーの指示メッセージに対して Bot が「⏳ 作業キューに追加しました…」という返信(Reply)を送ります。
- 進捗のフック: ローカルPC側でAntigravityが動いている間、別の監視スクリプト(例:
run_logger.py)が「計画中」「コーディング中」「テスト中」などの大まかな状況をVPS Hub (POST /status) に定期送信します。 - Discord表示の更新: Discord BotがVPSからそのステータスを受け取ると、先ほどの Botの返信メッセージ(Reply)を上書き編集(Edit)し、「🔄 計画中…」→「⚙️ コーディング中…」へとリアルタイムに表示を切り替えます。
(b) 完了後の最終報告プロセス
- 成果物のまとめ: Antigravityが全てのタスクを完了すると、作業結果をまとめた
walkthrough.md等のアーティファクト(報告書)が生成されます。 - Discordへの還元: ローカルの
result_aggregator.pyが完了を検知すると、VPS経由で Discord Botに「完了フラグ」と「サマリー文」を送信します。 - 報告の通知: Discord Botは、元々の指示メッセージ(または作成したスレッド)内で、以下のような「完了報告Embedパネル」付きのメンションを投稿します。
- 内容例: 「✅ タスクが完了しました。\n・修正ファイル: 3件\n・詳細: Obsidianの
〇〇.mdに結果を保存しました。」
- 内容例: 「✅ タスクが完了しました。\n・修正ファイル: 3件\n・詳細: Obsidianの
- データの永続化: 同時に
vault_importer.pyが作動し、生成された詳細な報告書は確実にObsidian(Second Brain)へ格納されます(人間はいつでもローカルのObsidianから詳細を確認可能)。
この設計により、「AI指示」という1つのチャンネルだけで、直感的な入力(生テキスト) → 状況のリアルタイム実況(メッセージ内上書き) → きれいな最終報告(返信+Obsidian同期) のサイクルの完全自動化が実現します。