Hermes Agent 技能系统:让 AI 学会自我进化

本文是《Hermes Agent 深度解析》系列第 3 篇

系列索引


引言

记忆 vs 技能

在深入技能系统之前,先理解记忆技能的区别:

类型 范围 性质
记忆(MEMORY.md/USER.md) 广泛、声明式 告诉 Agent "你是谁、用户偏好什么"
技能(Skills) 狭窄、可执行 捕获"如何做某类任务"的具体步骤

技能是 Agent 的程序性记忆------把成功经验转化为可复用知识。

本文目标

  1. 理解 SKILL.md 格式和目录结构
  2. 掌握技能管理工具的六个操作
  3. 了解渐进式披露机制
  4. 理解技能 Hub 和安全扫描

1. SKILL.md 格式

技能采用 YAML Frontmatter 格式(与 agentskills.io 兼容):

1.1 完整示例

yaml 复制代码
---
name: deploy-k8s
description: 在 Kubernetes 集群上部署应用的标准流程
version: 1.0.0
platforms: [linux]    # 可选:限制操作系统
metadata:
  hermes:
    tags: [kubernetes, devops, deployment]
    category: devops
---

# K8s 部署技能

## 何时使用
需要将应用部署到 Kubernetes 集群时触发。

## 操作步骤

1. 检查集群连接
   ```bash
   kubectl cluster-info
  1. 构建并推送 Docker 镜像

    bash 复制代码
    docker build -t myapp:latest .
    docker push myapp:latest
  2. 应用 Kubernetes 配置

    bash 复制代码
    kubectl apply -f k8s/
  3. 验证部署

    bash 复制代码
    kubectl get pods -l app=myapp

坑点

  • 镜像必须推送到集群能访问的仓库
  • 命名空间要提前创建
  • 配置中的镜像标签要正确

验证

所有 Pod 处于 Running 状态即为成功。

复制代码
### 1.2 必需字段

| 字段 | 说明 |
|------|------|
| `name` | 技能名称(≤64 字符,小写) |
| `description` | 简短描述(≤1024 字符) |

### 1.3 可选字段

| 字段 | 说明 |
|------|------|
| `version` | 版本号 |
| `platforms` | 限制操作系统:`[macos]`, `[linux]`, `[windows]` |
| `metadata.hermes.tags` | 技能标签 |
| `metadata.hermes.category` | 分类 |

---

## 2. 技能目录结构

~/.hermes/skills/ # 唯一真实数据源

├── mlops/ # 分类目录

│ ├── axolotl/

│ │ ├── SKILL.md # 主要指令(必需)

│ │ ├── references/ # 附加文档

│ │ ├── templates/ # 输出格式

│ │ └── assets/ # 补充文件

│ └── vllm/

│ └── SKILL.md

├── devops/

│ └── deploy-k8s/ # Agent 创建的技能

│ ├── SKILL.md

│ └── references/

├── .hub/ # Skills Hub 状态

│ ├── lock.json

│ └── quarantine/

└── .bundled_manifest # 跟踪内置捆绑技能

复制代码
---

## 3. 技能管理工具

Agent 通过 `skill_manage` 工具管理技能,支持六个操作:

### 3.1 create------创建技能

```python
skill_manage(
    action="create",
    name="my-skill",
    content="""---
name: my-skill
description: 我的自定义技能
---
# 技能标题

## 何时使用
...

## 操作步骤
1. ...
""",
    category="devops"  # 可选:分类目录
)

3.2 patch------针对性修复(首选)

python 复制代码
skill_manage(
    action="patch",
    name="deploy-k8s",
    old_string="镜像标签要正确",
    new_string="镜像标签必须与 k8s 配置中的标签完全一致"
)

提示patchedit 更节省 token,因为只有更改的文本出现在工具调用中。

3.3 edit------全量重写

python 复制代码
skill_manage(
    action="edit",
    name="deploy-k8s",
    content="完整的新 SKILL.md 内容..."
)

仅用于重大结构重写,日常更新用 patch

3.4 delete------删除技能

python 复制代码
skill_manage(action="delete", name="old-skill")

3.5 write_file------添加支持文件

python 复制代码
skill_manage(
    action="write_file",
    name="deploy-k8s",
    file_path="references/常见错误.md",
    file_content="""# Kubernetes 常见错误

## ImagePullBackOff
...
"""
)

3.6 remove_file------删除支持文件

python 复制代码
skill_manage(
    action="remove_file",
    name="deploy-k8s",
    file_path="references/过时文档.md"
)

