
会話ターンの流れ
ステージを選ぶと、その処理内容、設定、書き込む内容が表示されます。
Input
ここで起きること
チャット、Slack、API、MCP クライアントからメッセージが届きます。元のテキストは Conversation memory の新しいステップの最初のエントリになります。まだ task は実行されていないため、このステージでは監査エントリではなくメモリのステップを示します。
説明用のサンプル値
{
"key": "input",
"value": "What is the weather?"
}Parser
ここで起きること
parser はテキストを正規化し、エージェントの辞書で照合して、単語やフレーズを trigger(current_weather) のような意味表現に変換します。モデル呼び出しではなく辞書の照合なので、同じテキストからは常に同じ表現が得られます。
パイプラインの各 task は 1 件のエントリを書き込みます。HMAC 署名付き、追記専用、シーケンス検査付きです。
説明用のサンプル値
{
"words": [
{
"word": "weather",
"expressions": "trigger(current_weather)",
"frequency": 0
}
],
"phrases": [
{
"phrase": "what is the weather",
"expressions": "trigger(current_weather)"
}
]
}{
"id": "0b5e9a0c-6f3d-4b1e-9d57-2c1f8a7e4d10",
"conversationId": "6650f1c2a7b94e0012ab34cd",
"agentId": "support-agent",
"agentVersion": 1,
"userId": "user-4711",
"environment": "production",
"stepIndex": 0,
"taskId": "ai.labs.parser",
"taskType": "expressions",
"taskIndex": 0,
"durationMs": 3,
"input": {
"input": "What is the weather?"
},
"output": {
"expressions": [
"trigger(current_weather)"
]
},
"actions": [],
"cost": 0,
"timestamp": "2026-10-14T09:12:41.208Z",
"hmac": "v4:a3f1c09e5b7d2468a3f1c09e5b7d2468a3f1c09e5b7d2468a3f1c09e5b7d2468",
"agentSignature": "MEUCIQDk3x…9fQ==",
"sequence": 0
}Behavior Rules
ここで起きること
Behavior Rules は、表現と Conversation memory に対する IF-THEN の条件です。一致したルールがアクションを発行します。ルーティングはコードではなく設定なので、同じ入力は毎回同じ経路をたどります。
パイプラインの各 task は 1 件のエントリを書き込みます。HMAC 署名付き、追記専用、シーケンス検査付きです。
説明用のサンプル値
{
"behaviorGroups": [
{
"name": "",
"behaviorRules": [
{
"name": "Ask for City",
"actions": [
"ask_for_city"
],
"conditions": [
{
"type": "inputmatcher",
"configs": {
"expressions": "trigger(current_weather)"
},
"conditions": []
}
]
}
]
}
]
}{
"id": "0b5e9a0c-6f3d-4b1e-9d57-2c1f8a7e4d10",
"conversationId": "6650f1c2a7b94e0012ab34cd",
"agentId": "support-agent",
"agentVersion": 1,
"userId": "user-4711",
"environment": "production",
"stepIndex": 0,
"taskId": "ai.labs.behavior",
"taskType": "behavior_rules",
"taskIndex": 1,
"durationMs": 1,
"input": {
"expressions": [
"trigger(current_weather)"
]
},
"output": {
"behavior_rules:success": [
"Ask for City"
]
},
"actions": [
"ask_for_city"
],
"cost": 0,
"timestamp": "2026-10-14T09:12:41.208Z",
"hmac": "v4:a3f1c09e5b7d2468a3f1c09e5b7d2468a3f1c09e5b7d2468a3f1c09e5b7d2468",
"agentSignature": "MEUCIQDk3x…9fQ==",
"sequence": 1
}Tasks
ここで起きること
task はアクションを待ち受けます。LLM 呼び出し、HTTP 呼び出し、MCP ツール、ナレッジベース検索などです。各 task は、読み取った内容、生成した内容、モデルとツールの詳細を含む署名付き監査エントリを 1 件書き込みます。
パイプラインの各 task は 1 件のエントリを書き込みます。HMAC 署名付き、追記専用、シーケンス検査付きです。
説明用のサンプル値
{
"tasks": [
{
"actions": [
"send_message"
],
"id": "simpleChat",
"type": "anthropic",
"description": "Answers weather questions",
"parameters": {
"apiKey": "${vault:anthropic-key}",
"modelName": "claude-sonnet-5-5",
"systemMessage": "You are a helpful assistant",
"addToOutput": "true"
}
}
]
}{
"id": "0b5e9a0c-6f3d-4b1e-9d57-2c1f8a7e4d10",
"conversationId": "6650f1c2a7b94e0012ab34cd",
"agentId": "support-agent",
"agentVersion": 1,
"userId": "user-4711",
"environment": "production",
"stepIndex": 0,
"taskId": "ai.labs.llm",
"taskType": "langchain",
"taskIndex": 2,
"durationMs": 1840,
"input": {
"input": "What is the weather in Vienna?",
"actions": [
"send_message"
]
},
"output": {
"text": "Vienna: 14 °C, light rain."
},
"llmDetail": {
"modelName": "claude-sonnet-5-5",
"inputTokens": 412,
"outputTokens": 18
},
"toolCalls": {
"name": "get_weather",
"args": {
"city": "Vienna"
},
"result": "14 °C, light rain"
},
"actions": [
"send_message"
],
"cost": 0.0016,
"timestamp": "2026-10-14T09:12:41.208Z",
"hmac": "v4:a3f1c09e5b7d2468a3f1c09e5b7d2468a3f1c09e5b7d2468a3f1c09e5b7d2468",
"agentSignature": "MEUCIQDk3x…9fQ==",
"sequence": 2
}Output
ここで起きること
Output テンプレートは、発行されたアクションを返信(テキストとクイックリプライ)に変換します。返信はメモリに保存され、メッセージの送信元チャネルに返されます。
説明用のサンプル値
{
"outputSet": [
{
"action": "ask_for_city",
"timesOccurred": 0,
"outputs": [
{
"valueAlternatives": [
{
"type": "text",
"text": "Which city would you like to know the weather of?"
}
]
}
],
"quickReplies": []
}
]
}{
"key": "output",
"value": [
"Which city would you like to know the weather of?"
]
}Tool boundary
ここで起きること
ツール呼び出しは、どこから来ても同じ境界を通ります。toolApprovals のパターンに一致する呼び出しは人間が判断するまで一時停止し、その判断は hitl.approval エントリとして ledger に記録されます。認証情報は ${vault:keyName} 参照として vault から取得されます。
パイプラインの各 task は 1 件のエントリを書き込みます。HMAC 署名付き、追記専用、シーケンス検査付きです。
説明用のサンプル値
{
"hitlConfig": {
"toolApprovals": {
"requireApproval": [
"mcp:*",
"delete_*",
"transfer_funds"
],
"exempt": [
"mcp:read_*"
],
"approvalTimeout": "PT30M",
"timeoutPolicy": "AUTO_REJECT",
"pauseReason": "Approval required for {toolNames}"
}
}
}{
"id": "0b5e9a0c-6f3d-4b1e-9d57-2c1f8a7e4d10",
"conversationId": "6650f1c2a7b94e0012ab34cd",
"agentId": "support-agent",
"agentVersion": 1,
"userId": "user-4711",
"environment": "production",
"stepIndex": -1,
"taskId": "hitl.approval",
"taskType": "hitl",
"taskIndex": -1,
"durationMs": 0,
"input": {},
"output": {
"verdict": "APPROVED",
"decidedBy": "slack:U04EXAMPLE",
"automated": false,
"pauseType": "TOOL_CALL",
"toolDecisions": [
{
"callId": "call_01",
"toolName": "transfer_funds",
"verdict": "APPROVED",
"amended": false,
"argsDigest": "sha256:9c1d…e407"
}
]
},
"actions": [],
"cost": 0,
"timestamp": "2026-10-14T09:12:41.208Z",
"hmac": "v4:a3f1c09e5b7d2468a3f1c09e5b7d2468a3f1c09e5b7d2468a3f1c09e5b7d2468",
"agentSignature": "MEUCIQDk3x…9fQ==",
"sequence": 3
}Conversation memory
ここで起きること
Conversation memory は、すべてのステップ(input、expressions、actions、output)と、ステップ、会話、ユーザー(longTerm)のスコープを持つプロパティを保持します。会話の状態(READY、IN_PROGRESS、ENDED、AWAITING_HUMAN、ERROR)も一緒に保存されます。
説明用のサンプル値
{
"conversationState": "READY",
"conversationSteps": [
{
"data": [
{
"key": "input",
"value": "What is the weather?"
},
{
"key": "expressions",
"value": [
"trigger(current_weather)"
]
},
{
"key": "actions",
"value": [
"ask_for_city"
]
},
{
"key": "output",
"value": [
"Which city would you like to know the weather of?"
]
}
]
}
],
"conversationProperties": {
"chosenCity": "Vienna"
}
}コアプラットフォーム
EDDIを完全なAIオーケストレーションプラットフォームにする基本機能。
🖥️ EDDIマネージャー
エージェントをビジュアルに構築、デプロイ、監視するための本番環境対応React UI、11言語i18n、ライブチャットデバッグ、監査ダッシュボード付き。
⚙️ Config-as-Code
エージェントロジックはJSON設定で、コンパイルされたコードではありません。プロンプトエンジニアが即座にイテレーション、再デプロイ不要。
🔌 MCPサーバー(89ツール)
Model Context Protocolによる完全なAIネイティブ制御。Claude Desktop、Cursor、カスタムクライアントがエージェントをプログラム的に管理。
🔐 セキュリティファースト
eval()なし、Vault統合、パストラバーサル保護、OIDC/Keycloak、ユーザーごとのワークスペース、暗号化監査証跡。
✋ ヒューマン・イン・ザ・ループ
ターンの一時停止、ツール呼び出しのゲート、フェーズ承認。承認ワークフローにタイムアウトポリシー、Slackカード、クラッシュ耐性のある状態を備えます。
🚀 パフォーマンス
エンタープライズランタイムによる数百万の軽量スレッド、I/OバウンドLLMワークロード向け。
🤖 マルチエージェント
インテントベースのディスカバリー、マネージド会話、そして投票、共有アーティファクト、人間のメンバー参加に対応したグループコラボレーション。
AI機能
EDDIエージェントをよりスマートに、高速に、コスト効率良くする高度なAI機能。
🧠 メモリ&コンテキスト
永続メモリ、ドリーム統合、ローリングサマリー、トークン対応ウィンドウ。記憶するエージェント。
📚 ナレッジ&RAG
Webサイトをクロールしたり、PDF、Word、Excel、PowerPointファイルをナレッジベースにアップロードしたりでき、スケジュールに沿って更新されます。8の埋め込みプロバイダー、6のベクトルストア。エンタープライズ知識検索をすぐに利用可能。
📈 モデルカスケード
コンフィデンス戦略によるコスト最適化マルチモデルルーティング。このパターンの公開された導入事例では、品質を維持したまま推論コストが31〜58%低下しています(エビデンス)。
🧭 19のLLMプロバイダー
Claude、GPT、Gemini、Grok、DeepSeek、Kimi、Qwen、GLM、Mistral、Llamaなど、クラウドでもローカルでも。モデルカタログで各モデルの得意分野と実行方法を確認できます。
⏰ スケジューリング&ハートビート
Cronトリガー、ハートビートウェイクアップ、ドリームサイクル。自律的に行動するプロアクティブエージェント。
組み込みエージェントツール
EDDIには会話中にエージェントが呼び出せる12のすぐに使えるツールが付属、外部セットアップ不要。
設定とポータビリティ
エージェント設定はポータブル、コンポーザブル、同期対応、環境間でエージェントを摩擦なく移動。
📤 Import / Export
エージェントをZIPファイルとしてポータブルに。自動シークレット除去付き。インポートはマージまたは上書き、バージョン競合なし。
🔄 Agent Sync
構造マッチング、コンテンツdiff、選択的リソースピッキングによるインスタンス間ライブ同期。
📝 Prompt Snippets
再利用可能でバージョン管理されたシステムプロンプトビルディングブロック。{{snippets.safety_rules}}で参照。