好问题,这个必须查证清楚,不能拍脑袋。这个问题问得非常准。我之前讲的比喻有误导,必须纠正。
直接给结论:Tool 和 Skill 都可以单独给 Hermes 用,不必须通过 Plugin。
纠正之前的比喻
之前的比喻让人以为"锅和菜谱只能从快递箱里来"。错的。
实际上:
| 东西 | 来源有几条路 | 必须用 Plugin 吗 |
|---|---|---|
| Skill | 2 条路 | ❌ 不必须 |
| Tool | 3 条路 | ❌ 不必须 |
| Hook | 1 条路 | ✅ 必须(只有 Plugin 能注册 Hook) |
Skill 的 2 条路
路 1:直接丢目录(最简单,不用写任何代码)
文档原话:Skill 放在 ~/.hermes/skills/ 目录下,Hermes 启动时自动扫描发现。
~/.hermes/skills/
└── incident-sop/ ← 你手动建这个文件夹
└── SKILL.md ← 手动写这个文件
完事了。不需要 plugin.yaml,不需要 init.py,不需要一行 Python 代码。 Hermes 启动时扫到这个目录,自动把 Skill 加入索引。
路 2:Plugin 顺带搬运
Plugin 的功能列表里有一条:"打包技能:在加载时将 skill.md 复制到 ~/.hermes/skills/"。
说白了,Plugin 只是个搬运工 ------启动时把自带的 SKILL.md 复制到 skills 目录。最终 Skill 还是落在 ~/.hermes/skills/ 里被发现的,Plugin 只是帮你自动放过去而已。
大白话
菜谱你可以自己手写贴墙上(直接放 skills 目录),也可以买快递箱里附带的菜谱让快递员帮你贴(Plugin 自动复制)。两种方式最终菜谱都在墙上,效果一模一样。
Tool 的 3 条路
路 1:Hermes 内置(出厂自带)
这些不用你管,装了 Hermes 就有:
web_search、web_extract、terminal、read_file、write、patchbrowser_navigate、memory、session_search、cronjob、send_message...
路 2:Plugin 注册(写 Python 代码)
通过 ctx.register_tool() 注册。这条路需要 Plugin ,因为 ctx 只有 Plugin 的 register() 函数才能拿到。
路 3:MCP Server 暴露(不用写 Plugin!)
这是最关键的一条路。文档原话:
MCP 可以理解成 Agent 的"外部工具插座"。不一定要把能力写成 Hermes 原生工具,可以通过 MCP Server 暴露出来。Hermes 支持 stdio 和 HTTP 两种 MCP Server,启动时自动发现并注册工具。
MCP Server 可以用任何语言写(Java、Go、Node.js 都行),只要遵循 MCP 协议。Hermes 连上去后,自动把 MCP Server 暴露的工具变成自己的 Tool。
大白话
锅有三种来法:
- 出厂自带(Hermes 内置)
- 自己买零件焊(写 Plugin 注册 Tool)
- 叫外卖送来(接 MCP Server,别人用别的语言写的也行)
Plugin 只是第 2 条路。不想写 Python 代码,走 MCP 这条路完全不用碰 Plugin。
用你的实际场景说明
| 你的需求 | 推荐哪条路 | 要不要写 Plugin |
|---|---|---|
| 写一份"事故处置SOP"给 Agent 参考 | Skill 路1(直接丢 skills 目录) | ❌ 不用 |
| 让 Agent 能调你们的收费站 API | Tool 路2(Plugin 注册)或 Tool 路3(MCP) | 看选哪条路 |
| 让 Agent 能查数据库(NL-to-SQL) | Tool 路3(MCP,Java 写 MCP Server) | ❌ 不用,走 MCP |
| Cron 结果投递到 Web 前端 | 必须 Plugin(因为要注册 Hook) | ✅ 必须 |
| 让 Agent 知道"问数时的注意事项" | Skill 路1(直接丢 skills 目录) | ❌ 不用 |
关键:什么时候才必须用 Plugin?
只有一种情况必须用 Plugin:你需要 Hook(自动触发器)。
因为 Hook 的注册方法 ctx.register_hook() 只在 Plugin 的 register() 里能调到。Hermes 没有别的途径注册 Hook。
| 你想要的东西 | 直接放文件 | 写 Plugin | 接 MCP |
|---|---|---|---|
| Skill(菜谱) | ✅ 丢 skills 目录 | ✅ 也行 | --- |
| Tool(锅) | ❌ | ✅ 写代码 | ✅ 不用 Python |
| Hook(触发器) | ❌ | ✅ 唯一途径 | ❌ |
这对你团队意味着什么(重要)
后端组可以用 Java 写 MCP Server,完全不用碰 Python 和 Plugin。
你的后端组是 Java 栈,之前可能纠结"要不要学 Python 写 Plugin"。答案是不用:
后端组(Java):
→ 把业务系统 API 包装成 MCP Server(Java 实现)
→ Hermes 自动发现,变成 Tool
→ 不用写 Plugin,不用碰 Python
算法组:
→ 写 SKILL.md(纯 Markdown)
→ 直接放 ~/.hermes/skills/ 目录
→ 不用写 Plugin
你(架构师):
→ 只有需要 Hook 时才写 Plugin(Python)
→ 比如你的 Cron 投递插件,因为要 Hook 才必须写
这比之前说的简单多了。 大部分工作不需要写 Plugin,只有"自动触发"的需求才需要。
这回清楚了吗?要不要我把 Java MCP Server 怎么接 Hermes 这条路展开讲讲?
好,光讲比喻还是飘的。这次我把行业里已经落地的真实案例 逐个拆开,告诉你每个案例在 Hermes 里对应的是哪些 Tool、哪些 Skill、怎么打包成 Plugin。看完你就知道"别人做的那些系统,用你的 Hermes 视角看,到底开发了什么东西"。我把6 个行业真实案例 全部拆开了,每个案例都告诉你"它对应 Hermes 里哪些 Tool、哪些 Skill、怎么打包"。文档在 落地案例拆解.md,这里用大白话串一遍核心:
---## 你发现一个规律没有所有"高大上的 AI 系统",拆开就两样东西:| 真实业务 | 拆成 Hermes 是什么 ||---------|-------------------|| 你们的业务系统 API | → Tool (封装成函数) || 老师傅脑子里的操作规程 | → Skill (写成 Markdown) || 打包放一起 | → Plugin (文件夹丢进目录) |就这么简单,没有第三样了。 ---## 6 个案例,一眼看穿| 案例 | 谁做的 | Tool(锅) | Skill(菜谱) ||------|--------|-----------|-------------|| 应急值班智能体 | 云南交投+华为 | 查预案/填初报/通知部门/报送 | 应急处置SOP || AI湘伴路网智能体 | 湖南高速 | 5组Tool(监测/应急/稽核/服务/养护) | 5本SOP || 智能问数 | 你正在做 | 查DDL/查示例/校验SQL/执行SQL | 问数流程指南 || 定时巡检投递 | 你已打通 | cronjob/send_message | 无(纯自动化) || 视频监控分析 | 建议你做 | 查画面/检测异常/截图/告警 | 异常处置流程 || 收费稽核 | 各省都在做 | 查流水/检测逃费/生成证据 | 逃费判定规则 |---## 拿你自己的"智能问数"举例(你最有体感)你现在做的 NL-to-SQL,在 Hermes 里就是这么个东西:Tool = 4 把锅: - query_ddl → 从 RAGFlow 查表结构- query_qa_example → 查历史问答- validate_sql → JSQLParser 校验- execute_sql → 调你的 Java 接口执行(权限在这层卡)Skill = 一篇菜谱: markdown# 智能问数流程1. 先查DDL拿到字段定义2. 查相似问题的历史写法3. 生成SQL,校验语法4. 执行(Java层管权限)5. 结果翻译成人话注意:没指定路段默认查全线,权限不通过说"暂不可查"Plugin = 打个包: nl2sql-plugin/├── plugin.yaml + __init__.py(注册4个Tool)├── tools.py(4个函数,execute_sql调你Java接口)└── skills/nl2sql-guide/SKILL.md(上面那段流程)用户问"上个月G65收费额同比变化"→ Agent 翻菜谱 → 拿锅查DDL → 拿锅查示例 → 拿锅校验SQL → 拿锅执行 → 回复"3.2亿,同比+14.3%"。你纠结的"权限谁负责",答案就在 execute_sql 这个 Tool 的 Handler 里------它调你的 Java 接口,Java 做 RBAC,Tool 只管传结果。 ---## 给你的行动建议你现在团队要做的事,拆成三个动作:| 动作 | 谁干 | 产出 ||------|------|------|| 把业务系统 API 封装成 Tool | 后端组 | 一堆 schemas.py + tools.py || 把操作规程/SOP 写成 Skill | 算法组+业务组 | 一堆 SKILL.md || 按业务领域打包成 Plugin | 算法组 | 几个插件文件夹 |别人花几百万、搞一年做的事,你用 Hermes 这套,3 个月能出 3 个可演示的 Plugin。 差距就在"你有没有把老师傅的经验写成 Markdown、把系统 API 封成 Tool"。这回落地了吗?要不要我挑其中一个案例(比如视频监控或收费稽核)写出完整的可运行代码?