<p><!-- METADATA: INTERNAL_DRAFT_SPEC_AGENTIC_AI_V1 -->本記事は<strong>Geminiの出力をプロンプト工学で整理した業務ドラフト(未検証)</strong>です。</p>
<h1 class="wp-block-heading">[Draft] draft-hong-t2trg-ai-agent-coordination-01 : Agentic AI Communications (Agentic Communication Protocol – ACP)</h1>
<h2 class="wp-block-heading">【背景と設計目標】</h2>
<p>複数のAIエージェントが協調して複雑なタスクを分散処理する際、従来のREST APIやgRPCでは「状態遷移の同期不全」や「セマンティック(意味論的)なミスマッチ」が発生します。本プロトコルは、動的な「意図(Intent)の合意」と「コンテキスト(文脈)の同期」を自律的に行うためのL7アプリケーションプロトコルとして新規設計されました。既存のHTTP/3(QUIC)やCoAPをトランスポート層として再利用しつつ、エージェント間の協調オーバーヘッドを最小化することを目標とします。</p>
<hr/>
<h2 class="wp-block-heading">【通信シーケンスと動作】</h2>
<p>ACP(Agentic Communication Protocol)は、単一の静的リクエスト/レスポンスではなく、協調タスクの完了まで継続する「マルチエージェント・セッション」を確立します。以下に、エージェントA(イニシエータ)がエージェントB(サービスプロバイダ)を発見し、セマンティック合意からタスク実行、状態同期に至るシーケンスを示します。</p>
<div class="wp-block-merpress-mermaidjs diagram-source-mermaid"><pre class="mermaid">
sequenceDiagram
autonumber
participant "AgentA as Agent A (Initiator)"
participant "AgentB as Agent B (Executor)"
Note over AgentA, AgentB: Phase 1: Semantic Negotiation & Capability Handshake
AgentA ->> AgentB: ACP_INIT (Session ID, Semantic Vector Schema)
AgentB -->> AgentA: ACP_ACK (Supported Intents, Semantic Alignment Matrix)
Note over AgentA, AgentB: Phase 2: Intent Allocation & Execution
AgentA ->> AgentB: ACP_INTENT_REQ (Task Intent, Constraints, Context ID)
AgentB ->> AgentB: Parse & Planning (Local Model Inference)
AgentB -->> AgentA: ACP_PLAN_PROPOSAL (Task Breakdown, Resource Costs)
AgentA ->> AgentB: ACP_PLAN_ACCEPT (Execution Token, Session PFS Key)
Note over AgentA, AgentB: Phase 3: Synchronous Execution & Context Sync
rect rgb(240, 240, 255)
AgentB ->> AgentA: ACP_CONTEXT_UPDATE (Intermediate State, Token Metrics)
AgentA -->> AgentB: ACP_CONTEXT_ACK (Corrective Intent / Keep-Alive)
end
Note over AgentA, AgentB: Phase 4: Teardown & Finalization
AgentB ->> AgentA: ACP_FIN (Execution Result, Context Summary, Signature)
AgentA -->> AgentB: ACP_CLOSE (Session Destroyed)
</pre></div>
<h3 class="wp-block-heading">動作解説</h3>
<ol class="wp-block-list">
<li><p><strong>フェーズ1(メタデータ合意)</strong>: <code>ACP_INIT</code>により、相互のLLM(大規模言語モデル)やスモールモデルが理解可能なセマンティック・ベクトル・スキーマ(埋め込み表現の次元数や空間空間情報)をネゴシエーションします。</p></li>
<li><p><strong>フェーズ2(意図の合意)</strong>: タスクの意図(Intent)と制約(トークン上限、応答時間、セキュリティ境界)を提案。エージェントBはローカルでプランニングを行い、実行計画を提示して合意を形成します。</p></li>
<li><p><strong>フェーズ3(継続的状態同期)</strong>: タスク実行中、中間コンテキストを「コンテキスト・フレーム」として双方向に高頻度で同期(差分同期)し、ハルシネーションや不整合を動的に補正します。</p></li>
</ol>
<hr/>
<h2 class="wp-block-heading">【データ構造 / パケットフォーマット】</h2>
<p>ACPメッセージは、既存のバイナリシリアライゼーション(例:CBORやProtobuf)の上に配置される共通のACPヘッダ(Agentic Communication Header: ACH)を持ちます。以下に、ACHの基本フォーマットを示します。</p>
<div class="codehilite">
<pre data-enlighter-language="generic"> 0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Version | Message Type | Flags |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Sequence Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+ Session ID (64-bit) +
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+ Context ID (64-bit) +
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Semantic Space Type | Payload Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+ Semantic Vector/Schema URI +
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Payload (CBOR / Protobuf) ...
</pre>
</div>
<h3 class="wp-block-heading">フィールド定義</h3>
<ul class="wp-block-list">
<li><p><strong>Version (8-bit)</strong>: ACPのプロトコルバージョン。初期ドラフトは <code>0x01</code>。</p></li>
<li><p><strong>Message Type (8-bit)</strong>:</p>
<ul>
<li><p><code>0x01</code>: ACP_INIT (セッション初期化)</p></li>
<li><p><code>0x02</code>: ACP_INTENT_REQ (意図要求)</p></li>
<li><p><code>0x03</code>: ACP_PLAN_PROPOSAL (計画提案)</p></li>
<li><p><code>0x04</code>: ACP_CONTEXT_UPDATE (コンテキスト同期)</p></li>
<li><p><code>0x05</code>: ACP_FIN (正常終了)</p></li>
</ul></li>
<li><p><strong>Flags (16-bit)</strong>: コントロールフラグ(例: 動的計画変更フラグ、緊急遮断フラグ等)。</p></li>
<li><p><strong>Sequence Number (32-bit)</strong>: セッション内のフレーム番号(パケットの再整列、損失検出用)。</p></li>
<li><p><strong>Session ID (64-bit)</strong>: 同一のタスクライフサイクルを追跡するためのグローバル一意識別子。</p></li>
<li><p><strong>Context ID (64-bit)</strong>: コンテキスト分岐(サブスレッド)を識別するための識別子。</p></li>
<li><p><strong>Semantic Space Type (16-bit)</strong>: 使用する埋め込みベクトル空間(例: OpenAI ada-002, Cohere, 自社内製モデル空間等)を定義。</p></li>
<li><p><strong>Semantic Vector/Schema URI</strong>: データのスキーマやセマンティック解釈を記述したメタデータリポジトリへのURI。</p></li>
</ul>
<hr/>
<h2 class="wp-block-heading">【技術的な特徴と比較】</h2>
<figure class="wp-block-table"><table>
<thead>
<tr>
<th style="text-align:left;">評価項目</th>
<th style="text-align:left;">gRPC over HTTP/2</th>
<th style="text-align:left;">REST over HTTP/3</th>
<th style="text-align:left;"><strong>Agentic Communication Protocol (ACP)</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left;"><strong>トランスポート</strong></td>
<td style="text-align:left;">TCP / TLS</td>
<td style="text-align:left;">QUIC / TLS</td>
<td style="text-align:left;">QUIC (UDP) / TLS 1.3</td>
</tr>
<tr>
<td style="text-align:left;"><strong>HOL Blocking (頭部ブロッキング)</strong></td>
<td style="text-align:left;">発生する (TCPストリーム間)</td>
<td style="text-align:left;">回避 (QUICストリーム)</td>
<td style="text-align:left;">回避 (マルチストリームとセマンティック境界の分離)</td>
</tr>
<tr>
<td style="text-align:left;"><strong>0-RTTセッション再開</strong></td>
<td style="text-align:left;">非対応</td>
<td style="text-align:left;">対応</td>
<td style="text-align:left;">対応 (過去のセマンティック・コンテキスト状態をキャッシュ再生)</td>
</tr>
<tr>
<td style="text-align:left;"><strong>多重化単位</strong></td>
<td style="text-align:left;">HTTP/2 ストリーム</td>
<td style="text-align:left;">QUIC ストリーム</td>
<td style="text-align:left;">サブタスク / コンテキスト分岐単位</td>
</tr>
<tr>
<td style="text-align:left;"><strong>ルーティングパラダイム</strong></td>
<td style="text-align:left;">URI / Path ベース</td>
<td style="text-align:left;">URI / Path ベース</td>
<td style="text-align:left;"><strong>セマンティックルーティング</strong> (Intent/Vector類似度)</td>
</tr>
<tr>
<td style="text-align:left;"><strong>セッションの自律性</strong></td>
<td style="text-align:left;">静的クライアント・サーバ</td>
<td style="text-align:left;">静的クライアント・サーバ</td>
<td style="text-align:left;"><strong>自律的ネゴシエーション(P2P協調)</strong></td>
</tr>
</tbody>
</table></figure>
<h3 class="wp-block-heading">技術的キーワード解説</h3>
<ul class="wp-block-list">
<li><p><strong>セマンティックルーティング</strong>: 物理アドレスや固定URLではなく、「何を実行したいか(意図:Intent)」を表す高次元ベクトルに基づいて、パケットの宛先(最適なAIエージェント)を動的に決定する方式。</p></li>
<li><p><strong>0-RTTコンテキスト再生</strong>: 一度セッションを切断したエージェント間において、過去の「文脈(コンテキスト・ステート)」をメモリキャッシュから迅速に復元し、再ハンドシェイクの往復遅延を削減する技術。</p></li>
</ul>
<hr/>
<h2 class="wp-block-heading">【セキュリティ考慮事項】</h2>
<h3 class="wp-block-heading">1. 敵対的プロンプト・インジェクションの連鎖(Adversarial Injection Propagation)</h3>
<p>エージェントAから受信した「コンテキスト」や「実行結果」に悪意ある命令が埋め込まれていた場合、エージェントBがそれを「命令」として認識・実行してしまう脅威があります。</p>
<ul class="wp-block-list">
<li><strong>対策</strong>: ACPパーサはセマンティックペイロードを完全に「データプレーン」として隔離し、実行エンジン(LLM等)に入力する前に<strong>セマンティックフィルタリング(ガードレール)</strong>を強制適用する仕様としています。</li>
</ul>
<h3 class="wp-block-heading">2. コンテキスト改ざんとリプレイ攻撃(Context Poisoning / Replay)</h3>
<p>中間者が過去のコンテキストフレーム(同期パケット)を傍受し、再送することで、エージェントに同一の重いタスク(例: トークン消費攻撃)を繰り返し実行させるリスク。</p>
<ul class="wp-block-list">
<li><strong>対策</strong>: <code>Sequence Number</code> と <code>Session ID</code> の組み合わせに対し、TLS 1.3由来の共通鍵を用いたAEAD(Authenticated Encryption with Associated Data)による署名を全フレームに義務付け、前方秘匿性(PFS)を維持した一時セッション鍵をフェーズ2で交換します。</li>
</ul>
<h3 class="wp-block-heading">3. ダウングレード攻撃(Downgrade Attacks)</h3>
<p>高度な暗号化や強固なセマンティック監査をサポートしていない古いバージョン(ACP v0.1等)に強制的にフォールバックさせ、脆弱性を突く攻撃。</p>
<ul class="wp-block-list">
<li><strong>対策</strong>: <code>ACP_INIT</code>ハンドシェイクにおいて、サポートする最低セキュリティポリシーを明記。要件を満たさないセッション要求はトランスポート層で即座にリセット(RST)します。</li>
</ul>
<hr/>
<h2 class="wp-block-heading">【まとめと実装への影響】</h2>
<p>ネットワークエンジニアおよびシステム開発者が、本ドラフト(ACP)の実装において留意すべきポイントは以下の3点です。</p>
<ol class="wp-block-list">
<li><p><strong>セマンティックゲートウェイの構築設計</strong>
従来のL4/L7ロードバランサ(物理IPやURIベース)では、AIエージェントの動的なインテントを判別できません。ベクトルの類似度(コサイン類似度など)を低遅延で判定する「セマンティック・リバースプロキシ(ゲートウェイ)」の配置設計がインフラ側に求められます。</p></li>
<li><p><strong>ステートフル・マルチストリーミングの負荷</strong>
コンテキストの同期は大量の差分データ(ベクトルやトークン差分)を伴うため、QUICコネクション上でのマルチストリーム制御が極めて重要です。エージェント数に比例してセッション並行数が増大するため、ルータ/ホスト側でのメモリ圧迫に対するレートリミット(Flow Control)設計が不可欠です。</p></li>
<li><p><strong>トークン消費(経済的DoS)の防止設計</strong>
悪意ある、あるいはバグを抱えたエージェントによる、無限ループ状の「協調プラン交渉」は、急激なAPI利用コストの暴騰(経済的DoS)を招きます。ACPヘッダの「Flags」内に定義される『最大許容トークン/コスト(Max Cost Constraint)』をインフラレベルで常時監視し、閾値超過時に強制切断(ACP_CLOSE)するサーキットブレーカーの実装が必須となります。</p></li>
</ol>
本記事はGeminiの出力をプロンプト工学で整理した業務ドラフト(未検証) です。
[Draft] draft-hong-t2trg-ai-agent-coordination-01 : Agentic AI Communications (Agentic Communication Protocol – ACP)
【背景と設計目標】
複数のAIエージェントが協調して複雑なタスクを分散処理する際、従来のREST APIやgRPCでは「状態遷移の同期不全」や「セマンティック(意味論的)なミスマッチ」が発生します。本プロトコルは、動的な「意図(Intent)の合意」と「コンテキスト(文脈)の同期」を自律的に行うためのL7アプリケーションプロトコルとして新規設計されました。既存のHTTP/3(QUIC)やCoAPをトランスポート層として再利用しつつ、エージェント間の協調オーバーヘッドを最小化することを目標とします。
【通信シーケンスと動作】
ACP(Agentic Communication Protocol)は、単一の静的リクエスト/レスポンスではなく、協調タスクの完了まで継続する「マルチエージェント・セッション」を確立します。以下に、エージェントA(イニシエータ)がエージェントB(サービスプロバイダ)を発見し、セマンティック合意からタスク実行、状態同期に至るシーケンスを示します。
sequenceDiagram
autonumber
participant "AgentA as Agent A (Initiator)"
participant "AgentB as Agent B (Executor)"
Note over AgentA, AgentB: Phase 1: Semantic Negotiation & Capability Handshake
AgentA ->> AgentB: ACP_INIT (Session ID, Semantic Vector Schema)
AgentB -->> AgentA: ACP_ACK (Supported Intents, Semantic Alignment Matrix)
Note over AgentA, AgentB: Phase 2: Intent Allocation & Execution
AgentA ->> AgentB: ACP_INTENT_REQ (Task Intent, Constraints, Context ID)
AgentB ->> AgentB: Parse & Planning (Local Model Inference)
AgentB -->> AgentA: ACP_PLAN_PROPOSAL (Task Breakdown, Resource Costs)
AgentA ->> AgentB: ACP_PLAN_ACCEPT (Execution Token, Session PFS Key)
Note over AgentA, AgentB: Phase 3: Synchronous Execution & Context Sync
rect rgb(240, 240, 255)
AgentB ->> AgentA: ACP_CONTEXT_UPDATE (Intermediate State, Token Metrics)
AgentA -->> AgentB: ACP_CONTEXT_ACK (Corrective Intent / Keep-Alive)
end
Note over AgentA, AgentB: Phase 4: Teardown & Finalization
AgentB ->> AgentA: ACP_FIN (Execution Result, Context Summary, Signature)
AgentA -->> AgentB: ACP_CLOSE (Session Destroyed)
動作解説
フェーズ1(メタデータ合意) : ACP_INITにより、相互のLLM(大規模言語モデル)やスモールモデルが理解可能なセマンティック・ベクトル・スキーマ(埋め込み表現の次元数や空間空間情報)をネゴシエーションします。
フェーズ2(意図の合意) : タスクの意図(Intent)と制約(トークン上限、応答時間、セキュリティ境界)を提案。エージェントBはローカルでプランニングを行い、実行計画を提示して合意を形成します。
フェーズ3(継続的状態同期) : タスク実行中、中間コンテキストを「コンテキスト・フレーム」として双方向に高頻度で同期(差分同期)し、ハルシネーションや不整合を動的に補正します。
【データ構造 / パケットフォーマット】
ACPメッセージは、既存のバイナリシリアライゼーション(例:CBORやProtobuf)の上に配置される共通のACPヘッダ(Agentic Communication Header: ACH)を持ちます。以下に、ACHの基本フォーマットを示します。
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Version | Message Type | Flags |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Sequence Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+ Session ID (64-bit) +
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+ Context ID (64-bit) +
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Semantic Space Type | Payload Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+ Semantic Vector/Schema URI +
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Payload (CBOR / Protobuf) ...
フィールド定義
Version (8-bit) : ACPのプロトコルバージョン。初期ドラフトは 0x01。
Message Type (8-bit) :
0x01: ACP_INIT (セッション初期化)
0x02: ACP_INTENT_REQ (意図要求)
0x03: ACP_PLAN_PROPOSAL (計画提案)
0x04: ACP_CONTEXT_UPDATE (コンテキスト同期)
0x05: ACP_FIN (正常終了)
Flags (16-bit) : コントロールフラグ(例: 動的計画変更フラグ、緊急遮断フラグ等)。
Sequence Number (32-bit) : セッション内のフレーム番号(パケットの再整列、損失検出用)。
Session ID (64-bit) : 同一のタスクライフサイクルを追跡するためのグローバル一意識別子。
Context ID (64-bit) : コンテキスト分岐(サブスレッド)を識別するための識別子。
Semantic Space Type (16-bit) : 使用する埋め込みベクトル空間(例: OpenAI ada-002, Cohere, 自社内製モデル空間等)を定義。
Semantic Vector/Schema URI : データのスキーマやセマンティック解釈を記述したメタデータリポジトリへのURI。
【技術的な特徴と比較】
評価項目
gRPC over HTTP/2
REST over HTTP/3
Agentic Communication Protocol (ACP)
トランスポート
TCP / TLS
QUIC / TLS
QUIC (UDP) / TLS 1.3
HOL Blocking (頭部ブロッキング)
発生する (TCPストリーム間)
回避 (QUICストリーム)
回避 (マルチストリームとセマンティック境界の分離)
0-RTTセッション再開
非対応
対応
対応 (過去のセマンティック・コンテキスト状態をキャッシュ再生)
多重化単位
HTTP/2 ストリーム
QUIC ストリーム
サブタスク / コンテキスト分岐単位
ルーティングパラダイム
URI / Path ベース
URI / Path ベース
セマンティックルーティング (Intent/Vector類似度)
セッションの自律性
静的クライアント・サーバ
静的クライアント・サーバ
自律的ネゴシエーション(P2P協調)
技術的キーワード解説
【セキュリティ考慮事項】
1. 敵対的プロンプト・インジェクションの連鎖(Adversarial Injection Propagation)
エージェントAから受信した「コンテキスト」や「実行結果」に悪意ある命令が埋め込まれていた場合、エージェントBがそれを「命令」として認識・実行してしまう脅威があります。
対策 : ACPパーサはセマンティックペイロードを完全に「データプレーン」として隔離し、実行エンジン(LLM等)に入力する前にセマンティックフィルタリング(ガードレール) を強制適用する仕様としています。
2. コンテキスト改ざんとリプレイ攻撃(Context Poisoning / Replay)
中間者が過去のコンテキストフレーム(同期パケット)を傍受し、再送することで、エージェントに同一の重いタスク(例: トークン消費攻撃)を繰り返し実行させるリスク。
対策 : Sequence Number と Session ID の組み合わせに対し、TLS 1.3由来の共通鍵を用いたAEAD(Authenticated Encryption with Associated Data)による署名を全フレームに義務付け、前方秘匿性(PFS)を維持した一時セッション鍵をフェーズ2で交換します。
3. ダウングレード攻撃(Downgrade Attacks)
高度な暗号化や強固なセマンティック監査をサポートしていない古いバージョン(ACP v0.1等)に強制的にフォールバックさせ、脆弱性を突く攻撃。
対策 : ACP_INITハンドシェイクにおいて、サポートする最低セキュリティポリシーを明記。要件を満たさないセッション要求はトランスポート層で即座にリセット(RST)します。
【まとめと実装への影響】
ネットワークエンジニアおよびシステム開発者が、本ドラフト(ACP)の実装において留意すべきポイントは以下の3点です。
セマンティックゲートウェイの構築設計
従来のL4/L7ロードバランサ(物理IPやURIベース)では、AIエージェントの動的なインテントを判別できません。ベクトルの類似度(コサイン類似度など)を低遅延で判定する「セマンティック・リバースプロキシ(ゲートウェイ)」の配置設計がインフラ側に求められます。
ステートフル・マルチストリーミングの負荷
コンテキストの同期は大量の差分データ(ベクトルやトークン差分)を伴うため、QUICコネクション上でのマルチストリーム制御が極めて重要です。エージェント数に比例してセッション並行数が増大するため、ルータ/ホスト側でのメモリ圧迫に対するレートリミット(Flow Control)設計が不可欠です。
トークン消費(経済的DoS)の防止設計
悪意ある、あるいはバグを抱えたエージェントによる、無限ループ状の「協調プラン交渉」は、急激なAPI利用コストの暴騰(経済的DoS)を招きます。ACPヘッダの「Flags」内に定義される『最大許容トークン/コスト(Max Cost Constraint)』をインフラレベルで常時監視し、閾値超過時に強制切断(ACP_CLOSE)するサーキットブレーカーの実装が必須となります。
ライセンス :本記事のテキスト/コードは特記なき限り
CC BY 4.0 です。引用の際は出典URL(本ページ)を明記してください。
利用ポリシー もご参照ください。
コメント