专栏系列回顾
第一篇:认知导论|从 Harness 工程到 Hermes,五大核心概念厘清
第二篇:核心内核拆解|五大支柱深度解析(Memory/Skill/Soul/Crons/自进化闭环)
第三篇:保姆级实战部署|本地 / VPS 从零搭建 Hermes
本篇为第四篇:场景开发实战。
前置要求:已经完成第三篇部署,Hermes可以正常跑通CLI交互,理解Skill、Crons、Memory基础机制。
本篇重点:跳出单机终端CLI,做真实业务落地:自定义Skill开发、MCP协议对接、多平台网关、子Agent协同、定时任务业务实战,附带可运行Demo代码。
阅读提示:CLI仅适合调试;真正对外提供服务,需要网关、工具协议、业务Skill,也就是本篇要解决的问题。
0. 本篇前言:为什么不能只停留在CLI模式
CLI模式只适合开发者本地调试,存在3个落地硬伤:
- 只能人工在终端输入,无法被其他程序、机器人、业务系统调用;
- 没有标准化工具协议,外部工具很难接入Agent;
- 无法对外提供API,不能对接微信、钉钉、企业内部系统。
本篇围绕三个核心能力展开:
- 自定义Skill手动开发:不止让AI生成Skill,我们手写可控的业务技能;
- MCP协议集成:对接外部工具、数据库、本地文件服务;
- 启动HTTP网关 + 子Agent协同 + Crons定时业务实战。

1. 深度理解Skill规范:手写自定义Skill

