# 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 修复是本地打补丁,插件重装/升级即丢。