我想要一項特定的覆蓋範圍:
Microsoft Foundry (master)
├── MCP ──> live exchange-rate baseline
└── A2A ──> Amazon Bedrock AgentCore (remote specialist)
Enter fullscreen mode Exit fullscreen mode
在 2026 年 7 月 30 日,這個方向已端對端正常運作。
這很重要,因為我先前已測試過反向拓撲——AgentCore 作為協調器,Foundry 作為遠端。僅基於單一方向的跨雲主張是薄弱的。這次執行證明 Foundry 可以擁有請求、執行其本機 MCP 基準、呼叫 AgentCore A2A 代理,並套用確定性驗證。
程式碼與已清理的證據位於 xbill9/foundry-bedrock-a2a-currency。
實際通過的內容
輸入為 100 USD → EUR。我透過其 Responses 端點,以三種基準模式呼叫 Foundry 託管的協調器:
| 模式 | 路徑 | 觀察結果 | 配接器時間 |
|---|---|---|---|
mcp_only |
Foundry → local MCP | 87.13800 EUR | 359 ms |
a2a_only |
Foundry → A2A → AgentCore | 87.138 EUR | 25,105 ms |
verified |
兩條路徑同時執行 | 完全一致 | 28,163 ms |
驗證結果回報:
{
"relative_difference": "0",
"agreed": true,
"failures": {}
}
Enter fullscreen mode Exit fullscreen mode
這只是一個煙霧案例,而非延遲分佈,也非完整的基準矩陣。有用的結論更狹隘:Foundry 主控的雲端邊界正常運作,包括驗證、探索、呼叫與確定性比對。
該存放庫也通過 66 項確定性測試;一項選擇性整合測試因缺少外部相依性而略過。
模型不做數學運算
貨幣轉換讓互通性容易被驗證。每筆報價都包含金額、匯率、轉換後金額、觀察時間、來源與配接器延遲。金額與匯率使用 Python Decimal。
協調器——而非 LLM——檢查一致性:
difference = abs(primary.converted_amount - verifier.converted_amount)
relative_difference = difference / abs(primary.converted_amount)
agreed = relative_difference <= Decimal("0.005")
Enter fullscreen mode Exit fullscreen mode
模型處理意圖並選擇其中一個工具呼叫。與框架無關的程式碼負責算術、並行、逾時政策與失敗回報。
歷經翻轉仍穩定的邊界
穩定的應用程式依賴兩個介面:
- 一個 MCP 支援的
ExchangeRateTool; - 一個 A2A 支援的
RemoteCurrencyAgent。
Microsoft Agent Framework 與 Foundry 託管位於這些介面之外。Strands 與 AgentCore 則位於另一側。翻轉雲端無需重寫領域服務。
這比僅將兩個 SDK 放入單一程序更有價值。每個雲端都可以獨立部署,而基準仍可比較 MCP-only、A2A-only 與驗證執行。
驗證是真正的跨雲問題
AgentCore 的預設執行階段授權為 IAM/SigV4。這適合 AWS 呼叫者,但 Foundry 託管的容器並不會自動擁有 AWS 憑證。
在此測試中,我為 AgentCore 配置自訂 JWT 授權者,並使用 Cognito 機器對機器用戶端:
Foundry container
├── client_credentials ──> Cognito token endpoint
└── Bearer JWT ──────────> AgentCore A2A runtime
Enter fullscreen mode Exit fullscreen mode
協調器的 A2A 配接器現支援 OAuth 用戶端憑證,快取權杖至即將到期前,並保留靜態 bearer 支援其他同儕設定檔。AgentCore 授權者驗證發行者、用戶端與必要的 currencybench/invoke 範圍。
沒有權杖參與領域層。
綠燈執行前發生過的問題
成功的圖表隱藏了大部分工作。這些是觀察到的失敗,而非假設風險。
1. AgentCore 的 A2A 伺服器與用戶端需要不同的 SDK 世代
協調器用戶端使用 A2A 1.x。AgentCore 的 A2A 額外功能目前需要部署伺服器套件中的 0.3 系列。將兩者安裝在同一個套件中會產生無法滿足的相依性圖表。
修正方式是架構層面的:將 AgentCore 應用程式套件鎖定在其相容的 A2A SDK,同時將 Foundry 端的用戶端分開。網路協定可互通,即使 Python 套件未共用版本。
2. IAM 授權無法跨越雲端邊界
直接的 AWS CLI 呼叫可正常運作,但 Foundry 容器無法簽署 AWS 請求。將執行階段切換為自訂 JWT 授權並新增 OAuth 配接器,使遠端可在不嵌入 AWS 憑證的情況下被呼叫。
3. 預設十秒逾時是虛假的信心
第一次託管的 a2a_only 呼叫乾淨地失敗:
{
"failures": {
"a2a": "timeout: adapter timed out"
},
"elapsed_ms": 10010
}
Enter fullscreen mode Exit fullscreen mode
直接的遠端呼叫已耗時約 25 秒。配接器正常運作;基準政策對冷跨雲路徑過於激進。託管逾時現已調整為 60 秒。下一次 A2A-only 呼叫在 25.1 秒內完成。
4. Foundry 的原始碼建置找不到其映像
託管代理的遠端建置反覆以 ImageError: Container image not found 結束。我改用 Azure Container Registry 中預先建置、固定摘要的映像。
下一個失敗更精確:登錄驗證。三個身分可見——Foundry 帳戶、專案與每個代理的執行階段身分。映像提取使用 專案受控身分。授予其他兩個 AcrPull 權限並無幫助。
部署在以下操作後變為作用中:
- 啟用 ACR 驗證作為 ARM;
- 授予專案身分存放庫讀取者/提取存取權;以及
- 重新部署相同的固定摘要映像。
5. Azure 資源狀態與 RBAC 都有記憶
軟刪除的 Foundry 帳戶會封鎖重新建立,直到清除為止。專案角色指派也需要時間傳播。這些是部署層面的事實,與 A2A 在執行階段是否運作無關。
煙霧測試結果
在驗證模式下,Foundry 啟動兩個配接器。其 MCP 端點回傳匯率 0.87138;AgentCore 專家回傳匯率 0.87138。確定性程式碼計算出相對差異為零,並標記報價為一致。
MCP 結果也帶有過時觀察警告。協調器保留它,而非讓模型將其平滑化。
託管回應端對端約需 45 秒,而測量的配接器工作耗時 28.2 秒。該差距包含模型與託管回應的額外負荷。僅有一次觀察,稱其中任一數字為基準都是不負責任的。
這證明了什麼——以及未證明什麼
已觀察到:
- Foundry 託管主控協調器。
- Foundry 的 MCP-only 路徑已完成。
- Foundry 取得 OAuth 權杖,並透過 A2A 呼叫 AgentCore。
- AgentCore 回傳結構化貨幣報價。
- 驗證模式執行兩條路徑,並回報完全一致。
- 在逾時修正後,三種模式的煙霧測試在無配接器失敗的情況下完成。
尚未確立:
- 暖機與冷啟動延遲分佈;
- 節流或權杖過期時的行為;
- 完整的多貨幣矩陣;
- 生產環境的密鑰輪替與可用性控制;
- 任一框架或雲端的優越性。
這種區別正是此專案的意義所在。結果是覆蓋範圍,而非勝利宣言:Microsoft Foundry 可作為主要雲端運作,而 Amazon Bedrock AgentCore 可作為其已驗證的遠端 A2A 專家。
0 Comments
Log in to join the conversation.No comments yet. Be the first to share your thoughts.