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への伝達メカニズム

  1. 受信: Discord Bot(command_relay.py)が on_message イベントにより、指定チャンネル(AI指示)のユーザー発言をフック(検知)します。
  2. キュー保存 (VPS): Botは、そのテキストを一文字も加工せず、VPS上の Hubサーバー(FastAPI)に対し POST /push を行い、指示内容をキュー(データベース)に保存します。このとき、Discord上では元メッセージに「✅(受付完了)」のリアクションが付きます。
  3. ポーリング (PC): ローカルPCで常駐稼働しているスクリプト(poller.py)が、5秒おきにVPSサーバーへ GET /pull で新着の指示がないか確認に行きます。
  4. 注入 (IDE): 新しいタスクが存在した場合、poller.py が指示を取得(JSON保存)し、すぐに cdp_injector.py を呼び出してローカルポート 127.0.0.1:8123WebSocket)へテキストを送信します。
  5. 受動トリガー: Antigravityの裏口([[workbench.js]])がこのWebSocketを受信すると、自動的にIDE内のチャット入力欄にテキストをペーストし、Enterキーを押下する(実行ボタンを押す)イベントを発火させます。

(b) 計画立案から自律実行(Autonomous)までの仕組み

  1. 初期プロンプト受信: 前述の仕組みにより、AntigravityAIエージェント)のチャットUI上にユーザーの原文が入力されます。
  2. Agentic Mode(プランニング):
    • 賢いAIモデルを使用している場合、エージェントは即座にコードを書きません。まず自身の内部ツール(ターミナルやファイル検索等)を駆使して現在のワークスペースの状況を調査し、Implementation Plan(実装計画) を作成します。
  3. 自律実行ループ:
    • 計画が確定すると、エージェントは順番に「ファイルの編集」「ターミナルでのテスト実行」「エラーがあればデバッグ」というループを自律的に繰り返します。人間とは完全に独立してローカルPCのCPU・メモリ等のリソースを使い続けます。

3. フィードバックと実況(Discordへの返却)

実行中の「今の状態」や「終わった報告」を、チャンネルを増やさずに AI指示 チャンネル内で完結・可視化させる仕組みです。

(a) AIエージェント稼働中の実況(ステータス更新)

チャンネルを無駄に増やさず、ユーザーの投稿に対する**「スレッド(Thread)」または「Botからの返信(Reply)メッセージの編集」**を利用して進捗を表現します。

  1. 起点作成: Discord BotがVPSに送信成功した直後、ユーザーの指示メッセージに対して Bot が「⏳ 作業キューに追加しました…」という返信(Reply)を送ります。
  2. 進捗のフック: ローカルPC側でAntigravityが動いている間、別の監視スクリプト(例:run_logger.py)が「計画中」「コーディング中」「テスト中」などの大まかな状況をVPS Hub (POST /status) に定期送信します。
  3. Discord表示の更新: Discord BotがVPSからそのステータスを受け取ると、先ほどの Botの返信メッセージ(Reply)を上書き編集(Edit)し、「🔄 計画中…」→「⚙️ コーディング中…」へとリアルタイムに表示を切り替えます。

(b) 完了後の最終報告プロセス

  1. 成果物のまとめ: Antigravityが全てのタスクを完了すると、作業結果をまとめた walkthrough.md 等のアーティファクト(報告書)が生成されます。
  2. Discordへの還元: ローカルの result_aggregator.py が完了を検知すると、VPS経由で Discord Botに「完了フラグ」と「サマリー文」を送信します。
  3. 報告の通知: Discord Botは、元々の指示メッセージ(または作成したスレッド)内で、以下のような「完了報告Embedパネル」付きのメンションを投稿します。
    • 内容例: 「✅ タスクが完了しました。\n・修正ファイル: 3件\n・詳細: Obsidian〇〇.md に結果を保存しました。」
  4. データの永続化: 同時に vault_importer.py が作動し、生成された詳細な報告書は確実にObsidianSecond Brain)へ格納されます(人間はいつでもローカルのObsidianから詳細を確認可能)。

この設計により、「AI指示」という1つのチャンネルだけで、直感的な入力(生テキスト)状況のリアルタイム実況(メッセージ内上書き)きれいな最終報告(返信+Obsidian同期) のサイクルの完全自動化が実現します。