返回市场
A2A微服务示例

A2A微服务示例

作者:MadLongTom6 星标更新:2025-10-14

项目介绍

技术文档摘要

Agent Framework Aspire - 多智能体微服务系统

License: WTFPL .NET Aspire

基于.NET Aspire、Microsoft Agent Framework、A2A 和 MCP 协议构建的多智能体微服务系统。

📖 目录

🌟 项目背景

在现代企业环境中,项目管理涉及多个专业领域的协作,包括技术评估、人力资源分配、财务预算控制、质量风险管理以及项目进度规划。传统的单体智能代理系统存在以下问题:

传统解决方案的痛点

  1. 通用性和专业性的矛盾

    • 单一的AI助手很难同时具备多个领域的深入专业知识
    • 通用模型缺乏对企业特定领域的深入了解
  2. 维护和更新困难

    • 任何部门的知识更新都需要重新训练整个模型
    • 实现权限控制和数据隔离困难
  3. 不符合组织结构

    • 违反企业的实际分工合作模式
    • 责任不清,错误追溯困难

我们的解决方案

基于康威定律,在这个AI应用的时代,本项目提出了多智能体微服务架构

设计系统的架构应映射组织的沟通结构

每个专业团队维护自己的智能代理服务,以实现:

  • 专业化分工 每个智能代理专注于特定领域
  • 标准化通信 使用MCP和A2A协议实现跨服务协作
  • 独立演进 每个团队可以独立迭代自己的服务
  • 明确责任 问题可以追溯到具体领域

🎯 项目目标

  1. 降低集成成本 基于标准协议(MCP+A2A),减少各团队系统集成的复杂性
  2. 提升专业化水平 各团队专注于自己的领域,提供更专业的服务
  3. 增强系统韧性 微服务架构提供了更好的容错性和可扩展性
  4. 促进团队协作 通过标准化接口促进跨团队协作
  5. 提供参考实现 为企业构建类似系统提供完整的示例代码

🏗️ 架构设计

总体架构

graph TB
    subgraph "用户交互层"
        User[👤 用户/客户端<br/>Blazor Web UI]
    end
    
    subgraph "智能编排层"
        PM[🎯 项目经理智能体<br/>ProjectManagerAgent<br/>━━━━━━━━━━━<br/>统一协调与决策<br/>3阶段工作流编排]
    end
    
    subgraph "专业服务层 - 并行分析"
        Tech[💻 技术团队服务<br/>Tech Agent<br/>━━━━━━━━━━━<br/>MCP工具 + A2A端点]
        HR[👥 HR团队服务<br/>HR Agent<br/>━━━━━━━━━━━<br/>MCP工具 + A2A端点]
        Finance[💰 财务团队服务<br/>Finance Agent<br/>━━━━━━━━━━━<br/>MCP工具 + A2A端点]
        QA[🔍 QA团队服务<br/>QA Agent<br/>━━━━━━━━━━━<br/>MCP工具 + A2A端点<br/>内部4阶段工作流]
    end
    
    subgraph "专业服务层 - 规划整合"
        PMO[📅 PMO团队服务<br/>PMO Agent<br/>━━━━━━━━━━━<br/>MCP工具 + A2A端点<br/>内部4阶段工作流]
    end
    
    subgraph "基础设施层"
        Aspire[.NET Aspire<br/>服务编排 & 配置管理]
        MCP[MCP 协议层<br/>工具与资源访问]
        A2A[A2A 协议层<br/>智能体间通信]
        AF[Agent Framework<br/>工作流编排引擎]
    end
    
    User --> PM
    PM -->|Stage 1: 并行分析| Tech
    PM -->|Stage 1: 并行分析| HR
    PM -->|Stage 1: 并行分析| Finance
    PM -->|Stage 1: 并行分析| QA
    PM -->|Stage 2: 规划整合| PMO
    PM -.->|Stage 3: 最终决策| PM
    
    Tech --> MCP
    HR --> MCP
    Finance --> MCP
    QA --> MCP
    PMO --> MCP
    
    PM --> A2A
    Tech --> A2A
    HR --> A2A
    Finance --> A2A
    QA --> A2A
    PMO --> A2A
    
    QA --> AF
    PMO --> AF
    PM --> AF
    
    Aspire -.->|编排| PM
    Aspire -.->|编排| Tech
    Aspire -.->|编排| HR
    Aspire -.->|编排| Finance
    Aspire -.->|编排| QA
    Aspire -.->|编排| PMO
    
    style User fill:#e1f5ff,stroke:#333,stroke-width:2px
    style PM fill:#fff3cd,stroke:#333,stroke-width: 3px
    style Tech fill:#d4edda,stroke:#333,stroke-width:2px
    style HR fill:#d4edda,stroke:#333,stroke-width:2px
    style Finance fill:#d4edda,stroke:#333,stroke-width:2px
    style QA fill:#d4edda,stroke:#333,stroke-width:2px
    style PMO fill:#cce5ff,stroke:#333,stroke-width:2px
    style Aspire fill:#f8d7da,stroke:#333,stroke-width:2px
    style MCP fill:#e2e3e5,stroke:#333,stroke-width:1px
    style A2A fill:#e2e3e5,stroke:#333,stroke-width:1px
    style AF fill:#e2e3e5,stroke:#333,stroke-width:1px

