discovery

package
v0.1.0 Latest Latest
Warning

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

Go to latest
Published: Feb 20, 2026 License: MIT Imports: 15 Imported by: 0

Documentation

Overview

包 discovery 提供多智能体场景下的能力发现与匹配机制。

该包围绕“谁能做什么”这一核心问题,提供以下能力:

  • 能力登记:维护 Agent 能力、负载与元信息
  • 能力匹配:按任务描述、能力标签与策略选择候选 Agent
  • 能力编排:将多个 Agent 的能力组合成可执行方案
  • 服务发现:支持本地与网络环境下的 Agent 发现

核心组件

  • Registry:负责 Agent 能力注册、更新、删除与健康状态维护
  • Matcher:按匹配策略筛选最优候选 Agent
  • Composer:将能力需求映射到可执行的多 Agent 组合
  • Protocol:提供发现协议抽象(如本地、HTTP、多播等)
  • Service:对外统一暴露发现、匹配与组合能力

使用流程

推荐按以下顺序接入:

  1. 初始化 Discovery Service
  2. 注册 Agent 能力(从 Agent Card 或自定义信息)
  3. 根据任务与能力约束执行匹配
  4. 对复杂任务执行能力组合

匹配策略

匹配器支持多种策略,例如:

  • BestMatch:综合评分最高优先
  • LeastLoaded:优先选择负载更低的 Agent
  • HighestScore:优先能力匹配得分最高者
  • RoundRobin:轮询分配候选 Agent
  • Random:随机选择匹配结果

健康与事件

Registry 可配置周期性健康检查,自动将不健康 Agent 降级或剔除。 同时 Service 提供事件订阅能力,可监听注册、下线、健康变化等关键事件。

与 agent 包协同

discovery 可与 `agent` 执行框架联动,实现:

  • 执行前的动态能力路由
  • 执行后的能力评分回写
  • 负载与可用性驱动的持续调度优化

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func CreateAgentCard

func CreateAgentCard(name, description, url, version string, capabilities []a2a.Capability) *a2a.AgentCard

CreateAgentCard通过代理配置创建了A2A AgentCard.

func InitGlobalDiscoveryService

func InitGlobalDiscoveryService(config *ServiceConfig, logger *zap.Logger)

InitGlobal Discovery Service初始化了全球发现服务.

func InitGlobalIntegration

func InitGlobalIntegration(service *DiscoveryService, config *IntegrationConfig, logger *zap.Logger)

InitGlobal集成初始化了全球物剂发现集成.

func SetGlobalDiscoveryService

func SetGlobalDiscoveryService(service *DiscoveryService)

设置全局 发现服务设置全球发现服务.

func SetGlobalIntegration

func SetGlobalIntegration(integration *AgentDiscoveryIntegration)

SetGlobal Introduction设定了全球物剂发现集成.

Types

type AgentCapabilityProvider

type AgentCapabilityProvider interface {
	// ID 返回代理的唯一标识符 。
	ID() string

	// 名称返回代理名.
	Name() string

	// Get Capabilitys 返回代理的能力.
	GetCapabilities() []a2a.Capability

	// Get AgentCard返回代理的A2A卡.
	GetAgentCard() *a2a.AgentCard
}

Agent Capability Provider定义了提供能力的代理的接口.

type AgentDiscoveryIntegration

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

Agent Discovery Introduction提供物剂与发现系统之间的融合.

func GetGlobalIntegration

func GetGlobalIntegration() *AgentDiscoveryIntegration

Get Global Introduction返回全球代理发现集成.

func NewAgentDiscoveryIntegration

func NewAgentDiscoveryIntegration(service *DiscoveryService, config *IntegrationConfig, logger *zap.Logger) *AgentDiscoveryIntegration

NewAgent Discovery Introduction 创造了新的代理发现集成.

func (*AgentDiscoveryIntegration) ComposeAgentsForTask

func (i *AgentDiscoveryIntegration) ComposeAgentsForTask(ctx context.Context, req *CompositionRequest) (*CompositionResult, error)

Confose AgentsForTask为复杂的任务创建了代理组成.

func (*AgentDiscoveryIntegration) DiscoveryService

func (i *AgentDiscoveryIntegration) DiscoveryService() *DiscoveryService

Discovery Service返回基础的发现服务.

func (*AgentDiscoveryIntegration) FindAgentForTask

func (i *AgentDiscoveryIntegration) FindAgentForTask(ctx context.Context, taskDescription string, requiredCapabilities []string) (*AgentInfo, error)

Find AgentForTask 找到任务的最佳代理 。

func (*AgentDiscoveryIntegration) FindAgentsForTask

func (i *AgentDiscoveryIntegration) FindAgentsForTask(ctx context.Context, req *MatchRequest) ([]*MatchResult, error)

FindAgentsForTask为任务找到多个代理.

func (*AgentDiscoveryIntegration) GetRegisteredAgents

func (i *AgentDiscoveryIntegration) GetRegisteredAgents() []string

GetRegistered Agents 返回所有注册代理.

func (*AgentDiscoveryIntegration) IsAgentRegistered

func (i *AgentDiscoveryIntegration) IsAgentRegistered(agentID string) bool

代理人注册的检查。

func (*AgentDiscoveryIntegration) RecordExecution

func (i *AgentDiscoveryIntegration) RecordExecution(ctx context.Context, agentID, capabilityName string, success bool, latency time.Duration) error

RecordExecution 记录一个代理机能力的执行结果.

func (*AgentDiscoveryIntegration) RegisterAgent

物剂在发现系统登记。

func (*AgentDiscoveryIntegration) SetLoadReporter

func (i *AgentDiscoveryIntegration) SetLoadReporter(agentID string, reporter func() float64)

