hierarchical

package
v1.2.0 Latest Latest
Warning

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

Go to latest
Published: Feb 25, 2026 License: MIT Imports: 8 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type AssignmentStrategy

type AssignmentStrategy interface {
	// 选择工作者
	SelectWorker(ctx context.Context, task *Task, workers []agent.Agent, status map[string]*WorkerStatus) (agent.Agent, error)
}

AssignmentStrategy 任务分配策略

type HierarchicalAgent

type HierarchicalAgent struct {
	*agent.BaseAgent
	// contains filtered or unexported fields
}

HierarchicalAgent 层次化 Agent 实现 Supervisor-Worker 模式

func NewHierarchicalAgent

func NewHierarchicalAgent(
	base *agent.BaseAgent,
	supervisor agent.Agent,
	workers []agent.Agent,
	config HierarchicalConfig,
	logger *zap.Logger,
) *HierarchicalAgent

NewHierarchicalAgent 创建层次化 Agent

func (*HierarchicalAgent) Execute

func (h *HierarchicalAgent) Execute(ctx context.Context, input *agent.Input) (*agent.Output, error)

Execute 执行任务(层次化)

type HierarchicalConfig

type HierarchicalConfig struct {
	MaxWorkers        int           `json:"max_workers"`         // 最大工作者数量
	TaskTimeout       time.Duration `json:"task_timeout"`        // 任务超时
	EnableRetry       bool          `json:"enable_retry"`        // 启用重试
	MaxRetries        int           `json:"max_retries"`         // 最大重试次数
	WorkerSelection   string        `json:"worker_selection"`    // 工作者选择策略
	EnableLoadBalance bool          `json:"enable_load_balance"` // 启用负载均衡
}

HierarchicalConfig 层次化配置

func DefaultHierarchicalConfig

func DefaultHierarchicalConfig() HierarchicalConfig

DefaultHierarchicalConfig 默认配置

type LeastLoadedStrategy

type LeastLoadedStrategy struct{}

LeastLoadedStrategy 最少负载策略

func (*LeastLoadedStrategy) SelectWorker

func (s *LeastLoadedStrategy) SelectWorker(ctx context.Context, task *Task, workers []agent.Agent, status map[string]*WorkerStatus) (agent.Agent, error)

type RandomStrategy

type RandomStrategy struct{}

RandomStrategy 随机策略

func (*RandomStrategy) SelectWorker

func (s *RandomStrategy) SelectWorker(ctx context.Context, task *Task, workers []agent.Agent, status map[string]*WorkerStatus) (agent.Agent, error)

type RoundRobinStrategy

type RoundRobinStrategy struct {
	// contains filtered or unexported fields
}

RoundRobinStrategy 轮询策略

func (*RoundRobinStrategy) SelectWorker

func (s *RoundRobinStrategy) SelectWorker(ctx context.Context, task *Task, workers []agent.Agent, status map[string]*WorkerStatus) (agent.Agent, error)

type Task

type Task struct {
	ID           string
	Type         string
	Input        *agent.Input
	Priority     int
	Deadline     time.Time
	Dependencies []string
	Metadata     map[string]any

	// 执行状态
	Status      TaskStatus
	AssignedTo  string
	StartedAt   time.Time
	CompletedAt time.Time
	Result      *agent.Output
	Error       error
	RetryCount  int
}

Task 任务

type TaskCoordinator

type TaskCoordinator struct {
	// contains filtered or unexported fields
}

TaskCoordinator 任务协调器

func NewTaskCoordinator

func NewTaskCoordinator(workers []agent.Agent, config HierarchicalConfig, logger *zap.Logger) *TaskCoordinator

NewTaskCoordinator 创建任务协调器

func (*TaskCoordinator) ExecuteTask

func (c *TaskCoordinator) ExecuteTask(ctx context.Context, task *Task) (*agent.Output, error)

ExecuteTask 执行任务

func (*TaskCoordinator) GetWorkerStatus

func (c *TaskCoordinator) GetWorkerStatus() map[string]*WorkerStatus

GetWorkerStatus 获取工作者状态

type TaskStatus

type TaskStatus string

TaskStatus 任务状态

const (
	TaskStatusPending   TaskStatus = "pending"
	TaskStatusAssigned  TaskStatus = "assigned"
	TaskStatusRunning   TaskStatus = "running"
	TaskStatusCompleted TaskStatus = "completed"
	TaskStatusFailed    TaskStatus = "failed"
	TaskStatusCancelled TaskStatus = "cancelled"
)

type WorkerStatus

type WorkerStatus struct {
	AgentID        string
	Status         string // idle, busy, error
	CurrentTask    *Task
	CompletedTasks int
	FailedTasks    int
	AvgDuration    time.Duration
	LastActive     time.Time
	Load           float64 // 0-1
}

WorkerStatus 工作者状态

Jump to

Keyboard shortcuts

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