整理日期:2026-09-28 服务端:mac mini(10.10.10.25) 客户端:MacBook 上的 DeepSeek Harness 🔴 2026-09-28:MacBook 上的自托管部署已彻底删除 —— Apple Container 数据目录(容器
hindsight-local+ 卷hindsight-pg0data+ 快照 + 镜像层,共 12 G)已移除,运行时由/usr/local/bin/uninstall-container.sh -d卸载; 本机只留客户端三件套(~/.hindsight/coding-agent.json→http://10.10.10.25:8888,外加local-hindsight-api.key/local-hindsight-cp.key)。现役架构见~/Documents/MacBook/claude.md§8;本地部署全章存档见~/Documents/MacBook/hindsight-history.md§26(旧hindsight-local-ops.md已移入_archive-hindsight-local-20260928/)。
dsh-mnemon(可组合记忆) —— Memory Spaces provider,配置在 ~/.mnemon/state/memory-providers.json;hindsight-coding-agents 插件 —— 每个仓库一个 bank,会话结束自动回写,配置在 ~/.hindsight/coding-agent.json。hindsight-coding-agents = 采集器 —— git 种子 / 代码库普查 / 会话 transcript 自动回写 / 知识页面按小时刷新 → 让库自己长大,所以打开控制台总能看到「整合中」。dsh-mnemon = 检索 + 管理台 + 热记忆 —— 15 个 bank 映射成记忆空间、跨库检索、MEMORY.md / USER.md 每轮注入、文档层、9 个 provider 可换 → 让库里的东西被用起来、管起来。mnemon_recall 同时命中 coding-agent::MacBook 和 hermes 两个库,返回的 4 条全部是别人写进去的(source: external)→ 读侧读的确实是同一条链路的共享库。hindsight_api.engine.consolidation.consolidator),不是插件在跑;两个插件都只是投喂方。控制台那个进度条 = 该 bank 的事实总数与 last_consolidated_at,dsh-mnemon 只装不写时队列永远是空的,不是坏了,是没有燃料。"autoInject": "pages"(跳过 hook 里注定失败的 20s reflect,不是调大超时;见问题 5);服务端 mental model refresh 偶发失败 → 只观察。结论:支持。
dsh-mnemon 0.5.17 通过 Memory Spaces provider 机制支持 9 种外部引擎。dsh-mnemon-provider-hindsight 0.5.5 随 Starter 默认安装。状态:⚠️ 待修(在 UI 改一个字段即可)
~/.mnemon/state/memory-providers.json 里是 http://10.10.10.25:9999 —— 9999 是控制台 Web UI 端口,所有 API 请求都被重定向到登录页。/health/live,登录页也算响应 → 假就绪;随后发现 banks 时拿到的是 HTML → 0 个记忆空间。8888 端口实测 200 OK,能正常列出 banks(含 coding-agent::ZLSH-数字化管理系统,23697 facts)→ key 和服务本身都没问题。http://10.10.10.25:8888,保存即同步。状态:⚠️ 待修
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。format v4 message requires a producer-owned source kind状态:✅ 已用官方临时补丁修复(等上游发版前有效)
kind:"plugin",被 dsh 0.1.7-rc.2 的 v4 会话格式准入校验拒绝 → 整轮失败。dist/dsh.js.bak-20260928;kind:"plugin", plugin:HINDSIGHT_PLUGIN → kind: HINDSIGHT_PLUGIN;assertV4RowAdmission 实测:补丁后的 shape PASS、旧 shape FAIL(精确复现原始报错);reflect failed — reflect timed out after 20000ms状态:✅ 已处理(2026-09-28,改为 autoInject: "pages",不是调大超时)
~/.hindsight/coding-agents-logs/plugin.log 里 reflect failed 共 76 次;diag.jsonl 事件统计 reflect_failed 76 / reflect_fallback_pages 72 / reflect_ok 5 —— 即约 5 / 81 成功。09-28 当天的 4 次全是 reflect timed out after 20000ms: This operation was aborted (20)。dist/dsh.js:1446 DEFAULT_REFLECT_TIMEOUT_MS = 2e4),而 ~/.hindsight/coding-agent.json 里没有配 reflectTimeoutMs。服务端给的是 HINDSIGHT_API_REFLECT_LLM_TIMEOUT=180、HINDSIGHT_API_REFLECT_WALL_TIMEOUT=1200;实测一次成功的 reflect 要 ~12.5s(4 iterations)—— 对大库(几千 fact)确实不够。reflect_fallback_pages,72 次)。代价是「为什么这么改」那层深度记忆(reflect 结果)基本没进库。~/.hindsight/coding-agent.json 加 "autoInject": "pages" —— 跳过每次注定失败的 20s reflect,直接注入知识页面(失败后本来也是走它)。效果:每次会话启动省下约 20s,76 条 WARN 噪音消失。备份:~/.hindsight/coding-agent.json.bak-20260928-130203。reflectTimeoutMs(这是最关键的一点,最初判断错了):
dist/dsh.js:1515-1517 注释原文:"a short window is set to bound the automatic hook, not to cut off a call the agent is waiting on."budget: "low"(dist/dsh.js:18028);失败后的降级注入另有一个 7s 预算(:17951 HOOK_FALLBACK_BUDGET_MS = 7e3)。hindsight_reflect 本来就是 330s + high budget(:1447 DEFAULT_REFLECT_TOOL_TIMEOUT_MS = 33e4,:17192)—— 深路径一直都在,只是按需。hindsight_reflect(这正是设计意图)。autoInject 可选值:none / pages / recall / reflect;想回退就删掉这行或恢复备份。MentalModelRefreshError … ReflectNoAnswerError: Reflect's done tool returned no answer (iteration 4, 3 tool call(s) made)(mental_model mm-445d66d3558e462f838de381cbb758e3)—— 服务端 LLM 没把 answer 写进 done tool,疑似被 HINDSIGHT_API_REFLECT_MAX_COMPLETION_TOKENS=8000 截断;旧内容保留在 DB 并自动重试。delta operations did not reach the document … refresh_skipped == 'delta_ops_failed' —— delta 更新没落到文档上,同样走"保留旧内容 + 重试",所以部分知识页面会偏旧。2026-09-27T17:25Z 那两次报的是 connect ECONNREFUSED 127.0.0.1:8888 —— 插件走了 localhost 默认回退路径(dist/dsh.js:1492 的 daemon 分支)而不是配置里的 10.10.10.25:8888;现在已不再出现,但复发时优先查这条。http://10.10.10.25:8888plugins enable hindsight + 配 local_external,重启 gatewayhindsight-coding-agents 0.7.1 发版,升级后撤掉本地补丁"autoInject": "pages",跳过 hook 里注定失败的 20s reflect(不是调大 reflectTimeoutMs,理由见问题 5)ReflectNoAnswerError / delta_ops_failed(mm-445d66d3558e462f838de381cbb758e3)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)。sudo fdesetup authrestart(可一次性解锁 FileVault,SSH 约 40 秒后自动恢复);普通重启会锁在 FileVault 登录界面,SSH 再也连不上。FileVault 开启时 macOS 不允许自动登录(sysadminctl -autologin 直接报错),所以重启后若无人登录图形界面,容器不会自启。~/.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 后验证写入成功。| 用途 | 路径 / 命令 |
|---|---|
| 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) |
POST /api/auth/login,body {"key":"<控制台 access key>"}(Authorization: Bearer、X-Api-Key、Cookie 全部 401);access key 来自容器的 HINDSIGHT_CP_ACCESS_KEY 环境变量。cordis.patch.yml;把它收窄成只有记忆空间,会让热记忆与文档层一起失效,且改完必须重启 dsh web 才生效。hindsight-coding-agents 0.7.0 的 v4 修复是本地打补丁,插件重装/升级即丢。hindsight-coding-agents 的 自动注入 reflect 超时默认只有 20 秒(DEFAULT_REFLECT_TIMEOUT_MS = 2e4)—— 这是故意给会话启动 hook 封的顶,不是给 agent 用的;agent 的 hindsight_reflect 工具超时是 330s(DEFAULT_REFLECT_TOOL_TIMEOUT_MS = 33e4)。所以别用调大 reflectTimeoutMs 去"修"它,那只会让每次会话启动变慢;要快就把 autoInject 设成 "pages"(本机已设)。