Layer 1

工具系统 - 从硬编码到注册表

理解工具注册、加载、调用的完整生命周期

对比 硬编码 vs Hermes 注册表方式
硬编码方式 步骤 1: 手动维护工具列表 tools = [tool1, tool2, tool3, ...] 新增工具需要修改此处代码 问题: 容易遗漏,重复劳动 步骤 2: 手动建立名称映射 from tools import tool1, tool2 tool_map = {"tool1": tool1, ...} 问题: 命名不一致导致调用失败 结果 难以条件过滤 难以动态启用 配置分散 无法按需加载 Hermes: 注册表模式 中心注册表 ToolRegistry _tools = {} 工具注册 @register_tool 自动注册到字典 条件过滤 check_fn() 判断可用性 如: API Key 是否配置 Hermes 优势 声明式: @工具自动注册 条件化: API Key 未配置则自动隐藏 工具集: 支持按组过滤 内置 72 + MCP 100+ = 172 工具 72 + 100 = 172 可用工具
统计 72 内置工具 + MCP 扩展
搜索类 web_search 等 5 个工具 终端类 terminal 等 8 个工具 文件类 read_file 等 12 个工具 浏览器类 browser_* 10 个工具 视觉类 vision_* 4 个工具 TTS/音频 6 个工具 代码执行 3 个工具 记忆工具 3 个工具 技能工具 5 个工具 MCP 扩展 100+ 个工具 总计: 72 内置 + 100+ MCP = 172+ 可用工具

声明式注册

  • @register_tool 注解
  • 自动发现零配置
  • 新增工具无感知

条件过滤

  • check_fn 环境检查
  • API Key 自动隐藏
  • 依赖不满足则过滤

MCP 扩展

  • 集成 MCP 协议
  • 100+ 外部工具
  • 统一调用接口