SetLoadReporter为代理设置了负载报告器功能.

func (*AgentDiscoveryIntegration) Start

开始整合

func (*AgentDiscoveryIntegration) Stop

停止停止整合。

func (*AgentDiscoveryIntegration) UnregisterAgent

func (i *AgentDiscoveryIntegration) UnregisterAgent(ctx context.Context, agentID string) error

未注册的代理 未经注册 从发现系统。

func (*AgentDiscoveryIntegration) UpdateAgentCapabilities

func (i *AgentDiscoveryIntegration) UpdateAgentCapabilities(ctx context.Context, agentID string) error

更新代理能力更新一个代理在发现系统中的能力.

type AgentInfo

type AgentInfo struct {
	// 卡为A2A代理卡.
	Card *a2a.AgentCard `json:"card"`

	// 状态是代理人的现状.
	Status AgentStatus `json:"status"`

	// 能力是这种代理人提供的能力清单。
	Capabilities []CapabilityInfo `json:"capabilities"`

	// 负载是代理的当前负载 (0-1).
	Load float64 `json:"load"`

	// 优先权是代理人对任务分配的优先权.
	Priority int `json:"priority"`

	// 端点是代理商的端点URL(用于远程代理).
	Endpoint string `json:"endpoint,omitempty"`

	// Is Local 表示是否为本地( 正在处理) 代理 。
	IsLocal bool `json:"is_local"`

	// 注册的At是该代理注册时.
	RegisteredAt time.Time `json:"registered_at"`

	// 最后的心跳是收到最后的心跳的时候.
	LastHeartbeat time.Time `json:"last_heartbeat"`

	// 元数据包含额外的元数据.
	Metadata map[string]string `json:"metadata,omitempty"`
}

AgentInfo包含了注册代理的详细信息.

func AgentInfoFromCard

func AgentInfoFromCard(card *a2a.AgentCard, isLocal bool) *AgentInfo

Agent InfoFromCard从A2A AgentCard中创建了AgentInfo.

type AgentStatus

type AgentStatus string

代理状态代表代理状态.

const (
	// Agent Statistics Online表示该代理在线健康.
	AgentStatusOnline AgentStatus = "online"
	// Agent StatusOffline表示代理机已下线.
	AgentStatusOffline AgentStatus = "offline"
	// Agent StatusBusy表示代理正在忙于处理任务.
	AgentStatusBusy AgentStatus = "busy"
	// 状态不健康 显示该剂是不健康的。
	AgentStatusUnhealthy AgentStatus = "unhealthy"
)

type CapabilityComposer

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

CapaliableComposer是编译器接口的默认执行. 它提供能力构成、依赖解决和冲突探测。

func NewCapabilityComposer

func NewCapabilityComposer(registry Registry, matcher Matcher, config *ComposerConfig, logger *zap.Logger) *CapabilityComposer

New CapabilityComposer)创建出一个新的能力作曲家.

func (*CapabilityComposer) ClearDependencies

func (c *CapabilityComposer) ClearDependencies()

清除依赖性清除所有注册的依赖性 。

func (*CapabilityComposer) ClearExclusiveGroups

func (c *CapabilityComposer) ClearExclusiveGroups()

ClearExclusive Groups 清除所有专属组.

func (*CapabilityComposer) Compose

作曲从多个代理中产生能力组成.

func (*CapabilityComposer) DetectConflicts

func (c *CapabilityComposer) DetectConflicts(ctx context.Context, capabilities []string) ([]Conflict, error)

侦测冲突能发现能力之间的冲突。

func (*CapabilityComposer) GetDependencies

func (c *CapabilityComposer) GetDependencies(capability string) []string

GetDependency返回一个能力的依赖性.

func (*CapabilityComposer) GetExclusiveGroups

func (c *CapabilityComposer) GetExclusiveGroups() [][]string

GetExclusive Groups 返回所有专属组 。

func (*CapabilityComposer) RegisterDependency

func (c *CapabilityComposer) RegisterDependency(capability string, dependencies []string)

登记册的依赖性对各种能力之间的依赖性进行登记。

func (*CapabilityComposer) RegisterExclusiveGroup

func (c *CapabilityComposer) RegisterExclusiveGroup(capabilities []string)

登记小组登记一组相互排斥的能力。

func (*CapabilityComposer) RegisterResourceRequirement

func (c *CapabilityComposer) RegisterResourceRequirement(req *ResourceRequirement)

登记资源需求登记能力所需资源。

func (*CapabilityComposer) ResolveDependencies

func (c *CapabilityComposer) ResolveDependencies(ctx context.Context, capabilities []string) (map[string][]string, error)

解决依赖解决了能力之间的依赖.

type CapabilityInfo

type CapabilityInfo struct {
	// 能力是A2A协议中的基础能力定义.
	Capability a2a.Capability `json:"capability"`

	// AgentID是提供这种能力的代理的身份.
	AgentID string `json:"agent_id"`

	// 代理名称是提供这种能力的代理的名称 。
	AgentName string `json:"agent_name"`

	// 地位是这一能力的现状。
	Status CapabilityStatus `json:"status"`

	// 得分是依据历史表现(0-100)而得的能力分.
	Score float64 `json:"score"`

	// 负载是代理的当前负载 (0-1).
	Load float64 `json:"load"`

	// 标记是能力分类的附加标记.
	Tags []string `json:"tags,omitempty"`

	// 元数据包含额外的元数据.
	Metadata map[string]string `json:"metadata,omitempty"`

	// 注册是登记这种能力的时候。
	RegisteredAt time.Time `json:"registered_at"`

	// 上次更新是上次更新时。
	LastUpdatedAt time.Time `json:"last_updated_at"`

	// 最后一次健康检查是最后一次健康检查的时间。
	LastHealthCheck time.Time `json:"last_health_check"`

	// 成功处决是成功处决的数量。
	SuccessCount int64 `json:"success_count"`

	// 失败是被处决的次数。
	FailureCount int64 `json:"failure_count"`

	// AvgLatency是平均行刑时间.
	AvgLatency time.Duration `json:"avg_latency"`
}

