Skip to content

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包含工具
webweb_search, web_extract
terminalterminal, process
fileread_file, write_file, patch, search_files
browserbrowser_navigate, browser_click, browser_type, ...
skillsskills_list, skill_view, skill_manage
memorymemory
todotodo
clarifyclarify
cronjobcronjob
delegationdelegate_task
code_executionexecute_code
visionvision_analyze
image_genimage_generate
ttstext_to_speech
session_searchsession_search
computer_usecomputer_use
homeassistanthomeassistant (if configured)
kanbankanban tools

工具分发

text
model_tools.py
python
def get_tool_definitions(agent):
    """从 registry 获取所有 enabled 工具 schema"""

def handle_function_call(name, args, agent):
    """查找 handler 并执行"""

工具执行引擎

text
agent/tool_executor.py
python
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
    """

三方对比

维度PiOpenCodeHermes
Tool 数量~11~20+~40+
注册方式数组Effect ServiceImport 自注册
分组类别Toolsets
执行顺序materialize→settle并发/顺序
守卫canExecutePermissioncheck_fn
扩展ExtensionPluginPlugin hooks
MCP
非 Coding 工具多(TTS/Vision/HA/Kanban)

Powered by VitePress