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 的区别

相关资料

相关推荐
诺未科技_NovaTech1 小时前
Microsoft 365 E7 ,“AI+安全+身份”三位一体,打造 AI 时代的一站式操作系统
人工智能·安全·microsoft
小白学大数据1 小时前
均线选股策略研究:基于 Python 数据分析实现
人工智能·python·数据分析
三无推导1 小时前
OpenHuman 开源项目详解:个人 AI 助手架构与核心技术拆解
人工智能·性能优化·架构·开源·ai助手
薛定猫AI1 小时前
【深度解析】Hermes Agent 与 Hermes Desktop:长期记忆、技能沉淀与多端网关的开源 AI Agent 实战
人工智能·开源
xwz小王子1 小时前
给机器人装上脊髓反射:AT-VLA 如何把触觉塞进 VLA,并把闭环响应压到 40 毫秒
人工智能·机器人
通信小呆呆1 小时前
注意力机制用于信号同步:从匹配滤波到可学习对齐
人工智能·学习·机器学习·信息与通信
掌动智能1 小时前
传统数据工厂之死:RunnerAgent如何开启AI驱动的“数据生产”新纪元
人工智能·测试工具·自动化
shchojj1 小时前
Generative AI applications -- Reading
人工智能
青山科技分享2 小时前
iPaaS推荐:五大集成平台推荐指南
大数据·人工智能·ipaas推荐
羊羊小栈2 小时前
基于「YOLO目标检测 + 多模态AI分析」的篮球动作规范智能检测分析预警系统
人工智能·yolo·目标检测·计算机视觉·毕业设计·大作业