能力 信息包含关于某一能力的详细信息。

type CapabilityMatcher

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

能力Matcher是Matcher接口的默认执行. 它提供语义匹配,能力评分,和负载平衡.

func NewCapabilityMatcher

func NewCapabilityMatcher(registry Registry, config *MatcherConfig, logger *zap.Logger) *CapabilityMatcher

新能力 Matcher创建了新的能力匹配器.

func (*CapabilityMatcher) FindBestAgent

func (m *CapabilityMatcher) FindBestAgent(ctx context.Context, taskDescription string, requiredCapabilities []string) (*AgentInfo, error)

FindBestAgent 找到使用默认策略进行任务的最佳代理 。

func (*CapabilityMatcher) FindLeastLoadedAgent

func (m *CapabilityMatcher) FindLeastLoadedAgent(ctx context.Context, requiredCapabilities []string) (*AgentInfo, error)

FindLeastLoaded Agent 找到装入量最小的具有所需能力的代理.

func (*CapabilityMatcher) GetNextRoundRobin

func (m *CapabilityMatcher) GetNextRoundRobin(ctx context.Context, capabilityName string) (*AgentInfo, error)

GetNextRound Robin 返回一个给定能力的下一个代理。

func (*CapabilityMatcher) Match

func (m *CapabilityMatcher) Match(ctx context.Context, req *MatchRequest) ([]*MatchResult, error)

Match 找到匹配给定请求的代理 。

func (*CapabilityMatcher) MatchOne

func (m *CapabilityMatcher) MatchOne(ctx context.Context, req *MatchRequest) (*MatchResult, error)

MatchOne 找到指定请求的最佳匹配代理 。

func (*CapabilityMatcher) Score

func (m *CapabilityMatcher) Score(ctx context.Context, agent *AgentInfo, req *MatchRequest) (float64, error)

分数根据请求计算代理商的比分。

type CapabilityRegistry

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

能力登记是书记官处接口的默认执行。 它为特工提供内存,并提供能力信息 支持健康检查和事件通知。

func NewCapabilityRegistry

func NewCapabilityRegistry(config *RegistryConfig, logger *zap.Logger) *CapabilityRegistry

新能力登记系统建立了一个新的能力登记册。

func (*CapabilityRegistry) Close

func (r *CapabilityRegistry) Close() error

关闭注册 。

func (*CapabilityRegistry) FindCapabilities

func (r *CapabilityRegistry) FindCapabilities(ctx context.Context, capabilityName string) ([]CapabilityInfo, error)

Find Capabilitys 在所有特工中按名称找到能力.

func (*CapabilityRegistry) GetActiveAgents

func (r *CapabilityRegistry) GetActiveAgents(ctx context.Context) ([]*AgentInfo, error)

GetAactiveAgents返回所有具有在线状态的代理.

func (*CapabilityRegistry) GetAgent

func (r *CapabilityRegistry) GetAgent(ctx context.Context, agentID string) (*AgentInfo, error)

Get Agent通过身份识别找到一个特工.

func (*CapabilityRegistry) GetAgentsByCapability

func (r *CapabilityRegistry) GetAgentsByCapability(ctx context.Context, capabilityName string) ([]*AgentInfo, error)

Get AgentsBy Capability 返回所有具有特定能力的代理.

func (*CapabilityRegistry) GetCapability

func (r *CapabilityRegistry) GetCapability(ctx context.Context, agentID string, capabilityName string) (*CapabilityInfo, error)

Get Capability通过代理身份和姓名检索能力.

func (*CapabilityRegistry) Heartbeat

func (r *CapabilityRegistry) Heartbeat(ctx context.Context, agentID string) error

Heartbeat为代理更新了心跳时间戳.

func (*CapabilityRegistry) ListAgents

func (r *CapabilityRegistry) ListAgents(ctx context.Context) ([]*AgentInfo, error)

ListAgents列出所有注册代理.

func (*CapabilityRegistry) ListCapabilities

func (r *CapabilityRegistry) ListCapabilities(ctx context.Context, agentID string) ([]CapabilityInfo, error)

List Capabilitys 列出一个代理的所有能力.

func (*CapabilityRegistry) RecordExecution

func (r *CapabilityRegistry) RecordExecution(ctx context.Context, agentID string, capabilityName string, success bool, latency time.Duration) error

记录 Execution 记录一个执行结果 一个能力。

func (*CapabilityRegistry) RegisterAgent

func (r *CapabilityRegistry) RegisterAgent(ctx context.Context, info *AgentInfo) error

代理人对具有其能力的代理人进行登记。

func (*CapabilityRegistry) RegisterCapability

func (r *CapabilityRegistry) RegisterCapability(ctx context.Context, agentID string, cap *CapabilityInfo) error

注册能力登记一种代理的能力。

func (*CapabilityRegistry) Start

func (r *CapabilityRegistry) Start(ctx context.Context) error

启动登记册背景进程。

func (*CapabilityRegistry) Subscribe

func (r *CapabilityRegistry) Subscribe(handler DiscoveryEventHandler) string

订阅了发现事件。

func (*CapabilityRegistry) UnregisterAgent

func (r *CapabilityRegistry) UnregisterAgent(ctx context.Context, agentID string) error

未注册代理 未经注册代理。

func (*CapabilityRegistry) UnregisterCapability