第三篇我们体验了AI自动生成Skill ,生产环境很多场景需要人工编写可控Skill,保证稳定性、可调试。
Hermes的Skill统一规范:xxx.skill.md,采用「元信息头 + 执行代码」两段式,存放于./skills目录,框架启动自动扫描加载。
Skill完整格式规范
markdown
## skill_name: 文件重命名
## description: 技能描述,大模型依靠这个判断什么时候调用该技能
## params:
{
"folder_path": {"type":"string","desc":"目标文件夹路径","required":true}
}
## author: human # human代表人工编写;auto代表AI自动生成
## version: 1.0.0
```python
# 业务执行代码
import os
def run(params):
folder = params.get("folder_path",".")
file_list = os.listdir(folder)
return {"code":0,"data":file_list,"msg":"获取文件列表成功"}
if __name__ == "__main__":
import sys
import json
input_params = json.load(sys.stdin)
res = run(input_params)
print(json.dumps(res,ensure_ascii=False))
> 关键知识点
1. `params`:定义入参schema,大模型调用时会自动填充参数;
2. run函数**必须接收params字典**,返回标准json格式结果;
3. 标准输出只允许输出json,不要随意print调试信息,避免解析失败;
4. 保存到`skills/list_dir.skill.md`,框架重启后自动识别加载。
### 🧪Demo实战:手写读取目录Skill
把上面这份文件保存,回到CLI模式测试:
```powershell
python main.py --mode cli
输入指令:
调用list_dir技能,查看当前项目config文件夹下全部文件
✅预期效果:Agent不再生成新skill,直接调用我们手写的技能,返回config目录下文件列表。
💡对比:自动生成Skill vs 人工手写Skill
| 类型 | 优点 | 适用场景 |
|---|---|---|
| AI自动生成Skill | 快速、无需编码,原型验证 | 探索性任务、临时一次性任务 |
| 人工手写Skill | 稳定、可控、可版本管理 | 生产业务、高频调用、复杂逻辑 |
自进化闭环逻辑:Agent优先检索已有skill库,命中就直接调用;没有匹配技能,才触发AI生成新Skill存入库。
注意:关于 Skill可以看一下《Skill 蓝⽪书》github.com/zhuyansen/skill-blue-book · agentskillshub.top/book/
2. MCP协议集成:打通外部工具生态
MCP:Model Context Protocol,模型上下文协议,统一Agent调用外部工具的标准协议。
Hermes支持作为MCP客户端,可以对接MCP服务:本地文件服务、数据库、浏览器、Git工具、自研业务接口。
2.1 修改.env开启MCP能力
env
# MCP开关
ENABLE_MCP=true
MCP_CONFIG_PATH=./config/mcp_config.json
新建config/mcp_config.jsonMCP服务配置文件,示例:
json
{
"mcp_servers": [
{
"name":"local_file_server",
"command":"npx",
"args":["@modelcontextprotocol/server-filesystem","./workspace"]
}
]
}
上面配置启动官方文件MCP服务,允许Agent读写
workspace目录文件。
⚠️依赖:需要本地安装node环境,才能运行npx的MCP服务;如果你不想装node,可以使用python实现的MCP服务。
重启Hermes(CLI模式),启动日志会多出一行:
[INFO] MCP客户端初始化完成,已加载 1 个MCP服务
🧪Demo测试MCP文件服务
CLI输入:
使用MCP工具,在workspace下面创建一个note.txt,写入内容:Hermes MCP测试成功
✅预期:Agent通过MCP协议调用外部文件服务完成写文件,而不是靠本地Skill。
核心区别
- Skill:运行在Hermes进程内部,Python代码;
- MCP工具:独立进程,跨语言,外部服务,能力复用,可以对接第三方成熟工具。
开发落地经验:简单逻辑写Skill;复杂、重量级外部工具,优先MCP。
3. 启动HTTP网关模式:对外提供API服务
前面一直用--mode cli,网关模式--mode api会启动HTTP服务,对外暴露OpenAI风格接口,其他程序可以调用Hermes。
3.1 .env网关配置追加
env
# API网关配置
API_HOST=0.0.0.0
API_PORT=8000
VPS部署注意:安全组放行8000端口;不要直接公网裸奔,生产环境增加鉴权token。
PowerShell启动网关
powershell
python main.py --mode api
启动成功日志:
[INFO] HTTP Gateway listen on 0.0.0.0:8000
🧪Demo:curl调用网关接口
PowerShell执行:
powershell
Invoke-RestMethod -Uri "http://127.0.0.1:8000/v1/chat/completions" `
-Method Post `
-ContentType "application/json" `
-Body (@{
model = "hermes-agent"
messages = @(
@{role="user";content="列出skills目录所有技能"}
)
}|ConvertTo-Json)
返回结果:Hermes完整应答,内部自动走完Memory、Skill、Soul全链路。
网关价值:
- 可以对接钉钉、企业微信机器人、前端页面;
- 其他Python/Java业务服务通过HTTP调用Hermes智能体;
- 为后面子Agent调用打下基础。
4. 子Agent协同实战:多智能体分工

Hermes支持孵化子Agent,每个子Agent拥有独立Memory、独立Skill库、独立Soul人格配置,实现任务拆分。
简单调用示例(通过API网关发送请求)
json
{
"model":"hermes-agent",
"messages":[
{"role":"user","content":"孵化一个子Agent,名字file_helper,专门处理文件操作任务,当需要文件处理任务交给它完成"}
]
}
底层行为:
- 在memory下生成独立子Agent存储目录;
- 分配独立soul人格;
- 主Agent把文件相关任务路由转发给子Agent执行,结果返回主会话。
典型业务场景:
- 子AgentA:专门做代码分析;
- 子AgentB:专门做文档摘要;
主Agent负责理解用户需求,分配任务,汇总结果。
注意:子Agent会消耗更多token,不要无限制大量创建子Agent。
5. Crons定时任务业务实战
第三篇只是测试30秒打印hello,本篇做真实业务定时任务。
Crons本质:Agent持久定时任务,支持cron表达式,框架调度触发,自动执行Skill/MCP工具。
CLI输入指令创建定时任务:
创建定时任务,每天22点,扫描workspace目录,统计全部md文档数量,将结果写入report.md
执行之后,任务定义文件生成到./crons/目录,调度器会按照cron表达式自动触发执行。
⚠️重要提醒
- CLI进程退出,定时任务停止;线上环境必须以api网关常驻运行;
- Cron任务执行日志输出到日志文件,方便排查定时任务失败;
- 不要写高频率短间隔定时任务,避免大量消耗LLM调用额度。
6. 落地开发常见踩坑汇总
- Skill返回非标准JSON:会造成框架解析失败;调试时,直接单独运行skill的md里面python代码,看输出。
- MCP服务启动失败:检查node/python环境,看MCP子进程报错日志。
- 网关公网访问不通:0.0.0.0监听,检查防火墙、VPS安全组端口放行。
- 子Agent记忆混乱:不同子Agent数据隔离,不要跨子Agent直接读取记忆。
- Crons任务不触发:确认是api常驻模式,CLI模式进程关闭定时失效。
7. 本篇小结 & 下一篇预告
本篇从调试走向落地:
- 掌握Skill完整规范,可以手写业务技能,区分自动生成/人工编写两种模式;
- 通过MCP协议对接外部工具生态,突破Agent本地能力边界;
- HTTP网关对外暴露API,打通外部系统;
- 子Agent任务分工、业务级定时Crons任务实战。
现在你的Hermes不再仅仅本地玩一玩,已经具备对接真实业务系统的全部基础。
下一篇:第五篇|横向对比与深度思考|边界、优劣、生产落地建议
会横向对比 Hermes vs OpenClaw / Claude Code;分析自进化Agent的固有局限;给出生产环境部署建议、风险控制、成本预估、未来拓展思路,为本专栏做收尾。