Skip to content

Hermes Skills闭环系统:Agent从经验中自我进化的完整实现

2026年4月28日

Hermes Skills闭环系统:Agent从经验中自我进化的完整实现

当AI Agent学会了"记笔记",它不再只是"被动响应"的工具,而开始具有"主动学习"的特征。Hermes Agent的Skills闭环系统,实现了一个完整的"经验提取→知识存储→智能检索→上下文注入→执行验证→自动改进"闭环。

全局视角:七个阶段构成的闭环

阶段说明
1. Skill创建从经验到知识的蒸馏
2. 索引构建两层缓存的极致优化
3. 条件激活Skill的智能可见性控制
4. 渐进式加载从索引到完整内容的披露
5. 注入策略User Message而非System Prompt
6. 自改进机制闭环的关键闭合点
7. 安全扫描Skills生态的免疫系统

Skill创建:七道安全关卡

创建触发条件

python
SKILLS_GUIDANCE = (
    "After completing a complex task (5+ tool calls), fixing a tricky error, "
    "or discovering a non-trivial workflow, save the approach as a "
    "skill with skill_manage so you can reuse it next time.\n"
    "When using a skill and finding it outdated, incomplete, or wrong, "
    "patch it immediately with skill_manage(action='patch') — don't wait to be asked. "
    "Skills that aren't maintained become liabilities."
)

精妙之处

  • 5+ tool calls — 简单任务不值得建Skill
  • fixing a tricky error — 踩过的坑是最有价值的知识
  • don't wait to be asked — Agent自主判断
  • Skills that aren't maintained become liabilities — 过时的Skill比没有Skill更危险

七道验证关卡

关卡验证内容
1名称验证:小写字母/数字/连字符,≤64字符
2分类验证:单层目录名,无路径穿越
3Frontmatter验证:必须有YAML头部
4大小限制:≤100,000字符
5名称冲突检查:跨所有目录去重
6原子写入:tempfile + os.replace()防崩溃损坏
7安全扫描:90+威胁模式检测

原子写入实现

python
def atomic_write_text(file_path, content, encoding="utf-8"):
    fd, temp_path = tempfile.mkstemp(dir=str(file_path.parent))
    try:
        with os.fdopen(fd, "w", encoding=encoding) as f:
            f.write(content)
        os.replace(temp_path, file_path)
    except Exception:
        os.unlink(temp_path)
        raise

先写临时文件,完成后原子替换——崩溃时要么是旧内容,要么是新内容,绝无损坏文件。

索引构建:两层缓存

Layer 1:进程内LRU缓存

python
SKILLS_PROMPT_CACHE_MAX = 8
SKILLS_PROMPT_CACHE = OrderedDict()

缓存键是五元组:目录路径、外部目录、可用工具集、可用工具集组、平台标识。

Layer 2:磁盘快照

通过mtime+size manifest验证快照是否过期——不对比文件内容(太慢),只对比修改时间和大小。

性能对比

路径耗时场景
Layer 1命中~0.001ms同一对话多次访问
Layer 2命中~1ms进程刚重启但Skill没变
全扫描50-500msSkill文件变化后首次访问

条件激活:智能可见性控制

python
def _skill_should_show(conditions, available_tools, available_toolsets):
    # fallback_for: 当主工具可用时,隐藏这个fallback skill
    for ts in conditions.get("fallback_for_toolsets", []):
        if ts in available_toolsets:
            return False
    # requires: 当依赖工具不可用时,隐藏这个skill
    for t in conditions.get("requires_tools", []):
        if t not in available_tools:
            return False
    return True

解决的问题:索引膨胀。fallback_for_toolsets让Skill只在主工具不可用时才出现。

渐进式加载:三级披露

Tier内容Token消耗
Tier 1索引(名称+描述)~20 tokens/Skill
Tier 2完整内容(skill_view加载)按需
Tier 3支撑文件(API文档等)按需

效果:100个Skill只增加~2000 tokens,而非500K tokens。

注入策略:为什么用User Message

核心问题:为什么Skill内容作为User Message注入,而非追加到System Prompt?

答案:Prompt Cache。

System Prompt在对话过程中不能变化,否则缓存失效。如果每次加载Skill都修改System Prompt,每轮对话都要重新处理,成本增加数十倍。

权衡:牺牲一点点指令跟随权重,换取90%+成本节约。

注入消息带[SYSTEM: ...]前缀标记,模拟系统级指令权威性。

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

Patch触发

python
"If a skill you loaded was missing steps, had wrong commands, or needed
 pitfalls you discovered, update it before finishing."

"patch it immediately"和"before finishing"——立即修正,不留到下次。

Fuzzy Match引擎

python
from tools.fuzzy_match import fuzzy_find_and_replace
new_content, match_count, strategy, match_error = fuzzy_find_and_replace(
    content, old_string, new_string, replace_all
)

LLM回忆Skill内容时常有格式差异(多空格、少换行、缩进不同),Fuzzy Match处理这些差异,减少patch失败率。

级联效应

Patch成功后触发缓存清理——clear_snapshot=True清除内存LRU缓存和磁盘快照。

最终一致性模型

  • 当前对话:使用旧版Skill,发现问题并patch
  • 下一个对话:索引缓存失效,重新扫描,加载更新后的Skill

安全扫描:90+威胁模式

威胁模式类别

  • 环境变量泄露(exfiltration)
  • Prompt注入(injection)
  • 路径穿越(traversal)
  • DAN越狱攻击
  • 隐形Unicode字符

信任分级策略

来源safecautiondangerous
builtin(内置)allowallowallow
trusted(官方)allowallowblock
community(社区)allowblockblock
agent-created(自创建)allowallowask

结构性检查

  • MAX_FILE_COUNT = 50
  • MAX_TOTAL_SIZE_KB = 1024
  • MAX_SINGLE_FILE_KB = 256
  • 可疑二进制扩展名检测
  • 符号链接逃逸检测

Skill vs Memory分工

类型存什么不存什么
Memory用户偏好、环境细节、工具特性、稳定约定任务进度、会话结果、完成工作日志
Skill做事的方法、流程、陷阱、最佳实践事实信息

分工本质:Memory回答"是什么",Skill回答"怎么做"。


总结

要点说明
七阶段闭环创建→索引→激活→加载→注入→改进→扫描
核心权衡User Message注入保护Prompt Cache
安全深度90+威胁模式+信任分级+结构检查
自改进Fuzzy Match+立即patch+缓存清理

Hermes的Skills系统本质上实现了认知科学中程序性记忆的工程化模拟:编码→存储→检索→巩固→迁移。


关键词:Hermes Agent, Skills系统, 自进化Agent, 闭环学习, 渐进式披露, Prompt Cache

不要孤军奋战啦!

加入微信群一起学习交流 AI

与大神一起使用 OpenClaw、Hermes、Claude Code、Seedance 2.0、GPT-Image-2 等

微信公众号

扫码关注微信公众号
私信 "加群",将自动获取微信群二维码

探索 AI 世界,掌握智能未来