IGNITEは、AI Coding Agent CLIを活用した階層型マルチエージェントシステムです。Leader、5つの専門Sub-Leaders、および可変数のIGNITIANSワーカーが協調して、複雑なタスクを並列実行します。
graph TD
User[User] --> Leader[Leader<br/>伊羽ユイ]
Leader --> Strategist[Strategist<br/>義賀リオ]
Leader --> Architect[Architect<br/>祢音ナナ]
Leader --> Evaluator[Evaluator<br/>衣結ノア]
Leader --> Coordinator[Coordinator<br/>通瀬アイナ]
Leader --> Innovator[Innovator<br/>恵那ツムギ]
Coordinator --> IG1[IGNITIAN 1]
Coordinator --> IG2[IGNITIAN 2]
Coordinator --> IG3[IGNITIAN 3]
Coordinator --> IGN[IGNITIAN N...]
style Leader fill:#ff6b6b,color:#fff
style Strategist fill:#4ecdc4,color:#fff
style Architect fill:#45b7d1,color:#fff
style Evaluator fill:#96ceb4,color:#fff
style Coordinator fill:#ffeaa7,color:#333
style Innovator fill:#dfe6e9,color:#333
- 責務: 全体統率、意思決定、チーム鼓舞
- ペイン: 0
- 特性: 明るく前向き、リーダーシップ
- 責務: 戦略立案、タスク分解、優先度付け
- ペイン: 1
- 特性: 冷静で論理的、分析的
- 責務: システム設計、アーキテクチャ判断
- ペイン: 2
- 特性: 構造と調和を重視、美的感覚
- 責務: 品質評価、検証、テスト
- ペイン: 3
- 特性: 着実で几帳面、基準厳守
- 責務: タスク配分、進行管理、リソース調整
- ペイン: 4
- 特性: 柔らかく調整上手、全体最適化
- 責務: 改善提案、最適化、イノベーション
- ペイン: 5
- 特性: 創造的で前向き、改善志向
- 責務: タスク実行、成果物作成
- ペイン: 6以降(動的)
- 特性: 効率的で正確、実行専門
sequenceDiagram
participant U as User
participant L as Leader
participant S as Strategist
participant A as Architect
participant E as Evaluator
participant N as Innovator
participant C as Coordinator
participant I as IGNITIANS
U->>L: user_goal
L->>S: strategy_request
par Strategistが3人のSub-Leadersに並行依頼
S->>A: design_review_request
S->>E: quality_plan_request
S->>N: insight_request
end
A->>S: design_review_response
E->>S: quality_plan_response
N->>S: insight_response
S->>L: strategy_response
S->>C: task_list
C->>I: task_assignment
I->>C: task_completed
C->>E: evaluation_request
C->>L: progress_update
E->>L: evaluation_result
E->>N: improvement_request
N->>L: improvement_completed
L->>U: 最終レポート
| 状態 | 表現 | 説明 |
|---|---|---|
| 未処理 | キューディレクトリにファイルが存在 | 新規メッセージ |
| 配信済み | queue_monitorが検知・通知済み | エージェントが処理中 |
| 処理完了 | ファイル削除済み | エージェントが処理後に削除 |
すべてのエージェント間通信はMIME形式(RFC 2045準拠)のメッセージファイルで行われます。メタデータはMIMEヘッダー、ペイロードはYAML形式のボディに格納されます。
MIME-Version: 1.0
Message-ID: <{epoch}.{pid}.{hash}@ignite.local>
From: {sender}
To: {receiver}
Date: {RFC 2822 date}
X-IGNITE-Type: {message_type}
X-IGNITE-Priority: {high|normal|low}
Content-Type: text/x-yaml; charset=utf-8
Content-Transfer-Encoding: 8bit
{YAML payload}
メッセージの作成・パースには scripts/lib/ignite_mime.py CLIツールを使用します。
| type | from → to | 説明 |
|---|---|---|
user_goal |
user → leader | ユーザー目標 |
strategy_request |
leader → strategist | 戦略立案依頼 |
strategy_response |
strategist → leader | 戦略提案 |
task_list |
strategist → coordinator | タスクリスト |
architecture_request |
leader → architect | 設計判断依頼 |
architecture_response |
architect → leader | 設計提案 |
task_assignment |
coordinator → ignitian | タスク割り当て |
task_completed |
ignitian → coordinator | 完了報告 |
evaluation_request |
coordinator → evaluator | 評価依頼 |
evaluation_result |
evaluator → leader | 評価結果(日次レポートIssueへ自動記録) |
improvement_request |
evaluator → innovator | 改善依頼 |
improvement_suggestion |
innovator → leader | 改善提案 |
progress_update |
coordinator → leader | 進捗報告(日次レポートIssueへ自動記録) |
ignite/
├── scripts/ # 起動・制御スクリプト
│ ├── ignite # 統合CLI(start/plan/status/stop等)
│ ├── schema.sql # SQLiteメモリDBスキーマ
│ ├── lib/ # コアライブラリ
│ │ ├── core.sh # 定数・カラー・出力ヘルパー
│ │ ├── agent.sh # エージェント起動・管理
│ │ ├── session.sh # セッション管理
│ │ ├── commands.sh # コマンドルーター
│ │ ├── cmd_*.sh # 各サブコマンド実装
│ │ ├── dlq_handler.sh # デッドレターキュー処理
│ │ └── retry_handler.sh # リトライ処理
│ └── utils/ # ユーティリティ
│ ├── queue_monitor.sh # メッセージキュー監視デーモン
│ ├── daily_report.sh # 日次レポートIssue管理
│ ├── github_watcher.sh # GitHubイベント監視
│ └── ... # その他GitHub連携スクリプト
│
├── instructions/ # システムプロンプト
│ ├── leader.md
│ ├── strategist.md
│ ├── architect.md
│ ├── evaluator.md
│ ├── coordinator.md
│ ├── innovator.md
│ └── ignitian.md
│
├── config/ # 設定ファイル
│ ├── system.yaml # システム設定(IGNITIANs並列数含む)
│ └── github-watcher.yaml # GitHub Watcher設定
│
├── workspace/ # 実行時ワークスペース(.gitignore)
│ └── .ignite/ # ランタイムデータ
│ ├── queue/ # メッセージキュー(タスク完了レポート含む)
│ ├── context/ # コンテキスト
│ ├── state/ # 状態管理ファイル
│ │ └── report_issues.json # 日次レポートIssue番号キャッシュ
│ ├── memory.db # SQLiteエージェントメモリDB
│ ├── logs/ # ログファイル
│ └── dashboard.md # 進捗ダッシュボード
│
└── docs/ # ドキュメント
├── architecture.md # このファイル
└── protocol.md # プロトコル仕様
各エージェントは CLI プロバイダー(OpenCode / Claude Code / Codex CLI)の per-message モードで起動し、セッション ID で状態管理されます。
エージェントの割り当て:
| エージェント | 役割 | 備考 |
|---|---|---|
| Leader (伊羽ユイ) | 全体統率 | 最初に起動 |
| Strategist (義賀リオ) | 戦略立案 | Sub-Leaders |
| Architect (祢音ナナ) | 設計判断 | Sub-Leaders |
| Evaluator (衣結ノア) | 品質評価 | Sub-Leaders |
| Coordinator (通瀬アイナ) | タスク配分 | Sub-Leaders |
| Innovator (恵那ツムギ) | 改善提案 | Sub-Leaders |
| IGNITIAN-1 ~ N | タスク実行 | 最大32並列 |
各エージェントサーバーは個別のポートで起動し、PID ベースで管理されます。
各ペインでCLI Agentが起動:
claude-code --dangerously-skip-permissionsシステムプロンプトをロード:
/prompt {role}
-
ユーザーがタスクを投入
ignite plan "READMEファイルを作成する" -
Leaderが受信・理解
- メッセージを読み取り
- 目標を分析
- Strategistに戦略立案を依頼
-
Strategistがタスク分解
- 目標を具体的なタスクに分解
- 優先度と依存関係を設定
- Coordinatorにタスクリストを送信
-
Coordinatorがタスク配分
- 利用可能なIGNITIANSを特定
- タスクを均等に配分
- 各IGNITIANにメッセージ送信
-
IGNITIANSが並列実行
- タスクを読み取り
- CLIツールで実行
- 完了レポートを作成
-
Evaluatorが評価
- 成果物を検証
- 品質チェック
- 合格/不合格判定
-
Innovatorが改善
- 軽微な問題を修正
- 改善提案を作成
-
Leaderが最終判断
- 全体結果を統合
- ユーザーに報告
タスクの性質に応じてIGNITIANS数を調整:
- light: 8並列 - ファイル操作など軽量タスク
- normal: 3並列 - 通常の実装タスク(デフォルト)
- heavy: 1並列 - 複雑な分析タスク
設定ファイル: config/system.yaml の defaults.worker_count
Coordinatorが以下を考慮してタスク配分:
- タスクの推定時間
- IGNITIANの現在の負荷
- タスクの依存関係
instructions/{role}.mdを作成scripts/lib/core.shのSUB_LEADERS配列に追加scripts/lib/cmd_start.shに起動処理追加
- YAMLスキーマを定義
- 送信元エージェントの実装
- 受信先エージェントの処理実装
IGNITEは YAMLファイルキュー と SQLiteデータベース の2層で情報を管理します。それぞれ役割が明確に分かれており、相互に補完する設計です。
graph LR
subgraph YAML["YAMLファイルキュー"]
direction TB
Y1["非同期メッセージング"]
Y2["エージェント間メッセージング"]
end
subgraph SQLite["SQLite memory.db"]
direction TB
S1["永続データ・状態管理"]
S2["セッション横断メモリ・分析"]
end
Agent((エージェント)) --> YAML
Agent --> SQLite
YAML -. "タスク状態の同期" .-> SQLite
style YAML fill:#4ecdc4,color:#fff
style SQLite fill:#45b7d1,color:#fff
| 観点 | YAMLファイルキュー | SQLite |
|---|---|---|
| 役割 | 非同期通信(「今何をすべきか」) | 永続記録(「何が起きたか・今どうか」) |
| 寿命 | 短命(配信完了で役目終了) | 永続(セッション横断で保持) |
| データ型 | メッセージ(命令・応答) | 構造化レコード(履歴・状態) |
| アクセス | ファイル mv/read/write | SQL CRUD |
| 並行制御 | ファイルシステムの原子性 | WALモード + busy_timeout |
| 障害対応 | リトライ + DLQ | 冪等スキーマ + マイグレーション |
| 主な使用者 | queue_monitor.sh |
各エージェント(instructions内で直接実行) |
エージェント間の非同期メッセージングを担います。queue_monitor.sh がポーリング監視(queue.poll_interval、デフォルト10秒)し、2フェーズ並列配信でエージェントに配信します。
2フェーズ配信アーキテクチャ:
- Phase 1(収集): 全キューを走査し、未処理の
.mimeファイルをprocessed/に移動(ファイル操作のみ、高速・直列) - Phase 2(配信): エージェント単位でバックグラウンドジョブを起動し並列配信(最大
queue.parallel_max、デフォルト9)。同一エージェント内のメッセージは順序保証のため直列配信
キューディレクトリ:
workspace/.ignite/queue/
├── leader/ # Leaderエージェント用
│ ├── *.mime # 未処理メッセージ
│ └── processed/ # 処理中・完了メッセージ
├── strategist/ # Strategist用
├── architect/ # Architect用
├── evaluator/ # Evaluator用
├── coordinator/ # Coordinator用
├── innovator/ # Innovator用
├── ignitian_1/ # IGNITIAN-1用(個別ディレクトリ)
├── ignitian_2/ # IGNITIAN-2用
├── ignitian_{n}/ # IGNITIAN-N用(動的)
└── dead_letter/ # リトライ失敗後のメッセージ
メッセージライフサイクル:
stateDiagram-v2
[*] --> 未処理: queue/*.mime 作成
未処理 --> processing: mv to processed/
processing --> delivered: 配信成功
processing --> retrying: タイムアウト検知
retrying --> processing: 再配信試行
retrying --> DLQ: リトライ上限超過
DLQ --> escalation: Leaderへ通知
delivered --> [*]
note right of processing: at-least-once 配信保証
note right of retrying: Exponential Backoff with Full Jitter
関連スクリプト:
scripts/utils/queue_monitor.sh— キュー監視デーモンscripts/lib/retry_handler.sh— Exponential Backoff with Full Jitterリトライscripts/lib/dlq_handler.sh— Dead Letter Queue処理・エスカレーション
セッション横断のメモリ永続化・タスク状態追跡・ダッシュボード生成を担います。
テーブル構成(v2スキーマ):
| テーブル | 用途 |
|---|---|
memories |
全エージェントの学習・決定・観察・エラーログ |
tasks |
タスク進行状態の追跡(repository, issue_number含む) |
agent_states |
エージェント再起動時の状態復元 |
strategist_state |
戦略立案の状態管理(JSONフィールド使用) |
insight_log |
Memory Insights処理履歴 |
初期化シーケンス(cmd_start.sh):
schema.sqlでテーブル・インデックス作成(IF NOT EXISTSで冪等)PRAGMA journal_mode=WAL; PRAGMA busy_timeout=5000;で並行アクセス対応schema_migrate.shでスキーマバージョンアップ(PRAGMA user_version管理)
関連スクリプト:
scripts/schema.sql— スキーマ定義scripts/schema_migrate.sh— マイグレーション(v1→v2)scripts/lib/cmd_start.sh— DB初期化
tasksは唯一、YAMLとSQLiteの両方で管理されるデータです。ただし用途は明確に異なります。
sequenceDiagram
participant C as Coordinator
participant YQ as MIME Queue
participant DB as SQLite tasks
participant IG as IGNITIAN
C->>YQ: task_assignment_*.mime 作成(指示の配信)
C->>DB: INSERT INTO tasks status='in_progress'(状態の記録)
YQ->>IG: queue_monitor経由で配信
IG->>YQ: progress_update_*.mime 作成(完了の通知)
IG->>DB: UPDATE tasks SET status='completed'(履歴の永続化)
Note over YQ: 一時的:配信完了で役目終了
Note over DB: 永続的:ダッシュボード・分析に使用
- MIME: 「このタスクをやれ」という指示の配信手段(一時的)
- SQLite: 「このタスクは今どうなっている」という状態の記録(永続的、ダッシュボード・分析に使用)
作業進捗をリポジトリ別の GitHub Issues で自動追跡するシステムです。
scripts/utils/daily_report.sh が日次レポートIssue のライフサイクルを管理します。作業対象リポジトリごとに、日付単位でIssueを作成・更新・クローズします。
| サブコマンド | 説明 |
|---|---|
ensure |
当日のIssueがなければ作成、あれば番号を返す |
create |
日次レポートIssueを新規作成 |
comment |
Issueにコメントを追加 |
update |
Issue本文を更新 |
close |
Issueをclose |
close-all |
全リポジトリの当日Issueを一括close |
- タスク受信時:
queue_monitor.shがgithub_task検知時に日次レポートIssueへ "Task Started" コメントを自動記録 - 進捗報告時:
progress_updateメッセージ受信時に進捗内容を日次レポートIssueへ記録 - 評価完了時:
evaluation_resultメッセージ受信時に評価結果を日次レポートIssueへ記録 - セッション終了時:
ignite stopで当日の全日次レポートIssueを自動close
workspace/.ignite/state/report_issues.json にリポジトリ×日付→Issue番号のキャッシュを保持し、重複作成を防止します(アトミック書き込み対応)。
- 設定可能なポーリング間隔(
queue.poll_interval、デフォルト10秒) - 2フェーズ並列配信: 収集(直列・高速)→ 配信(エージェント単位で並列)
- 最大並列数は
queue.parallel_max(デフォルト9)で制御 - 同一エージェントへの複数メッセージは順序保証のため直列配信
- ファイルシステムベースのシンプルな実装
- 依存関係のないタスクは完全並列
- エージェント間のメッセージ配信を並列化(直列配信比で最大 N 倍高速化)
- IGNITIANSのアイドル時間を最小化
- 動的な負荷分散
- CLIエージェントはパーミッション自動承認モードで起動
- ローカルPCの全権限を持つ
- 信頼できるタスクのみを実行
- YAMLパーサーの安全性
- 不正なメッセージの処理
- エラーハンドリング
workspace/.ignite/dashboard.md で全体進捗を可視化
各エージェントのログ: workspace/.ignite/logs/{role}.log
ignite statusignite attach- エージェントサーバーの状態を確認
- ログファイルをチェック
- メッセージキューを確認
- 手動でメッセージを送信してテスト
- ダッシュボードで状態確認
- 依存関係のブロックをチェック
- IGNITIANSの状態を確認
- opencode がインストールされているか確認
- ポート競合をチェック
- ログファイルでエラーを確認