Agent Manager協業ガイド

概要

Antigravity IDE内蔵のAgent Managerを活用し、プロジェクト単位でワークスペースを作成し、親Antigravity・Agent Managerワークスペース・Claude Code拡張の3者が協業する仕組み。


アーキテクチャ

Discord (指示)
  │
  ▼
VPS Bot (orchestrator.py)
  │  /project, /cc, /task
  ▼
SSHトンネル (port 8100)
  │
  ▼
Local Poller (local_poller.py)
  │
  ├── project アクション
  │   ├── フォルダ作成 (PJ-[名前]-[YYMMDD])
  │   ├── Project_Master.md / Project_Log.md 生成
  │   ├── AGENTS.md テンプレート配置
  │   ├── IDE起動 (subprocess.Popen)
  │   └── CDP注入 (文脈引継ぎメッセージ)
  │
  ├── claude_code アクション
  │   ├── Claude Code iframe/webview 検出
  │   └── CDP注入 (指示テキスト)
  │
  └── task アクション (既存)
      └── 任意ワークスペースにタスク注入

コマンド一覧

コマンド用途
/projectプロジェクト作成 + ワークスペース開設/project AIマルチエージェント組織構築 "設計開始"
/ccClaude Code拡張に直接指示/cc "テストコードを書いて"
/task既存ワークスペースにタスク割当/task A-space "ファイル整理して"

プロジェクト作成フロー

1. フォルダ構造(Vault命名規則準拠)

06_Projects/01_Active/PJ-[プロジェクト名]-[YYMMDD]/
├── Project_Master.md   ← 目的・ゴール・指示内容
├── Project_Log.md      ← 時系列開発ログ
├── References/         ← 資料
└── AGENTS.md           ← エージェント指示テンプレート

2. 文脈引継ぎ

親Antigravityが作成した Project_Master.md に背景・実装済み機能・Next Actionを記載。新ワークスペースの初回メッセージで「Project_Master.md を読んで作業開始して」と注入。

3. タスク完了報告

各ワークスペースのエージェントは作業完了時に以下のJSONを書き出す:

c:\ai_work\tools\bots\new_bot\orchestrator_sys\reports\{task_id}.json

CDP注入の技術詳細

テキスト注入

# textarea にフォーカス
js = "(() => { const t = document.querySelector('textarea'); if(t){t.focus(); return true;} return false; })()"
await ws.send(json.dumps({"id": 1, "method": "Runtime.evaluate", "params": {"expression": js}}))
# テキスト入力
await ws.send(json.dumps({"id": 2, "method": "Input.insertText", "params": {"text": msg}}))

Enterキー送信(重要)

IMPORTANT

keyDown ではなく rawKeyDown を使用すること。keyDown は新規IDEウィンドウで動作しない。

for etype in ["rawKeyDown", "keyUp"]:
    await ws.send(json.dumps({"id": 3, "method": "Input.dispatchKeyEvent", "params": {
        "type": etype,
        "windowsVirtualKeyCode": 13,
        "nativeVirtualKeyCode": 13,
        "key": "Enter",
        "code": "Enter",
        "text": "\r"
    }}))

Claude Code検出

Claude Code拡張は anthropic.claude-code を含むURLのwebviewとして検出:

for p in pages:
    if "anthropic.claude-code" in p.get("url", "").lower():
        cc_target = p
        break

関連ファイル

ファイル役割
local_poller.pyローカルポーラー(project/claude_code/taskアクション)
orchestrator.pyVPS側スラッシュコマンド定義
project_template/AGENTS.mdプロジェクトテンプレート
Discord-IDE連携パイプライン手順書.mdパイプライン全体の手順書

最終更新: 2026-03-07