直击Hermes核心源码

1. 适用对象
目标是让你不读全部源码也能用上 Hermes-Agent 的经验沉淀能力:
-
• 让 Agent 把一次成功方法沉淀成 skill -
• 在后续请求中显式调用该 skill -
• 在 CLI / Gateway 两个入口都能稳定复用
2. 你能得到什么
-
• 经验沉淀:把复杂任务中的可复用步骤存成技能 -
• 经验复用:下次通过 /skill-name直接激活 -
• 持续演进:技能可 patch/edit,越用越准
3. 外部可见能力边界
从外部视角,你主要接触这三类能力:
-
1. Skill 管理工具: skill_manage -
2. Skill 调用注入: build_skill_invocation_message(...) -
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. 解析命令并加载 skill: _load_skill_payload(...) -
2. 组装注入消息: _build_skill_message(...) -
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. 用户请求完成复杂任务: run_conversation -
2. 触发技能沉淀(手动或后台复盘): _spawn_background_review -
3. 调用 skill 管理工具写入: skill_manage -
4. 清理技能缓存: clear_skills_system_prompt_cache调用 -
5. 后续用户通过 /skill调用:build_skill_invocation_message -
6. 加载并注入 skill 内容: _load_skill_payload、_build_skill_message -
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,保留高命中、高复用条目


夜雨聆风