【AI 工具】Hermes Agent Plugin
Tool 让 Hermes 能执行动作,Skill 告诉 Hermes怎样正确完成任务,Plugin 则把代码接入 Hermes 的运行过程。本文先厘清三者的关系,再通过 Ponytail、Superpowers 和 Web Search Plus 三个案例说明 Plugin 的实际用途。
Plugin、Tool 和 Skill 的关系
这三个概念并不处于同一层级。
- Tool 是提供给模型调用的具体能力,例如读取文件、执行命令、搜索网页或发送消息。
- Skill 是按需加载的知识和工作流程,告诉 Agent 何时做、按什么顺序做,以及如何验收结果。
- Plugin 是可安装的运行时扩展,可以向 Hermes 注册 Tool、Skill、斜杠命令、生命周期 Hook、Provider 或平台适配器。
可以把它们理解成:
1 | Tool:手脚,决定“能做什么” |
例如,terminal 是 Tool,因为它真正执行命令;“发布 Hexo 博客”适合写成 Skill,因为它主要规定构建、验证和提交顺序;而一个同时注册搜索 Tool、初始化逻辑和配置入口的扩展,更适合做成 Plugin。
Plugin 也不等于 Tool 的集合。它可以只提供 Hook,也可以同时打包多个 Skill,甚至完全不增加新的 Tool。
Hook 是什么
Hook 可以理解为 Hermes 生命周期中的“插槽”。Plugin 在特定事件发生时自动运行代码,而不需要模型主动调用。
常见场景包括:
pre_llm_call:每次调用模型前注入上下文或调整行为。post_tool_call:工具执行后记录日志、检查结果或触发后续动作。on_session_start:会话开始时进行初始化。pre_gateway_dispatch:Gateway 分发消息前进行处理。
Tool 和 Hook 的触发方式不同:
1 | Tool:模型判断需要后主动调用 |
因此,需要“每轮都执行”“会话启动时执行”或“任何文件修改后都检查”的逻辑,通常应由 Plugin 的 Hook 完成,而不是写进 Skill 后期待模型一直记住。
案例一:Ponytail 持续约束编码风格
Ponytail 的目标是让 Coding Agent 像经验丰富但讨厌过度设计的开发者一样工作:优先复用现有代码、标准库和平台原生能力,只实现当前真正需要的部分。
它的核心规则本身属于 Skill。仓库中包含 ponytail、ponytail-review、ponytail-audit 等多个 SKILL.md,用于指导编码、审查和技术债分析。
但 Ponytail 不只是 Skill。它还通过 Plugin 提供:
pre_llm_call和pre_gateway_dispatchHook,在运行过程中持续注入当前规则。/ponytail lite|full|ultra|off等斜杠命令。- 当前强度模式的运行时状态。
- 一组统一安装和管理的关联 Skills。
1 | 用户切换到 ultra 模式 |
如果只安装它的 Skill,编码原则依然可用,但无法同样可靠地实现每轮注入、模式切换和命令控制。这正是它采用 Plugin 形态的原因。
1 | hermes plugins install DietrichGebert/ponytail --enable |
案例二:Superpowers 自动引导工程流程
Superpowers 是一套软件开发方法论,包含需求梳理、方案设计、测试驱动开发、系统化调试、代码审查和完成前验证等 Skills。
它与 Ponytail 的共同点是:主要价值都来自知识和流程。区别在于,Superpowers 更关注“当前任务应该进入哪套工程流程”。
Hermes 适配器使用 pre_llm_call Hook,在新会话第一次调用模型时自动注入 bootstrap,要求 Agent 先判断并加载合适的 Skill:
1 | 收到开发任务 |
单独复制这些 Skills 也能使用,但 Plugin 可以保证每个新会话先获得统一入口,减少 Agent 忘记检查 Skill 的概率。
1 | hermes plugins install obra/superpowers --enable |
案例三:Web Search Plus 增加新的搜索能力
Web Search Plus 展示了另一类 Plugin:它不是主要改变行为方式,而是直接增加 Hermes 原本没有的执行能力。
它向 Hermes 注册两个 Tool:
1 | web_search_plus |
Plugin 内部负责对接多个搜索和网页提取 Provider,并处理:
- Provider 选择与自动路由。
- 超时、失败重试和降级。
- 缓存与质量评估。
- API Key 和配置管理。
- 统一的结构化返回结果。
它的调用过程类似:
1 | Agent 调用 web_search_plus |
这些工作需要真实运行 Python 并调用外部服务,不可能只靠一份 SKILL.md 实现。Skill 最多只能告诉 Agent“如何搜索”,而 Plugin 才能把新的搜索函数注册为可调用 Tool。
1 | hermes plugins install robbyczgw-cla/hermes-web-search-plus --enable |
什么时候应该开发 Plugin
判断标准不是功能看起来是否“像产品”,而是它是否需要进入 Hermes 的运行时。
适合使用 Skill:
- 已有 Tool 足够完成任务。
- 主要需求是沉淀知识、流程、规范和避坑经验。
- Agent 只需在相关任务中按需加载。
适合使用 Tool:
- Hermes 缺少一个明确动作,例如调用内部 API、查询数据库或控制设备。
- 该动作需要结构化参数和可验证返回值。
适合使用 Plugin:
- 需要注册一个或多个自定义 Tool。
- 需要在会话、模型调用或工具调用前后自动运行代码。
- 需要维护运行时状态或提供斜杠命令。
- 需要把 Tool、Skill、Hook 和配置作为一个整体安装、升级和卸载。
- 需要扩展模型、Memory、搜索、浏览器或 Gateway 平台等 Provider。
最实用的判断口诀是:
1 | 传授做法 → Skill |
安装 Plugin 前要注意什么
Plugin 会执行代码,权限边界明显高于纯文本 Skill。安装第三方 Plugin 前应至少检查:
- 仓库作者、维护状态和最近更新记录。
plugin.yaml声明的 Tool、Hook、命令和环境变量。- Python、JavaScript 或 Shell 代码是否会访问文件、网络和凭证。
- Hook 会在哪些事件中自动运行。
- 是否真的需要全部能力,能否用更简单的 Skill 或 MCP Server 替代。
安装后需要重启 Hermes 才能加载新 Plugin。可以通过以下命令查看和管理:
1 | hermes plugins list |
总结
Plugin 不是“把 Hermes 做成产品”的工具,而是 Hermes 的运行时扩展机制。它可以提供新 Tool,也可以通过 Hook 改变执行流程,还可以把 Skills、命令和配置组合成一个可安装模块。
Ponytail 说明了 Plugin 如何持续约束 Agent 行为;Superpowers 说明了 Plugin 如何自动引导 Skill 工作流;Web Search Plus 则说明了 Plugin 如何增加真正的新工具能力。理解这三个例子后,Plugin、Skill 和 Tool 的边界就比较清晰了。
参考资料
- Hermes Agent Plugin 文档: https://hermes-agent.nousresearch.com/docs/user-guide/features/plugins/
- Hermes Agent Plugin 开发指南: https://hermes-agent.nousresearch.com/docs/developer-guide/plugins/
- Hermes Agent Skills 文档: https://hermes-agent.nousresearch.com/docs/user-guide/features/skills/
- Hermes Agent Tools 参考: https://hermes-agent.nousresearch.com/docs/reference/tools-reference/
- Ponytail: https://github.com/DietrichGebert/ponytail
- Superpowers: https://github.com/obra/superpowers
- Web Search Plus: https://github.com/robbyczgw-cla/hermes-web-search-plus
