mcpField
S
service-registry

service-registry

github.com/athola开发343113 次安装1 天前更新
代码仓库

关于 service-registry

service-registry 是用于管理多个外部服务连接的注册表模式,面向需要统一执行、健康监控或故障转移的开发者。它支持按需求选择服务,并通过统一配置和执行结果管理调用。

主要功能

  1. 01注册服务及配置认证
  2. 02统一接口执行服务任务
  3. 03检查单个或全部服务健康状态
  4. 04按任务需求选择服务
  5. 05通过健康服务实现故障转移

适用场景

  1. 01管理多个外部服务集成
  2. 02检查服务状态并筛选可用服务
  3. 03服务失败时尝试其他健康服务
  4. 04按上下文或响应速度需求选择服务

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/athola/claude-night-market --skill service-registry

安装后在 Claude Code 中输入/service-registry确认已加载。

附带文件modules/execution-patterns.mdmodules/service-config.md

详细介绍

服务注册表

概述

用于管理与外部服务连接的注册表模式。处理配置、健康检查,以及多个服务集成的执行。

适用场景

  • 管理多个外部服务。
  • 需要一致的执行接口。
  • 希望监控各项服务的健康状况。
  • 构建服务故障转移逻辑。

不适用场景

  • 无需注册表的单一服务集成

核心概念

服务配置
@dataclass
class ServiceConfig:
    name: str
    command: str
    auth_method: str  # "api_key", "oauth", "token"
    auth_env_var: str
    quota_limits: dict
    models: list[str] = field(default_factory=list)

验证: 使用 --help 标志运行命令,确认其是否可用。

执行结果
@dataclass
class ExecutionResult:
    success: bool
    stdout: str
    stderr: str
    exit_code: int
    duration: float
    tokens_used: int

验证: 使用 --help 标志运行命令,确认其是否可用。

快速入门

注册服务
from leyline.service_registry import ServiceRegistry

registry = ServiceRegistry()

registry.register(
    "gemini",
    ServiceConfig(
        name="gemini",
        command="gemini",
        auth_method="api_key",
        auth_env_var="GEMINI_API_KEY",
        quota_limits={"rpm": 60, "daily": 1000},
    ),
)

验证: 使用 --help 标志运行命令,确认其是否可用。

通过服务执行
result = registry.execute(
    service="gemini",
    prompt="Analyze this code",
    files=["src/main.py"],
    model="gemini-3-pro",
)

if result.success:
    print(result.stdout)

验证: 使用 --help 标志运行命令,确认其是否可用。

健康检查
# Check single service
status = registry.health_check("gemini")

# Check all services
all_status = registry.health_check_all()
for service, healthy in all_status.items():
    print(f"{service}: {'OK' if healthy else 'FAILED'}")

验证: 使用 --help 标志运行命令,确认其是否可用。

服务选择

自动选择
# Select best service for task
service = registry.select_service(
    requirements={"large_context": True, "fast_response": False}
)

验证: 使用 --help 标志运行命令,确认其是否可用。

故障转移模式
def execute_with_failover(prompt: str, files: list) -> ExecutionResult:
    for service in registry.get_healthy_services():
        result = registry.execute(service, prompt, files)
        if result.success:
            return result
    raise AllServicesFailedError()

验证: 使用 --help 标志运行命令,确认其是否可用。

集成模式

# In your skill's frontmatter
dependencies: [leyline:service-registry]

验证: 使用 --help 标志运行命令,确认其是否可用。

详细资源

  • 服务配置:参见 modules/service-config.md,了解配置选项。
  • 执行模式:参见 modules/execution-patterns.md,了解高级用法。

退出条件

  • 已注册并配置服务。
  • 健康检查通过。
  • 已妥善处理执行结果。

评论

支持 Markdown