乐于分享
好东西不私藏

直击Hermes核心源码

直击Hermes核心源码

1. 适用对象

目标是让你不读全部源码也能用上 Hermes-Agent 的经验沉淀能力:

  • • 让 Agent 把一次成功方法沉淀成 skill
  • • 在后续请求中显式调用该 skill
  • • 在 CLI / Gateway 两个入口都能稳定复用

2. 你能得到什么

  • • 经验沉淀:把复杂任务中的可复用步骤存成技能
  • • 经验复用:下次通过 /skill-name 直接激活
  • • 持续演进:技能可 patch/edit,越用越准

3. 外部可见能力边界

从外部视角,你主要接触这三类能力:

  1. 1. Skill 管理工具skill_manage
  2. 2. Skill 调用注入build_skill_invocation_message(...)
  3. 3. Skill 索引注入系统提示build_skills_system_prompt(...)

4. 最小使用流程(推荐)

4.1 第一次:生成 skill

你可以用两种方式生成:

  • • 方式 A(推荐):完成复杂任务后明确告诉 Agent:“把刚才的做法沉淀成 skill”
  • • 方式 B(自动):达到内部复盘阈值后,后台自动触发 skill 复盘写入(最佳努力)

落地动作由 skill_manage 完成(create/patch/edit):

  • • 入口:skill_manage(...)
  • • 创建:_create_skill(...)
  • • 修补:_patch_skill(...)

4.2 第二次:显式调用 skill

在后续请求中直接输入:

/your-skill-name 你的业务指令

系统会:

  1. 1. 解析命令并加载 skill:_load_skill_payload(...)
  2. 2. 组装注入消息:_build_skill_message(...)
  3. 3. 进入统一回路执行:run_conversation(...)

4.3 持续优化 skill

当你发现 skill 过时或不完整,直接让 Agent:

  • • “patch 这个 skill,加上 xxx 步骤”
  • • “edit 这个 skill,按新流程重写”

成功写入后会自动清理技能提示缓存,确保新内容生效:clear_skills_system_prompt_cache(...) 调用

5. CLI 使用手册(外部)

  • • 查看/安装技能入口:_handle_skills_command(...)
  • • 常见用法:
    • • /skills(技能中心)
    • • /skills search <关键词>
    • • /your-skill-name <指令>

建议实践:

  • • 把“高频、可重复、步骤明确”的任务沉淀为 skill
  • • 把一次性任务留在普通对话,不要过度技能化

6. Gateway 使用手册(外部)

Gateway 下同样可用 skill 调用链,且支持自动 skill 绑定注入:

  • • 入口:_handle_message_with_agent(...)
  • • 自动技能注入(如频道/主题绑定):auto_skill 处理段

这意味着你可以在平台侧(如群组、频道)预设某些 skill,实现“进来就带上下文能力”。

7. 外部集成最小 Checklist

  • • 已启用 skills 相关工具集(至少包含 skill_manage / skill_view
  • • 能持久化 ~/.hermes/skills(或 profile 对应目录)
  • • 对外约定 skill 命名规范(小写 + 连字符)
  • • 在流程中预留“复盘沉淀”步骤(人工或自动)

8. 双轨流程图

8.1 可点击流程(带源码链接)

  1. 1. 用户请求完成复杂任务:run_conversation
  2. 2. 触发技能沉淀(手动或后台复盘):_spawn_background_review
  3. 3. 调用 skill 管理工具写入:skill_manage
  4. 4. 清理技能缓存:clear_skills_system_prompt_cache 调用
  5. 5. 后续用户通过 /skill 调用:build_skill_invocation_message
  6. 6. 加载并注入 skill 内容:_load_skill_payload_build_skill_message
  7. 7. 主循环执行并返回结果:run_conversation

8.2 直观流程图(不带链接)

复杂任务完成   |   v经验可复用?   | no -> 普通对话结束   |  yes   |   vskill_manage(create/patch/edit)   |   vSKILL.md 持久化   |   v下次用户输入 /skill-name   |   v加载skill + 注入请求   |   v主循环执行 -> 返回结果

9. 常见问题(外部)

  • • Q1:为什么我新建了 skill 但下次没生效?A:优先检查 skill 名称是否正确、工具集是否包含 skills 工具、以及请求是否使用了 /skill-name 显式调用。
  • • Q2:自动沉淀没发生,是 bug 吗?A:不一定。自动沉淀是“阈值触发 + 最佳努力”机制,关键流程建议仍保留人工“请沉淀为 skill”指令。
  • • Q3:我应该用 memory 还是 skill?A:偏“事实/偏好”用 memory;偏“步骤/方法论”用 skill。二者可组合。

10. 对外落地建议

  • • 先挑 3-5 个高频任务做样板 skill(如发布流程、排错流程、代码审查流程)
  • • 每次任务结束固定一句:“如果这个流程可复用,请 patch 对应 skill”
  • • 每周清理一次低质量 skill,保留高命中、高复用条目
    关注公众号,发送hermes发送源码资料,如下