karaage0703/xs-multi-agent
異なるproviderのAI(Codex/Claude/Grok/Cursor/Antigravity等)から独立意見を集め、共通論点で相互検討して統合する。最初に利用可能エージェントを検出する。「みんなで考えて」「マルチエージェントで分析して」「複数のAIでレビューして」と言われたら使う。
npx skills add https://github.com/karaage0703/ai-assistant-workspace --skill xs-multi-agent
異なるAI providerから独立意見を得て、共通論点で考えた結果を統合する。
同じproviderの子エージェントを増やすだけの並列処理とは区別する。
重要: このスキルは毎回、最初に利用可能エージェントを検出する。CLIの入れ替わり、ログイン状態、クォータ、環境差を固定表で決め打ちしない。
bash [SKILL_DIR]/scripts/check_agents.sh
このコマンドは、各エージェントに軽いプロンプトを投げ、skills/xs-multi-agent/SKILL.md を読めるかまで確認する。成功判定には固定トークン CHECK_AGENTS_OK を使い、解釈差のある自然言語回答を判定に使わない。各サービスのクォータを少量使う。
軽量にコマンド存在とバージョンだけ見たい時:
bash [SKILL_DIR]/scripts/check_agents.sh --no-smoke
このコマンドは $STATE_DIR/multi-agent/agents.json を作成・更新し、生成したパスを出力する。
STATE_DIR は STATE_DIR="${STATE_DIR:-${WORKSPACE_PATH:-$HOME}/.xangi}" として扱う。WORKSPACE_PATH が未設定なら $HOME/.xangi/multi-agent/agents.json に保存される。設定ファイルはランタイム状態なので git 管理しない。
available: true: コマンドがPATH上にあり、最低限のバージョン取得に成功ready: true: smoke 実行時に短い依頼が成功ready: false: smoke 実行時にログイン切れ、usage limit、実行失敗を検出ready: null: --no-smoke 実行時など、実依頼の疎通は未確認recommended: true: 通常の依頼先候補provider_family: OpenAI / Anthropic / xAI / Google等の独立性を判定する単位unknownとしてpanel票に数えないscope: current_turn: 現在のセッション内だけ有効volatile: true: セッション、チャンネル、モデル、プロンプトで実体が変わるready_agents: 動作確認に成功した外部エージェントusable_agents: ready=true かつ recommended=true の標準外部依頼先固定表ではなく、scripts/check_agents.sh の検出結果を使う。現在の検出対象:
| ID | 位置づけ | 標準扱い |
|----|----------|----------|
| self | 現在のAIセッション。調整役・統合役 | 候補配列には入れない |
| codex | 設計判断、デバッグ、深い推論、コードレビュー | 推奨 |
| claude | 広い推論、文章化、レビュー | 推奨(クォータ注意) |
| grok | 別視点の設計・レビュー、実装案 | 推奨 |
| cursor | codebase Q&A、plan/ask modeレビュー | 推奨 |
| antigravity | Antigravity CLI | 推奨(smoke pass時のみ) |
追加・削除が必要になったら、scripts/check_agents.sh と scripts/run_agent.sh の両方を更新する。
bash [SKILL_DIR]/scripts/check_agents.sh を実行agents.json を読むusable_agents を外部依頼先の基本候補にするready=false はそのターンでは使わないself は現在ターンの調整役として扱い、外部依頼先リストには混ぜないready=true は短いsmoke成功だけを意味する。今回必要なネットワーク、workspace読取、filesystem watchまでは保証しない例:
以下はLinux / WSLの例。setsid がないmacOSではlaunchdなどservice managerを使う。
CONFIG_PATH="$(bash skills/xs-multi-agent/scripts/check_agents.sh)"
cat "$CONFIG_PATH"
CLIごとに引用符、改行、長文引数で事故りやすい。依頼内容は /tmp にファイル化し、依頼に必要な最小ディレクトリを明示して渡す。
cat > /tmp/multi-agent-prompt.txt <<'EOF'
<依頼内容>
EOF
短時間の依頼は補助スクリプトで実行する。
bash skills/xs-multi-agent/scripts/run_agent.sh codex /tmp/multi-agent-prompt.txt "$PWD"
bash skills/xs-multi-agent/scripts/run_agent.sh grok /tmp/multi-agent-prompt.txt "$PWD"
bash skills/xs-multi-agent/scripts/run_agent.sh cursor /tmp/multi-agent-prompt.txt "$PWD"
対象workspaceは必須。調整役のworkspaceを既定で丸ごと渡さない。run_agent.sh は空回答、途中終了、permission blocker、filesystem watch失敗を非0終了にする。一定量の根拠が必要なら MULTI_AGENT_MIN_OUTPUT_BYTES=500 のように最小出力量を指定する。
「みんなで調べて考えて」の既定目的は、単なる作業分散ではなく異なるproviderの見方を同じ判断へ反映すること。
provider_family 2系統以上が共通のsynthesisへ有効回答すること調査・情報収集が必要なとき:
コードや文章のレビュー:
レビュー依頼時は、各エージェントに「バグ・リスク・回帰・不足テストを優先。好みの指摘は後回し」と明示する。
アイデア出し・深い分析:
各成果物をファイルへ保存し、TSVへ状態を記録する。
agent_id phase status role evidence_path
codex synthesis success 統合判断 /tmp/synthesis-codex.txt
claude synthesis success 統合判断 /tmp/synthesis-claude.txt
bash [SKILL_DIR]/scripts/validate_panel.sh \
--phase synthesis --min-success 2 --min-families 2 \
"$CONFIG_PATH" /tmp/multi-agent-results.tsv
panelはagents.jsonでready=trueの外部agentだけを数え、同じevidence fileを相対パス・symlink等で複数agentの成果として再利用する行を拒否する。これは実行manifestの整合性ゲートであり、providerの暗号学的な身元証明ではない。
検証失敗時も単独の暫定分析は返してよいが、「みんなの結論」「合意」とは表現しない。成功・失敗したproviderと不足視点をそのまま報告する。
MULTI_AGENT_ENV_FILE から ANTHROPIC_API_KEY / CLAUDE_CODE_MAX_BUDGET_USD を限定して読み込む--trustを使うので、信頼できる対象workspaceだけを渡すready=trueの場合だけGoogle provider票として扱う。既定はgemini-3.1-pro-lowで、MULTI_AGENT_ANTIGRAVITY_MODELにより別のGeminiモデルを指定できる。空出力・quota 429・認証エラーを成功扱いしないself だけで進める。その場合は「検出したが外部エージェントは使えなかった」と明示するcheck_agents.sh / run_agent.shを変更した場合、PATH上でavailable=trueの全agent IDを実CLI smokeし、成功・失敗理由をagent別に確認したvalidate_panel.shで目的phaseの異なるprovider 2系統以上を確認したAIアシスタントのセッションは turn-based。外部AIプロセスを起動したまま turn を閉じると、結果回収できないことがある。所要時間で分岐する。
scripts/run_agent.sh をforegroundで実行し、同じ turn 内で結果を受け取る並列に大規模分析させる場合は、turn を跨ぐ前提で組む。
setsid bash -lc で親process groupから分離し、PID・ログ・終了コードを保存するps で別SID/PGIDと生存を確認するxangi-cmd trigger を呼ぶ。定刻確認なら schedule_add を使う例:
AGENT_STATE_DIR="$(mktemp -d)"
setsid bash -lc '
state_dir="$1"
agent="$2"
prompt_file="$3"
workspace="$4"
echo $$ > "$state_dir/pid"
bash skills/xs-multi-agent/scripts/run_agent.sh "$agent" "$prompt_file" "$workspace" > "$state_dir/output.log" 2>&1
rc=$?
echo "$rc" > "$state_dir/exit"
# xangiでは終了状態保存後に xangi-cmd trigger を呼ぶ
exit "$rc"
' bash "$AGENT_STATE_DIR" codex /tmp/multi-agent-prompt.txt "$PWD" >/dev/null 2>&1 &
sleep 2
ps -o pid,ppid,sid,pgid,stat,etime,cmd -p "$(cat "$AGENT_STATE_DIR/pid")"
echo "State: $AGENT_STATE_DIR"
「結果が来たら統合します」と書くなら、schedule / trigger / ユーザーへの明示的なハンドオフのどれかを必ず作る。
process poll / process log コマンドを書くself を外部エージェントとして保存し、次回以降の依頼先にするTake karaage0703/xs-multi-agent from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.