AI Agent 长期记忆与自我治理实践手册:本地事实库、定时抽取、技能库精简、AI 可读化(Hermes Agent v0.21.7 实测)
本文档面向人类与 AI 双读者:采用「摘要 → 事实表 → 机器可读 JSON → 分主题实践 → 实测数据 → 踩坑总表 → FAQ → 术语表 → 验收清单」结构,每个小节自包含、可独立切块引用。所有数字均为 2026-10-13 本机实测结果,非估算。
TL;DR(8 条可独立引用的要点)
- Agent 的”自带记忆”通常是两页预算制:Hermes Agent 的
MEMORY.md上限 2200 字符、USER.md上限 1375 字符,写满不溢出、要求模型当场合并。它是给提示词前缀缓存用的热数据,不是聊天缓冲区。 - 冷数据必须外置:用 holographic 插件建本地 SQLite 事实库(
~/.hermes/memory_store.db),模型写记忆时自动镜像落库,0 额外 token。 - 模型不会主动记全,尤其中文:必须加”批量抽取”补录机制——每周日 23:00 扫最近 7 天会话抽事实。
- 抽取用非思考模型,补漏用思考模型:实测同一段 11,400 字符对话,两者都抽出 11 条且无编造,但非思考模型 3.5 秒 / 636 output tokens,思考模型 13.9 秒 / 2,739 tokens(约 4 倍差距);归纳型洞察(偏好、风格)只有思考模型会抽到,故放在月度任务里。
- keywords 是召回的生命线:该方案检索为 FTS5 + 词重叠 + HRR 混合、无 embedding,不依赖语义理解。事实必须带 6-10 个”别人会怎么问”的关键词(含同义词、口语、上位词、英文缩写)。
- 技能库是要花钱的资产:每个技能在系统提示里占一行索引、每轮注入。实测精简 28 个技能后,技能索引从 7,342 → 3,921 字符(-47%),系统提示从 23,260 → 19,839 字符(≈1,070 tokens 固定前缀)。
- 卸载技能前先验证恢复通道:
hermes skills uninstall是真删;恢复靠hermes skills repair-official <name> --restore(从本机optional-skills/恢复,16 秒级、无需网络)。 - 配置层优于源码补丁:主题行为先查配置(含插件默认值),不要改
node_modules/——它会被npm install静默覆盖。实测把修复移到站点配置层后,重装 npm 依赖仍生效。
1. 关键事实表(Fact Sheet)
| 项目 | 值 |
|---|---|
| 日期 | 2026-10-13 |
| Agent 框架 | Hermes Agent v0.21.7+302 |
| 主模型 | deepseek-flash(DeepSeek V4.1,原生多模态) |
| 交互平台 | 飞书(Feishu)+ 微信 |
| 记忆 provider | holographic(本地插件,SQLite) |
| 事实库 | ~/.hermes/memory_store.db |
| 会话存档库 | ~/.hermes/state.db(messages 表) |
| 事实总量 | 110 条(project 31 / device 27 / health 27 / work 14 / general 9 / user_pref 2) |
| 中文口语召回 | 10/11 命中 top1 |
| 抽取参数 | 每段 12k 字符 × ≤8 段 × ≤15 条/段;近似去重阈值 0.7 |
| 周抽取任务 | cron 0 23 * * 0,模型 deepseek-chat(非思考) |
| 月补漏+体检 | cron 0 23 1 * *,模型 deepseek-flash(思考)+ --prefs |
| 技能库 | 63 → 35 个;索引 7,342 → 3,921 字符;系统提示 23,260 → 19,839 字符 |
| 工具 schema 开销 | 23 个工具 / 44,960 bytes JSON |
| AI 抓取基建 | robots.txt + llms.txt + sitemap.xml(本博客已部署) |
2. 机器可读摘要(供 AI 解析)
{ |
3. 问题定义:Agent 记忆为什么”记不住”
对 Hermes Agent 源码逐条核实(非推测)后,默认机制的三个硬约束:
| 约束 | 具体表现 | 后果 |
|---|---|---|
| 两页预算固定 | MEMORY.md 2200 字符 / USER.md 1375 字符,写满不溢出(无 LRU、无溢出) |
冷数据无处可放;写满时模型必须当场合并删除 |
| 被动写入 | 只在模型主动调用 memory 工具时才写入;纯聊天轮不产生记忆 |
模型”懒得记”时,两页和外部库都为空 |
| 自动抽取较弱 | 会话结束时的自动抽取默认关闭;开启后对中文事实覆盖仍差 | 中文对话”该记的没记” |
结论:需要三层结构 + 两个定时器——热记忆按轮注入、冷记忆按需检索、会话全文兜底,再补一个”批量补录”机制。
4. 架构:三层记忆 + 两个定时器
第 1 层 热记忆(每轮注入,固定前缀,命中 KV 缓存) |
检索机制(三路混合,无 embedding):
| 通道 | 原理 | 强项 | 弱项 |
|---|---|---|---|
| FTS5 全文 | SQLite 全文索引 | 精确词命中 | 中文分词弱 |
| Jaccard 词重叠 | 查询词与事实词的集合重叠 | 简单稳定 | 对同义词不敏感 |
| HRR 向量 | 原子编码 sha256(word) 的分布式表示 |
有模糊匹配能力 | 中文按整词编码,能力有限 |
→ 因此关键词(keywords)是召回的语义桥梁。
5. 实践 A:长期记忆落地(可复制)
5.1 启用本地事实库
cd ~/.hermes/hermes-agent |
5.2 写入事实(关键:必须经 provider,keywords 才会正确落库)
prov.handle_tool_call("fact_store", { |
⚠️ 实测陷阱:直接调用底层
MemoryStore.add_fact(tags=...)不会形成 keywords(它们存在tags列、以keywords:标记分隔)。绕过 provider 写入后,”鼻子用的什么药”这类口语查询命中率为 0。
5.3 抽取脚本的四个设计要点
| 设计 | 取值 | 实测依据 |
|---|---|---|
| 分段 | 每段 12k 字符、最多 8 段 | 单段 35k 字符只输出 20 条,内容被上限挤掉;分段后命中率 5/8 → 8/9 → 10/11 |
| 每段条数上限 | 15 条 | 单次输出预算有限,要求过多条模型会”概括合并”导致信息模糊 |
| 近似去重 | 字符二元组 Jaccard ≥ 0.7:不新建,改把新 keywords 并入已有事实 | 防止同一事实的多种说法堆积 |
| 提示词 | 明确”要记/不记”清单;keywords 必须写成”提问用词” | 提高中文事实产出率与召回率 |
# 每周:非思考模型,7 天窗口(省钱模式) |
提示词要点(可复用):
- 要记:用户本人的信息(健康/身体数据/病史/用药)、偏好与工作方式、项目与业务进展、做出的决定、环境与设备、推进中的目标
- 不记:寒暄、一次性执行细节、临时状态、助手自己的动作、很快过期的内容
- 硬性要求:content 用中文、一句话一主题(≤50 字)、主体明确、保留数字;keywords 6-10 个(含同义词/上位词/口语/英文缩写)
5.4 每月体检(只报告,不自动删)
python ~/.hermes/scripts/holo_health.py --dup-threshold 0.75 |
体检设计原则:只报告,不自动删除——删除必须由人确认,避免误删有价值事实。
5.5 定时器(cron)落地要点
{ |
- 用
no_agent: true+ 包装脚本:脚本 stdout 原样投递给用户(不经过模型,零额外成本) - 注意:空 stdout 时不发送任何消息(静默即正常);非零退出码才发错误告警
- 会话(cron 触发)默认
skip_memory=True,因此脚本必须直接写库,不能依赖 cron 会话去调 memory 工具
6. 实践 B:技能库治理(省提示词预算)
6.1 先测量:prompt-size 是官方内置的预算工具
cd ~/.hermes/hermes-agent |
输出结构(可直接程序化分析):
| 字段 | 含义 |
|---|---|
system_prompt.chars |
系统提示总字符数 |
skills_index.chars |
技能索引占用(每轮注入,常驻成本) |
memory / user_profile |
两页记忆占用 |
tools.count / tools.json_bytes |
工具 schema 开销 |
skills_breakdown[] |
每个技能的 index_line_bytes(索引行)、skill_md_bytes(正文体积)、path(实际生效的副本) |
实测基线:系统提示 23,260 字符,其中技能索引占 32%。
6.2 治理流程(照做,别跳)
① 盘点真实技能名 → 走文件系统(~/.hermes/skills 递归、排除 .archive) |
6.3 卸载与恢复(必须知道的差别)
| 操作 | 效果 | 可逆性 |
|---|---|---|
hermes skills uninstall <name> --yes |
仅对 hub 安装的技能有效;真删除,不进 .archive/ |
需靠 repair-official --restore 或网络重装 |
手动移动到 .archive/ |
归档,不加载 | ✅ 移回即恢复(推荐用于非 hub 技能) |
hermes skills repair-official <name> --restore --yes |
从本机 optional-skills/(155 个官方技能)恢复 |
16 秒级、无需网络 |
hermes skills uninstall(对 local/捆绑技能) |
报错 not a hub-installed skill (may be a builtin) |
需用归档方式 |
⚠️
hermes skills install在 GitHub 不通时会静默挂起(数分钟无响应、不报错):skills.sh 只做目录索引,技能内容走 GitHub。官方技能一律用repair-official --restore。
6.4 判断”真重复”还是”假重复”(防误合并)
| 方法 | 结果 |
|---|---|
| ❌ 全文 n-gram 相似度 | 被公共样板污染:实测把毫不相关的 github-auth × plan 算成 0.66 |
| ✅ 只比正文 + 5-gram shingles | plan × writing-plans = 0.743(真重复);GitHub 五件套互比仅 0.13-0.18(不是重复) |
| ✅ 超集验证 | 把”将被归档那份”的标志性句子在”保留那份”里 grep:全中 = 无损整合 |
6.5 合并策略(本手册最重要的治理结论)
不要合并上游跟踪(upstream-tracked)的技能:
- 合并 = 有损压缩(例:5 个 GitHub 技能共 54KB,压成 1 个必然丢命令细节)
- 更致命:被手工大改后技能会被标记为”用户改过”,永久失去上游更新(CLI 参数变化、安全修正全部收不到)
- 而收益只有一行索引(约 65-100 字节)
正确做法:省预算靠”卸载或归档不常用的“(安全、可逆),不靠合并。仅当 ① 技能为自建(无上游)② 内容确认高度重复时,才做整合,并保留可回退备份。
6.6 实测结果
| 指标 | 前 | 后 | 变化 |
|---|---|---|---|
| 活跃技能 | 63 | 35 | -28 |
| 技能索引 | 7,342 字符 | 3,921 字符 | -47% |
| 系统提示 | 23,260 字符 | 19,839 字符 | -3,421 字符(≈1,070 tokens) |
说明:技能索引位于系统提示的稳定前缀,享受 KV 前缀缓存;节省体现在首轮与缓存失效时,不是”每轮全额重算”。附带的非量化收益:技能更少 → 模型”选错技能”的概率更低。
7. 实践 C:AI 可读化改造(让 AI 能引用你)
博客的主要读者已从人类变为 AI 抓取器/问答引擎。有效做法分两层:
7.1 文章层:结构化写作模板
| 结构 | 作用 |
|---|---|
| TL;DR(可独立引用的要点) | AI 直接摘取 |
| 关键事实表(Fact Sheet) | 版本、路径、数字一目了然 |
| 机器可读 JSON 块 | 结构化事实,模型可直接解析 |
| 分主题实践(每节自包含) | 可整块引用 |
| 实测数据表 | 数字可验证,提升可信度 |
| 踩坑表(现象/根因/解法) | 检索命中率最高的内容形态 |
| FAQ(问答对) | 与 FAQPage 结构化数据一一对应 |
| 术语表 | 消除歧义、统一命名 |
| 显式日期 + 版本号 | 让 AI 判断时效性 |
7.2 站点层:三项基建
| 文件 | 内容 | 作用 |
|---|---|---|
robots.txt |
显式 Allow: / 给 GPTBot / OAI-SearchBot / ChatGPT-User / ClaudeBot / Claude-SearchBot / anthropic-ai / PerplexityBot / Google-Extended / Applebot-Extended / CCBot / Bytespider / cohere-ai,并指向 sitemap |
明确授权 AI 抓取器 |
llms.txt |
站点摘要 + 全部文章索引(按时间倒序、带一句话描述) | 新兴的 LLM 站点索引约定 |
sitemap.xml |
由 hexo-generator-sitemap 生成(Hexo 站点) |
让爬虫发现全部 URL |
7.3 结构化数据(Schema.org)
在文章正文中直接嵌入(Hexo 会原样输出 raw HTML):
<script type="application/ld+json"> |
配套要点:
- 语义化 URL:Hexo 用
abbrlink把永久链接设成可读 slug(permalink: /posts/:abbrlink/),比 hash 地址更利于引用 - meta description:front-matter 的
description会成为摘要来源,写成”包含关键数字的一句话” - llms.txt 需在每次发文后重新生成(解析
source/_posts/*.md的 front-matter 输出索引)
8. 实践 D:配置层优先于源码补丁(主题行为治理)
案例:关闭博客页脚”全站字数/阅读时长统计”
| 层次 | 位置 | 本次结论 |
|---|---|---|
| ① 站点配置 | _config.yml(Hexo + 插件层) |
✅ 正确的层:symbols_count_time.total_symbols/total_time: false |
| ② 主题配置 | _config.next.yml |
❌ 实测无效(模板读的是站点配置 + 插件默认值) |
| ③ 主题源码 | node_modules/hexo-theme-next/layout/** |
⚠️ 能用但危险:npm install 会覆盖,补丁静默消失 |
为什么会踩坑:插件会在运行时注入默认值——node_modules/hexo-word-counter/index.js 里硬编码 total_symbols: true / total_time: true,所以”站点配置没写”等价于”为真”。
验证配方(区分”配置生效”还是”补丁在兜底”):
cp <模板文件> /tmp/tpl.patched # 备份打过补丁的版本 |
实战检验:改用配置层后,执行 npm i hexo-generator-sitemap(重装依赖),页脚统计仍隐藏、单篇字数仍保留 ✅ —— 证明修复已”抗升级”。
9. 实践 E:受限网络环境下的安装与排障
在 github.com 直连不通(HTTP 000)的环境下安装 Hermes 插件/依赖的可行路径:
| 环节 | 现象 | 解法 |
|---|---|---|
| GitHub 代码 | github.com 000;git clone 超时 |
codeload.github.com 可下 tarball;用透传代理(如 ghproxy.net)拼 URL |
| 插件/技能安装器 | 安装器内部的 git clone 不读全局 git config(隔离配置)→ insteadOf 重写无效 |
显式传镜像 URL:hermes plugins install "https://<mirror>/https://github.com/<owner>/<repo>.git" --ref <sha> |
| 依赖里的固定 commit | 镜像站点报 Server does not allow request for unadvertised object |
用透传代理(可代理任意 commit),而非只做缓存的中转镜像 |
| Python 依赖 | uv lock 直连 pypi.org 长时间无进展 |
写 ~/.hermes/home/.config/pip/pip.conf(Hermes 子进程 HOME)+ ~/.config/pip/pip.conf,index-url = https://pypi.tuna.tsinghua.edu.cn/simple |
| npm 依赖 | 官方 registry 慢 | npm i <pkg> --registry=https://registry.npmmirror.com |
| 插件安全扫描 | 社区来源插件被拦(community source + caution verdict) | 先审计运行时代码(grep 网络调用/子进程/凭据读取),确认干净后 --force |
10. 方法论(适用于任何 Agent 系统优化)
| # | 方法 | 本次体现 |
|---|---|---|
| 1 | 先量再改 | prompt-size 测预算、抽取脚本 --dry-run、模型对照实验 |
| 2 | 破坏性操作先验证恢复通道 | 批量卸载前先跑通 uninstall → repair-official --restore |
| 3 | 用工具输出说话,不靠记忆 | 线上状态用 GitHub API 核对;相似度用真实文件算 |
| 4 | 警惕假阳性指标 | 全文相似度被样板污染(0.66 假重复)→ 改用正文 5-gram |
| 5 | 配置层优先于源码补丁 | 页脚字数统计改到站点配置层,抗 npm install |
| 6 | 受限环境找替代路径 | 镜像、透传代理、本机离线源(optional-skills/) |
| 7 | 验证成本与收益再动 | “合并技能”收益仅一行索引,代价是失去上游更新 → 否决 |
| 8 | 只报告不自动删 | 记忆体检脚本默认只输出报告,删除由人确认 |
11. 踩坑总表(现象 / 根因 / 解法)
| # | 现象 | 根因 | 解法 |
|---|---|---|---|
| 1 | 抽取脚本返回非合法 JSON、正文为空 | 思考模型的思维链与正文共享 max_tokens,思维链吃满后正文无预算 |
提高 max_tokens(6000-8000)+ JSON 容错;根治:抽取改用非思考模型 |
| 2 | 事实入库了但召回很差 | 绕过 provider 写库,keywords 未按 keywords: 标记落库 |
必须经 provider 的 fact_store add/update 写入 |
| 3 | 最新会话内容抽不到 | 按时间正序累计到字符上限会丢弃最新消息 | 改为从新到旧取,段内再还原正序 |
| 4 | 抽取覆盖率低 | 单段字符量过大 + 每段条数上限 → 内容被挤掉 | 分段(12k 字符/段)+ 每段 ≤15 条 |
| 5 | 卸载技能后找不回 | uninstall 是真删,不进 .archive/ |
官方技能用 repair-official --restore 从本机恢复;其余技能用”移动到 .archive/“方式 |
| 6 | hermes skills install 卡住数分钟 |
skills.sh 只做索引,内容走 GitHub;不通时静默挂起 | 官方技能走 repair-official --restore;第三方源走镜像 |
| 7 | 大量”假重复” | 全文 n-gram 被公共样板污染 | 只比正文(去 front-matter/标题)用 5-gram;≥0.6 才算重复 |
| 8 | 合并技能后不再更新 | 被标记”用户改过”→ 失去上游更新 | 上游跟踪的技能不合并;只用卸载/归档省预算 |
| 9 | 主题页脚统计关不掉 | 开关在站点配置层;写在主题配置无效;插件会注入默认值 | 改站点 _config.yml;用”还原模板重build”配方验证归属层 |
| 10 | 改 node_modules 后改动消失 |
npm install/update 重新下载覆盖 |
不改源码;把修复移到配置层,或固化成幂等补丁脚本 |
| 11 | 思考模型 max_tokens 贴顶 |
实测 completion 7,616 / 上限 8,000 | 非思考模型 + 分段 + 适度上限 |
| 12 | cron 任务”没反应” | no_agent 模式空 stdout 不发送任何消息 |
让脚本输出摘要;异常时用非零退出码触发告警 |
| 13 | cron 里 memory 工具不写入 | cron 会话默认 skip_memory=True |
脚本直接写库(经 provider),不依赖会话记忆 |
| 14 | AI 抓不到站点 | 无 sitemap.xml / robots.txt 未显式允许 AI 抓取器 |
补 sitemap + robots + llms.txt |
12. FAQ(面向检索与问答)
Q1:Agent 的记忆是自动的吗?
不是。默认只在模型主动调用记忆工具时写入;会话结束时的自动抽取默认关闭,且对中文事实覆盖较弱。要”自动记得”,需要外置本地事实库 + 定时抽取。
Q2:为什么热记忆写满不会溢出到数据库?
设计如此:热记忆是”故意做小”的前缀缓存数据,写满会报错要求模型当场合并删条目,无 LRU、无溢出机制。
Q3:为什么事实抽取要用非思考模型?
结构化抽取属信息归纳任务。实测同一段 11,400 字符对话,非思考与思考模型都抽出 11 条且无编造,但非思考模型 3.5s/636 tokens,思考模型 13.9s/2,739 tokens(约 4 倍)。思考模型的价值在”归纳偏好类洞察”,故放在月度补漏任务。
Q4:中文召回为什么有时查不到?
检索为 FTS5 + 词重叠 + HRR 混合、不含 embedding,不依赖语义理解,因此依赖 keywords。写事实时给出足够的口语同义词是最有效的改法。
Q5:卸载技能可逆吗?uninstall 是真删。但官方技能可用 repair-official <name> --restore 从本机 optional-skills/ 恢复(16 秒级、无需网络);非 hub 技能建议用”移动到 .archive/“方式,移回即恢复。
Q6:技能库精简省的是什么?
每个技能在系统提示里占一行索引(约 65-100 字节),每轮注入。精简 28 个技能省下约 3,421 字符固定前缀(≈1,070 tokens),并降低模型选错技能的概率。技能正文是按需加载的,不占固定开销。
Q7:为什么不能合并官方技能?
合并会导致①有损压缩(丢命令细节)②技能被标记”用户改过”、永久失去上游更新,而收益只有一行索引。省预算应靠”卸载/归档不常用的”。
Q8:怎么判断两个技能是不是真重复?
不要用全文相似度(会被 front-matter、When to Use、Pitfalls 等样板污染)。去 front-matter、去标题,只对正文做 5-gram shingles Jaccard:≥0.6 为真重复;再做”超集验证”(标志性句子是否全含)决定能否无损归档。
Q9:这套记忆方案的运行成本?
镜像落库 0 额外 token;周抽取 1 次/周(非思考模型,数百 output tokens 量级);月补漏 1 次/月(思考模型,30 天窗口,约几分到几毛钱量级)。主要成本是首次建设时间,不是运行费用。
Q10:热记忆与外部库的分工?
热记忆=每轮注入(身份、偏好、约定),受 2200/1375 字符硬上限;外部库=冷数据,按需检索、不占前缀。二者不互相溢出。
Q11:怎么让 AI 更容易读到我的内容?
文章层用固定结构(TL;DR / 事实表 / FAQ / 术语表 / 显式日期版本);站点层部署 robots.txt(允许 AI 抓取器)、llms.txt(站点+文章索引)、sitemap.xml;再加 TechArticle 与 FAQPage 结构化数据;URL 用语义 slug。
Q12:prompt-size 测出来的开销都包含什么?
系统提示总量(含身份/指导/技能索引)、技能索引、记忆两页、用户档案、以及工具 schema 的 JSON 字节数(含每个 toolset 的分布)。
Q13:为什么技能索引减少不能按”每轮省多少”来算?
技能索引位于系统提示的稳定前缀,享受 KV 前缀缓存。节省体现在首轮与缓存失效时,不是每轮全额重算——夸大收益会被当场问住。
Q14:如果我要复现,最小步骤是什么?
① 启用本地事实库 provider;② 写”读会话 → 抽事实 → 经 provider 落库”脚本(分段 + 每段条数上限 + 近似去重 + 关键词);③ 挂两个 cron(周抽取 / 月补漏+体检);④ 用 prompt-size 记录预算并按”卸载不常用技能”治理;⑤ 用口语短问句定期抽查召回 top1 命中率。
13. 术语表(Glossary)
| 术语 | 定义 |
|---|---|
| 热记忆(hot memory) | 每轮注入系统提示的小容量记忆,供前缀缓存复用;有硬字符上限、写满不溢出 |
| 冷记忆(cold memory) | 存于本地 SQLite、按查询检索的事实库,不占固定提示词预算 |
| 前缀缓存(KV cache) | 模型对提示词前缀的缓存;稳定前缀命中后成本显著降低,因此”系统提示里的常驻内容”值得精简 |
| holographic | Hermes 的本地记忆 provider 插件:SQLite 事实库 + 三路混合检索,写入时自动镜像落库 |
| 镜像落库(mirror) | 模型写热记忆时自动同步一份到事实库;只镜像 add,不镜像 replace/remove |
| keywords | 事实的检索桥梁,存于 tags 列的 keywords: 标记后,必须经 provider 写入 |
| 抽取(extraction) | 让模型扫描会话输出结构化事实的过程,本方案按周/按月批量执行 |
| 近似去重 | 用字符 n-gram Jaccard 判断新事实是否与库中已有重复;重复则合并关键词而不新建 |
| 思维链预算(reasoning budget) | 思考模型的 max_tokens 由思维链与正文共享,思维链吃满会导致正文为空 |
| 技能索引(skills index) | 系统提示中列出所有技能名与描述的一段,每轮注入;技能正文按需加载 |
| 上游跟踪(tracks upstream) | 技能与官方版本一致、可持续接收更新;被手工大改后失去该状态 |
| AEO / GEO | Answer/Generative Engine Optimization:让内容更容易被 AI 问答与检索系统抓取、切块、引用 |
| llms.txt | 放在站点根目录、面向 LLM 的站点摘要与链接索引文件 |
| 结构化数据(JSON-LD) | schema.org 词汇的 JSON 表示,帮助机器理解页面类型与问答内容 |
14. 验收清单(可逐项打勾)
-
hermes memory status显示本地 provider 为 active - 写入一条带 6-10 个 keywords 的中文事实,用口语短问句能命中 top1
- 抽取脚本
--dry-run输出合法 JSON 事实列表 - 抽取参数(分段/条数上限/去重阈值)按库规模调过
- 两个定时任务在
~/.hermes/cron/jobs.json且state=scheduled - 用
hermes prompt-size --json记录精简前后的技能索引字符数 - 每个被删除的技能都能说明恢复路径
- 站点有
sitemap.xml/robots.txt/llms.txt,且文章有 JSON-LD
15. 版本与更新说明
- 基于 Hermes Agent v0.21.7+302(2026-10-13)实测;不同版本的 provider 配置项、技能管理命令可能变化。
- v0.21.5 起 holographic 由内置改为需单独安装的插件(受限网络需镜像 + 本地 PyPI 源)。
- 文中的具体数字(事实条数、召回命中率、字符数)为当日快照,会随使用变化;方法与判断口径是稳定的部分。