附录 C:决策树与最佳实践

C.1 协议选择决策树

问:Agent 需要什么能力?
├─ 连接外部数据源/工具?
│  ├─ 是 → MCP
│  │  ├─ 本地开发 → stdio
│  │  ├─ 云端集成 → SSE over HTTP
│  │  ├─ 公共/实验 → 公共 Registry(⚠️ 不传凭证)
│  │  ├─ 企业级 → 官方托管 MCP
│  │  ├─ 内部工具 → 内部 Registry
│  ├─ 否 → 继续
├─ 与其他 Agent 协作?
│  ├─ 是 → A2A
│  │  ├─ 暴露自己的 Agent?
│  │  │  ├─ 是 → 定义 Agent Card + A2A Endpoint
│  │  │  ├─ 否 → 继续
│  │  ├─ 使用第三方 Agent?
│  │  │  ├─ 是 → Registry Discovery 或 Direct Endpoint
│  │  │  ├─ 否 → Internal Specialization
│  ├─ 否 → 继续
├─ 向人类用户展示可视化?
│  ├─ 是 → A2UI
│  │  ├─ 意图驱动 → LLM-generates-UI
│  │  ├─ 输入驱动 → Tool-as-template
│  ├─ 否 → 继续
├─ 执行商业交易?
│  ├─ 查询商品/下单 → UCP
│  ├─ 支付 → AP2(需用户 Mandate)
│  ├─ 否 → 仅 MCP/A2A/A2UI

C.2 安全实践清单

协议 安全实践
MCP ✅ 审核公共 Server 代码
✅ 使用环境变量传凭证
✅ Read-only 模式用于真实数据
✅ 限制 Project 访问范围
✅ 包含 HITL(人类审批)
❌ 不在生产用公共 MCP
A2A ✅ 验证 Agent Card
✅ 使用官方 Registry
✅ 审计 Agent 交互日志
❌ 不盲目信任未验证 Agent
A2UI ✅ 使用 a2ui-agent-sdk
✅ Schema validation
✅ 失败时 fallback text
✅ Hybrid output(data + ui)
❌ 不让 Agent 生成可执行代码
AP2/UCP ✅ 用户批准 Mandate
✅ 审计支付日志
✅ 验证签名
❌ Agent 不接触真实卡号

C.3 架构演进路径

Phase 1: Single Agent + MCP
├─ 任务:快速原型、简单流程
├─ 限制:Scaling Friction、Contextual Overload
├─ 转向 Phase 2 信号:系统提示过大、工具过多

Phase 2: Internal Specialization
├─ 任务:中等复杂度、需域专业知识
├─ 限制:不跨网络边界、无法用官方 Agent
├─ 转向 Phase 3 信号:需第三方平台协作

Phase 3: Distributed Multi-Agent + A2A
├─ 任务:高复杂度、跨组织协作
├─ 优势:官方维护、商业化潜力
├─ 最佳实践:优先使用官方 Agent(避免维护税)