ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Hermes Agent 调教实录(三):AI Agent 记忆粒度与归属实测——SOUL 配置骨架与验证动作

Hermes Agent 调教实录(三):AI Agent 记忆粒度与归属实测——SOUL 配置骨架与验证动作 1. 记忆粒度与归属为什么你的 Hermes Agent 记了一堆却用不上Hermes Agent 是一个可本地部署、支持多 profile 的 AI Agent 运行框架它能读写文件、调用技能、执行多步任务适合想把 Agent 真正用进日常交付流程的人。但很多人第一次配记忆就翻车要么记忆文件里只有一句「用户喜欢表格」Agent 交付时表格格式换了三种要么把用户画像、项目背景、历史决策全塞进去每次会话光读记忆就吃掉一大截上下文成本涨了重点反而被淹没。问题的根子不在「写多写少」而在两个更底层的东西粒度和归属。粒度是每条记忆写多细——是一句话偏好还是带字段规范的结构化条目归属是这条内容该放哪一层——是放进身份文件 SOUL还是放进记忆文件 MEMORY。我实测下来把行为纪律写进记忆触发率只有 1-2/3同样的句子写进 SOUL3/3 全触发。这不是玄学是 Agent 对「我是谁」和「我知道什么」的处理方式不同。这篇是 Hermes Agent 调教实录第三篇聚焦记忆系统的粒度划分与归属策略给出可直接复制的 SOUL 配置骨架、config.toml/settings.json 级配置片段以及三步验证动作。你跟着做完能在自己的 Agent 上复现「粗粒度起步、纪律进身份、沉淀要限量」这套分层原则。适合已经在跑 Hermes Agent、但记忆越写越乱的人如果你还没配过记忆也能从零跟下来。2. 前置TaoToken 接入与 Hermes Agent 环境准备Hermes Agent 本身不绑定模型供应商它通过 OpenAI 兼容接口调用后端模型。我这次实验用的是 TaoToken 提供的 API 通道原因是它同时支持对话模型和编码类模型切换模型只改一个 base_url 和 model 名不用动 Agent 主体逻辑。官网入口在 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 基址是 https://taotoken.net/api 这个地址不加 UTM 参数直接填进配置即可。你需要先拿到一个 API Key。进控制台创建https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite 然后在 API Keys 页面生成密钥https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite 。Key 只在创建时完整显示一次复制后存进环境变量别硬编码进配置文件。环境变量这样设Linux/macOSexport TAOTOKEN_API_KEYsk-你的密钥 export TAOTOKEN_BASE_URLhttps://taotoken.net/apiWindows PowerShell$env:TAOTOKEN_API_KEYsk-你的密钥 $env:TAOTOKEN_BASE_URLhttps://taotoken.net/apiHermes Agent 的 profile 目录结构大致是这样后面所有配置都落在这里~/.hermes/ profiles/ default/ config.toml # 运行参数、模型接入 settings.json # 记忆/技能开关、路径 SOUL.md # 身份层纪律、自我要求 MEMORY.md # 记忆层偏好、环境事实、约定 skills/ # 技能目录如果你还没装 Hermes Agent先按官方文档把 CLI 跑起来确认hermes --version有输出再继续。模型接入文档在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 里面有完整的 base_url 和鉴权说明。3. 可复制配置SOUL 骨架 config.toml settings.json这一节是全文核心给你三份可直接抄的配置。先讲分层原则再给文件内容。分层原则一句话行为纪律进 SOUL参考信息进 MEMORY。纪律是「我必须这样做」比如「任务匹配技能时先加载技能再动手」「写完自测」信息是「我知道这些」比如「用户偏好表格化」「输入在 inputs/ 目录」。Agent 对 SOUL 的服从是身份级的对 MEMORY 的引用是参考级的混放就会导致纪律被当建议。3.1 SOUL.md 配置骨架SOUL 只放纪律条目控制在 5-8 条每条一句话动词开头。下面是我实测触发率最高的骨架# 身份Hermes 交付型 Agent ## 行为纪律必须执行 - 任务匹配技能时先加载技能再动手不允许跳过技能检查。 - 任何交付物写完后先自测一遍再汇报自测不通过不交付。 - 具体数据必须标注来源来源不明时明确写「来源待确认」。 - 输出文件只写入 outputs/绝不写回 inputs/。 - 汇报与沉淀分离沉淀写进记忆汇报照常完整输出。 ## 自我要求 - 我是交付型 Agent宁可少做一步不做未验证的一步。 - 遇到不确定的环境事实标注「推断」不当作事实使用。注意最后一条「自我要求」——它专门用来压制自主沉淀时把猜测当事实的毛病。实测里 Agent 会把「输出文件是框架预建的占位文件」这种误解写进记忆加了这条之后同类猜测会被标注成推断。3.2 config.toml 模型接入片段[model] provider openai-compatible base_url https://taotoken.net/api api_key_env TAOTOKEN_API_KEY model deepseek-v4-flash temperature 0.3 max_tokens 4096 [agent] profile default max_turns 20 memory_enabled true soul_enabled true [memory] # 记忆文件路径 path ~/.hermes/profiles/default/MEMORY.md # 每轮沉淀上限防止接力链成本膨胀 max_entries_per_turn 3 # 只沉淀验证过的事实 require_verified_facts truemax_entries_per_turn 3是关键参数。不设限时Agent 每轮沉淀 8-9 条接力几轮后上下文成本能到基线的 2.49 倍。限到 1-3 条成本可控质量反而更聚焦。3.3 settings.json 记忆与技能开关{ memory: { enabled: true, layer: memory, auto_sediment: true, sediment_limit: 3, cleanup_interval_turns: 10, guess_marker: 推断 }, soul: { enabled: true, layer: identity, strict_mode: true }, skills: { preload_on_match: true, check_before_task: true } }strict_mode: true让 SOUL 里的纪律以强约束方式注入系统提示这是触发率从 1-2/3 提到 3/3 的开关。cleanup_interval_turns: 10每 10 轮清理一次过期记忆条目防止接力链无限膨胀。3.4 MEMORY.md 粗粒度起步模板记忆从 5 条起步别一上来就写 10 条结构化。实测粗粒度成本只有基线的 0.8 倍细结构化成本 1.24 倍但达标率只高不到 4 个点。# 用户偏好 - 用户偏好表格化呈现、中文标题。 - 具体数据必须标注来源。 # 环境事实 - 本环境任务输入在 inputs/ 目录产物写入 outputs/。 - 清洗类任务按去重、规整、脱敏三步执行。 # 项目约定 - 交付文档统一用 Markdown代码块标注语言。这三段就是最小可用记忆。等你发现某类任务反复因为细节缺失返工再往对应段落补条目按需细化。4. 三步验证确认粒度与归属真的生效配完不算完得验证。下面三步是我每次改完记忆配置都会跑的能直接看出纪律触发和沉淀质量。4.1 第一步验证纪律触发率构造一个必然匹配技能的任务看 Agent 是否先加载技能。在 profile 目录下执行hermes run --profile default \ --task 清洗 inputs/raw.csv去重后输出到 outputs/clean.csv \ --trace--trace会打印每轮的技能检查记录。看输出里有没有skill_check: triggered这一行。如果连续三次任务都出现说明 SOUL 里的纪律生效了。我实测把这条纪律放 MEMORY 时三次里只有一到两次触发放 SOUL 加strict_mode后三次全触发。4.2 第二步验证沉淀限量与猜测标注跑一个多轮接力任务观察每轮沉淀条数和是否有「推断」标注hermes run --profile default \ --task 分三轮处理 inputs/ 下的三个文件每轮结束后沉淀经验 \ --trace --memory-dump--memory-dump会在每轮结束打印新增记忆条目。正常表现是每轮新增 1-3 条超过 3 条被截断出现环境猜测时带「推断」后缀。如果看到某轮新增 8 条以上检查max_entries_per_turn是否生效如果猜测没标注检查 SOUL 里那条「自我要求」是否写进去了。4.3 第三步验证成本与达标率对比开记忆和关记忆两轮同任务的 token 消耗# 开记忆 hermes run --profile default --task 生成季度数据报告 --stats # 关记忆临时 hermes run --profile default --task 生成季度数据报告 --no-memory --stats--stats输出总 token 和轮数。粗粒度记忆的正常表现是 token 比无记忆低 10%-20%因为减少了探索返工。如果开记忆反而贵很多多半是记忆条目太细或沉淀没限量回到 3.4 节精简。5. 本篇常见错排查配记忆踩的坑比较集中列几个我遇到过的对照排查。纪律写进 MEMORY触发弱。现象是技能检查时有时无。原因是记忆层被 Agent 当参考信息不是硬约束。修复把纪律条目从 MEMORY.md 移到 SOUL.md并在 settings.json 里开strict_mode。记忆写太细成本涨收益低。现象是 token 到基线的 1.2 倍以上达标率没明显提升。修复默认粗粒度只对高度依赖具体规范的任务字段规范、行业术语补细节条目。任务后沉淀不限量接力成本爆炸。现象是多轮任务越跑越贵第三轮 token 是首轮的两三倍。修复config.toml 里设max_entries_per_turn 3settings.json 里设cleanup_interval_turns定期清理过期条目。猜测被当事实沉淀。现象是记忆里出现「输出文件是框架预建的」这类没验证过的环境描述后续轮次当真使用。修复SOUL 里加「不确定的环境事实标注推断」config.toml 里开require_verified_facts true。沉淀把汇报挤没了。现象是 Agent 说「结果已在上方输出」最终回复极简。原因是沉淀和汇报混在一起。修复SOUL 里明确「沉淀与汇报分离」沉淀进记忆汇报照常完整。多项目共用 Agent环境事实串味。现象是 A 项目的目录约定被用到 B 项目。修复环境事实只写通用的项目约定放项目级约束文件别写进全局 MEMORY。6. 继续往下模型切换、编码计划与文档入口记忆配好之后下一步通常是换模型做对比或者把 Agent 接进长期编码流程。这两条路我都走过给你分流入口。想验证不同模型对同一套记忆配置的反应用模型对话页快速试https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_contentmodel-chatutm_campaignrewrite 。同一个 SOUL 骨架换 deepseek-v4-flash 和别的模型跑触发率会有差异值得实测。如果你要把 Hermes Agent 长期用于编码或 Agent 流水线看 Coding Planhttps://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite 。它适合需要稳定调用、多轮接力的场景配合本篇的沉淀限量策略成本能压住。接入细节和参数说明都在文档里https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 。ClaudeCodeAnthropic 相关配置单独有一页https://taotoken.net/claudecode-anthropic?utm_sourcetaotoken_aicg_blog_endutm_contentclaudecode-anthropicutm_campaignrewrite 需要接 Anthropic 系模型的从这进。最后留一句实操经验改完 SOUL 或 MEMORY 后别急着跑长任务先用 4.1 节那条单任务命令验证纪律触发确认skill_check: triggered出现了再往下走。记忆配置的调试成本远低于跑废一轮长任务的成本。
返回列表