func (r *CapabilityRegistry) UnregisterCapability(ctx context.Context, agentID string, capabilityName string) error

未注册能力不注册 一种能力。

func (*CapabilityRegistry) Unsubscribe

func (r *CapabilityRegistry) Unsubscribe(subscriptionID string)

不订阅来自发现事件的用户 。

func (*CapabilityRegistry) UpdateAgent

func (r *CapabilityRegistry) UpdateAgent(ctx context.Context, info *AgentInfo) error

更新代理更新一个代理的信息 。

func (*CapabilityRegistry) UpdateAgentLoad

func (r *CapabilityRegistry) UpdateAgentLoad(ctx context.Context, agentID string, load float64) error

更新 AgentLoad 更新一个代理的负载 。

func (*CapabilityRegistry) UpdateAgentStatus

func (r *CapabilityRegistry) UpdateAgentStatus(ctx context.Context, agentID string, status AgentStatus) error

更新代理状态更新代理状态 。

func (*CapabilityRegistry) UpdateCapability

func (r *CapabilityRegistry) UpdateCapability(ctx context.Context, agentID string, cap *CapabilityInfo) error

更新能力更新一个能力.

type CapabilityStatus

type CapabilityStatus string

能力 地位代表一种能力的地位。

const (
	// 能力状态表示该能力是主动的和可用的。
	CapabilityStatusActive CapabilityStatus = "active"
	// 能力现状 不活动表明暂时没有能力。
	CapabilityStatusInactive CapabilityStatus = "inactive"
	// 降级表明,该能力是可用的,但性能有所降低。
	CapabilityStatusDegraded CapabilityStatus = "degraded"
	// 能力状态不明表示能力状态不明.
	CapabilityStatusUnknown CapabilityStatus = "unknown"
)

type Composer

type Composer interface {
	// 作曲从多个代理中产生能力组成.
	Compose(ctx context.Context, req *CompositionRequest) (*CompositionResult, error)

	// 解决依赖解决了能力之间的依赖.
	ResolveDependencies(ctx context.Context, capabilities []string) (map[string][]string, error)

	// 侦测冲突能发现能力之间的冲突。
	DetectConflicts(ctx context.Context, capabilities []string) ([]Conflict, error)
}

作曲家定义了能力构成操作的接口.

type ComposerConfig

type ComposerConfig struct {
	// MaxComposition深度是依赖分辨率的最大深度.
	MaxCompositionDepth int `json:"max_composition_depth"`

	// 默认超时是组件操作的默认超时.
	DefaultTimeout time.Duration `json:"default_timeout"`

	// 如果并非所有能力都具备,允许部分组成。
	AllowPartialComposition bool `json:"allow_partial_composition"`

	// 启用冲突探测可以检测冲突。
	EnableConflictDetection bool `json:"enable_conflict_detection"`

	// 启用依赖性决议允许自动依赖性解析 。
	EnableDependencyResolution bool `json:"enable_dependency_resolution"`
}

作曲家Config持有能力作曲的配置.

func DefaultComposerConfig

func DefaultComposerConfig() *ComposerConfig

默认composerConfig 返回带有合理默认的 ComposerConfig 。

type CompositionRequest

type CompositionRequest struct {
	// TaskDescription是任务的自然语言描述.
	TaskDescription string `json:"task_description"`

	// 所需能力是所需能力名称的清单。
	RequiredCapabilities []string `json:"required_capabilities"`

	// 如果并非所有能力都具备,允许参与则允许部分组成。
	AllowPartial bool `json:"allow_partial"`

	// MaxAgents是包含在成分中的最大剂数.
	MaxAgents int `json:"max_agents,omitempty"`

	// 超时是组成操作的超时.
	Timeout time.Duration `json:"timeout,omitempty"`
}

要求构成要求构成能力。

type CompositionResult

type CompositionResult struct {
	// 代理是构成中的代理名单.
	Agents []*AgentInfo `json:"agents"`

	// 能力映射能力名称到代理ID.
	CapabilityMap map[string]string `json:"capability_map"`

	// 依赖是能力之间的依赖图.
	Dependencies map[string][]string `json:"dependencies,omitempty"`

	// 执行命令是推荐的执行命令.
	ExecutionOrder []string `json:"execution_order,omitempty"`

	// 冲突是已发现的冲突清单。
	Conflicts []Conflict `json:"conflicts,omitempty"`

	// 完整表示是否满足所有要求的能力。
	Complete bool `json:"complete"`

	// 缺失能力是缺失能力列表.
	MissingCapabilities []string `json:"missing_capabilities,omitempty"`
}

能力构成的结果。

type Conflict

type Conflict struct {
	// 类型是冲突的类型。
	Type ConflictType `json:"type"`

	// 能力是相互冲突的能力清单。
	Capabilities []string `json:"capabilities"`

	// 特工是卷入冲突的特工名单.
	Agents []string `json:"agents"`

	// 描述是对冲突的描述.
	Description string `json:"description"`

	// 决议就是所建议的决议。
	Resolution string `json:"resolution,omitempty"`
}

冲突是能力之间的冲突。

type ConflictType

type ConflictType string

相冲突Type定义了相冲突的类型.

const (
	// 冲突类型资源表示资源冲突.
	ConflictTypeResource ConflictType = "resource"
	// 冲突类型依赖表示依赖冲突。
	ConflictTypeDependency ConflictType = "dependency"
	// 冲突类型排除表明相互排斥的能力。
	ConflictTypeExclusive ConflictType = "exclusive"
	// 相冲突TypeVersion表示版本冲突.
	ConflictTypeVersion ConflictType = "version"
)

type DiscoveryEvent

