前言¶
在 DSH 里用 Hindsight 做本地记忆时,常见做法是选 daemon 模式:记忆落在本机(嵌入式 PostgreSQL + pg0),只有抽取事实这一步会走你自己配置的 LLM,数据不必出机器。官方集成在 daemon 模式下有两个实际障碍:LLM 检测只读 DSH 进程环境变量,读不到 ~/.hindsight/profiles/<profile>.env 里已配好的网关;会话冷启动只等约 12 秒,而 daemon 冷启动往往要更久(Python 侧加载 torch、sentence_transformers alone 就可能要十几秒),容易在日志里看到 daemon mode needs an LLM for fact extraction 或根本等不到服务就绪。
下面介绍社区插件 dsh-hindsight-daemon(维护者 FYTXY,分类:记忆)。它在 DSH 的 Cordis 树里更早拉起 Hindsight daemon,并在 DSH 退出时连同嵌入式 PostgreSQL 一起收尾,目标是不留下常驻进程,也不需要开机自启或后台监视器;同时在「设置 → Hindsight 记忆」提供独立页面,用于状态查看、依赖安装、启停与配置,并支持记忆仓库(profile)的新建、切换与删除。支持 Windows 10/11 与 Linux(x86_64)。
这是什么¶
dsh-hindsight-daemon 是面向 DSH Desktop 的 Hindsight 本地记忆 daemon 生命周期插件。DSH 启动时由插件在后台执行 hindsight-embed -p <profile> daemon start,daemon 监听本机端口(默认 127.0.0.1:9077);DSH 退出时通过 Cordis disposer、process 的 exit 钩子或信号钩子(视宿主环境而定)做幂等清理:先结束 detached 的 CLI、再按端口结束 daemon 进程,最后用 pg_ctl stop -m fast 关库。README 称 apply() 返回约 2 ms,不阻塞 DSH 启动;清理约 500–600 ms;依赖与模型就绪时冷启动到健康约 20 秒(Linux 实测表述)。
插件当前 npm 包版本为 0.3.0(MIT),在 SkillHub 目录页 可查简介与分类;GitHub 仓库星标数以目录页为准(撰写时线索为 2)。
核心功能¶
生命周期与无残留¶
- DSH 启动:注册
/hindsight-daemon/api/*供设置页调用,并 spawn daemon;pg0 拉起嵌入式 PostgreSQL。 - DSH 退出:三条通道(Cordis dispose、
exit、SIGTERM/SIGHUP/SIGINT)任一命中即执行同一段清理,避免重复执行。 - 设计目标:不产生任何常驻进程;Windows 侧收尾涉及
taskkill,Linux 侧涉及pg_ctl/pkill。
设置页(设置 → Hindsight 记忆)¶
README 将页面分为六块,均可在安装并重启 DSH 后使用:
- 服务状态:阶段(已停止 / 启动中 / 运行中 / 安装中 / 异常)、地址、运行时长,启停按钮,约每 2 秒刷新。
- 环境检测:
uv、hindsight-embed、PostgreSQL、数据库目录;缺失时可一键安装;探测顺序为设置路径 > 环境变量 > PATH > 常见安装位置。 - 一键安装:幂等五阶段(check → packages → profile → models → verify);
uv tool install hindsight-embed --with hindsight-api --force将 API 与工具装进同一 venv,避免 daemon 退回uvx重复下载。 - 当前记忆:只读展示数据库目录、占用空间及各记忆库的节点 / 关联 / 文档数;一个代码仓库对应一个记忆库(默认按仓库名命名),位置由「高级」等配置决定。
- 记忆仓库(Profile):列出本机 profile、标明当前使用项,可新建、切换、删除;切换会停当前 daemon 再按新 profile 拉起(约 30 秒);删除不可恢复,正在使用的项需先切换到其他仓库。
- 模型服务:OI 兼容协议(Provider 选
openai即可)、模型名、Base URL、API Key;支持「测试连通性」;密钥落盘明文,界面以圆点回显。
高级 项包括:只读的当前 Profile 名、记忆库命名模板(默认空则 coding-agent::{gitProject})、本地端口(默认 9077,改动需重启 DSH)、HF 镜像与 PyPI 镜像(主要影响首次下载与安装)。
环境要求(摘自 README)¶
| 项目 | 要求 |
|---|---|
| 系统 | Windows 10/11 或 Linux(x86_64) |
| DSH Desktop | 2.0.x(Cordis 4,apply() 返回 disposer) |
| Node.js | ≥ 22 |
| uv | 安装流程检查,缺失会提示安装方式 |
| 磁盘 | 约 3 GB(Python 依赖、本地模型、数据库) |
| 模型服务 | OI 兼容 LLM 接口(仅用于抽取事实) |
安装与启用¶
三种挂载方式 README 明确说明只能选一种;重复挂载会导致 /hindsight-daemon/api 路由重复注册,DSH 启动报 webserver: duplicate prefix route。
方式一:npm(适合已用 DSH 插件命令的用户)¶
在目标 profile 下执行(资料原文为 desktop 示例):
dsh plugin --profile desktop add dsh-hindsight-daemon
包内带 dsh.bundle.patch,安装后由 cordis.patch.yml 自动挂载。装完后重启 DSH,打开 设置 → Hindsight 记忆,配置模型服务;Python 依赖与模型可在设置页「一键安装」完成。
方式二:安装脚本(Windows / Linux)¶
Windows(PowerShell,在插件仓库目录内):
powershell -ExecutionPolicy Bypass -File .\scripts\install.ps1
可选参数:-Profile、-DshHome、-SkipDeps(只挂插件,依赖留到设置页)。
Linux:
chmod +x ./scripts/install.sh
./scripts/install.sh
./scripts/install.sh --profile desktop
脚本在 profile 的 cordis.patch.yml 中幂等追加 insert 块;依赖同样可在设置页安装。脚本会写入指向本机 lib/index.js 绝对路径的路径,升级仓库后 git pull 即可生效(README 表述)。
方式三:手动挂载¶
在 <DSH home>/profiles/<profile>/cordis.patch.yml 末尾追加:
- insert:
- id: hindsight-daemon
name: '/absolute/path/to/dsh-hindsight-daemon/lib/index.js'
name 使用正斜杠(Windows 上亦如此),指向 lib/index.js。之后在设置页「一键安装」补齐依赖。
典型用法¶
- 按上文任选一种方式挂载插件,重启 DSH。
- 打开 设置 → Hindsight 记忆,在「模型服务」填写 Provider、模型名、Base URL、API Key,可先 测试连通性 再 保存配置。
- 若环境检测有缺失,点击 一键安装 完成
uv、hindsight-embed、profile、模型与 verify。 - 在「服务状态」中 启动 daemon,待状态为运行中后,在 DSH 中将 Hindsight 集成模式设为
daemon使用本地记忆。 - 多环境或多密钥场景:在「记忆仓库(Profile)」新建或切换 profile;每个 profile 独立数据库、env 与日志,启用切换会重启 daemon。
默认记忆库名由模板推导:未改模板时为 coding-agent::{gitProject},{gitProject} 为 git 仓库根目录名;非 git 工作区则取当前目录名。换到另一个 git 仓库工作区会写入另一库,互不混用。
主要路径(README 摘要):
| 内容 | 路径 |
|---|---|
| 插件配置 | <DSH home>/hindsight-daemon/config.json |
| profile 环境变量 | ~/.hindsight/profiles/<profile>.env |
| 数据库 | ~/.pg0/instances/hindsight-embed-<profile>/data |
卸载可使用仓库内 scripts/uninstall.ps1(Windows)或 scripts/uninstall.sh(Linux),具体 profile 参数见 README 完整说明。
适用场景与注意¶
适合谁:需要在 DSH 中长期使用 Hindsight daemon 模式、希望记忆与数据库随 DSH 启停、且接受本机约 3 GB 磁盘与 OI 兼容 LLM 做事实抽取的开发者。
权限与安全:插件随当前 DSH 进程运行,安装前应在 GitHub 阅读源码与 MIT 许可证,确认 cordis.patch.yml 与安装脚本行为符合你的策略;API Key 按 README 为明文落盘,需自行保管 ~/.hindsight/profiles/<profile>.env 与设置页配置。
生态说明:DSH 强调「一切皆插件」;SkillHub 为社区插件目录,与 DeepSeek / 幻方无官方从属关系。
结尾¶
dsh-hindsight-daemon 把「拉起 daemon + 退出时清掉 PostgreSQL」从官方 daemon 集成的时序与清理缺口里接出来,并用设置页集中管理依赖、profile 与模型网关。若要进一步了解实现细节与卸载步骤,见仓库 README:https://github.com/FYTXY/dsh-hindsight-daemon;安装与分类信息见 SkillHub 目录页。