一直纠结一个问题:agent 能记住上下文、能跑工具、能帮忙干活,但"经验"怎么沉淀?每次开新会话,之前踩过的坑、摸索出来的流程、反复验证过的最佳实践,如果不手动整理就全丢了。
Hermes 的 skills 系统本来是为了解决这个问题。但手写一个 SKILL.md,格式要对、描述要精简、步骤要清楚——门槛还是在那里。直到官方发布了 /learn 功能。
/learn 是什么?
/learn 的逻辑特别简单:告诉它"学什么",它自己去找素材、自己提炼、自己写成标准格式的 skill 文件。不需要先整理好文档,不需要手动编辑 Markdown,不需要懂 SKILL.md 的格式规范。只需要描述想让它学的东西。
它能学什么
/learn 的输入非常自由,可以学本地项目目录、在线文档页面、刚走完的流程,甚至口述的流程都能结构化。
学本地项目目录
/learn ~/projects/acme-sdk 中的 REST 客户端,重点关注认证和分页功能
它会自己用 read_file、search_files 去翻目录,找到和 auth + pagination 相关的代码和文档,然后提炼成一个 skill。
学在线文档页面
/learn https://docs.example.com/api/quickstart
自动抓取网页内容,提取关键信息,生成 skill。
学刚走完的流程
/learn 我刚刚如何部署了预生产服务器
这是最常用的场景。跟 Hermes 聊了半天,折腾完一个流程——比如部署了一套 CI、配好了一个 MCP server、修好了一个诡异的 bug。然后丢一句 /learn 刚才怎么实现的,它就把整个过程提炼成一个可复用的 skill。下次再遇到同样的事,直接调用就行了。
学口述的流程
甚至可以口述一个流程,/learn 都能帮你结构化。比如报销流程、发布流程等。
为什么这个功能有价值
大多数人用 agent 的方式是每次开新会话,从头描述需求,从头跑流程。用了几个月后,积累了大量"用过一次的经验",但下次遇到同样的问题还得重新想、重新描述、重新踩坑。
/learn 解决的是"经验的复利"问题。折腾一次,学一次,以后每次都能直接调用。Skills 就是 agent 长期记忆中关于"怎么做事"的那部分程序性记忆。
记忆系统的三层架构
Hermes 的记忆系统分三层:
- MEMORY.md / USER.md——记"你是谁"、"你喜欢什么"、"你的环境是什么样"
- Session search——记"我们之前聊过什么",可以跨会话回溯
- Skills——记"怎么做事",是可执行的程序性记忆
/learn 是第三层的快捷入口。以前要手写 SKILL.md,现在一句话就能生成。生成的 skill 是标准格式,支持渐进式加载,即使攒了几十个 skill 也不会把每次对话的 token 预算撑爆。
怎么用
在 Hermes 的任何界面——CLI、飞书、Telegram、TUI、Dashboard——直接输入 /learn 加上你想让它学的东西。Dashboard 的 Skills 页面还有一个"Learn a skill"按钮,打开后有目录输入框、URL 输入框和自由文本框,填完就跑。
生成之后呢
/learn 生成的 skill 会保存到 ~/.hermes/skills/ 目录下。之后在任何会话里,输入对应的 skill 名字就能加载它。也可以用 hermes skills list 看所有已安装的 skill。
实际场景
场景一:刚折腾完一套部署流程
花了一个下午配好了 Docker + Nginx + SSL,中间踩了三四个坑。以前这些经验就散落在聊天记录里了。现在用 /learn 记录下来,下次有人问"怎么部署",直接把 skill 分享出去。
场景二:发现了一个好用的第三方库
在项目里用了一个新库,翻了半天文档才搞明白怎么用。/learn 文档链接后,以后在任何项目里用到这个库,skill 直接告诉你怎么接。
场景三:团队内部流程
把公司的报销流程、发布流程、代码审查流程口述一遍,/learn 就能帮你变成一个可执行的 skill。新同事来了直接用,不用每次手把手教。
总结
agent 的价值不是它有多聪明,而是它能积累多少。/learn 让"积累"这件事从"手动整理文档"变成了"一句话搞定"。折腾的每一次,都不会白费。