问题:Agent 越来越聪明,但越来越健忘
你装了 242 个 Skill、配了 Hindsight 向量记忆、自以为给 Agent 造了个完美的外脑。然后你发现——Agent 还是忘事。 不是 Agent 笨。是记忆系统选错了。 本文从三个真实场景出发,对比两个代表性方案:Hindsight(向量 API 平台)和 AgentMemory(本地优先记忆产品)。不是功能列表,是我们在三个月的实战中踩出来的选择逻辑。
场景一:你希望 Agent「自动记住一切」
AgentMemory 的设计哲学是「我看到什么,我自己记」。它通过 12 个生命周期 Hook(PostToolUse、SessionStart、SubagentStop 等)自动捕获每一次工具调用、每一个失败报错、每一轮对话。
Hindsight 的设计哲学是「你要告诉我记住什么」。需要手动调用 hindsight_retain 或依赖定时触发(每 N 轮自动一次)。
| 场景 | Hindsight | AgentMemory |
|---|---|---|
| 自动捕获每次工具调用 | ❌ 需手动/定时 | ✅ 12 个 Hook 自动抓 |
| 三年后回溯「那次 SSH 调试用了哪条命令」 | ❌ 没存就找不到 | ✅ 只要当时执行过,就有记录 |
| 内存无限膨胀 | ✅ 但需自己写衰减脚本 | ✅ 内置 Ebbinghaus 衰减 |
| 新 session 自动注入相关记忆 | ✅ prefetch | ✅ SessionStart hook |
场景二:你需要精准的中文语义搜索
AgentMemory 默认用 all-MiniLM-L6-v2(英文轻量 embedding)做向量搜索。中文查询基本靠 BM25 关键词硬搜。 实测中文召回质量远不如专用中文模型。
Hindsight 通过 bge-large-zh-v1.5(1024 维中文向量)+ bge-reranker-v2-m3(交叉编码器重排)双阶段检索,中文 Top-10 命中率可达 89%。
| 维度 | AgentMemory | Hindsight |
|---|---|---|
| Embedding 模型 | MiniLM(英文) | bge-large-zh-v1.5(中文) |
| 重排序 | 无 | bge-reranker-v2-m3 |
| 中文召回 | ⚠️ 靠 BM25 | ✅ 89% Top-10 |
| 部署 | npm install -g 一条命令 | Docker + vLLM + PostgreSQL |
场景三:你只能选一个 Memory Provider
大多数 Agent 框架只允许一个外部记忆提供方。Hermes Agent 明确限制 memory.provider 只能设一个值。选了 Hindsight 就不能同时用 AgentMemory,反之亦然。
如果必须二选一:
- 中文为主 → Hindsight(embedding 优势不可替代)
- 英文为主、需要自动捕获 → AgentMemory(12 个 Hook 零摩擦)
- 想两者都要 → 用 post_tool_call shell hook 把工具输出同时喂给 Hindsight,但 Hindsight 得到的是「灌进去的数据」而非「自动捕获的上下文」
一个解决不了的根本矛盾
AgentMemory 的记忆衰减(Ebbinghaus 曲线)、四层压缩(Working→Episodic→Semantic→Procedural)、Web Viewer 这几个特性,Hindsight 全没有。但 Hindsight 的中文精排和 LLM 深度推理,AgentMemory 也没有。 这不是二选一,是互补。 只是现在的 Agent 框架还没有「双 Provider」机制。
我们怎么用的
经过三个月实战,我们的方案:
- Hindsight 当主力——中文语义搜索 + LLM 事实提取 + GPU 重排
- 定时衰减脚本——cron 每周清理过期记忆,零 LLM 调用
- 失败日志——post_tool_call hook 把失败的命令单独记到文本文件,不占 Token
- tag 分层——每次 hindsight_retain 时打 tag(permanent/decision/method/ephemeral),衰减脚本按 tag 分级处理
总结
- 选 Hindsight:你需要精准的中文搜索、LLM 深度推理、GPU 加速
- 选 AgentMemory:你需要零配置、自动捕获、记忆生命周期管理
- 选「都来点」:Hindsight 当主力 + shell hook 补自动化 + 自建衰减脚本
本文由 admin 原创,转载请注明出处。
评论
0