news 2026/9/23 2:29:35

把 Hermes Agent 养成你的专属帕鲁:用 Skills 与 Memory 搭建自进化闭环(三)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
把 Hermes Agent 养成你的专属帕鲁:用 Skills 与 Memory 搭建自进化闭环(三)

1. 为什么你的 Hermes Agent 用了一周还是“陌生人”

Hermes Agent 是少数自带学习闭环的开源 Agent 框架,它能从每次任务里提炼 Skills(程序性记忆),也能把关于你和环境的事实写进 Memory(声明性记忆)。但很多人装完就发现:它并没有变聪明,甚至每次都在重复问“你用 npm 还是 pnpm”。问题不在模型,而在自进化链路没有真正跑通——Skills 目录没挂对、Memory 写入被静默跳过、Honcho 的 peer 配置和 profile 对不上,后台审查代理自然学不到东西。

这篇是系列第三篇,聚焦落地配置。我会把config.tomlsettings.json的骨架直接给你,然后完整演示一次“技能注册 → 记忆写入 → 行为验证”的动作,让你能亲眼看到 Agent 从“失忆”变成“记得你”的过程。适合已经跑通 Hermes 基础对话、想进一步把它养成专属帕鲁的开发者。全程只需要一个可用的模型接入点,我用 TaoToken 做演示,因为它的 API 兼容 OpenAI 格式,接 Hermes 的config.toml很省事。

先明确三个概念,后面配置才不会晕:Skills 是“怎么做”的方法论,存在~/.hermes/skills/下,每个技能一个目录带SKILL.md;Memory 是“是什么”的事实库,分MEMORY.md(环境)和USER.md(用户偏好);Honcho 是跨会话用户建模层,让多个 profile 共享对你的认知但各自发展人格。三者串起来,才叫自进化闭环。

2. 前置:TaoToken 接入点与 Hermes 环境准备

Hermes 的模型调用走标准 OpenAI 兼容接口,所以接入点只需要 base_url 和 api_key。TaoToken 的 API 地址是https://taotoken.net/api,注意这个地址不带任何查询参数,直接填进配置即可。如果你还没有 key,去控制台创建一个:https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_content=console&utm_campaign=rewrite ,创建后在 API Keys 页面复制:https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api-keys&utm_campaign=rewrite 。

环境侧确认三件事:Hermes 版本 ≥ 0.8(hermes --version),Python 虚拟环境已激活,~/.hermes/目录存在。如果目录不存在,先跑一次hermes init让它生成默认结构。我试过在干净的 Ubuntu 22.04 上从零配,最容易踩的坑是~/.hermes/skills/权限不对导致后台审查写入失败,建议先chmod 755 ~/.hermes再继续。

模型选择上,后台审查代理会额外消耗 token,因为它要跑最多 8 次迭代来判断“值不值得学”。所以别用最贵的模型做审查,用中等能力的就够。TaoToken 的模型列表里挑一个性价比合适的,填进config.tomlmodel字段。如果你还想在配置前先验证模型对话是否正常,可以用模型对话页快速测一句:https://taotoken.net/model-chat?utm_source=taotoken_aicg_blog_end&utm_content=model-chat&utm_campaign=rewrite 。

3. 可复制配置:config.toml 与 settings.json 骨架

Hermes 的主配置在~/.hermes/config.toml,Honcho 和部分运行时开关在settings.json。下面这份骨架可以直接抄,改掉 api_key 和 peerName 就能用。

# ~/.hermes/config.toml [model] provider = "openai-compatible" base_url = "https://taotoken.net/api" api_key = "sk-你的TaoToken密钥" model = "你的模型名" max_tokens = 4096 temperature = 0.3 [agent] max_iterations = 30 quiet_mode = false [learning] # 技能学习触发间隔:每 N 次工具调用后触发后台审查 skill_nudge_interval = 10 # 记忆学习触发间隔(秒) memory_nudge_interval = 300 # 后台审查代理最大迭代次数 review_max_iterations = 8 # 是否允许 Agent 自动创建/更新技能 auto_skill_manage = true [skills] # 内置技能目录 builtin_dir = "~/.hermes/skills" # 外部技能目录,可挂多个 external_dirs = [ "~/my-skills", "~/shared-skills" ] [memory] # 记忆存储目录 store_dir = "~/.hermes/memories" # 会话开始时冻结快照,防止中途注入 freeze_snapshot = true # 写入前安全扫描 security_scan = true [honcho] enabled = true # Honcho 服务地址,本地部署填 localhost endpoint = "http://localhost:8000" workspace = "zhang-san"

settings.json负责 profile 与 peer 的映射,放在~/.hermes/settings.json

{ "defaultProfile": "default", "hosts": { "hermes.default": { "aiPeer": "default", "peerName": "你的名字", "workspace": "zhang-san", "observation": { "user": { "observeMe": true, "observeOthers": true }, "ai": { "observeMe": true, "observeOthers": true } } }, "hermes.work": { "aiPeer": "work", "peerName": "你的名字(工作)", "workspace": "zhang-san", "observation": { "user": { "observeMe": true, "observeOthers": false }, "ai": { "observeMe": true, "observeOthers": false } } } } }