工作流程设计

项目经理的智能代理使用三阶段工作流程编排:

sequenceDiagram
    participant User as 用户
    participant PM as 项目经理智能体
    participant Tech as 技术团队
    participant HR as HR团队
    participant Finance as 财务团队
    participant QA as QA团队
    participant PMO as PMO团队
    
    User->>PM: 提交项目需求
    
    Note over PM: Stage 1: 并行分析阶段
    par 并行调用
        PM->>Tech: A2A调用:技术需求分析
        Tech-->>PM: 技术评估报告
    and
        PM->>HR: A2A调用:人力资源评估
        HR-->>PM: 资源分析报告
    and
        PM->>Finance: A2A调用:预算分析
        Finance-->>PM: 财务评估报告
    and
        PM->>QA: A2A调用:风险分析
        QA-->>PM: 风险评估报告
    end
    
    Note over PM: Stage 2: 详细规划阶段
    PM->>PMO: A2A调用:基于前期分析进行规划
    Note over PMO: 内部工作流:<br/>任务分解→依赖分析<br/>→资源匹配→时间优化
    PMO-->>PM: 详细项目计划
    
    Note over PM: Stage 3: 整合决策阶段
    PM->>PM: 综合所有分析结果<br/>生成最终决策
    PM-->>User: 完整项目计划与建议

智能代理分层架构

系统采用四层智能代理架构设计:

graph TD
    subgraph "第四层:编排智能体层"
        L4[项目经理智能体<br/>━━━━━━━━━━━<br/>跨团队协调<br/>复杂工作流编排<br/>最终决策]
    end
    
    subgraph "第三层:专家智能体层"
        L3A[QA 风险管理专家<br/>━━━━━━━━━━━<br/>内部工作流:<br/>识别→评估→缓解→监控]
        L3B[PMO 进度规划专家<br/>━━━━━━━━━━━<br/>内部工作流:<br/>分解→依赖→匹配→优化]
    end
    
    subgraph "第二层:简单智能体层"
        L2A[Tech 需求分析<br/>━━━━━━━━━━━<br/>单一职责<br/>直接调用工具]
        L2B[HR 资源评估<br/>━━━━━━━━━━━<br/>单一职责<br/>直接调用工具]
        L2C[Finance 预算分析<br/>━━━━━━━━━━━<br/>单一职责<br/>直接调用工具]
    end
    
    subgraph "第一层:MCP 工具层"
        L1A[EstimateTechnicalComplexity<br/>ValidateTechStack<br/>GetArchitectureTemplate]
        L1B[GetTeamCapabilities<br/>CheckTeamAvailability<br/>EstimateResourceCost]
        L1C[ValidateBudget<br/>GetHistoricalCosts<br/>CalculateROI]
        L1D[AnalyzeRiskPatterns<br/>GetComplianceRequirements<br/>ValidateDeliverables]
        L1E[GetProjectTemplate<br/>ValidateSchedule<br/>CalculateCriticalPath]
    end
    
    L4 --> L3A
    L4 --> L3B
    L4 --> L2A
    L4 --> L2B
    L4 --> L2C
    
    L3A --> L1D
    L3B --> L1E
    L2A --> L1A
    L2B --> L1B
    L2C --> L1C
    
    style L4 fill:#ff6b6b,stroke:#333,stroke-width:3px,color:#fff
    style L3A fill:#feca57,stroke:#333,stroke-width:2px
    style L3B fill:#feca57,stroke:#333,stroke-width:2px
    style L2A fill:#48dbfb,stroke:#333,stroke-width:2px
    style L2B fill:#48dbfb,stroke:#333,stroke-width:2px
    style L2C fill:#48dbfb,stroke:#333,stroke-width:2px
    style L1A fill:#dfe6e9,stroke:#333,stroke-width:1px
    style L1B fill:#dfe6e9,stroke:#333,stroke-width:1px
    style L1C fill:#dfe6e9,stroke:#333,stroke-width:1px
    style L1D fill:#dfe6e9,stroke:#333,stroke-width:1px
    style L1E fill:#dfe6e9,stroke:#333,stroke-width:1px

