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

相关资料

相关推荐
实验室管理云平台2 小时前
LIMS 系统常见问题(技术向):从数据采集到系统集成,开发与运维视角的踩坑记录
人工智能
程序员-李俞2 小时前
RelayRouter大模型 API 接入实践:用统一路由降低多模型调用成本与维护复杂度
人工智能
Agudamu11612 小时前
AI 视频学习笔记工具拆解:4款工具谁能把视频变成复习资料
人工智能·学习·音视频
2601_967659912 小时前
2026年江西GEO系统贴牌服务商怎么选才稳妥
人工智能
外域速览2 小时前
2026世界动力电池大会今日宜宾启幕:固态电池从实验室走向量产,IEC 国际标准终结概念乱象
大数据·人工智能·microsoft
金智维科技官方3 小时前
财务核算如何提效?这三条核心链路正在加速自动化
运维·人工智能·ai·自动化·财务·智能体
Csvn3 小时前
第 16 章 多智能体 Multi-Agent
人工智能·aigc·agent
xsd202411183 小时前
从BEV感知透视3D检测
人工智能
Python大数据分析@3 小时前
推荐一个非常好用的画图skill-Archify
人工智能
小刘快学习3 小时前
一把钥匙开所有门:企业AI网关的统一身份与权限治理
大数据·人工智能