Hindsight.md 6.7 KB

Hindsight 记忆系统

整理日期:2026-09-28 服务端:mac mini(10.10.10.25) 客户端:MacBook 上的 DeepSeek Harness

0. 结论速览

  • 最新版 支持第三方记忆系统 —— Hindsight 是 9 个内置 provider 之一,随 Starter 默认安装。
  • 本机其实有两条独立链路写入 Hindsight,排障时先分清是哪一条:
    1. dsh-mnemon(可组合记忆) —— Memory Spaces provider,配置在 ~/.mnemon/state/memory-providers.json;
    2. hindsight-coding-agents 插件 —— 每个仓库一个 bank,会话结束自动回写,配置在 ~/.hindsight/coding-agent.json。
  • 当前遗留 3 项:DSH UI 里 endpoint 端口填错、Hermes 未启用 hindsight、插件 v4 补丁属于本地临时改动。

1. 问题清单

问题 1:最新版是否还支持第三方记忆系统(Hindsight)?

结论:支持。

  • dsh-mnemon 0.5.17 通过 Memory Spaces provider 机制支持 9 种外部引擎。
  • Hindsight 适配器 dsh-mnemon-provider-hindsight 0.5.5 随 Starter 默认安装。
  • 配置入口:设置 → 插件 →「可组合记忆」页面(不在「记忆系统」标签页里)。

问题 2:Hindsight 显示「服务就绪 · 尚无已激活记忆空间」

状态:⚠️ 待修(在 UI 改一个字段即可)

  • 根因:端口填错。 实际落盘配置 ~/.mnemon/state/memory-providers.json 里是 http://10.10.10.25:9999 —— 9999 是控制台 Web UI 端口,所有 API 请求都被重定向到登录页。
  • 为什么还显示「就绪」:探活只测 /health/live,登录页也算响应 → 假就绪;随后发现 banks 时拿到的是 HTML → 0 个记忆空间。
  • 验证:同一 key + 8888 端口实测 200 OK,能正常列出 banks(含 coding-agent::ZLSH-数字化管理系统,23697 facts)→ key 和服务本身都没问题。
  • 修复:UI 里把 endpoint 改成 http://10.10.10.25:8888,保存即同步。

问题 3:Hermes 看不到自己的记忆空间

状态:⚠️ 待修

  • 根因:config.yaml 里 plugins.enabled 和 plugins.disabled 同时列了 hindsight,其中 disabled 生效;且没有配任何连接参数。
  • 证据:errors.log 每轮警告 Memory provider 'hindsight' is disabled。Hermes 从未连过 Hindsight,服务器上现有的 bank 全是 mini 上 coding agent 写的。
  • 修复:hermes plugins enable hindsight + 配 local_external 模式(endpoint 8888 + 现有 key),然后重启 gateway。

问题 4:装 hindsight-coding-agents 后每轮报 format v4 message requires a producer-owned source kind

状态:✅ 已用官方临时补丁修复(等上游发版前有效)

  • 根因:插件 0.7.0 注入 recall 消息时用了 v3 旧写法 kind:"plugin",被 dsh 0.1.7-rc.2 的 v4 会话格式准入校验拒绝 → 整轮失败。
  • 上游:已有 3 个重复 issue(#4626 / #4701 / #4818);修复 PR #4639 已合并 main,但 npm 未发版(#4779 催发中)—— 所有安装渠道拿到的都是坏的。
  • 已完成的修复:
    1. 备份原文件 dist/dsh.js.bak-20260928;
    2. 按 issue #4779 的官方临时补丁改一行(18446):kind:"plugin", plugin:HINDSIGHT_PLUGIN → kind: HINDSIGHT_PLUGIN;
    3. 用 dsh 本体真实校验函数 assertV4RowAdmission 实测:补丁后的 shape PASS、旧 shape FAIL(精确复现原始报错);
    4. 重启 3080(dsh 0.1.7-rc.2),监听正常。
  • 注意:补丁会被插件重装/升级覆盖;等上游 0.7.1 发布后正常升级即可,不要长期依赖这个改动。

2. 遗留待办

  • DSH UI:把 Hindsight endpoint 改为 http://10.10.10.25:8888
  • Hermes:plugins enable hindsight + 配 local_external,重启 gateway
  • 关注 hindsight-coding-agents 0.7.1 发版,升级后撤掉本地补丁

3. 同一条链路上的历史问题(2026-09-28 更早排查,已修)

  • mac mini 断网(无默认路由 + 无 DNS):容器所有云端嵌入/LLM 调用失败 → recall 返回 500 Failed to generate batch embeddings: Connection error.,09-28 凌晨 01:37 之后各记忆空间的写入全面停摆。 修复:networksetup -setmanual Wi-Fi 10.10.10.25 255.255.255.0 10.10.10.252 + -setdnsservers Wi-Fi 114.114.114.114 223.5.5.5(该机现为静态 IP,换网络时记得 -setdhcp 改回 DHCP)。
  • 远程重启 mac mini:用 sudo fdesetup authrestart(可一次性解锁 FileVault,SSH 约 40 秒后自动恢复);普通重启会锁在 FileVault 登录界面,SSH 再也连不上。FileVault 开启时 macOS 不允许自动登录(sysadminctl -autologin 直接报错),所以重启后若无人登录图形界面,容器不会自启。
  • DSH 运行时记忆为空:~/.dsh/profiles/web/cordis.patch.yml 里 mnemon-strategy-scoped 的 sourceKeys/writableSourceKeys 只留了 mnemon-source-memory-spaces,导致 runtime/mutate、documents/search 不被 View 提供(会话里报 Source Action is not offered by the current View: runtime/mutate)→ MEMORY.md / USER.md 永远为空。 修复:恢复为 runtime(working-context)+ documents(narrative)+ memory-spaces(durable-evidence),重启 dsh web 后验证写入成功。

4. 关键路径速查

用途 路径 / 命令
DSH mnemon 配置补丁 ~/.dsh/profiles/web/cordis.patch.yml
Mnemon provider 落盘状态(endpoint / apiKey / 记忆空间清单) ~/.mnemon/state/memory-providers.json
热记忆文件 ~/.mnemon/runtime/MEMORY.md、~/.mnemon/runtime/USER.md
DSH ↔ Hindsight 插件配置 ~/.hindsight/coding-agent.json
插件日志与诊断 ~/.hindsight/coding-agents-logs/plugin.log、diag.jsonl、usage.jsonl
插件状态脚本 node ~/.dsh/profiles/web/node_modules/@vectorize-io/hindsight-coding-agents/dist/status.js --repo <路径>
mac mini 容器操作 export PATH=/usr/local/bin:$PATH 后用 container(容器名 hindsight-local)

5. 已知坑

  • 8888 = API,9999 = 控制台。DSH / Hermes / 插件连 Hindsight 一律填 8888;填 9999 会「看起来就绪、实际 0 个空间」。
  • 控制台登录接口是 POST /api/auth/login,body {"key":"<控制台 access key>"}(Authorization: Bearer、X-Api-Key、Cookie 全部 401);access key 来自容器的 HINDSIGHT_CP_ACCESS_KEY 环境变量。
  • Mnemon 设置页的「参与 Source / 记录目标」改的就是 cordis.patch.yml;把它收窄成只有记忆空间,会让热记忆与文档层一起失效,且改完必须重启 dsh web 才生效。
  • hindsight-coding-agents 0.7.0 的 v4 修复是本地打补丁,插件重装/升级即丢。