01-basic-system

command
v0.6.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 6, 2025 License: Apache-2.0 Imports: 6 Imported by: 0

README

01-basic-system 基础系统示例

本示例演示 MultiAgentSystem 的核心功能,包括创建多智能体系统、注册 Agent、执行协作任务和 Agent 间消息通信。

目录

架构设计

系统架构图
graph TB
    subgraph MultiAgentSystem["MultiAgentSystem 多智能体系统"]
        direction TB
        Registry["Agent 注册表"]
        TaskExecutor["任务执行器"]
        MessageBus["消息总线"]
    end

    subgraph Agents["协作 Agent 集合"]
        Leader["Leader Agent<br/>领导者"]
        Worker1["Worker Agent 1<br/>工作者"]
        Worker2["Worker Agent 2<br/>工作者"]
        Validator["Validator Agent<br/>验证者"]
    end

    subgraph Tasks["协作任务"]
        ParallelTask["并行任务"]
        SequentialTask["顺序任务"]
    end

    Leader --> Registry
    Worker1 --> Registry
    Worker2 --> Registry
    Validator --> Registry

    Tasks --> TaskExecutor
    TaskExecutor --> Agents
    Agents <--> MessageBus
组件关系图
classDiagram
    class MultiAgentSystem {
        -agents map~string~Agent
        -logger Logger
        -maxAgents int
        +RegisterAgent(id, agent)
        +UnregisterAgent(id)
        +ExecuteTask(ctx, task)
        +GetAgent(id) Agent
    }

    class CollaborativeAgent {
        <<interface>>
        +Name() string
        +GetRole() Role
        +SetRole(role)
        +Collaborate(ctx, task) Assignment
        +ReceiveMessage(ctx, msg) error
        +Vote(ctx, proposal) bool
    }

    class BaseCollaborativeAgent {
        -id string
        -description string
        -role Role
        -system MultiAgentSystem
        +Name() string
        +GetRole() Role
        +Collaborate(ctx, task) Assignment
    }

    class CollaborativeTask {
        +ID string
        +Name string
        +Type CollaborationType
        +Input interface
        +Assignments map~string~Assignment
    }

    MultiAgentSystem "1" --> "*" CollaborativeAgent : 管理
    BaseCollaborativeAgent ..|> CollaborativeAgent : 实现
    MultiAgentSystem --> CollaborativeTask : 执行

核心组件

1. MultiAgentSystem

多智能体系统的核心管理器,负责:

  • Agent 注册与生命周期管理
  • 任务分发与执行协调
  • Agent 间消息路由
2. CollaborativeAgent

协作 Agent 接口,定义了 Agent 的核心能力:

方法 说明
Name() 返回 Agent 唯一标识
GetRole() 获取 Agent 角色
Collaborate() 执行协作任务
ReceiveMessage() 接收消息
Vote() 参与投票决策
3. Agent 角色
graph LR
    subgraph Roles["Agent 角色类型"]
        Leader["Leader<br/>领导者"]
        Worker["Worker<br/>工作者"]
        Coordinator["Coordinator<br/>协调者"]
        Specialist["Specialist<br/>专家"]
        Validator["Validator<br/>验证者"]
        Observer["Observer<br/>观察者"]
    end

    Leader --> |"分配任务"| Worker
    Leader --> |"协调"| Coordinator
    Coordinator --> |"调度"| Worker
    Worker --> |"请求验证"| Validator
    Specialist --> |"提供专业意见"| Leader
    Observer --> |"监控状态"| Leader

执行流程