两个文件的关系要理清:config.toml管“怎么学”,settings.json管“谁在学、学到的归谁”。workspace相同意味着多个 profile 共享对你的认知,aiPeer不同意味着它们各自发展独立人格。工作 profile 把observeOthers关掉,避免把生活场景的偏好带进工作上下文。

注意:base_url结尾不要加/v1,Hermes 会自己拼路径。加了会变成/v1/v1/chat/completions直接 404。

4. 完整动作演示:技能注册 → 记忆写入 → 行为验证

配置改完先重启 Hermes 让config.toml生效。然后我们走一遍完整链路,每一步都有可观察的结果。

4.1 技能注册:手动创建一个可被加载的技能

先手动建一个技能,确认目录结构和加载机制正常。创建~/.hermes/skills/taotoken-api-check/SKILL.md

--- name: taotoken-api-check description: 验证 TaoToken 接入点是否可用,检查 base_url 与密钥配置 category: devops --- ## 触发条件 当用户怀疑模型接入点配置错误,或需要验证 API 连通性时。 ## 执行步骤 1. 读取 ~/.hermes/config.toml 中的 base_url 和 model 字段 2. 用 curl 发送一次最小对话请求: curl -s https://taotoken.net/api/chat/completions \ -H "Authorization: Bearer $TAOTOKEN_KEY" \ -H "Content-Type: application/json" \ -d '{"model":"你的模型名","messages":[{"role":"user","content":"ping"}]}' 3. 检查返回 JSON 是否包含 choices 字段 4. 如果返回 401,提示用户检查 api_key 5. 如果返回 404,提示用户检查 base_url 是否误加了 /v1 ## 已知问题 - base_url 结尾加 /v1 会导致 404 - 密钥过期会返回 401,需重新生成 ## 验证方法 返回 JSON 中有 choices[0].message.content 即视为成功。

保存后跑hermes skills list,应该能看到taotoken-api-check出现在列表里。如果没出现,检查config.tomlbuiltin_dir路径是否指向了正确目录,以及SKILL.md的 frontmatter 是否有语法错误(YAML 对缩进敏感)。

4.2 记忆写入:让 Agent 记住一条偏好

启动 Hermes 对话,直接告诉它一条关于你的偏好:

记住:我所有的 API 密钥都放在 ~/.hermes/.env 里,不要建议我把密钥写进代码或配置文件。

Hermes 会调用 memory 工具写入。写入后,检查~/.hermes/memories/USER.md,应该能看到类似内容:

§ 用户的 API 密钥统一存放在 ~/.hermes/.env,不要建议将密钥硬编码进代码或配置文件

如果没写进去,看两个地方:一是config.tomlsecurity_scan是否把这条内容误判拦截了(密钥相关词汇容易触发扫描),二是后台审查是否还在跑(memory_nudge_interval默认 300 秒,可以临时调小到 30 秒方便调试)。

4.3 行为验证:确认记忆真的生效

这一步最关键。退出当前会话,重新启动 Hermes,然后问一个会触发记忆的问题:

我要调用一个外部 API,密钥应该放哪里?

如果记忆生效,Hermes 会直接回答“放在~/.hermes/.env”,而不是泛泛地说“用环境变量”。这就是冻结快照注入的效果——会话一开始,USER.md的内容就被拼进系统提示,Agent 不需要你重复交代。

再验证技能:新开会话,输入“帮我检查一下 TaoToken 接入点是否正常”。Hermes 应该加载taotoken-api-check技能并按步骤执行,而不是从零开始摸索。如果它没加载技能,检查SKILL.mddescription是否足够明确——触发匹配靠的是语义相似度,描述太模糊会匹配不上。

4.4 观察后台审查:让 Agent 自己进化

上面三步是手动验证。真正体现自进化的是后台审查。做一次稍微复杂的任务,比如“帮我把这个项目部署到 Vercel”,过程中会有多次工具调用。任务完成后等 10 次工具调用的阈值触发,后台审查代理会静默启动。

观察方法:看~/.hermes/skills/下是否多出了新目录,或者已有技能的SKILL.md是否被 patch 过。也可以临时把quiet_mode设为false,审查代理的输出会打到终端。审查代理的判断逻辑是:如果这次任务有试错、有非平凡方法、用户表达了不同期望,就创建或更新技能;否则输出 “Nothing to save.” 然后停止。它不会为了学习而学习,这点设计很克制。

5. 本篇常见错排查

配置跑不通,九成是下面几个问题。逐个对照。

报错401 Unauthorized:api_key 填错或过期。去 API Keys 页面重新生成:https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api-keys&utm_campaign=rewrite 。注意config.toml里密钥不要加引号以外的空格。

报错404 Not Found:base_url 写成了https://taotoken.net/api/v1。改成https://taotoken.net/api,Hermes 自己会拼/chat/completions

