需编写自定义插件扩展hermes agent功能,路径包括:一、python函数工具;二、mcp协议对接外部服务;三、markdown技能封装;四、cli命令行插件;五、telegram bot桥接。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

如果您希望为Hermes Agent扩展特定功能,但当前内置工具无法满足需求,则需要编写自定义插件。以下是实现该目标的多种技术路径:
一、基于Python函数开发基础工具插件
此方法适用于需调用系统命令、访问本地文件或执行轻量逻辑的场景。工具以标准Python函数形式实现,并通过元数据注册至Hermes Agent运行时环境。
1、在~/.hermes/tools/目录下新建Python文件,例如custom_notify.py
2、定义工具函数,确保函数签名包含明确参数与类型注解,例如:def send_desktop_notification(title: str, message: str) -> str:
3、在函数内部使用subprocess.run调用notify-send(Linux)或osascript(macOS)发送系统通知
4、在同一文件中定义get_tools()函数,返回包含工具名称、描述、参数规范的字典列表,其中"required"字段必须列出所有必填参数
5、保存后重启hermes进程,执行hermes tools list验证工具是否被识别
二、通过MCP协议对接外部服务插件
此方法适用于需复用已有微服务、避免重复开发逻辑或需跨语言协作的场景。Hermes Agent通过MCP(Model Control Protocol)标准与外部工具服务器通信,实现能力解耦。
1、启动一个独立HTTP服务,监听localhost:8081,实现/tools/list和/tools/{tool_name}/invoke端点
2、在~/.hermes/config.yaml中添加mcp_servers配置段,指定服务地址与认证密钥(如启用)
3、确保服务响应/tools/list时返回符合MCP v0.3规范的工具元数据数组,包含name、description、input_schema
4、在Hermes Agent启动前设置环境变量MCP_SERVERS_ENABLED=true
5、执行hermes chat并输入触发语句,例如“推送一条测试通知”,验证MCP工具是否被正确路由与执行
三、创建Skill级封装插件(Markdown驱动)
此方法适用于无需编码、仅需编排现有工具完成结构化任务的场景。通过纯文本Markdown文件定义技能流程,由Hermes Agent自动解析并调度底层工具链。
1、在~/.hermes/skills/custom/目录下新建文件,例如daily-backup.md
2、在Frontmatter中声明name、description、triggers(至少两个关键词)及tools_required(如read_file、write_file、shell)
3、正文中使用## 执行步骤二级标题,分条列出操作逻辑,例如:“读取~/projects/config.yaml中的备份路径”、“执行tar -czf命令打包指定目录”、“将归档文件写入/backup/并记录时间戳”
4、保存后运行hermes skills reload强制重载技能列表
5、在交互中输入任一triggers关键词,例如“执行每日备份”,观察Agent是否按步骤调用对应工具并输出结果
四、构建CLI命令行插件并注入工具链
此方法适用于已存在成熟CLI工具且需快速集成的场景。无需修改原工具代码,仅通过Shell包装层将其纳入Hermes Agent统一调度体系。
1、编写Bash脚本~/bin/hermes-git-status,接收--repo参数并执行git -C "$1" status --short
2、赋予执行权限:chmod +x ~/bin/hermes-git-status
3、在~/.hermes/tools/cli_tools.py中定义工具函数,使用subprocess.run调用该脚本,并捕获stdout作为返回值
4、在get_tools()返回的工具列表中,为该CLI工具指定"name": "git_status"及对应参数描述
5、确认~/bin已在$PATH中,重启Hermes Agent后测试指令“检查项目A的Git状态”是否触发脚本执行
五、开发Telegram Bot桥接插件实现双向消息扩展
此方法适用于需将第三方Bot能力无缝嵌入Hermes Agent对话流的场景,例如接入天气Bot、翻译Bot或支付Bot。
1、申请Telegram Bot Token,并记录bot_id与webhook_url
2、在~/.hermes/tools/telegram_bridge.py中实现forward_to_bot(chat_id: str, text: str) -> dict:函数,使用requests.post向https://api.telegram.org/bot{TOKEN}/sendMessage转发消息
3、解析Bot返回的JSON响应,提取result.text字段作为工具输出
4、在工具元数据中声明"parameters"包含chat_id与text,并标注"type": "string"
5、在Skill中调用该工具,例如在weather-report.md中添加步骤:“调用forward_to_bot向天气Bot发送‘北京天气’”
6、验证最终回复是否包含Telegram Bot返回的原始天气信息文本