任务执行流程图
sequenceDiagram
    participant Client as 客户端
    participant MAS as MultiAgentSystem
    participant Leader as Leader Agent
    participant Worker1 as Worker Agent 1
    participant Worker2 as Worker Agent 2
    participant Validator as Validator Agent

    Client->>MAS: ExecuteTask(task)
    MAS->>MAS: 识别任务类型

    alt 并行任务
        par 并行执行
            MAS->>Leader: Collaborate(task)
            Leader-->>MAS: Assignment
        and
            MAS->>Worker1: Collaborate(task)
            Worker1-->>MAS: Assignment
        and
            MAS->>Worker2: Collaborate(task)
            Worker2-->>MAS: Assignment
        and
            MAS->>Validator: Collaborate(task)
            Validator-->>MAS: Assignment
        end
    else 顺序任务
        MAS->>Leader: Collaborate(task)
        Leader-->>MAS: Assignment
        MAS->>Worker1: Collaborate(task)
        Worker1-->>MAS: Assignment
        MAS->>Worker2: Collaborate(task)
        Worker2-->>MAS: Assignment
        MAS->>Validator: Collaborate(task)
        Validator-->>MAS: Assignment
    end

    MAS->>MAS: 汇总结果
    MAS-->>Client: TaskResult
Agent 消息通信流程
sequenceDiagram
    participant Leader as Leader Agent
    participant MAS as MultiAgentSystem
    participant Worker as Worker Agent

    Leader->>MAS: 创建消息(Command)
    Note over Leader,MAS: Message{From: leader, To: worker, Type: command}

    MAS->>Worker: ReceiveMessage(msg)
    Worker->>Worker: 处理命令
    Worker-->>MAS: 返回结果

    Note over Leader,Worker: 消息类型: Request, Response, Broadcast, Command, Report, Vote
Agent 生命周期
stateDiagram-v2
    [*] --> Created: NewBaseCollaborativeAgent()
    Created --> Registered: system.RegisterAgent()
    Registered --> Idle: 等待任务
    Idle --> Executing: Collaborate() 被调用
    Executing --> Idle: 任务完成
    Idle --> Messaging: ReceiveMessage()
    Messaging --> Idle: 消息处理完成
    Registered --> Unregistered: system.UnregisterAgent()
    Unregistered --> [*]

使用方法

运行示例
cd examples/multiagent/01-basic-system
go run main.go
预期输出
╔════════════════════════════════════════════════════════════════╗
║          MultiAgentSystem 基础示例                             ║
╚════════════════════════════════════════════════════════════════╝

【步骤 1】创建 MultiAgentSystem
✓ MultiAgentSystem 创建成功

【步骤 2】创建并注册协作 Agent
✓ 注册 Agent: leader-1 (角色: leader)
✓ 注册 Agent: worker-1 (角色: worker)
✓ 注册 Agent: worker-2 (角色: worker)
✓ 注册 Agent: validator-1 (角色: validator)

【步骤 3】执行并行协作任务
✓ 任务状态: completed
✓ 执行时长: 100ms

【步骤 4】执行顺序协作任务
✓ 任务状态: completed

【步骤 5】Agent 消息通信
✓ 消息发送成功

【步骤 6】注销 Agent
✓ Agent worker-2 已注销

代码结构

01-basic-system/
├── main.go          # 示例入口
└── README.md        # 本文档
关键代码片段
创建系统和注册 Agent
// 创建多智能体系统
system := multiagent.NewMultiAgentSystem(
    logger,
    multiagent.WithMaxAgents(10),
)

// 创建并注册 Agent
agent := multiagent.NewBaseCollaborativeAgent(
    "worker-1",
    "工作者 Agent",
    multiagent.RoleWorker,
    system,
)
system.RegisterAgent("worker-1", agent)
执行协作任务
task := &multiagent.CollaborativeTask{
    ID:          "task-001",
    Name:        "数据处理",
    Type:        multiagent.CollaborationTypeParallel,
    Input:       map[string]interface{}{"data": "..."},
    Assignments: make(map[string]multiagent.Assignment),
}

result, err := system.ExecuteTask(ctx, task)
发送消息
message := multiagent.Message{
    ID:        "msg-001",
    From:      "leader-1",
    To:        "worker-1",
    Type:      multiagent.MessageTypeCommand,
    Content:   "开始处理数据",
    Timestamp: time.Now(),
}
agent.ReceiveMessage(ctx, message)

扩展阅读

Documentation

Overview

Package main 演示 MultiAgentSystem 的基本用法 本示例展示如何创建多智能体系统、注册 Agent、发送消息和执行协作任务

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL