Hermes Agent 是目前唯一内置「学习循环」的 AI Agent——它能从对话经验中自动创建技能、在使用中自我改进、跨会话持续积累知识。但真正的力量在于你自己写技能。这篇教程带你从零构建一个实用技能,让 Hermes 变成你专属的 AI 员工。
前言
如果你用过 Hermes Agent,一定用过它内置的技能系统——/plan 帮你规划方案、/github-pr-workflow 帮你管理 PR、/blogwatcher 监控博客更新。但很多人没意识到的是,写完一个自定义技能的成本低到离谱:一个 Markdown 文件,放在 ~/.hermes/skills/ 目录,你的 Agent 就多了一项专业能力。
本文以「AI 创业竞品监控」为例,带你从头到尾写一个完整的自定义技能。学完你就能给 Hermes 装上任何你需要的专业能力——从财务分析到客户支持,从 SEO 审计到社交媒体运营。
什么是 Skill?为什么它是「一人公司」的秘密武器

▲ Hermes Agent 技能系统三层渐进式披露架构:从技能列表到完整内容到引用文件,最小化 token 消耗
Skill 本质是一个按需加载的知识文档。它使用「渐进式披露」(Progressive Disclosure)模式节省 token:
| 层级 | 加载内容 | Token 消耗 |
|---|---|---|
| Level 0 | 技能列表(名称+描述+分类) | ~3k tokens |
| Level 1 | 完整技能内容 | 视文档大小 |
| Level 2 | 引用文件(如模板、示例数据) | 视文件大小 |
Agent 只在真正需要时才加载完整技能内容,这保证了你装 20 个技能也不会撑爆上下文窗口。
对一人公司的价值:每个 Skill 相当于一个 SOP(标准操作流程)文档,但比 SOP 更强大——它直接指导 AI 执行,而不是指导人执行。你把「竞品分析怎么做」写成一个 Skill,Hermes 就能每周自动帮你跑一遍。
SKILL.md 文件格式详解

▲ SKILL.md 文件结构拆解:YAML frontmatter 元数据 + Markdown 正文,一个文件定义完整 AI 能力
一个最小可用的技能文件长这样:
<hr>
name: competitor-monitor
description: 竞品监控——搜索指定竞品的产品更新、融资动态、定价变化
version: 1.0.0
metadata:
hermes:
tags: [business, automation, research]
category: business
requires_toolsets: [web]
<hr>
# 竞品监控
## 触发条件
当用户要求「监控竞品」「竞品分析」「看看竞争对手在做什么」时加载此技能。
## 执行流程
### 1. 确认监控目标
询问用户要监控哪些竞品(公司名或产品名),默认搜索最近 7 天的信息。
### 2. 多源搜索
对每个竞品执行以下搜索:
- `web_search("竞品名 产品更新 2026")`
- `web_search("竞品名 融资 2026")`
- 如果用户提供了 HN/ProductHunt 等特定平台,限定在该平台搜索
### 3. 结构化输出
将结果整理为表格:
| 竞品 | 类型(产品/融资/定价) | 摘要 | 来源 URL | 威胁等级(高/中/低) |
### 4. 行动建议
基于发现给出 2-3 条可执行的应对建议。
## 注意事项
- 优先使用博查搜索中文内容,Tavily 搜索英文
- 同一事件多个来源报道时保留最权威的来源
- 威胁等级判断标准:融资>50M → 高;新产品发布 → 中;UI更新 → 低
关键字段说明
| 字段 | 必填 | 说明 |
|---|---|---|
name | ✅ | 唯一标识符,也是 /skill-name 命令名 |
description | ✅ | Agent 在 skill list 中看到的简述 |
version | 推荐 | 方便追踪迭代 |
metadata.hermes.tags | 可选 | 用于分类筛选 |
metadata.hermes.category | 可选 | 分类(devops/business/creative 等) |
metadata.hermes.requires_toolsets | 可选 | 需要哪些工具集才能激活此技能 |
metadata.hermes.fallback_for_toolsets | 可选 | 当指定工具集不可用时才激活(兜底技能) |
实战:创建「竞品监控」技能的完整流程
步骤 1:创建技能文件
mkdir -p ~/.hermes/skills
cat > ~/.hermes/skills/competitor-monitor.md << 'EOF'
<hr>
name: competitor-monitor
description: 竞品监控——搜索指定竞品的产品更新、融资动态、定价变化
version: 1.0.0
metadata:
hermes:
tags: [business, automation, research]
category: business
requires_toolsets: [web]
<hr>
# 竞品监控
## 触发条件
当用户提到「竞品」「监控」「competitor」「看看对手」时加载。
## 搜索策略
### 核心搜索词模板
对每个目标公司,执行以下搜索:
1. `"{公司名}" "融资" OR "funding" site:36kr.com OR site:techcrunch.com`
2. `"{公司名}" 产品更新 OR "new feature" OR release`
3. `"{公司名}" 定价 OR pricing change`
### 搜索优先级
1. **中文源**(博查):36氪、虎嗅、LatePost
2. **英文源**(Tavily):TechCrunch、The Verge、HN
3. **社交信号**:HN points、Twitter 讨论量
## 输出规范
### 报告格式
🔍 {竞品名} 监控报告 | {日期范围}
🚨 高优先级发现
[融资/重大产品发布/高管变动]📋 完整动态列表
| 日期 | 类型 | 事件 | 来源 |
|---|
⚠️ 威胁评估
- 综合威胁等级:[高/中/低]
- 理由:[一句话判断依据]
💡 应对建议
- [具体行动]
- [具体行动]
步骤 2:验证技能加载
# 方式一:在 Hermes CLI 中查看技能列表
hermes chat --toolsets skills -q "List all skills that have 'competitor' in name"
# 方式二:直接调用
hermes chat --toolsets skills,web -q "/competitor-monitor 帮我监控 Notion、Coda 和 Craft 的最新动态"
步骤 3:测试技能执行
在 Hermes CLI 中发起一个实际对话:
你:/competitor-monitor 监控这三个公司:Cursor、Windsurf、Replit
Hermes:[加载 competitor-monitor 技能]
好的,我来监控这三个 AI 编程工具的最新动态。
搜索时间范围:最近 7 天(2026年5月10日-17日)
[执行 web_search: "Cursor AI 更新 2026"]
[执行 web_search: "Windsurf AI 更新 2026"]
[执行 web_search: "Replit AI 更新 2026"]
以下是监控报告...
## 🔍 竞品监控报告 | 2026.5.10-5.17
### 🚨 高优先级发现
- **Cursor** 被 Microsoft 内部禁用,转向 Claude Code(来源:The Verge)
### 📋 完整动态列表
| 日期 | 公司 | 事件 | 来源 |
|------|------|------|------|
| 5.16 | Cursor | Microsoft 内部禁用,转向 Claude Code | The Verge |
| 5.15 | Replit | 推出 Replit Agent 2.0 | Replit Blog |
| ... | ... | ... | ... |
进阶技巧:让技能更智能
技巧 1:条件激活——只在必要时出现
如果你的技能依赖特定工具,用 requires_toolsets 避免在不支持的会话中出现:
metadata:
hermes:
requires_toolsets: [web, terminal]
如果想做一个「免费搜索引擎」兜底技能(当 Tavily 不可用时自动激活):
metadata:
hermes:
fallback_for_toolsets: [web]
这样当 web 工具集不可用时,Agent 会自动看到你的兜底技能。
技巧 2:用 Skill 驱动 Cron 定时任务
技能写好后,可以直接绑定到定时任务:
# 每天早上 9 点自动执行竞品监控
hermes cron create "0 9 * * *" "监控 Cursor、Windsurf、Replit" \
--skill competitor-monitor \
--name "每日竞品监控"
或者一次绑定多个技能:
hermes cron create "0 9 * * 1" "周一综合情报:竞品监控 + 行业新闻总结" \
--skill competitor-monitor \
--skill ai-news-digest \
--name "周一情报汇总"
技巧 3:平台限制——让技能适配不同环境
如果某个技能只在特定 OS 有用(比如 iMessage 技能只适用 macOS),用 platforms 字段:
platforms: [macos]
技能会在 Linux/Windows 环境下自动隐藏。
技巧 4:用引用文件(Level 2)分离大数据
当技能需要引用模板文件、示例数据或大型配置时,不要全塞进 SKILL.md。用 Level 2 引用:
详细模板见 `references/competitor-report-template.md`
Agent 通过 skill_view(name='competitor-monitor', path='references/competitor-report-template.md') 按需加载。
一人公司实战:5 个你立刻能用的技能模板
1. 财务健康检查
name: financial-health-check
description: 分析业务财务数据,检查现金流、利润率、增速等核心指标
requires_toolsets: [terminal]
执行流程:读取 CSV/Excel → 计算关键比率 → 生成诊断报告和预警。
2. 客户支持分类器
name: support-triage
description: 分析客户消息,自动分类紧急程度、产品领域、是否需要人工介入
执行流程:分类邮件/消息 → 打标签 → 生成优先级队列 → 给出回复建议。
3. SEO 内容审计
name: seo-audit
description: 分析文章 SEO 表现,给出标题、关键词密度、meta 描述优化建议
requires_toolsets: [web]
4. 社交媒体排期
name: social-scheduler
description: 根据内容库生成一周社交媒体发布计划,含平台适配建议
5. 合同条款检查
name: contract-review
description: 检查合同中的关键条款,标记风险项,生成谈判建议
常见踩坑与解决方案
坑 1:技能没被 Agent 识别
症状:/my-skill 返回「未知命令」。
排查:
# 检查文件位置
ls ~/.hermes/skills/my-skill.md
# 检查 YAML frontmatter 语法
head -10 ~/.hermes/skills/my-skill.md
# 确认 name 字段无空格、无特殊字符
grep "^name:" ~/.hermes/skills/my-skill.md
常见原因:YAML frontmatter 中 name 字段有空格(name: my skill 应改为 name: my-skill)。
坑 2:`requires_toolsets` 导致技能不出现
症状:技能创建成功但 skills_list() 里看不到。
原因:当前会话没有加载所需的 toolsets。
解决:
# 启动时显式加载需要的 toolsets
hermes chat --toolsets web,terminal,skills
坑 3:技能描述太长,Agent 没触发
症状:用户说了触发词但技能没加载。
原因:技能描述(description)太短或太模糊,Agent 匹配不到。
最佳实践:description 包含 3-5 个触发关键词变体:
description: 竞品监控——搜索竞品产品更新、融资动态、定价变化。当用户说"竞品""监控""对手""competitor""他们在做什么"时使用。
坑 4:Cron 里技能没加载
症状:cron 任务执行了但没按技能流程走。
排查:
# 查看 cron job 配置
hermes cron list
# 确认 --skill 参数正确
hermes cron edit <job_id> --skill competitor-monitor
注意:Cron 任务里不会自动加载所有技能,必须显式通过 --skill 或 skills= 参数指定。
坑 5:YAML 缩进错误导致 frontmatter 解析失败
症状:技能文件存在但 Agent 完全忽略它,skills_list() 里不出现。
原因:YAML frontmatter 对缩进极其敏感。metadata 下的 hermes 必须缩进 2 个空格。
正确写法:
metadata:
hermes: # 2空格缩进
tags: [...] # 4空格缩进
错误写法:
metadata:
hermes: # 缩进丢失,YAML解析失败
tags: [...]
快速检查:
python3 -c "import yaml; yaml.safe_load(open('skill.md').read().split('---')[1])"
坑 6:技能文件编码问题
症状:中文内容在 Agent 输出中显示为乱码。
原因:文件被保存为非 UTF-8 编码。
解决:
file ~/.hermes/skills/my-skill.md
# 应输出:UTF-8 Unicode text
# 如果显示 ISO-8859 或其他编码,转换:
iconv -f GBK -t UTF-8 my-skill.md > my-skill-utf8.md
完整实战:从技能创建到定时自动化

