Hermes Agent自定义技能开发从入门到精通全流程教程
摘要
想让你的 Hermes Agent 真正具备行动力,从单纯的问答机器人进化为每日自动执行任务的数字
想让你的 Hermes Agent 真正具备行动力,从单纯的问答机器人进化为每日自动执行任务的数字助手——例如定时备份项目文件、从飞书群提取日报并生成周报、调用内部 API 将测试用例同步到禅道。你需要亲手编写一个自定义技能:支持自然语言触发、带参数校验、并能写入记忆。下面分步骤拆解实现过程。

核心原理:Hermes Agent 通过 skills/ 目录下的子目录来识别并加载技能。你需要先搭建目录结构,然后编写主逻辑和元数据配置,最后修改 config.yaml 中的 skills_dir 路径,重启后新技能立即生效。
创建技能目录与基础文件结构
第一步,进入 Hermes Agent 项目根目录,检查是否存在 skills/ 目录。如果没有,手动执行 mkdir -p skills 创建。
然后在 skills/ 下新建一个以功能命名的子目录,例如 daily_report_generator。注意,【目录名严禁包含空格或中文】,因为它将作为技能的唯一标识符。
在该子目录中,创建两个必需文件:__init__.py(保留为空即可)和 main.py(主逻辑的入口文件)。
编写可执行的技能主逻辑(main.py)
打开 skills/daily_report_generator/main.py,按照以下模板编写:
第一行必须是文档字符串,用三重双引号包裹,清晰说明技能用途、所需参数和返回值。例如:"""生成飞书日报汇总为 Markdown 周报。参数:days_back (int, 默认7) —— 回溯天数;output_path (str, 可选) —— 输出路径。返回:生成的文件路径。"""
接下来,定义主函数 execute,该函数必须接受一个 kwargs 字典参数,并返回任意 JSON-serializable 类型(如字符串、字典、列表)。不要添加类型注解,Hermes 运行时会自动注入参数值。
函数体内可以调用 Python 标准库或已安装的第三方包(例如 requests、markdown),但有一个硬性约束:【禁止编写可能阻塞主线程的无限循环,也不允许发起没有设置超时的网络请求】,否则会导致整个 Agent 挂起。
声明技能元数据(skill.yaml)
在 skills/daily_report_generator/ 目录中新建 skill.yaml 文件。这个文件相当于技能的身份证,字段必须完整,缩进严格采用 2空格。
参考示例如下:
name: daily_report_generator
description: 从飞书群自动抓取日报并生成周报 Markdown 文件
tags: [report, feishu, automation]
parameters:
days_back:
type: integer
default: 7
description: 回溯天数,用于拉取历史日报
output_path:
type: string
required: false
description: 指定输出文件路径,留空则使用默认路径
其中 name 必须与目录名完全一致;parameters 中每个参数的 type 仅支持 string、integer、boolean 或 number;【required 缺省时默认为 false】。
启用并验证新技能
完成上述步骤后,还需要几步才能让 Hermes 识别新技能。
首先,停止当前运行的 Hermes Agent(使用 Ctrl+C 或 pkill -f hermes)。
然后,在项目根目录执行 hermes skill list——你可能会发现新技能没有出现。这是因为 Hermes 默认只加载 skills/ 下一级目录中的技能,而你的技能位于二级子目录中。
解决方法:编辑项目根目录的 config.yaml,找到 skills_dir 配置项,将其值改为 "./skills/**"(注意末尾两个星号),保存退出。
接下来重启 Hermes:直接输入 hermes。进入交互模式后,输入 /skill list,确认 daily_report_generator 已出现在列表中。
最后,用自然语言进行测试:请用 daily_report_generator 抓取过去5天的飞书日报,输出到 ./weekly-report.md。Hermes 会自动解析参数并调用你编写的 execute 函数。完成。
来源:互联网
本网站新闻资讯均来自公开渠道,力求准确但不保证绝对无误,内容观点仅代表作者本人,与本站无关。若涉及侵权,请联系我们处理。本站保留对声明的修改权,最终解释权归本站所有。