type DiscoveryEvent struct {
	// 类型是事件类型 。
	Type DiscoveryEventType `json:"type"`

	// AgentID是涉案特工的身份证明.
	AgentID string `json:"agent_id"`

	// 能力是所涉及的能力(如果适用的话)。
	Capability string `json:"capability,omitempty"`

	// 数据包含额外事件数据.
	Data json.RawMessage `json:"data,omitempty"`

	// 时间戳是事件发生的时间 。
	Timestamp time.Time `json:"timestamp"`
}

发现Event代表了发现系统中的一个事件.

type DiscoveryEventHandler

type DiscoveryEventHandler func(event *DiscoveryEvent)

发现EventHandler是一个处理发现事件的函数.

type DiscoveryEventType

type DiscoveryEventType string

发现EventType定义了发现事件的类型.

const (
	// 发现Event Agent Registered表示某代理公司注册.
	DiscoveryEventAgentRegistered DiscoveryEventType = "agent_registered"
	// 发现Event Agent 注册未注册显示某代理未注册.
	DiscoveryEventAgentUnregistered DiscoveryEventType = "agent_unregistered"
	// 发现Event Agent Updated 显示一个代理被更新.
	DiscoveryEventAgentUpdated DiscoveryEventType = "agent_updated"
	// 发现Event Capability added表示增加了一种能力.
	DiscoveryEventCapabilityAdded DiscoveryEventType = "capability_added"
	// 发现Event Capability Removed表示能力被移除.
	DiscoveryEventCapabilityRemoved DiscoveryEventType = "capability_removed"
	// 更新后显示已更新能力。
	DiscoveryEventCapabilityUpdated DiscoveryEventType = "capability_updated"
	// 发现EventHealth检查失败 显示健康检查失败 。
	DiscoveryEventHealthCheckFailed DiscoveryEventType = "health_check_failed"
	// 发现Event Health Check Recovered 表示恢复了健康检查.
	DiscoveryEventHealthCheckRecovered DiscoveryEventType = "health_check_recovered"
)

type DiscoveryFilter

type DiscoveryFilter struct {
	// 能力过滤 通过能力名称。
	Capabilities []string `json:"capabilities,omitempty"`

	// 通过标签过滤标记 。
	Tags []string `json:"tags,omitempty"`

	// 按代理状态进行状态过滤.
	Status []AgentStatus `json:"status,omitempty"`

	// 仅针对本地代理的本地过滤器 。
	Local *bool `json:"local,omitempty"`

	// 仅用于远程代理的远程过滤器 。
	Remote *bool `json:"remote,omitempty"`
}

DiscoveryFilter定义了特工发现的过滤器.

type DiscoveryProtocol

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

发现协议是协议界面的默认执行. 它支持本地(正在处理),HTTP,以及多播发现.

func NewDiscoveryProtocol

func NewDiscoveryProtocol(config *ProtocolConfig, registry Registry, logger *zap.Logger) *DiscoveryProtocol

新发现协议创建了新的发现协议.

func (*DiscoveryProtocol) Announce

func (p *DiscoveryProtocol) Announce(ctx context.Context, info *AgentInfo) error

公告向网络宣布本地代理.

func (*DiscoveryProtocol) AnnounceRemote

func (p *DiscoveryProtocol) AnnounceRemote(ctx context.Context, serverURL string, info *AgentInfo) error

宣告向远程发现服务器发布代理消息.

func (*DiscoveryProtocol) Discover

func (p *DiscoveryProtocol) Discover(ctx context.Context, filter *DiscoveryFilter) ([]*AgentInfo, error)

发现在网络上发现了特工.

func (*DiscoveryProtocol) DiscoverRemote

func (p *DiscoveryProtocol) DiscoverRemote(ctx context.Context, serverURL string, filter *DiscoveryFilter) ([]*AgentInfo, error)

DiscoverRemote从远程发现服务器中发现了特工.

func (*DiscoveryProtocol) Start

func (p *DiscoveryProtocol) Start(ctx context.Context) error

启动发现协议 。

func (*DiscoveryProtocol) Stop

func (p *DiscoveryProtocol) Stop(ctx context.Context) error

停止停止发现协议。

func (*DiscoveryProtocol) Subscribe

func (p *DiscoveryProtocol) Subscribe(handler func(*AgentInfo)) string

订阅代理通知 。

func (*DiscoveryProtocol) Unsubscribe

func (p *DiscoveryProtocol) Unsubscribe(subscriptionID string)

从代理通知中取消订阅。

type DiscoveryService

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

发现服务为代理能力发现提供了一个统一的接口. 它将注册,配对,作曲,协议合并为单一服务.

func GetGlobalDiscoveryService

func GetGlobalDiscoveryService() *DiscoveryService

获取全球 Discovery Service返回了全球发现服务.

func NewDiscoveryService

func NewDiscoveryService(config *ServiceConfig, logger *zap.Logger) *DiscoveryService

新发现服务创建了新的发现服务.

func (*DiscoveryService) ComposeCapabilities

func (s *DiscoveryService) ComposeCapabilities(ctx context.Context, req *CompositionRequest) (*CompositionResult, error)

由多种物剂构成的能力组成。

func (*DiscoveryService) Composer

func (s *DiscoveryService) Composer() Composer

作曲家返回了基础作曲家.

func (*DiscoveryService) DiscoverAgents

func (s *DiscoveryService) DiscoverAgents(ctx context.Context, filter *DiscoveryFilter) ([]*AgentInfo, error)

发现特工在网络上发现了特工.

func (*DiscoveryService) FindAgent

func (s *DiscoveryService) FindAgent(ctx context.Context, taskDescription string, requiredCapabilities []string) (*AgentInfo, error)

FindAgent 找到任务的最佳代理 。

func (*DiscoveryService) FindAgents

