用了一个月后,我的 Hermes 变呆了

0 阅读5分钟

用了一个月之后,终于我的 Hermes 变呆了
是的,那个号称能自主进化的 Hermes, 它变呆了

事情是这样的
今天翘首了3个月的 Deepseek V4 发布了,让 Hermes 帮忙分析几篇文章跟视频

Hermes,它变慢了……
输出的风格,严格来说是不怎么一致了
特别是让它帮我生成几张架构图的时候,可以说是囧异

49a646160da97c9036bec49a775f04df.png

4bd0cc90f1f6b30685b038c987ed6e15.png

它终于如期的变呆了

当 Hermess 刚出的时候,就被其自动创建 skill 所惊艳到
为什么被惊艳到,因为简单,在 Claude code 中实现一个这样一个功能,利用 Stop Hook 在任务完成后自动判断是否沉淀为 Skill 即可
好的东西,人家一说你就觉得简单,人家没说 -- 我怎么没想到呢

如期,说明它变呆是在预期内

为什么会变呆

在以前的文章里有写过这样的事,那时候 skill 还没成为主流规范,各家厂商对 skill 的支持度还远没现在这么强

  1. agent 调用 skill 命中率的问题
  2. 当有很多 skills 且存在一些类似功能 skill 的时候

详情可以看
Claude Code,天知道我们之前配得多痛苦——现在只需一个 /

以及之前发的一个沸点(skill 管理混乱)

image.png

当有相近功能的 skill 时,最好能显示的让其调用
比如之前的 Claude Code Skills 的混合自动化方案 文章里有两个创建页面的 skill
当我们输入创建 xxx 页面的时候,可能会出现以下几种情况:

  1. 未命中 skill
  2. 命中 a 或 b
  3. 命中 a 跟 b
    3.1 Agent 询问你采用谁
    3.2 Agent 没有询问

第三种情况是最麻烦的,而 Hermes 最有可能出现的就是第三种情况

在 Hermes 源码 prompt_builder.py 文件里可以看到

Before replying, scan the skills below. If a skill matches or is even 
partially relevant to your task, you MUST load it with skill_view(name)

MUST load 跟 even partially relevant, 会让 Agent 倾向于加载更多 skill

我们再捋一次 Hermes 多个功能相似的 skill 时的流程:

  1. 该选哪个? 这几个 skill 看起来都相关
  2. 该加载几个? partially relevant 可能导致全部加载
  3. 加载后听谁的?

skill 加载实际就是塞入到上下文(变成 prompt ), 哪个更能起效?再就是功能相似的 skill 如果中间使用了冲突的指令时, Agent 该听谁的?

这是 Hermes 变呆的直接原因

Hermes 为什么会创建很多 skills

Hermes 设计如此

image.png

用户与 Agent 交互
    │
    ├─ 每次工具调用迭代: _iters_since_skill += 1
    │
    ├─ Agent 主动管理技能时: _iters_since_skill = 0
    │   (说明 Agent 已经在创建/更新技能,不需要提醒)
    │
    └─ 对话结束时检查:
        │
        ├─ _iters_since_skill < 10 → 不触发(继续累积)
        │
        └─ _iters_since_skill >= 10 → 触发后台审查
            │
            ├─ 启动审查 Agent(独立线程,不阻塞用户)
            ├─ 审查 Agent 回顾对话,判断:
            │   ├─ 有可复用方法? → 创建新技能
            │   ├─ 已有技能需更新? → patch 更新
            │   └─ 没什么值得保存? → 什么都不做
            │
            └─ 通知用户结果
                CLI: Skill 'xxx' created.
                Gateway: 推送到消息平台

简单的说就是,用户在与 Hermes 交互时,Hermes 在这期间用了 10 次工具没主动管理技能就提醒审查——审查 Agent 自主判断对话中是否有值得沉淀的知识,可能创建、可能更新、也可能什么都不做

如果,我们在做类似的事的时候,期间多了几步或者少了几步的操作流程会被 Hermes 创建为新的 skill,这些 skill 的功能又是相似的 做过开发的同学都知道,在实际工程中我们写 skill 时会进行拆分然后组合,就跟写组件一样,就跟拼积木一样 从上面的流程图中可以看出 Hermes 创建的 skill 都是孤立的,无组合机制

且,目前 Hermes 只有唯一的去重机制: 同名检查 在源码的 skill_manager_tool.py 文件里

# Check for name collisions across all directories
existing = _find_skill(name)
if existing:
    return {
        "success": False,
        "error": f"A skill named '{name}' already exists at {existing['path']}."
    }

Hermes 只检查名字是否重复,但不检查功能是否相似 也就是说:

  • 创建 draw,没问题创建成功
  • 再创建 draw,那不行(同名了)
  • 创建 draw-wan,没问题创建成功(不同名,即使功能几乎一样)

唯一的防重复引导,在源码的 run_agent.py 文件中

If a relevant skill already exists, update it with what you learned.

审查提示词告诉 Agent:"如果已有相关技能,就更新它而不是创建新的。" 但这只是文本建议,Agent 可能遵循也可能不遵循。

所以,随着时间推移交互增加, Hermes 中沉淀的 skills 会越来越多

怎么办

预防

  1. 确定下来的流程(已经建好了 skill),指定使用该 skill 来做这个事。 100%避免
  2. 强调如果有类似的 skill, 选择更新。 概率避免

审核

玻璃有灰,记得经常擦一擦

  1. skills.disabled 配置,可以手动禁用不需要的技能
  2. skill_manage(delete) ,Agent 可能会
  3. 直接手动维护 skill 文件夹

在 AI 带来的速朽时代里,也许等也是一个选择
正所谓慢就是快

  1. 我在社区发现已经有同学给官方提 issue ,增加 skill 调用次数的追踪机制

等 Hermes 有了对 skill 追踪机制、合并机制后,这个 skill 熵增之殇能自动化的被解决,Hermes 会成为真正的自主进化越用越聪明的 Agent。

  1. 等一个更好的智能体出现