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

相关资料

相关推荐
科技新资讯几秒前
视频出海精细化升级:帧级对口型技术与商用工具落地能力分析
人工智能·音视频
微硬创新10 分钟前
大点数模拟量采集落地:耐达讯自动化32路0-20mA适配PROFINET总线实践解析
运维·人工智能·网络协议·自动化·信息与通信
招财小梗18 分钟前
AI矩阵获客,品牌连锁落地有啥方案?
大数据·人工智能·矩阵
jianwuhuang8221 分钟前
告别手拷数据:怎么把平板电脑上Perplexity的表格导出来?详解“AI导出鸭”平板版底层逻辑
人工智能·电脑·ai导出鸭
Wang's Blog24 分钟前
AI Agent白手起家57: 上下文记忆系统——基于 Redis 的长短期记忆实现
人工智能
Leo.yuan33 分钟前
给数据团队的AI智能体选型参考:2026年8款AI数据分析产品深度测评
人工智能
寥落半伤感39 分钟前
codex接入deepseek+VLM视觉语言模型教程
人工智能·语言模型·自然语言处理·codex·deepseek
FlyWIHTSKY40 分钟前
idea中集成claude功能
java·ide·人工智能·intellij-idea·cloudera
IT_陈寒42 分钟前
SpringBoot自动配置坑了我三天,原来漏了这个注解
前端·人工智能·后端