Agent Registry & Discovery — 动态 Agent 能力注册与路由
Skill-Agent-Registry-Discovery · 10-MAS
causalexperimentforecastingmulti_agentpricing供应链与补货MAS与智能体工程定价与利润风控与合规WF-A 智能补货WF-D 选品扫描WF-F 动态定价
实现难度⭐⭐⭐☆☆
业务优先级⭐⭐⭐⭐⭐
业务视角
适用角色运营负责人 / CTO · 产品经理 · CEO
适用平台Amazon PPC + 库存 + 定价 多 Agent 协作 · TikTok 内容运营流水线
什么情况下用运营任务太碎,选品/定价/广告/客服同时跑,人手严重不足;重复性运营动作需要 7×24 响应但没有足够人力
成功是什么样的多个 AI Agent 协作自动完成跨系统运营任务,运营团队人效提升 3-5 倍,7×24 无人值守运营
业务痛点
1. 解决的问题
静态工具注册(配置文件写死 Agent 列表)无法应对 MAS 三大动态性:① Agent 数量动态扩缩;② 能力随版本演化;③ 健康状态实时变化(宕机/过载/SLO 降级)。
2. 核心算法逻辑
静态工具注册(配置文件写死 Agent 列表)无法应对 MAS 三大动态性:① Agent 数量动态扩缩;② 能力随版本演化;③ 健康状态实时变化(宕机/过载/SLO 降级)。
3. 业务应用场景
场景一:WF-A 补货 Agent 灰度升级
新版补货 Agent v2(支持多货币汇率预测)上线时自动向 Registry 注册,声明新能力 `["replenishment", "fx_prediction"]`。Registry 广播变更通知,Orchestrator 灰度路由 10% 流量至 v2,每 5 分钟检查 SLO:v2 连续 3 次 fitness > v1 且 HEALTHY,自动升权重至 100%,v1 优雅下线(deregister)。
场景二:WF-D 选品 Agent 池(多能力调度)
4. 输入数据要求
请查看原始代码模板获取输入规格。
5. 输出结果
请查看原始代码模板获取输出规格。
6. 业务价值 / ROI
- ROI:MAS 从静态配置升级为动态服务网格,支持热更新和蓝绿发布,Agent 版本迭代零停机;Fitness 路由减少低质量决策暴露率
- 难度:⭐⭐⭐☆☆ | 优先级:⭐⭐⭐⭐⭐
7. 代码模板
代码块数量:1 · 路径:paper2skills-code/mas/agent_registry_discovery
"""
Agent Registry & Discovery — 动态注册与路由
来源:Agent Registry 2025-2026 + MCP/A2A 协议扩展
"""
import time
from dataclasses import dataclass, field
from enum import Enum
from typing import List, Dict, Optional, Set
class HealthStatus(Enum):
HEALTHY = "healthy"
DEGRADED = "degraded"
DOWN = "down"
class RoutingStrategy(Enum):
FITNESS_FIRST = "fitness_first"
LATENCY_FIRST = "latency_first"
ROUND_ROBIN = "round_robin"
@dataclass
class AgentCapability:
skill_names: List[str]
domains: List[str]
slo_target: float # 如 0.999
version: str
fitness: float = 1.0 # 0.0-1.0,综合延迟+成功率
p95_latency_ms: float = 100.0
def matches(self, required_skills: List[str], domain: Optional[str] = None) -> float:
if not required_skills:
return 0.0
required_set: Set[str] = set(required_skills)
own_set: Set[str] = set(self.skill_names)
intersection = required_set & own_set
union = required_set | own_set
jaccard = len(intersection) / len(union) if union else 0.0
domain_bonus = 0.1 if domain and domain in self.domains else 0.0
return min(1.0, jaccard + domain_bonus)
@dataclass
class AgentRegistration:
agent_id: str
endpoint: str
capabilities: AgentCapability
health_status: HealthStatus = HealthStatus.HEALTHY
last_heartbeat: float = field(default_factory=time.time)
registered_at: float = field(default_factory=time.time)
_consecutive_failures: int = 0
def update_heartbeat(self) -> None:
self.last_heartbeat = time.time()
self._consecutive_failures = 0
self.health_status = HealthStatus.HEALTHY
def mark_failure(self) -> None:
self._consecutive_failures += 1
8. 论文来源
未自动抽取;请查看原始 Skill 卡片。