需通过工具注册机制集成自定义工具,包括:一、标准tools/目录开发流程;二、skills/模块注入;三、动态运行时注册;四、docker容器挂载扩展。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

如果您希望扩展Hermes Agent的功能以支持特定业务逻辑或系统操作,则需通过工具注册机制集成自定义工具。以下是实现该目标的多种可行路径:
一、基于tools/目录的标准工具开发流程
此方法遵循Hermes Agent默认工具结构规范,适用于大多数本地执行类功能,工具将被自动扫描并加载。
1、在项目根目录下的tools/子目录中新建Python文件,例如tools/file_compressor.py。
2、定义核心工具函数,确保其接收args字典参数并返回可序列化结果。
3、编写符合JSON Schema规范的工具描述,包含name、description及parameters字段。
4、调用tools.registry.register()函数完成注册,传入函数对象与Schema字典。
5、确认tools/__init__.py中已导入新工具模块,或检查tools/registry.py是否启用自动发现机制。
二、通过skills/模块注入工具能力
该方式将工具作为技能组件的一部分进行管理,适用于需配合上下文感知、记忆或条件触发的高级场景。
1、在skills/目录下创建新技能子目录,如skills/business/reporting/。
2、在该目录中添加tool.py实现具体逻辑,并在同级__init__.py中暴露工具函数。
3、编写skill.yaml声明工具元信息,包括依赖项、权限范围和执行约束。
4、修改skills/registry.py中的ENABLED_SKILLS列表,加入新技能标识符,例如"business.reporting"。
5、启动Agent时确保--enable-skills参数已启用,或在cli-config.yaml中设置skills.enabled: true。
三、动态注册运行时工具
适用于调试阶段快速验证逻辑,或需根据环境变量、配置参数实时生成工具实例的情形。
1、在任意初始化脚本(如hermes_constants.py或自定义setup.py)中导入tools.registry。
2、构造匿名函数或闭包,封装外部服务客户端、API密钥或路径参数。
3、使用registry.register_dynamic()方法注册,传入动态生成的函数与临时Schema。
4、调用registry.reload_tools()强制刷新工具缓存,使新注册项立即生效。
5、通过hermes doctor --tools命令验证工具是否出现在可用列表中,输出应包含新工具的name字段。
四、Docker容器内挂载工具模块
当Hermes Agent以容器化方式部署时,可通过卷挂载方式注入工具,避免镜像重建。
1、准备工具代码目录,结构与本地tools/一致,包含__init__.py和有效模块文件。
2、启动容器时使用-v参数将该目录挂载至容器内/app/tools/external/路径。
3、修改environments/default.yaml中的tool_directories配置项,追加/app/tools/external。
4、确保容器内Python路径包含该目录,可在entrypoint.sh中执行export PYTHONPATH="/app/tools/external:$PYTHONPATH"。
5、重启容器后检查日志,应出现“Loaded N external tools”提示行。











