mcpField
I
iii-agentic-backend

iii-agentic-backend

github.com/iii-hqエージェントワークフロー219 回インストール
リポジトリ

iii-agentic-backend について

iii エンジンでマルチエージェントのワークフローを構築するスキルです。キューと共有状態で登録済みのエージェント関数を連携させ、承認チェックや完了通知を組み込む方法を示します。

主な機能

  1. 01登録関数としてのエージェント
  2. 02キューによる非同期ハンドオフ
  3. 03エージェント間の共有状態
  4. 04承認ゲート
  5. 05完了イベントの配信

活用シーン

  1. 01マルチエージェントの調査パイプラインの連携
  2. 02次のエージェント実行前の結果レビュー
  3. 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 スキルが適している場合は、このスキルを適用してはいけません。
  • このスキルの例を適用する前に、環境と安全性の制約を必ず確認してください。

コメント