层级描述

  1. 第一层 - MCP工具层:无状态纯函数工具,提供基本计算和数据访问能力
  2. 第二层 - 简单智能体层:具有单一职责的智能代理,使用ChatClient直接调用MCP工具
  3. 第三层 - 专家智能体层:使用Agent Framework进行多阶段分析的复杂工作流编排
  4. 第四层 - 编排智能体层:跨域协调,统一用户界面,最终决策

🛠️ 技术栈

类别技术版本描述
框架.NET9.0最新的.NET平台
WebASP.NET Core9.0微服务框架
前端FHIR Server9.0服务器渲染UI
编排.NET Aspire最新云原生应用程序编排
AI框架Microsoft Agent Framework预览版智能代理工作流引擎
协议A2A (Agent to Agent)最新代理间通信协议(Google Cloud)
协议MCP (Model Context Protocol)预览版Anthropic (模型上下文协议)
AI服务OpenAI APIGPT-4大型语言模型
监控OpenTelemetry最新可观察性

项目结构

AgentFrameworkAspire/
├── AgentFrameworkAspire.AppHost/        # Aspire 编排主机
├── AgentFrameworkAspire.Web/            # Web 前端
├── AgentFrameworkAspire.ServiceDefaults/ # 共享服务配置
├── Finance/                              # 财务服务 (MCP + A2A Agent)
├── Tech/                                 # 技术架构服务 (MCP + A2A Agent)
├── HumanResource/                        # 人力资源服务 (MCP + A2A Agent)
├── QA/                                   # QA服务 (MCP + Workflow Agent)
└── PMO/                                  # PMO服务 (MCP + Workflow Agent)

服务说明

1. Finance (财务服务)

  • MCP工具:预算验证,历史成本查询,ROI计算
  • A2A代理:财务分析智能代理,提供预算分析和成本控制建议
  • 端点
    • MCP: /finance/mcp
    • A2A: /finance/budget-analyzer

2. Tech (技术架构服务)

  • MCP工具:技术复杂度评估,技术栈验证,架构模板获取
  • A2A代理:技术需求分析智能代理,提供架构设计建议
  • 端点
    • MCP: /tech/mcp
    • A2A: /tech/requirement-analyst

3. HumanResource (人力资源服务)

  • MCP工具:团队能力查询,可用性检查,资源成本估算
  • A2A代理:HR资源评估智能代理,提供团队容量规划
  • 端点
    • MCP: /hr/mcp
    • A2A: /hr/resource-estimator

4. QA (质量保证服务)

  • MCP工具:风险模式分析,合规要求获取,交付物验证
  • A2A工作流代理:风险管理专家,使用多阶段工作流进行风险分析
    • 工作流:风险识别 → 影响评估 → 缓解策略 → 监控计划
  • 端点
    • MCP: /qa/mcp
    • A2A: /qa/risk-expert

5. PMO (项目管理办公室服务)

  • MCP工具:项目模板获取,进度验证,关键路径计算
  • A2A工作流代理:进度规划专家,使用多阶段工作流进行项目规划
    • 工作流:任务分解 → 依赖分析 → 资源匹配 → 时间优化
  • 端点
    • MCP: /pmo/mcp
    • A2A: /pmo/schedule-expert

🚀 快速开始

前提条件

  • ✅ .NET 9.0 SDK (下载)
  • ✅ Docker Desktop (下载)
  • ✅ OpenAI API Key 或兼容的API服务

第一步:克隆项目

git clone https://github.com/MadLongTom/A2AMicroserviceSample.git
cd A2AMicroserviceSample

第二步:配置OpenAI API

编辑 AgentFrameworkAspire.AppHost/appsettings.json 文件,配置OpenAI参数:

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning",
      "Aspire.Hosting.Dcp": "Warning"
    }
  },
  "Parameters": {
    "openai-endpoint": "",  
    "openai-apikey": "your-api-key-here",
    "openai-deployment": "gpt-4o-mini"
  }
}

配置说明

参数描述示例
openai-endpointAPI端点(可选)<br/>- 空白:使用OpenAI官方API<br/>- 填写:使用第三方兼容API""<br/>"https://api.openai.com/v1"<br/>"https://your-proxy.com/v1"
openai-apikeyAPI密钥(必需)<br/>从OpenAI或第三方服务获取"sk-..."
openai-deployment模型名称(必需)<br/>选择要使用的模型"gpt-4o-mini"<br/>"gpt-4"<br/>"gpt-3.5-turbo"

💡 提示 如果您使用Azure OpenAI,端点应类似于 https://your-resource.openai.azure.com/,部署是您在Azure中部署的模型名称。

第三步:恢复依赖项

dotnet restore

第四步:启动项目

cd AgentFrameworkAspire.AppHost
dotnet run

Aspire仪表板将在浏览器中自动打开(默认 `http://localhost:15