func (s *DiscoveryService) FindAgents(ctx context.Context, req *MatchRequest) ([]*MatchResult, error)

FindAgents发现多个符合标准的代理.

func (*DiscoveryService) FindCapabilities

func (s *DiscoveryService) FindCapabilities(ctx context.Context, capabilityName string) ([]CapabilityInfo, error)

Find Capabilitys 在所有特工中按名称找到能力.

func (*DiscoveryService) GetAgent

func (s *DiscoveryService) GetAgent(ctx context.Context, agentID string) (*AgentInfo, error)

Get Agent通过身份识别找到一个特工.

func (*DiscoveryService) GetCapability

func (s *DiscoveryService) GetCapability(ctx context.Context, agentID, capabilityName string) (*CapabilityInfo, error)

Get Capability通过代理身份和姓名检索能力.

func (*DiscoveryService) ListAgents

func (s *DiscoveryService) ListAgents(ctx context.Context) ([]*AgentInfo, error)

ListAgents列出所有注册代理.

func (*DiscoveryService) Matcher

func (s *DiscoveryService) Matcher() Matcher

匹配者返回基本匹配者 。

func (*DiscoveryService) Protocol

func (s *DiscoveryService) Protocol() Protocol

协议返回基本协议。

func (*DiscoveryService) RecordExecution

func (s *DiscoveryService) RecordExecution(ctx context.Context, agentID, capabilityName string, success bool, latency time.Duration) error

记录 Execution 记录一个执行结果 一个能力。

func (*DiscoveryService) RegisterAgent

func (s *DiscoveryService) RegisterAgent(ctx context.Context, info *AgentInfo) error

代理人在发现处登记。

func (*DiscoveryService) RegisterDependency

func (s *DiscoveryService) RegisterDependency(capability string, dependencies []string)

登记册的依赖性对各种能力之间的依赖性进行登记。

func (*DiscoveryService) RegisterExclusiveGroup

func (s *DiscoveryService) RegisterExclusiveGroup(capabilities []string)

登记小组登记一组相互排斥的能力。

func (*DiscoveryService) RegisterLocalAgent

func (s *DiscoveryService) RegisterLocalAgent(info *AgentInfo) error

注册本地代理 注册本地代理自动心跳。

func (*DiscoveryService) Registry

func (s *DiscoveryService) Registry() Registry

登记册返回基本登记册。

func (*DiscoveryService) Start

func (s *DiscoveryService) Start(ctx context.Context) error

启动发现服务.

func (*DiscoveryService) Stop

func (s *DiscoveryService) Stop(ctx context.Context) error

停止发现服务。

func (*DiscoveryService) Subscribe

func (s *DiscoveryService) Subscribe(handler DiscoveryEventHandler) string

订阅了发现事件。

func (*DiscoveryService) SubscribeToAnnouncements

func (s *DiscoveryService) SubscribeToAnnouncements(handler func(*AgentInfo)) string

订阅通知订阅代理通知 。

func (*DiscoveryService) UnregisterAgent

func (s *DiscoveryService) UnregisterAgent(ctx context.Context, agentID string) error

未注册代理 未经注册的代理 从发现服务。

func (*DiscoveryService) Unsubscribe

func (s *DiscoveryService) Unsubscribe(subscriptionID string)

不订阅来自发现事件的用户 。

func (*DiscoveryService) UnsubscribeFromAnnouncements

func (s *DiscoveryService) UnsubscribeFromAnnouncements(subscriptionID string)

从代理通知中取消订阅 。

func (*DiscoveryService) UpdateLocalAgentLoad

func (s *DiscoveryService) UpdateLocalAgentLoad(load float64) error

更新本地代理Load 更新本地代理的负载 。

type HealthCheckResult

type HealthCheckResult struct {
	// 代理ID是代理的身份证明.
	AgentID string `json:"agent_id"`

	// 健康指示剂是否健康.
	Healthy bool `json:"healthy"`

	// 状态是代理状态.
	Status AgentStatus `json:"status"`

	// 短暂性是健康检查的短暂性。
	Latency time.Duration `json:"latency"`

	// 信件是可选信件 。
	Message string `json:"message,omitempty"`

	// 时间戳是进行健康检查的时候。
	Timestamp time.Time `json:"timestamp"`
}

健康检查结果代表健康检查的结果。

type HealthChecker

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

健康检查员定期对注册的代理人进行健康检查。

func NewHealthChecker

func NewHealthChecker(config *HealthCheckerConfig, registry *CapabilityRegistry, logger *zap.Logger) *HealthChecker

新健康检查器创造了一个新的健康检查器。

func (*HealthChecker) Start

func (h *HealthChecker) Start(ctx context.Context) error

开始体检

func (*HealthChecker) Stop

func (h *HealthChecker) Stop(ctx context.Context) error

停止停止健康检查。

type HealthCheckerConfig

type HealthCheckerConfig struct {
	// 间距是指健康检查之间的间隔.
	Interval time.Duration

	// 暂停是健康检查的暂停。
	Timeout time.Duration

	// 体质不健康 阈值是标记不健康前连续失败的次数.
	UnhealthyThreshold int
}

健康检查员Config拥有健康检查员的配置.

type IntegrationConfig

type IntegrationConfig struct {
	// 自动登记使代理自动登记成为可能。
	AutoRegister bool `json:"auto_register"`

	// 自动注销记录器允许在代理停止时自动注销登记 。
	AutoUnregister bool `json:"auto_unregister"`

	// 加载报告Interval是报告代理加载的间隔.
	LoadReportInterval time.Duration `json:"load_report_interval"`

	// 默认端点是本地代理的默认端点 。
	DefaultEndpoint string `json:"default_endpoint"`

	// 默认版本是代理的默认版本.
	DefaultVersion string `json:"default_version"`
}

