Bladeren bron

vault backup: 2026-09-28 12:53:53

zhensolid 3 weken geleden
bovenliggende
commit
6f9760d4b3
1 gewijzigde bestanden met toevoegingen van 85 en 0 verwijderingen
  1. 85 0
      01-AI与模型/DSH/Hindsight.md

+ 85 - 0
01-AI与模型/DSH/Hindsight.md

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