Discord → Antigravity IDE 連携パイプライン 手順書
tags: discord ide cdp pipeline setup vps
概要
DiscordのAI指示チャンネルに投稿したテキストを、VPS経由でAntigravity IDE(AIエージェント)のチャット入力欄に送信・実行させるパイプライン。
Discord「AI指示」チャンネル
→ Antipigeon Bot(VPS上で24時間稼働)
→ VPS内キューに蓄積
→ SSHトンネル経由でローカルPC
→ Local Poller(キュー監視 + IDEウォッチドッグ)
→ CDP Input.insertText
→ Antigravity IDE チャット入力欄に自動入力・実行
システム構成
VPS側(24時間常時稼働)
| コンポーネント | 場所 | 役割 |
|---|---|---|
| Discord Bot (Antipigeon) | /opt/new_bot/bot.py (VPS) | AI指示チャンネルを監視・キューに登録 |
| Listener Cog | /opt/new_bot/cogs/listener.py (VPS) | メッセージ受信→キュー登録 |
| Queue API | 0.0.0.0:8100 (VPS) | aiohttp APIサーバー(Bot内蔵) |
| systemd Service | /etc/systemd/system/discord-bot.service | 自動起動・クラッシュ復帰 |
ローカルPC側
| コンポーネント | 場所 | 役割 |
|---|---|---|
| Local Poller | C:\ai_work\new_bot\local_poller.py | VPSキューのポーリング + IDE注入 + ウォッチドッグ |
| IDE Client | C:\ai_work\new_bot\utils\ide_client.py | CDP Input.insertTextでIDEにテキスト注入 |
| Antigravity IDE | C:\Users\umecc\AppData\Local\Programs\[[Antigravity]]\[[Antigravity]].exe | AIエージェント本体 |
| 起動スクリプト | C:\ai_work\new_bot\start_pipeline.ps1 | IDE + SSHトンネル + Poller を一括起動 |
| 環境変数 | C:\ai_work\new_bot\.env | DISCORD_BOT_TOKEN など |
| VPSデプロイ用 | C:\ai_work\new_bot\vps_deploy\ | VPSへ転送するファイル一式 |
VPS情報
| 項目 | 値 |
|---|---|
| IP | 162.43.15.17 |
| OS | Ubuntu 25.04 (Python 3.13) |
| サービス名 | discord-bot.service |
| APIポート | 8100(SSHトンネル経由でアクセス) |
起動手順
① 一括起動(推奨)
cd C:\ai_work\new_bot
.\start_pipeline.ps1スクリプトが以下を自動実行:
- Antigravity IDE を CDPモード(port 9222)で起動(未起動の場合)
- VPSへのSSHトンネル(port 8100)を確立
- Local Poller を起動(キュー監視 + IDEウォッチドッグ開始)
② VPS側の管理コマンド
# ステータス確認
ssh root@162.43.15.17 "systemctl status discord-bot"
# ログ確認
ssh root@162.43.15.17 "journalctl -u discord-bot -n 50 --no-pager"
# 再起動
ssh root@162.43.15.17 "systemctl restart discord-bot"
# VPSへのコード再デプロイ
scp c:\ai_work\new_bot\vps_deploy\bot.py root@162.43.15.17:/opt/new_bot/bot.py
scp c:\ai_work\new_bot\vps_deploy\cogs\listener.py root@162.43.15.17:/opt/new_bot/cogs/listener.py
ssh root@162.43.15.17 "systemctl restart discord-bot"動作モード
| PCの状態 | Discordで指示を送った場合 |
|---|---|
| PCオン + パイプライン実行中 + IDE起動中 | ✅ 即座にIDEに注入・処理 |
| PCオン + パイプライン実行中 + IDE閉じてる | ⏸️ ウォッチドッグがIDEを自動再起動→処理 |
| PCオン + パイプライン未起動 | 📦 VPSキューに蓄積→パイプライン起動後に一括処理 |
| PCオフ | 📦 VPSキューに蓄積→PC起動後に一括処理 |
IMPORTANT
Botは24時間オンライン。PCの状態に関わらず、Discordからの指示は常に受け付けられます。
使い方
- Discord の 「AI指示」チャンネル にテキストを投稿
- Bot が 👀 リアクションを付ける(受信確認)+ キューID発行
- ローカルPollerがキューから取得 → IDEにCDP注入・Enter送信
- 完了後 → ✅ リアクション + 結果がDiscordに返信
技術詳細
CDP注入方式:Input.insertText(2026-02-25更新)
旧方式の Runtime.evaluate + execCommand(JS DOM操作)はフレームワーク内部のstateと同期しないため不安定だった。
現行方式はCDPネイティブの Input.insertText + Input.dispatchKeyEvent を使用:
1. Runtime.evaluate でチャット入力欄(div[role="textbox"])をfocus
2. Input.insertText でテキスト直接挿入(CDP層で処理、DOM操作なし)
3. Input.dispatchKeyEvent で Enter キー送信
NOTE
Input.insertTextはIME入力やペーストと同等の信頼性を持つCDP公式APIであり、Webフレームワークのstate管理と衝突しない。
IDEウォッチドッグ
local_poller.py に内蔵。5秒ごとのポーリングサイクルで以下を実行:
- CDPでIDEへの接続を試行
- 接続不可 →
tasklistでAntigravityプロセスの生存確認 - プロセス不在 →
Antigravity.exe --remote-debugging-port=9222を自動起動 - 30秒のイニシャライズ待機後、再接続
トラブルシューティング
| エラー | 原因 | 対処 |
|---|---|---|
| HTTP 401 on Local Poller | VPS APIの認証設定不一致 | 現行版では認証なし(SSHトンネルがセキュリティ担保) |
Chat input not found | IDEのチャットパネルが閉じている | チャットパネルを開く |
| Botがオフライン | VPSサービスが停止 | ssh root@162.43.15.17 "systemctl restart discord-bot" |
Could not connect to VPS API | SSHトンネルが切れた | start_pipeline.ps1 を再実行 |
Python 3.13でaudioopエラー | discord.pyの互換性問題 | ./venv/bin/pip install audioop-lts(VPS側で実施済み) |
| CDPでEnterが効かない | keyDown タイプの非互換 | rawKeyDown に変更済み(2026-03-07修正) |
プロジェクト管理コマンド(2026-03-07追加)
/project — プロジェクト用ワークスペース作成
/project project_name:AIマルチエージェント組織構築 instruction:"設計を開始して"
処理フロー:
06_Projects/01_Active/PJ-[名前]-[YYMMDD]/フォルダ自動作成- 標準構成を自動生成(Project_Master.md / Project_Log.md / References / AGENTS.md)
- 新IDEウィンドウを起動 → Agent Managerにワークスペース表示
- CDP経由で「Project_Master.md を読んで作業開始して」と注入・送信
/cc — Claude Code拡張に指示送信
/cc instruction:"テストコードを書いて"
Claude Code拡張のiframe/webviewをCDPで検出し、入力欄に指示を注入・送信。
CDP注入の技術メモ
Enterキー送信
Input.dispatchKeyEvent で rawKeyDown を使用すること(keyDown は新規ウィンドウで動作しない):
for etype in ["rawKeyDown", "keyUp"]:
params = {
"type": etype,
"windowsVirtualKeyCode": 13,
"nativeVirtualKeyCode": 13,
"key": "Enter",
"code": "Enter",
"text": "\r"
}変更履歴
| 日付 | 変更内容 |
|---|---|
| 2026-02-24 | 初版作成。ローカル直結方式(Bot→CDP直接注入) |
| 2026-02-25 | VPSキュー・ポーリング方式に全面改修。Bot をVPS(162.43.15.17)にデプロイ、24時間稼働化。SSHトンネル + aiohttp Queue API。CDP注入を Input.insertText に変更。IDEウォッチドッグ追加。 |
| 2026-03-07 | Agent Manager協業システム追加。/project /cc コマンド実装。プロジェクトテンプレート自動生成。CDPのEnterキー修正(keyDown→rawKeyDown)。VPSデプロイ済み。 |
関連ファイル
- 機密情報管理 — DISCORD_BOT_TOKEN の保管場所
C:\ai_work\tools\bots\new_bot\vps_deploy\— VPS用ソースコードC:\ai_work\tools\bots\new_bot\vps_deploy\cogs\orchestrator.py— オーケストレーター(/project, /cc含む)C:\ai_work\tools\bots\new_bot\local_poller.py— ローカルポーラー(project, claude_code アクション含む)C:\ai_work\workspaces\project_template\AGENTS.md— プロジェクトテンプレート
最終更新: 2026-03-07