19. Honcho 记忆 + Memory
本章你将学到
- Hermes 5 层记忆架构详解
- Honcho 是个什么"用户建模" 神器
- FTS5 全文搜索玩法
- memory.md / user.md 的手动编辑
- 双压缩 + Anthropic prompt caching 省 70-90% 成本
19.1 5 层记忆全景
回顾 2 章 提过的:
┌────────────────────────────────────────────┐
│ 1. Working Memory 当前对话上下文 │ 自动
├────────────────────────────────────────────┤
│ 2. Session Memory FTS5 全文索引历史会话 │ 自动
├────────────────────────────────────────────┤
│ 3. memory.md 长期事实(可手编) │ 自动+手动
├────────────────────────────────────────────┤
│ 4. user.md 用户偏好画像(可手编) │ 自动+手动
├────────────────────────────────────────────┤
│ 5. Honcho 深度用户建模 │ 完全自动
└────────────────────────────────────────────┘下面逐个讲。
19.2 第 1 层: Working Memory(工作记忆)
当前对话的全部上下文。
控制:
# ~/.hermes/config.yaml
memory:
working:
max_turns: 30 # 最近 30 轮对话进 prompt
summarize_after: 20 # 超 20 轮的老的自动摘要
summary_model: deepseek/deepseek-chat # 摘要用便宜模型自动摘要机制
对话第 21 轮起,前 10 轮被压缩成 1-2 段摘要:
[Summary of turns 1-10]
用户在调试一个 React 项目的 redux store 问题,
试了 reset / clear cache / 改 middleware 3 种方法,
最后定位到是 thunk 没正确处理 async action。后 20 轮保持原文。
效果:50 轮长对话 prompt 实际只有 ~8K tokens。
19.3 第 2 层: Session Memory(FTS5 全文搜索)
每次对话结束自动入库,建 SQLite FTS5 全文索引。
随时搜:
hermes memory search "redis 性能"输出:
3 sessions matched:
1. [2026-04-15 22:30] redis-perf-fix (45 messages, 1h 23m)
...上次我们改了 maxmemory-policy 解决了 evict 慢的问题...
2. [2026-03-20 14:00] cache-design (28 msg, 56m)
...讨论用 redis 还是 memcached...
3. [2026-02-08 09:15] startup-tuning (12 msg, 18m)
...配置 redis cluster...载入续聊
hermes /load redis-perf-fix或在 TUI:
> /load 1直接接着 4 月 15 号那次对话继续聊,Hermes 当时的所有 context 都恢复。
在普通对话里隐式搜
不用显式 /search。Hermes 自己会用:
你: 之前那个 redis 性能问题最后怎么解决的?
Hermes (内部): 调 memory.search("redis 性能") → 找到 2026-04-15 session
Hermes: 4 月 15 号你改了 maxmemory-policy 从 noeviction 到 allkeys-lru,
同时把 evict 触发阈值从 100% 调到 85%,问题解决。FTS5 索引文件
存在 ~/.local/share/hermes/sessions.db。100 万条对话占约 200MB,性能仍 < 100ms 查询。
19.4 第 3 层: memory.md(长期事实)
~/.hermes/memory.md —— 你的"个人事实库",markdown 自由格式。
例子:
# 长期记忆
## 主人基本
- 张三,1990 年生,北京
- 独立开发者,做 ai-learning-docs 项目
## 偏好
- 早起 6:30,咖啡只喝美式不加奶糖
- 不吃花生(过敏)
- 健身周一三五
## 工作
- 主语言: TypeScript / Python / Go
- 当前项目: ai-learning-docs (持续维护)
- 紧急任务: some-app demo(5/23 截止)
## 重要联系人
- 老板 王总: 技术问题找
- 直属 boss 李总: 日常对接
## 偏好的工具 / 服务
- 编辑器: Neovim + LunarVim
- 终端: Alacritty + Tmux
- 浏览器: Firefox + uBlock
- 笔记: LogseqHermes 调用 LLM 前自动把 memory.md 注入 prompt(不是全部,按相关性挑)。
自动 vs 手动添加
自动
LLM 听到关键信息会调 memory.append(...) 写入。例如你说"我对花生过敏",自动追加。
手动
hermes memory add "我下个月要去日本出差"或直接编辑:
nvim ~/.hermes/memory.md让 Hermes 忘掉
hermes memory forget "花生过敏"
# 或
> /forget 花生过敏会在文件里 mark 为"forgotten",下次不再注入。
19.5 第 4 层: user.md(偏好画像)
~/.hermes/user.md —— 比 memory 更高层的"我是怎样的人"。
例子:
# 用户画像
## 沟通风格
- 偏好简洁直接,不喜欢"在这个问题上"这种废话
- 接受适度自嘲 / 段子(但工作场景克制)
- 拒绝 emoji 滥用(每段最多 1 个)
## 知识背景
- 技术深度: 资深(10+ 年)
- 语言: 中文母语,英文阅读专业级
- 不熟悉的领域: 法律、医疗、金融
## 决策模式
- 数据驱动 > 直觉
- 偏好 reversible 的小步实验
- 接受 50% 不完美换 80% 速度
## 教学偏好
- 喜欢类比 / 比喻而非纯抽象
- 看代码示例比看文字描述快
- 不喜欢被 hand-hold(嫌啰嗦)
## 常见 frustrations
- AI 说"我不能做这个"但其实能
- 装很多依赖才能用
- 过长的"礼貌"开场白Hermes 看完这个,会自动调整回答风格——直接、给代码、不写废话。
自动生成
跑一阵后让 Hermes 总结:
hermes user-profile generate它会根据你过去 N 次对话自动写一份。你 review 后保存。
手动调整
直接编辑 user.md。改完立刻生效。
19.6 第 5 层: Honcho(最深的层)
Honcho 是 Plastic Labs 出的开源用户建模 SDK。
它干啥
不是简单存"用户偏好"——它持续推断用户的:
- 沟通模式(话长短、句式、emoji 频率)
- 决策风格(保守 / 激进、依赖数据 / 直觉)
- 知识盲区(哪些概念你听了反应慢)
- 情绪倾向(哪种话题让你兴奋 / 烦躁)
- 关注重心(最近一周聊得最多的)
怎么用上
Hermes 出厂自带 Honcho 集成。每次对话自动喂数据 Honcho 训练。
启动后约两周Honcho 模型成熟,明显感觉 agent "更懂你"。
查看 Honcho 推断
hermes memory honcho profile输出(示例):
🧬 Honcho user profile (trained on 234 sessions)
Communication
Avg message length: 35 chars (concise)
Question ratio: 0.42
Emoji density: 0.05 (low)
Code block frequency: 0.31 (high)
Knowledge depth
Technical: ★★★★★ (Senior)
Domain expertise: Python > TypeScript > Go > Rust
Weak areas: legal, medical, finance
Decision style
Risk tolerance: medium-low
Evidence preference: data-driven (0.78 / 1.0)
Reversibility preference: high
Engagement patterns
Most active: 10:00-12:00, 22:00-23:30
Topics this week: AI agents, vim plugins, hermes
Topics declining: react components
Frustrations (inferred)
- Verbose explanations
- Overly cautious AI responses
- Setup complexity这才是 Hermes "growth" 的真意
不是字面意义上 LLM 升级——而是 Hermes 对你的理解模型在长大。
隐私
Honcho 数据存在 ~/.local/share/hermes/honcho.db。完全本地,不出网(除非你主动 backup 到云)。
重置 Honcho
hermes memory honcho --reset如果你觉得它"画像偏了",可以重置重新学。
19.7 双压缩 + Anthropic prompt caching
Hermes 的两大成本优化技术。
双压缩(Dual Compression)
memory:
optimization:
dual_compression: true
compression_levels:
light: pruning # 去重 / 删空白
heavy: summarization # LLM 摘要
summary_model: deepseek/deepseek-chat
summary_threshold_tokens: 4000 # 超 4K 时压缩效果:
- 50 轮对话 prompt 50K → 实际 8K
- 摘要用便宜模型,省 90% 摘要成本
Anthropic Prompt Caching
如果用 Claude,强烈建议开:
llm:
providers:
anthropic:
prompt_caching: true
cache_ttl: 5m效果:
- system prompt / 长记忆 / skill 列表的部分只收 1/10 费用
- agent 多轮对话省 70-90% 成本
- 速度也快(cache hit 延迟 < 100ms)
19.8 多 agent 共享 memory
跨 agent 共享个人事实,但各自有独立画像:
memory:
shared:
- memory.md # 个人事实共享(花生过敏所有 agent 都知道)
- user.md # 偏好共享
per_agent:
- skills # skill 各管各的
- honcho # 画像各管各的(工作 agent 和家庭 agent 画像不同)19.9 备份记忆
记忆是你的"数字大脑"——丢了就重头来。
# 全备份
tar -czf hermes-mem-$(date +%F).tar.gz \
~/.hermes/memory.md \
~/.hermes/user.md \
~/.hermes/skills/ \
~/.local/share/hermes/
# 或用 Hermes 内置
hermes memory export --output hermes-mem.tar.gz跨设备同步
适合多设备用 Hermes(笔记本 + 台式 + 服务器):
# 用 git
cd ~/.hermes
git init
git add memory.md user.md skills/
git commit -m "..."
git remote add origin <private-repo>
git push只同步 markdown,不同步 .db(Honcho / FTS5 数据太大)。
19.10 常见问题
Q:Hermes 没记住我说过的事
清单:
hermes memory list看 memory.md 有没有相关条目- 没有 → LLM 没决定 append。手动
hermes memory add "..." - 有 → 看 retrieval threshold 是不是太高
Q:memory.md 越来越大
修复:定期归并精简。
hermes memory compact
# 把相关条目合并,删过时的Q:Honcho 推断好像偏了
修复:
hermes memory honcho --reset或手动改 user.md 强制覆盖。
Q:FTS5 搜索结果不相关
修复:重建索引
hermes memory rebuild-index看完这一章你应该知道
✅ 5 层记忆: Working / Session / memory.md / user.md / Honcho ✅ FTS5 让 100 万对话都能秒搜 ✅ memory.md 手动编辑随时生效 ✅ Honcho 自动学你的沟通风格、决策模式 ✅ 双压缩 + prompt cache 省 70-90% 成本 ✅ memory 跨设备同步用 git(只同步 .md)
下一步:20. MCP 协议接入 →
记忆让 Hermes 懂你,MCP 让它能接入更多外部工具。