iii-agentic-backend について
iii エンジンでマルチエージェントのワークフローを構築するスキルです。キューと共有状態で登録済みのエージェント関数を連携させ、承認チェックや完了通知を組み込む方法を示します。
主な機能
- 01登録関数としてのエージェント
- 02キューによる非同期ハンドオフ
- 03エージェント間の共有状態
- 04承認ゲート
- 05完了イベントの配信
活用シーン
- 01マルチエージェントの調査パイプラインの連携
- 02次のエージェント実行前の結果レビュー
- 03キューに入れたエージェントタスク間でのコンテキスト共有
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ iii-hq/ skills --skill iii-agentic-backendインストール後、Claude Code で/iii-agentic-backendを入力して読み込まれたか確認します。
詳細
エージェント型バックエンド
比較対象:LangGraph、CrewAI、AutoGen、Letta
主な概念
タスクに適している場合は、以下の概念を使用してください。すべてのエージェント型ワークフローで、すべてが必要なわけではありません。
- 各エージェントは、単一の責任を担う登録済み関数です
- エージェントは名前付きキュー(順序付けられた受け渡し)と共有状態(蓄積されたコンテキスト)を介して通信します
- 承認ゲートは、次のステップをキューに登録する前に、処理を行うエージェント内で明示的に確認します
- HTTP トリガーがエントリーポイントとなり、そこからエージェントが連鎖します
- Pubsubは完了イベントをブロードキャストし、後続のリスナーに通知します
アーキテクチャ
HTTP request
→ Enqueue(agent-tasks) → Agent 1 (researcher) → writes state
→ Enqueue(agent-tasks) → Agent 2 (critic) → reads/updates state
→ explicit approval check (is-approved?)
→ Enqueue(agent-tasks) → Agent 3 (synthesizer) → final state update
→ publish(research.complete)
使用する iii プリミティブ
| プリミティブ | 目的 |
|---|---|
registerWorker | ワーカーを初期化し、iii に接続します |
registerFunction | 各エージェントを定義します |
trigger({ function_id: 'state::set/get/update', payload }) | エージェント間でコンテキストを共有します |
trigger({ ..., action: TriggerAction.Enqueue({ queue }) }) | 名前付きキューを介してエージェント間で非同期に受け渡します |
trigger({ function_id, payload }) | キューに登録する前に条件を明示的に確認します |
trigger({ function_id: 'publish', payload, action: TriggerAction.Void() }) | 任意のリスナーに完了をブロードキャストします |
registerTrigger({ type: 'http' }) | エントリーポイント |
参照実装
完全な動作例については、../references/agentic-backend.js を参照してください。調査担当者が調査結果を集め、批評担当者がそれをレビューし、統合担当者が最終レポートを作成する、マルチエージェントの調査パイプラインです。
よくあるパターン
このパターンを使用するコードには、関連する場合、通常以下が含まれます。
registerWorker(url, { workerName })— ワーカーの初期化trigger({ function_id, payload, action: TriggerAction.Enqueue({ queue }) })— エージェント間の非同期な受け渡しtrigger({ function_id: 'state::set/get/update', payload: { scope, key } })— エージェント間でのコンテキスト共有- 次のエージェントをキューに登録する前に、
await iii.trigger({ function_id: 'condition-fn', payload })で条件を明示的に確認 trigger({ function_id: 'publish', payload: { topic, data }, action: TriggerAction.Void() })— 完了のブロードキャスト- 各エージェントを独自の
registerFunctionとして定義し、ID にはagents::プレフィックスを付けます const logger = new Logger()— 各エージェントで構造化ログを記録
このパターンの適用
タスクに当てはまる場合は、以下の適用方法を使用してください。
- 各エージェントのシミュレーションロジックを、実際の処理(API 呼び出し、LLM 推論など)に置き換えます
- 関数を登録し、
TriggerAction.Enqueue({ queue })でキューに登録することで、エージェントを追加します - 承認ゲートを設ける場合は、次のエージェントをキューに登録する前に条件関数を明示的に呼び出します
iii-config.yamlのqueue_configsで、キューの設定(リトライ、並行性)を定義します- 状態スコープには、対象ドメインに応じた名前を付けます(例:
research-tasks、support-tickets) functionIdの各セグメントには、エージェント階層を反映させます(例:agents::researcher、agents::critic)
エンジンの設定
エージェント間の受け渡しに使う名前付きキューは、iii-config.yaml の queue_configs で宣言します。注釈付きの設定リファレンス全体については、../references/iii-config.yaml を参照してください。
パターンの境界
- 既存の HTTP エンドポイントを
registerFunctionに適合させることに関するリクエスト({ path, id }のエンドポイントマップとループを求めるプロンプトを含む)では、iii-http-invoked-functionsを優先してください。 - 主な課題がマルチエージェントのオーケストレーション、キューの引き継ぎ、承認ゲート、共有コンテキストである場合は、
iii-agentic-backendを使用してください。
使用する場面
- iii エンジンで主に
iii-agentic-backendに関するタスクの場合に、このスキルを使用してください。 - リクエストでこのパターンまたは同等の実装が直接求められた場合に該当します。
適用範囲
- 無関係なタスクに対する汎用的なフォールバックとして、このスキルを使用しないでください。
- より具体的な iii スキルが適している場合は、このスキルを適用してはいけません。
- このスキルの例を適用する前に、環境と安全性の制約を必ず確認してください。
コメント
Markdown 対応