▲ 技能 + Cron = 定时自动化工作流:从技能文件创建到绑定定时任务,实现无人值守运营
让我们把整个流程串起来——从零开始创建一个「客户邮件自动分类」技能,并绑定到每天早上 8 点的定时任务:
第一步:创建技能文件
cat > ~/.hermes/skills/email-triage.md << 'SKILLEOF'
<hr>
name: email-triage
description: 分析客户邮件,自动分类紧急程度、产品领域、是否需要人工回复
version: 1.0.0
metadata:
hermes:
tags: [business, customer-support]
category: business
<hr>
# 客户邮件分类
## 处理流程
1. 读取待处理邮件列表
2. 对每封邮件判断:
- 紧急度:urgent(2h内回复)/ normal(24h)/ low(可忽略)
- 类别:bug/功能请求/付费咨询/投诉/其他
- 是否需要人工介入
3. 对低紧急度+标准化问题,生成 AI 回复草稿
4. 输出分类表格 + 优先级排序
## 输出格式
| # | 发件人 | 类别 | 紧急度 | 需人工 | AI草稿 |
|---|--------|------|--------|--------|--------|
| 1 | 张三 | bug | urgent | 是 | - |
| 2 | 李四 | 付费 | normal | 否 | [草稿内容] |
SKILLEOF
第二步:测试技能
hermes chat --toolsets skills,terminal \
-q "/email-triage 检查 ~/inbox/ 下今天的新邮件"
第三步:绑定 Cron
hermes cron create "0 8 * * *" \
"检查今天的新邮件,按 email-triage 技能流程处理,结果发到 Telegram" \
--skill email-triage \
--name "早间邮件分类"
第四步:验证定时任务
# 查看任务状态
hermes cron list
# 手动触发一次测试
hermes cron trigger <job_id>
完成。从此每天早上 8 点,Hermes 会自动扫描邮箱,分类紧急度,生成回复草稿——你只需要审核、点击发送。
技能迭代:让 Agent 帮你改进技能
Hermes 最独特的能力之一是技能自我改进。当你通过对话调整技能行为、发现新的边界 case、优化 prompt 措辞后,可以直接让 Agent 更新技能文件:
你:刚才竞品监控搜索了太多无关内容,把搜索策略改成只搜最近 3 天的,并且排除纯 UI 更新。
Hermes:[使用 patch 工具修改 competitor-monitor.md]
已更新搜索策略:时间范围改为 3 天,过滤条件增加「排除 UI 更新」。
这样每个技能都在持续进化,越用越精准。
总结
自定义 Skill 是把 Hermes Agent 从「通用助手」变成「领域专家」的钥匙。对一人公司来说,每个 Skill 就是一份数字化 SOP,一份可复用的智力资产。
三个核心要点:
- Skill 成本极低——一个 Markdown 文件,15 分钟写完,永久可用
- Skill + Cron = 自动化员工——绑定定时任务后,Agent 自动执行标准化工作流程
- Skill 会自我进化——Agent 在对话中学习到的改进可以写回 Skill,持续升级
行动建议:打开终端,用今天的内容创建你的第一个 Skill。从最简单的「每日站会总结」开始——15 分钟就能跑起来。
#AI创业 #HermesAgent #Agent工坊 #一人公司 #AI自动化 #技能开发
*本文由 AI 辅助创作,经人工审核编辑发布。Hermes Agent 功能基于 v0.14.0 (2026.5.16) 版本,最新特性请以官方文档为准。*
本文由AI辅助创作,经人工审核编辑发布