集成Config持有代理发现集成的配置.

func DefaultIntegrationConfig

func DefaultIntegrationConfig() *IntegrationConfig

默认集成Config 返回带有合理默认的集成Config 。

type MatchRequest

type MatchRequest struct {
	// TaskDescription是任务的自然语言描述.
	TaskDescription string `json:"task_description"`

	// 所需能力是所需能力名称的清单。
	RequiredCapabilities []string `json:"required_capabilities,omitempty"`

	// 首选能力是首选能力名列表.
	PreferredCapabilities []string `json:"preferred_capabilities,omitempty"`

	// 需求 标记是需要标记的列表.
	RequiredTags []string `json:"required_tags,omitempty"`

	// 被排除的代理人是被排除的代理人身份列表.
	ExcludedAgents []string `json:"excluded_agents,omitempty"`

	// MinScore是所需的最低能力分数.
	MinScore float64 `json:"min_score,omitempty"`

	// MaxLoad是最大可接受负载.
	MaxLoad float64 `json:"max_load,omitempty"`

	// 限制是返回的最大结果数。
	Limit int `json:"limit,omitempty"`

	// 战略是使用的匹配战略。
	Strategy MatchStrategy `json:"strategy,omitempty"`

	// 超时是匹配操作的超时.
	Timeout time.Duration `json:"timeout,omitempty"`
}

Match Request 是寻找匹配代理的请求 。

type MatchResult

type MatchResult struct {
	// 代理是匹配的代理信息。
	Agent *AgentInfo `json:"agent"`

	// 匹配能力是匹配能力列表.
	MatchedCapabilities []CapabilityInfo `json:"matched_capabilities"`

	// 得分为总比分(0-100).
	Score float64 `json:"score"`

	// 信心是比赛的信心水平 (0-1).
	Confidence float64 `json:"confidence"`

	// 理由就是比赛的原因
	Reason string `json:"reason,omitempty"`
}

MatchResult代表能力匹配的结果.

type MatchStrategy

type MatchStrategy string

MatchStrategy定义了匹配代理的战略.

const (
	// MatchStrategyBestMatch返回最佳匹配代理.
	MatchStrategyBestMatch MatchStrategy = "best_match"
	// MatchStrategyLeastLoaded 返回最小装入的匹配代理 。
	MatchStrategyLeastLoaded MatchStrategy = "least_loaded"
	// MatchStrategy 最高分返回最高分匹配代理.
	MatchStrategyHighestScore MatchStrategy = "highest_score"
	// Match Strategy Round Robin 以圆形Robin顺序返回代理.
	MatchStrategyRoundRobin MatchStrategy = "round_robin"
	// MatchStrategyRandom 返回随机匹配代理.
	MatchStrategyRandom MatchStrategy = "random"
)

type Matcher

type Matcher interface {
	// Match 找到匹配给定请求的代理 。
	Match(ctx context.Context, req *MatchRequest) ([]*MatchResult, error)

	// MatchOne 找到指定请求的最佳匹配代理 。
	MatchOne(ctx context.Context, req *MatchRequest) (*MatchResult, error)

	// 分数根据请求计算代理商的比分。
	Score(ctx context.Context, agent *AgentInfo, req *MatchRequest) (float64, error)
}

Matcher定义了能力匹配操作的接口.

type MatcherConfig

type MatcherConfig struct {
	// 默认策略是默认匹配策略.
	DefaultStrategy MatchStrategy `json:"default_strategy"`

	// 默认限制是匹配结果的默认限制 。
	DefaultLimit int `json:"default_limit"`

	// 默认超时是匹配操作的默认超时.
	DefaultTimeout time.Duration `json:"default_timeout"`

	// MinScore Threershold是比赛的最低得分门槛.
	MinScoreThreshold float64 `json:"min_score_threshold"`

	// 载重是积分(0-1)中载重.
	LoadWeight float64 `json:"load_weight"`

	// 分数(ScoreWight)是分数(0-1)中能力分数的权重.
	ScoreWeight float64 `json:"score_weight"`

	// latencyWight是积分(0-1)中耐久的重量.
	LatencyWeight float64 `json:"latency_weight"`

	// 启用语义匹配可实现语义匹配任务描述.
	EnableSemanticMatching bool `json:"enable_semantic_matching"`

	// 语义相似 阈值是语义相似性的阈值.
	SemanticSimilarityThreshold float64 `json:"semantic_similarity_threshold"`
}

MatcherConfig持有能力匹配器的配置.

func DefaultMatcherConfig

func DefaultMatcherConfig() *MatcherConfig

默认 MatcherConfig 返回带有合理默认的 MatcherConfig 。

type Protocol

type Protocol interface {
	// 启动发现协议 。
	Start(ctx context.Context) error

	// 停止停止发现协议。
	Stop(ctx context.Context) error

	// 公告向网络宣布本地代理.
	Announce(ctx context.Context, info *AgentInfo) error

	// 发现在网络上发现了特工.
	Discover(ctx context.Context, filter *DiscoveryFilter) ([]*AgentInfo, error)

	// 订阅代理通知 。
	Subscribe(handler func(*AgentInfo)) string

	// 从代理通知中取消订阅。
	Unsubscribe(subscriptionID string)
}

协议定义了服务发现协议操作的接口.

type ProtocolConfig

