2026-04-15 01:35

Hermes Skills系统深度解析:生产级AI Agent的技能库架构

当AI Agent从玩具走向生产工具,一个核心问题浮现:如何让Agent持续积累能力,而不是每次对话都从零开始?Hermes的Skills系统提供了一个完整的工程化答案。

本文深度解析这个生产级技能库架构,涵盖创建、加载、安全、改进全生命周期。

Skill创建:从对话到可复用资产

Hermes让Agent可以通过对话直接创建Skill:

User: 帮我创建一个部署Vercel项目的Skill
Agent: 好的,我需要了解一些信息...

创建过程中,Agent会自动:

  • 提取通用步骤(去除项目特定信息)
  • 添加环境变量声明(VERCEL_TOKEN)
  • 生成结构化的SKILL.md文件
  • 保存到用户的skills目录

这让 tacit knowledge(隐性知识)变成 explicit knowledge(显性知识),可被版本控制、分享、复用。

渐进式披露:解决Token爆炸问题

受Anthropic Claude Skills启发,Hermes采用Progressive Disclosure策略。

问题:如果把50个Skill的完整内容都塞进System Prompt,可能吃掉100K+ tokens——既昂贵又可能超出上下文窗口。

解决方案

  • Tier 1(索引):System Prompt只放Skill列表(名称+描述,约20 tokens/个)
  • Tier 2(按需加载):Agent调用skill_view()加载完整内容
  • Tier 3(支撑文件):需要时再加载API文档、模板等

这样,100个Skill只增加约2000 tokens,而不是500K。

安全检查:skills_guard.py的免疫系统

Skills系统最大的安全隐患是Skill本身成为攻击载体。Hermes实现了完整的安全扫描:

Prompt Injection检测:检测"ignore previous instructions"等攻击模式 路径穿越防护:验证文件路径不会逃逸出Skill目录 环境变量依赖检查:缺失VERCEL_TOKEN时交互式提示用户 信任分级策略

  • 内置Skill:完全信任
  • 受信任来源(OpenAI/Anthropic):允许caution级别,阻止dangerous
  • 社区Skill:只允许safe级别
  • Agent自创建:宽松但询问用户

User Message注入:成本与效果的权衡

关键架构决策:Skill内容作为User Message注入,而非修改System Prompt。

原因:Anthropic的Prompt Caching机制要求System Prompt在整个对话中保持不变,否则会失去缓存优势,成本增加数十倍。

权衡:牺牲一点点指令跟随的可靠性,换取数十倍的API成本节约。这是深思熟虑的工程决策。

自改进机制:闭环的关键闭合点

System Prompt明确要求:"If a skill you loaded was missing steps... update it before finishing."

改进触发条件:

  • 指令过时/错误
  • OS特定失败
  • 发现缺失步骤或陷阱

_patch_skill()函数复用了文件编辑工具的Fuzzy Match引擎,处理LLM回忆时的格式差异(空格、缩进、换行)。

改进后的级联效应:

  • 当前对话:使用旧版Skill,发现问题并patch
  • 下一个对话:索引缓存失效,加载更新后的Skill
  • 后续所有对话:使用改进版本

Skill与Memory的分工

维度 Memory Skill
内容 用户偏好、环境细节 操作步骤、命令序列
问题 是什么 怎么做
持久性 长期稳定 频繁迭代
触发 自动保存 显式创建/改进

Memory回答"是什么",Skill回答"怎么做"。这种分工让Agent既有上下文感知,又有执行能力。

从Voyager到Hermes:学术到工程

Hermes的Skills系统与2023年NVIDIA的Voyager论文有深刻渊源。Voyager在Minecraft中提出了Skill Library概念,但它是学术原型。

Hermes完成了完整的工程化落地,解决真实世界的复杂性:

  • 并发安全
  • 成本控制
  • 恶意输入防护
  • 跨平台兼容
  • 缓存一致性
  • 文件系统原子性

这些"论文里不会提到"的问题,才是生产级系统的真正挑战。