Hermes 工具系统
工具注册中心
text
tools/registry.py核心对象:
python
class ToolRegistry:
"""All tools self-register here on import."""
def register(self, name, toolset, schema, handler, check_fn=None):
"""每个 tools/*.py 在 import 时调用此方法"""
def get_definitions(self):
"""返回 OpenAI 格式的工具 schema"""
def get_handler(self, name):
"""返回工具处理函数"""自注册模式
每个 tools/*.py 文件的 bottom 有一行:
python
# tools/terminal_tool.py
def terminal_handler(...): ...
registry.register(
name='terminal',
toolset='terminal',
schema={...}, # OpenAI function schema
handler=terminal_handler,
check_fn=lambda: backend == 'local' # 服务门控
)import 触发注册,所有工具自动加入 registry。
Toolsets
text
toolsets.py_HERMES_CORE_TOOLS 定义了默认工具列表。TOOLSETS 定义分组:
| Toolset | 包含工具 |
|---|---|
web | web_search, web_extract |
terminal | terminal, process |
file | read_file, write_file, patch, search_files |
browser | browser_navigate, browser_click, browser_type, ... |
skills | skills_list, skill_view, skill_manage |
memory | memory |
todo | todo |
clarify | clarify |
cronjob | cronjob |
delegation | delegate_task |
code_execution | execute_code |
vision | vision_analyze |
image_gen | image_generate |
tts | text_to_speech |
session_search | session_search |
computer_use | computer_use |
homeassistant | homeassistant (if configured) |
kanban | kanban tools |
工具分发
text
model_tools.pypython
def get_tool_definitions(agent):
"""从 registry 获取所有 enabled 工具 schema"""
def handle_function_call(name, args, agent):
"""查找 handler 并执行"""工具执行引擎
text
agent/tool_executor.pypython
def execute_tool_calls_concurrent(tool_calls, agent):
"""并发执行,同组工具一起跑"""
def execute_tool_calls_sequential(tool_calls, agent):
"""顺序执行,一个完成再下一个"""
async def execute_single_tool_call(call, agent):
"""单个调用:
1. 解析参数
2. tool search unwrap
3. toolset scope gate
4. middleware
5. plugin pre_tool_call
6. guardrail
7. checkpoint preflight
8. dangerous command checkpoint
9. 执行
10. result bounding
11. plugin post_tool_call
12. callback
"""三方对比
| 维度 | Pi | OpenCode | Hermes |
|---|---|---|---|
| Tool 数量 | ~11 | ~20+ | ~40+ |
| 注册方式 | 数组 | Effect Service | Import 自注册 |
| 分组 | 无 | 类别 | Toolsets |
| 执行 | 顺序 | materialize→settle | 并发/顺序 |
| 守卫 | canExecute | Permission | check_fn |
| 扩展 | Extension | Plugin | Plugin hooks |
| MCP | ❌ | ✅ | ✅ |
| 非 Coding 工具 | ❌ | 少 | 多(TTS/Vision/HA/Kanban) |