📋 工具注册与发现

随着 Agent 系统规模增长,工具数量从十几个增长到数百个。工具注册中心负责统一管理工具的元数据、版本、权限和生命周期,实现工具的动态发现安全调用

🏛️ 注册中心设计

工具注册中心是工具系统的"服务目录",存储所有可用工具的元信息和配置。

核心数据结构

{
  "tool_id": "weather_api_v2",
  "name": "get_weather",
  "display_name": "天气查询",
  "description": "获取指定城市的实时天气信息",
  "version": "2.1.0",
  "category": "external_api",
  "schema": { /* JSON Schema */ },
  "handler": {
    "type": "mcp",            // mcp | http | local | grpc
    "endpoint": "mcp://weather-server/tools/get_weather"
  },
  "permissions": ["read:weather"],
  "rate_limit": { "max_per_minute": 60 },
  "timeout_ms": 5000,
  "retry": { "max_retries": 2, "backoff": "exponential" },
  "status": "active",        // active | deprecated | disabled
  "owner": "platform-team",
  "created_at": "2025-01-15T08:00:00Z",
  "updated_at": "2025-05-20T10:30:00Z"
}

注册中心架构模式

模式描述适用场景
本地配置 工具定义写在代码/YAML 配置文件中 工具数 < 20,单机部署
集中式注册中心 独立的注册中心服务,工具提供者主动注册 工具数 20-200,多服务共享
分布式注册 基于 etcd/Consul 的分布式注册发现 大规模微服务架构,需高可用
MCP 原生发现 通过 MCP 协议的 tools/list 自动发现 全面采用 MCP 生态

🔍 动态工具发现

动态发现让 Agent 无需重启即可感知新工具的加入和旧工具的变更。

1
推送模式(Push)

工具提供者注册/更新时主动通知注册中心,注册中心广播变更事件。适合实时性要求高的场景。

2
拉取模式(Pull)

Agent 定期轮询注册中心,获取工具列表的增量变更。简单可靠,但有一定延迟。

3
混合模式

正常情况通过事件推送实时更新,同时保留定期全量同步作为兜底。兼顾实时性和可靠性。

发现方式实时性复杂度可靠性
Push(事件驱动)✅ 实时🔴 高(需消息队列)⚠️ 需处理断连重推
Pull(定期轮询)⚠️ 延迟(秒-分钟)🟢 低✅ 高
混合(Push + Pull)✅ 准实时🟡 中✅ 高

📦 工具版本管理

策略描述优点缺点
语义化版本 MAJOR.MINOR.PATCH,兼容性由版本号表达 ✅ 业界标准 ⚠️ 依赖开发者遵守规范
多版本并存 同时运行 v1、v2,逐步迁移调用方 ✅ 平滑升级 🔴 维护成本高
Schema 兼容检测 自动检测新版本 Schema 是否向后兼容 ✅ 自动化 ⚠️ 仅检测结构,不检测语义
灰度发布 按比例将部分流量切到新版本 ✅ 风险可控 ⚠️ 实现复杂

🛡️ 权限控制

工具系统的安全核心在于谁(Agent/用户)可以调用哪个工具的哪些操作

权限模型

🔹 RBAC(基于角色)

  • 角色:admin / developer / viewer
  • 权限:绑定到角色而非用户
  • 适用:组织架构清晰的企业场景
  • 优点:管理简单,符合直觉

🔹 ABAC(基于属性)

  • 属性:用户标签、请求时间、数据敏感度
  • 策略:动态计算是否允许
  • 适用:细粒度、动态的授权场景
  • 优点:灵活,支持上下文感知

关键安全措施

1
最小权限原则

Agent 默认无任何工具权限,显式授予所需的最小权限集

2
用户确认门禁

高风险操作(删除、写入、支付)需用户二次确认

3
调用审计日志

全程记录工具调用的请求参数、返回结果、耗时、调用方身份

4
速率限制

按工具/用户/Agent 维度设置调用频率上限,防止滥用

📊 方案对比总览

方案注册方式发现机制版本管理权限模型适用规模成熟度
LangChain Tool代码定义无(手动管理)无内置无内置成熟
MCP Server进程启动tools/list 自动协议协商Host 层控制快速成长
自定义注册中心 + DBAPI 注册轮询/事件版本字段RBAC定制化
服务网格(如 Istio)Sidecar 注入自动服务发现路由规则mTLS + RBAC超大成熟