type ProtocolConfig struct {
	// 启用本地启用本地( 正在处理中) 发现 。
	EnableLocal bool `json:"enable_local"`

	// 启用 HTTP 启用基于 HTTP 的远程发现 。
	EnableHTTP bool `json:"enable_http"`

	// HTTPPort是HTTP发现服务器的端口.
	HTTPPort int `json:"http_port"`

	// HTTPHost是HTTP发现服务器的主机.
	HTTPHost string `json:"http_host"`

	// 启用多播可以基于多播的发现.
	EnableMulticast bool `json:"enable_multicast"`

	// 多播Address是多播组地址.
	MulticastAddress string `json:"multicast_address"`

	// 多播口是多播口.
	MulticastPort int `json:"multicast_port"`

	// 公告Interval是定期公告的间隔.
	AnnounceInterval time.Duration `json:"announce_interval"`

	// 发现 超时是发现操作的超时.
	DiscoveryTimeout time.Duration `json:"discovery_timeout"`

	// MaxPeers是跟踪的最大对等者数量.
	MaxPeers int `json:"max_peers"`
}

协议Config持有发现协议的配置.

func DefaultProtocolConfig

func DefaultProtocolConfig() *ProtocolConfig

默认协议 Config 返回带有合理默认的协议 Config 。

type Registry

type Registry interface {
	// 代理人对具有其能力的代理人进行登记。
	RegisterAgent(ctx context.Context, info *AgentInfo) error

	// 未注册代理 未经注册代理。
	UnregisterAgent(ctx context.Context, agentID string) error

	// 更新代理更新一个代理的信息 。
	UpdateAgent(ctx context.Context, info *AgentInfo) error

	// Get Agent通过身份识别找到一个特工.
	GetAgent(ctx context.Context, agentID string) (*AgentInfo, error)

	// ListAgents列出所有注册代理.
	ListAgents(ctx context.Context) ([]*AgentInfo, error)

	// 注册能力登记一种代理的能力。
	RegisterCapability(ctx context.Context, agentID string, cap *CapabilityInfo) error

	// 未注册能力不注册 一种能力。
	UnregisterCapability(ctx context.Context, agentID string, capabilityName string) error

	// 更新能力更新一个能力.
	UpdateCapability(ctx context.Context, agentID string, cap *CapabilityInfo) error

	// Get Capability通过代理身份和姓名检索能力.
	GetCapability(ctx context.Context, agentID string, capabilityName string) (*CapabilityInfo, error)

	// List Capabilitys 列出一个代理的所有能力.
	ListCapabilities(ctx context.Context, agentID string) ([]CapabilityInfo, error)

	// Find Capabilitys 在所有特工中按名称找到能力.
	FindCapabilities(ctx context.Context, capabilityName string) ([]CapabilityInfo, error)

	// 更新代理状态更新代理状态 。
	UpdateAgentStatus(ctx context.Context, agentID string, status AgentStatus) error

	// 更新 AgentLoad 更新一个代理的负载 。
	UpdateAgentLoad(ctx context.Context, agentID string, load float64) error

	// 记录 Execution 记录一个执行结果 一个能力。
	RecordExecution(ctx context.Context, agentID string, capabilityName string, success bool, latency time.Duration) error

	// 订阅了发现事件。
	Subscribe(handler DiscoveryEventHandler) string

	// 不订阅来自发现事件的用户 。
	Unsubscribe(subscriptionID string)

	// 关闭注册 。
	Close() error
}

登记册界定了能力登记册业务的接口。

type RegistryConfig

type RegistryConfig struct {
	// 健康检查Interval是健康检查的间隔.
	HealthCheckInterval time.Duration `json:"health_check_interval"`

	// 健康检查 暂停是健康检查的暂停。
	HealthCheckTimeout time.Duration `json:"health_check_timeout"`

	// 体质不健康 阈值是指在标记不健康之前,健康检查失败的次数.
	UnhealthyThreshold int `json:"unhealthy_threshold"`

	// 移除Unhealty 之后是清除不健康剂的期限。
	RemoveUnhealthyAfter time.Duration `json:"remove_unhealthy_after"`

	// 启用健康检查可以定期进行健康检查。
	EnableHealthCheck bool `json:"enable_health_check"`

	// 默认能力分数是新能力的默认分数.
	DefaultCapabilityScore float64 `json:"default_capability_score"`
}

登记册Config拥有能力登记册的配置。

func DefaultRegistryConfig

func DefaultRegistryConfig() *RegistryConfig

默认 RegistryConfig 返回带有合理默认的注册Config 。

type ResourceRequirement

type ResourceRequirement struct {
	// 能力 名称是能力的名称.
	CapabilityName string `json:"capability_name"`

	// CPUCores是所需的CPU核心.
	CPUCores float64 `json:"cpu_cores"`

	// 内存MB是MB中所需的内存.
	MemoryMB int `json:"memory_mb"`

	// GPUrered表示是否需要GPU.
	GPURequired bool `json:"gpu_required"`

	// 专属资源是一份必须专属的资源清单。
	ExclusiveResources []string `json:"exclusive_resources"`
}

资源需求界定了能力所需资源。

type ServiceConfig

type ServiceConfig struct {
	// 书记官处配置
	Registry *RegistryConfig `json:"registry"`

	// 匹配器配置
	Matcher *MatcherConfig `json:"matcher"`

	// 作曲家配置
	Composer *ComposerConfig `json:"composer"`

	// 协议配置
	Protocol *ProtocolConfig `json:"protocol"`

	// 启用自动注册可自动注册本地代理。
	EnableAutoRegistration bool `json:"enable_auto_registration"`

	// Heartbeat Interval是发送心跳的间隔.
	HeartbeatInterval time.Duration `json:"heartbeat_interval"`

	// 启用度量衡启用了度量衡收集 。
	EnableMetrics bool `json:"enable_metrics"`
}

ServiceConfig持有发现服务配置.

func DefaultServiceConfig

func DefaultServiceConfig() *ServiceConfig

默认ServiceConfig 返回带有合理默认的ServiceConfig 。

Jump to

Keyboard shortcuts

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