4. Agent 何时创建技能

根据 skill_manage 工具描述:

时机 说明
复杂任务成功后 完成 5+ 次工具调用的任务
克服错误后 找到正确路径,绕过死胡同
用户纠正方法后 用户引导的解决方案
发现非平凡工作流 值得复用的复杂流程

5. 渐进式披露

技能使用高效的 token 加载模式,避免每次都加载所有技能:

层级 调用 返回内容 约 token 消耗
Level 0 skills_list() [{name, description, category}, ...] ~3k tokens
Level 1 skill_view(name) 完整内容 + 元数据 不定
Level 2 skill_view(name, path) 特定参考文件 不定

Agent 只在实际需要时才加载完整技能内容。


6. 技能使用方式

6.1 Slash 命令

每个技能都自动可用作斜杠命令:

bash 复制代码
# 直接调用
/gif-search funny cats
/excalidraw
/deploy-k8s production

# 加载技能,让 Agent 询问需求
/excalidraw

6.2 自然对话

python 复制代码
hermes chat --toolsets skills -q "你有哪些技能?"
hermes chat --toolsets skills -q "给我看看 axolotl 技能"

7. 技能 Hub

浏览、搜索、安装和管理在线技能:

bash 复制代码
# 浏览所有 hub 技能(官方优先)
hermes skills browse

# 搜索
hermes skills search kubernetes

# 安装(带安全扫描)
hermes skills install openai/skills/k8s

# 安装前预览
hermes skills inspect openai/skills/k8s

# 列出 hub 安装的技能
hermes skills list --source hub

# 重新扫描所有 hub 技能
hermes skills audit

# 移除技能
hermes skills uninstall k8s

7.1 信任级别

级别 来源 策略
builtin Hermes 自带 始终信任
official 仓库 optional-skills/ 内置信任
trusted openai/skills, anthropic/skills 信任来源
community 其他所有来源 发现问题即阻止

7.2 安全扫描

所有 hub 安装的技能都经过扫描,检查:

  • 数据泄露
  • 提示注入
  • 破坏性命令
  • 其他威胁

8. 平台特定技能

技能可以使用 platforms 字段限制操作系统:

yaml 复制代码
platforms: [macos]            # 仅 macOS
platforms: [macos, linux]    # macOS 和 Linux
匹配
macos macOS (Darwin)
linux Linux
windows Windows

设置后,技能从不兼容平台的系统提示、skills_list() 和斜杠命令中自动隐藏。


总结

核心要点

要点 说明
SKILL.md 格式 YAML frontmatter + Markdown 正文
六个操作 create / patch / edit / delete / write_file / remove_file
渐进式披露 0/1/2 三级加载,节省 token
技能 Hub 在线浏览、安装、安全扫描
平台限制 platforms 字段控制可用性

记忆 vs 技能对比

维度 记忆 技能
用途 声明式事实 程序性步骤
粒度 粗粒度 细粒度
内容 偏好、环境事实 具体操作流程
创建 Agent 自动管理 Agent 或用户创建

下篇预告

【系列04】Hermes Agent 跨会话搜索:FTS5 全文检索实现

下一篇我们将解析跨会话搜索系统:

  • SQLite + FTS5 全文索引
  • LLM 摘要机制
  • 搜索语法和特殊字符处理
  • session_search vs memory 的区别

相关资料

相关推荐
小饕1 小时前
RAG学习之- RAG 数据导入完整指南
人工智能·python·学习
黑客说1 小时前
白日梦无限世界 各类型副本分析
人工智能·科技·游戏·娱乐
wearegogog1231 小时前
基于和差波束法的单脉冲测角MATLAB实现
人工智能·算法·matlab
陈广亮2 小时前
一个 CLAUDE.md 文件,一周涨了 44K Star:Karpathy 的 AI 编程四原则
人工智能
三秋树2 小时前
豆包 Agent Harness 工程师入门 | 第 5 章 Skills 技能
人工智能·agent·ai编程
一线数智2 小时前
从数字化到数智化: AI 赋能零售/餐饮高效运营
人工智能·零售
甘露寺2 小时前
【LangGraph 2026 核心原理解析】大模型 Tool Calling 机制与使用最佳实践全解
大数据·人工智能·python
云烟成雨TD2 小时前
Spring AI Alibaba 1.x 系列【26】Skills 生命周期深度解析
java·人工智能·spring
咚咚王者2 小时前
人工智能之知识蒸馏 第八章 知识蒸馏前沿进展与未来趋势
人工智能