Documentation
¶
Overview ¶
包 discovery 提供多智能体场景下的能力发现与匹配机制。
该包围绕“谁能做什么”这一核心问题,提供以下能力:
- 能力登记:维护 Agent 能力、负载与元信息
- 能力匹配:按任务描述、能力标签与策略选择候选 Agent
- 能力编排:将多个 Agent 的能力组合成可执行方案
- 服务发现:支持本地与网络环境下的 Agent 发现
核心组件 ¶
- Registry:负责 Agent 能力注册、更新、删除与健康状态维护
- Matcher:按匹配策略筛选最优候选 Agent
- Composer:将能力需求映射到可执行的多 Agent 组合
- Protocol:提供发现协议抽象(如本地、HTTP、多播等)
- Service:对外统一暴露发现、匹配与组合能力
使用流程 ¶
推荐按以下顺序接入:
- 初始化 Discovery Service
- 注册 Agent 能力(从 Agent Card 或自定义信息)
- 根据任务与能力约束执行匹配
- 对复杂任务执行能力组合
匹配策略 ¶
匹配器支持多种策略,例如:
- BestMatch:综合评分最高优先
- LeastLoaded:优先选择负载更低的 Agent
- HighestScore:优先能力匹配得分最高者
- RoundRobin:轮询分配候选 Agent
- Random:随机选择匹配结果
健康与事件 ¶
Registry 可配置周期性健康检查,自动将不健康 Agent 降级或剔除。 同时 Service 提供事件订阅能力,可监听注册、下线、健康变化等关键事件。
与 agent 包协同 ¶
discovery 可与 `agent` 执行框架联动,实现:
- 执行前的动态能力路由
- 执行后的能力评分回写
- 负载与可用性驱动的持续调度优化
Index ¶
- func CreateAgentCard(name, description, url, version string, capabilities []a2a.Capability) *a2a.AgentCard
- func InitGlobalDiscoveryService(config *ServiceConfig, logger *zap.Logger)
- func InitGlobalIntegration(service *DiscoveryService, config *IntegrationConfig, logger *zap.Logger)
- func SetGlobalDiscoveryService(service *DiscoveryService)
- func SetGlobalIntegration(integration *AgentDiscoveryIntegration)
- type AgentCapabilityProvider
- type AgentDiscoveryIntegration
- func (i *AgentDiscoveryIntegration) ComposeAgentsForTask(ctx context.Context, req *CompositionRequest) (*CompositionResult, error)
- func (i *AgentDiscoveryIntegration) DiscoveryService() *DiscoveryService
- func (i *AgentDiscoveryIntegration) FindAgentForTask(ctx context.Context, taskDescription string, requiredCapabilities []string) (*AgentInfo, error)
- func (i *AgentDiscoveryIntegration) FindAgentsForTask(ctx context.Context, req *MatchRequest) ([]*MatchResult, error)
- func (i *AgentDiscoveryIntegration) GetRegisteredAgents() []string
- func (i *AgentDiscoveryIntegration) IsAgentRegistered(agentID string) bool
- func (i *AgentDiscoveryIntegration) RecordExecution(ctx context.Context, agentID, capabilityName string, success bool, ...) error
- func (i *AgentDiscoveryIntegration) RegisterAgent(ctx context.Context, agent AgentCapabilityProvider) error
- func (i *AgentDiscoveryIntegration) SetLoadReporter(agentID string, reporter func() float64)
- func (i *AgentDiscoveryIntegration) Start(ctx context.Context) error
- func (i *AgentDiscoveryIntegration) Stop(ctx context.Context) error
- func (i *AgentDiscoveryIntegration) UnregisterAgent(ctx context.Context, agentID string) error
- func (i *AgentDiscoveryIntegration) UpdateAgentCapabilities(ctx context.Context, agentID string) error
- type AgentInfo
- type AgentStatus
- type CapabilityComposer
- func (c *CapabilityComposer) ClearDependencies()
- func (c *CapabilityComposer) ClearExclusiveGroups()
- func (c *CapabilityComposer) Compose(ctx context.Context, req *CompositionRequest) (*CompositionResult, error)
- func (c *CapabilityComposer) DetectConflicts(ctx context.Context, capabilities []string) ([]Conflict, error)
- func (c *CapabilityComposer) GetDependencies(capability string) []string
- func (c *CapabilityComposer) GetExclusiveGroups() [][]string
- func (c *CapabilityComposer) RegisterDependency(capability string, dependencies []string)
- func (c *CapabilityComposer) RegisterExclusiveGroup(capabilities []string)
- func (c *CapabilityComposer) RegisterResourceRequirement(req *ResourceRequirement)
- func (c *CapabilityComposer) ResolveDependencies(ctx context.Context, capabilities []string) (map[string][]string, error)
- type CapabilityInfo
- type CapabilityMatcher
- func (m *CapabilityMatcher) FindBestAgent(ctx context.Context, taskDescription string, requiredCapabilities []string) (*AgentInfo, error)
- func (m *CapabilityMatcher) FindLeastLoadedAgent(ctx context.Context, requiredCapabilities []string) (*AgentInfo, error)
- func (m *CapabilityMatcher) GetNextRoundRobin(ctx context.Context, capabilityName string) (*AgentInfo, error)
- func (m *CapabilityMatcher) Match(ctx context.Context, req *MatchRequest) ([]*MatchResult, error)
- func (m *CapabilityMatcher) MatchOne(ctx context.Context, req *MatchRequest) (*MatchResult, error)
- func (m *CapabilityMatcher) Score(ctx context.Context, agent *AgentInfo, req *MatchRequest) (float64, error)
- type CapabilityRegistry
- func (r *CapabilityRegistry) Close() error
- func (r *CapabilityRegistry) FindCapabilities(ctx context.Context, capabilityName string) ([]CapabilityInfo, error)
- func (r *CapabilityRegistry) GetActiveAgents(ctx context.Context) ([]*AgentInfo, error)
- func (r *CapabilityRegistry) GetAgent(ctx context.Context, agentID string) (*AgentInfo, error)
- func (r *CapabilityRegistry) GetAgentsByCapability(ctx context.Context, capabilityName string) ([]*AgentInfo, error)
- func (r *CapabilityRegistry) GetCapability(ctx context.Context, agentID string, capabilityName string) (*CapabilityInfo, error)
- func (r *CapabilityRegistry) Heartbeat(ctx context.Context, agentID string) error
- func (r *CapabilityRegistry) ListAgents(ctx context.Context) ([]*AgentInfo, error)
- func (r *CapabilityRegistry) ListCapabilities(ctx context.Context, agentID string) ([]CapabilityInfo, error)
- func (r *CapabilityRegistry) RecordExecution(ctx context.Context, agentID string, capabilityName string, success bool, ...) error
- func (r *CapabilityRegistry) RegisterAgent(ctx context.Context, info *AgentInfo) error
- func (r *CapabilityRegistry) RegisterCapability(ctx context.Context, agentID string, cap *CapabilityInfo) error
- func (r *CapabilityRegistry) Start(ctx context.Context) error
- func (r *CapabilityRegistry) Subscribe(handler DiscoveryEventHandler) string
- func (r *CapabilityRegistry) UnregisterAgent(ctx context.Context, agentID string) error
- func (r *CapabilityRegistry) UnregisterCapability(ctx context.Context, agentID string, capabilityName string) error
- func (r *CapabilityRegistry) Unsubscribe(subscriptionID string)
- func (r *CapabilityRegistry) UpdateAgent(ctx context.Context, info *AgentInfo) error
- func (r *CapabilityRegistry) UpdateAgentLoad(ctx context.Context, agentID string, load float64) error
- func (r *CapabilityRegistry) UpdateAgentStatus(ctx context.Context, agentID string, status AgentStatus) error
- func (r *CapabilityRegistry) UpdateCapability(ctx context.Context, agentID string, cap *CapabilityInfo) error
- type CapabilityStatus
- type Composer
- type ComposerConfig
- type CompositionRequest
- type CompositionResult
- type Conflict
- type ConflictType
- type DiscoveryEvent
- type DiscoveryEventHandler
- type DiscoveryEventType
- type DiscoveryFilter
- type DiscoveryProtocol
- func (p *DiscoveryProtocol) Announce(ctx context.Context, info *AgentInfo) error
- func (p *DiscoveryProtocol) AnnounceRemote(ctx context.Context, serverURL string, info *AgentInfo) error
- func (p *DiscoveryProtocol) Discover(ctx context.Context, filter *DiscoveryFilter) ([]*AgentInfo, error)
- func (p *DiscoveryProtocol) DiscoverRemote(ctx context.Context, serverURL string, filter *DiscoveryFilter) ([]*AgentInfo, error)
- func (p *DiscoveryProtocol) Start(ctx context.Context) error
- func (p *DiscoveryProtocol) Stop(ctx context.Context) error
- func (p *DiscoveryProtocol) Subscribe(handler func(*AgentInfo)) string
- func (p *DiscoveryProtocol) Unsubscribe(subscriptionID string)
- type DiscoveryService
- func (s *DiscoveryService) ComposeCapabilities(ctx context.Context, req *CompositionRequest) (*CompositionResult, error)
- func (s *DiscoveryService) Composer() Composer
- func (s *DiscoveryService) DiscoverAgents(ctx context.Context, filter *DiscoveryFilter) ([]*AgentInfo, error)
- func (s *DiscoveryService) FindAgent(ctx context.Context, taskDescription string, requiredCapabilities []string) (*AgentInfo, error)
- func (s *DiscoveryService) FindAgents(ctx context.Context, req *MatchRequest) ([]*MatchResult, error)
- func (s *DiscoveryService) FindCapabilities(ctx context.Context, capabilityName string) ([]CapabilityInfo, error)
- func (s *DiscoveryService) GetAgent(ctx context.Context, agentID string) (*AgentInfo, error)
- func (s *DiscoveryService) GetCapability(ctx context.Context, agentID, capabilityName string) (*CapabilityInfo, error)
- func (s *DiscoveryService) ListAgents(ctx context.Context) ([]*AgentInfo, error)
- func (s *DiscoveryService) Matcher() Matcher
- func (s *DiscoveryService) Protocol() Protocol
- func (s *DiscoveryService) RecordExecution(ctx context.Context, agentID, capabilityName string, success bool, ...) error
- func (s *DiscoveryService) RegisterAgent(ctx context.Context, info *AgentInfo) error
- func (s *DiscoveryService) RegisterDependency(capability string, dependencies []string)
- func (s *DiscoveryService) RegisterExclusiveGroup(capabilities []string)
- func (s *DiscoveryService) RegisterLocalAgent(info *AgentInfo) error
- func (s *DiscoveryService) Registry() Registry
- func (s *DiscoveryService) Start(ctx context.Context) error
- func (s *DiscoveryService) Stop(ctx context.Context) error
- func (s *DiscoveryService) Subscribe(handler DiscoveryEventHandler) string
- func (s *DiscoveryService) SubscribeToAnnouncements(handler func(*AgentInfo)) string
- func (s *DiscoveryService) UnregisterAgent(ctx context.Context, agentID string) error
- func (s *DiscoveryService) Unsubscribe(subscriptionID string)
- func (s *DiscoveryService) UnsubscribeFromAnnouncements(subscriptionID string)
- func (s *DiscoveryService) UpdateLocalAgentLoad(load float64) error
- type HealthCheckResult
- type HealthChecker
- type HealthCheckerConfig
- type IntegrationConfig
- type MatchRequest
- type MatchResult
- type MatchStrategy
- type Matcher
- type MatcherConfig
- type Protocol
- type ProtocolConfig
- type Registry
- type RegistryConfig
- type ResourceRequirement
- type ServiceConfig
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 (i *AgentDiscoveryIntegration) RegisterAgent(ctx context.Context, agent AgentCapabilityProvider) error
物剂在发现系统登记。
func (*AgentDiscoveryIntegration) SetLoadReporter ¶
func (i *AgentDiscoveryIntegration) SetLoadReporter(agentID string, reporter func() float64)
SetLoadReporter为代理设置了负载报告器功能.
func (*AgentDiscoveryIntegration) Start ¶
func (i *AgentDiscoveryIntegration) Start(ctx context.Context) error
开始整合
func (*AgentDiscoveryIntegration) Stop ¶
func (i *AgentDiscoveryIntegration) Stop(ctx context.Context) error
停止停止整合。
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包含了注册代理的详细信息.
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 (c *CapabilityComposer) Compose(ctx context.Context, req *CompositionRequest) (*CompositionResult, error)
作曲从多个代理中产生能力组成.
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) 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) 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) 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) 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) 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) Start ¶
func (s *DiscoveryService) Start(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
新健康检查器创造了一个新的健康检查器。
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 。