技能不加载SKILL.md的 frontmatter 缺namedescription,或者 YAML 缩进用了 Tab。YAML 只认空格。另外确认external_dirs里的路径是绝对路径或~开头,相对路径不认。

记忆写不进去security_scan拦截。密钥、token、authorized_keys 这类词容易触发。调试时可以先在config.toml里把security_scan设为false,确认链路通了再打开。

Honcho 连接失败endpoint填错,或者 Honcho 服务没启动。本地部署的话先确认http://localhost:8000/health能返回 200。如果不用 Honcho,把enabled设为false,不影响 Skills 和 Memory 的核心功能。

后台审查不触发skill_nudge_interval设太大,或者任务工具调用次数没到阈值。调小到 5 方便观察。另外确认auto_skill_managetrue

多 profile 记忆串了settings.json里两个 profile 的workspace相同但aiPeer也相同,导致人格没隔离。检查aiPeer字段是否各自唯一。

6. 把闭环跑顺之后

Skills、Memory、Honcho 三件套配好之后,Hermes 的行为会明显不一样:它开始记得你的工具偏好,开始复用解决过的问题,开始在不同 profile 之间保持一致的“对你的认知”但发展出各自的专长。这套闭环的价值不在于某一次对话变聪明,而在于用得越久、积累越厚。

如果你打算长期跑编码类任务或 Agent 工作流,可以考虑 Coding Plan,后台审查和技能维护会持续消耗 token,包月比按量更可控:https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding-plan&utm_campaign=rewrite 。接入文档里有完整的参数说明和更多配置示例:https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite 。如果你用 Claude Code 做主力编码工具,Anthropic 兼容接入的配置也在文档里:https://taotoken.net/claude-code-anthropic?utm_source=taotoken_aicg_blog_end&utm_content=claude-code-anthropic&utm_campaign=rewrite 。

最后给一个实用技巧:定期跑hermes skills listcat ~/.hermes/memories/USER.md,看看 Agent 都学了什么。发现过时的技能就hermes skills disable,发现记错的偏好就手动改USER.md。自进化不等于放任自流,你仍然是这只帕鲁的训练师。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/23 2:28:59

智能情境感知系统毕业设计全流程指南

1. 项目背景与核心价值智能情境感知个人助理系统是近年来人机交互领域的热门研究方向,它通过整合多模态传感器数据与环境上下文信息,实现主动式、个性化的服务推送。这类系统在2026年的毕业设计选题中具有显著优势:既包含算法复杂度满足本科毕…

作者头像 李华
网站建设 2026/9/23 2:28:58

搞懂I2P性能优化:3个实战技巧让你项目起飞

搞懂I2P性能优化:3个实战技巧让你项目起飞 刚把语法书啃完,对着空白的IDE发呆?很多人卡在这一步:代码能写,但一搭真实项目就崩,尤其是碰到高并发场景,I2P接口响应慢得像蜗牛。别急,这不只是你的问题。在Stack Overflow上搜“I2P performance…

作者头像 李华
网站建设 2026/9/23 2:28:54

ping 端口2026最新

5分钟搞定ping端口检测,源码解析助你告别死循环 看了一堆教程还是不会写项目?别慌,这不仅仅是你的问题,更是很多开发者的通病。大家往往盯着那些高深莫测的架构模式看,却忽略了最底层的网络交互逻辑。其实,只要把 源码解析 吃透,你会发现所谓的“网络黑盒”不过是几行代码的组合。今天我们就从最基础的…

作者头像 李华
网站建设 2026/9/23 2:28:49

OpenClaw 实战:用飞书做远程遥控器,打造可控的智能体操控面板

1. 从一个尴尬的场景说起:为什么我非要把 OpenClaw 整成面板动手搞这套东西的起因,其实挺狼狈的。那段时间我同时在处理十几类琐碎任务:定时抓取信息、把结构化数据整理成表格、按关键词过滤内容、维护本地知识库。每个任务我都找过对应的自动…

作者头像 李华
网站建设 2026/9/23 2:28:36

广野实战项目避坑指南:搞定版本升级与API变更

广野实战项目避坑指南:搞定版本升级与API变更 版本升级后 API 全变了,你的代码直接报错?别慌,这在转岗做机器学习或后端开发时太常见了。很多新手拿着旧文档写【实战项目】,一跑就崩,其实核心在于理解底层逻辑而非死记硬背。今天拆解【广野】相关技术栈中的典型变更,帮你快速上手。 概念速懂 广野…

作者头像 李华
网站建设 2026/9/23 2:28:30

g7503源码解析

g7503源码解析:面试必问的架构陷阱与重构实战 上周刚结束一场二面,面试官指着屏幕上的 g7503 模块问:“如果现在要把这个核心调度器从 v1.2 升级到 v2.0,接口签名全变了,你怎么保证业务方无感切换?”我愣了三秒,脑子里闪过无数报错日志。这就是典型的版本升级后 API 全变了,也是…

作者头像 李华