前言¶
DeepSeek Harness(dsh)里,AI 能记住上下文,但一换对话、一关窗口,就回到了「白纸一张」。这对做长期对话、知识库、多轮任务的场景很不友好。dsh-hindsight-memory 在 dsh 里引入本地 Hindsight 记忆库,把每轮对话整理成可检索的事实,让 AI 在新的会话里也能「想起」之前的聊天。
插件定位¶
- 插件名:dsh-hindsight-memory
- 维护者:snakejohn
- 仓库:snakejohn/dsh-hindsight-local
- 定位:为 dsh 提供长期记忆能力,通过本地 Hindsight 服务自动整理、索引对话,并按需召回。
核心功能¶
- 长期记忆:对话写入本地 Hindsight 记忆库,关闭 dsh、重新打开对话后依然可用。
- 时间感知:每条记忆带有本地时间,支持「我早上 7 点干了啥」这类时间类问题;对东八区凌晨到早上 8 点做了专门修正。
- 自动写入,旧对话手动导入:新会话自动写入;首次安装不会自动导入历史,需在设置页选择工作区或单个对话导入(已归档对话除外)。
- 内容选择:默认只记「我说的话」和「AI 的回复」,工具调用、思考过程、系统提示、归档对话等可在设置页单独控制。
- 记忆库隔离与共享:每个工作区可绑定一个记忆库;也可让多个工作区写入同一记忆库;记忆库可起中文名。
- 归档对话不记:在 dsh 中归档的对话不会被写入。
- 一键本地部署:无需命令行,没有 Python 也能自动准备 uv 和 Python 3.12,并安装 Hindsight(默认走国内镜像)。
- 状态卡片与控制面板:左下角卡片显示记忆状态;点开可查看各记忆库数量,浏览与搜索记忆。
- 「现在就记住」按钮:手动触发当前工作区或全部对话写入,避免重复。
- 不阻塞聊天:记忆服务异常、超时或被限流时,聊天仍正常进行,仅暂时不带记忆。
工作原理¶
- 写入:每轮对话结束后,插件将这一轮(带本地时间)发送给本地 Hindsight。Hindsight 后台用 LLM 把对话整理成事实,并用 embedding 建索引。
- 召回:提问时,插件先在记忆库中检索相关记忆(支持按时间等条件),再用 reranker 排序,取最相关的若干条作为背景注入上下文。
- 省上下文:只注入少量相关记忆,不把整段历史塞进上下文。
安装与启用¶
在 dsh 左侧点击「Plugins」→ 右上角「+ Add plugin」:
方式 A:从 GitHub 安装(推荐)
把下面这行复制粘贴,点「Install」:
https://github.com/snakejohn/dsh-hindsight-local
方式 B:下载 zip,从本地文件夹安装
- 到 Releases 下载 zip 并解压。
- 把解压后文件夹的完整路径填入插件安装对话框,点「Install」。
安装完成后,在「Installed plugins」里找到 dsh-hindsight-memory,确认开关为打开状态。
三步快速上手¶
- 选择部署方式:首次设置时选择「还没有 Hindsight」,插件会在本机部署;如已有 Hindsight,选择「已经配置好了」并填地址。
- 粘贴密钥:在「② 粘贴密钥」处填入硅基流动的 API 密钥。面板会自动检查,显示「密钥可以用 ✓」后会自动获取模型,「理解文字」「排序」两个模型使用默认即可,点击「一键开始」。准备时间约 3–10 分钟。
- 确认状态:左下角卡片变为 🟢「记忆正常」即可。之后正常聊天,插件会自动记、自动回忆。
- (可选)导入历史对话:设置页会询问「要导入以前的对话吗?」,点击「去选择」可导入工作区或单个对话,会逐段整理且不会重复。
默认模型¶
| 用途 | 默认模型 | 说明 |
|---|---|---|
| 整理记忆(LLM) | 跟随 dsh 默认模型 | 可改为自定义,如硅基流动的 XingChenAGI/Xing4.0-29B 或 DeepSeek(https://api.deepseek.com);选择「不整理」时只保存原话 |
| 理解文字(Embedding) | BAAI/bge-m3(硅基流动) |
1024 维 |
| 排序(Reranker) | BAAI/bge-reranker-v2-m3(硅基流动) |
留空时退回到纯排名融合(rrf),不调用模型 |
三者皆可在「高级设置」里分别更换服务商与模型。一个硅基流动密钥可同时用于三者。模型被限流时,内容会排队重试,不会丢失。
常用设置¶
面板设置保存在 dsh 的插件配置中;本地 Hindsight 变量同步写入插件根目录的 .env。
| 设置(面板 / 配置名) | 默认 | 作用 |
|---|---|---|
工作区 → 记忆库 bank.workspace_bank_mapping |
空(自动新建) | 每个工作区绑定一个记忆库,多工作区可指向同一库 |
共享记忆库 bank.default_bank |
空 | 填上名字后,所有工作区写入同一记忆库 |
聊天时自动回忆 recall.enabled |
开 | 关闭则不注入记忆 |
每次最多回忆几条 recall.top_n |
6 | 注入上下文的记忆条数上限 |
注入字数上限 recall.max_chars |
4000 | 记忆块的字符上限 |
自动记住对话 retain.enabled |
开 | 关闭则不写入 |
启动时补录旧对话 backfill.enabled |
关 | 默认不自动导入,可在设置页「现在就记住」手动导入 |
记住哪些内容 retain.include_* |
我说的话 + AI 的回复 | 其他内容(工具调用、思考过程、系统提示等)默认不记 |
时区 time.timezone |
跟随系统 | 用于时间解析 |
向量维度 embedding.expected_dim |
1024 | 理解文字模型的输出维度,换模型或迁移时需保持一致 |
端口 service.local.port |
8888 | 本地 Hindsight 监听端口 |
LLM 超时 service.local.llm_timeout |
300 秒 | 超时时间 |
写入分块 service.local.retain_chunk_size |
1500 字符 | 长消息切分大小 |
单次最大输出 service.local.retain_max_completion_tokens |
8000 | 必须大于分块大小 |
更多配置项与环境变量(DSH_HINDSIGHT_*)见技术说明文档。
性能实测(v0.1.1)¶
基于公开数据集 LoCoMo 的压测结果:
| 指标 | 结果 |
|---|---|
| 写入规模 | 992 轮对话 · 3 个记忆库 · 48 次写入,全部成功,0 次限流 |
| 花费 | 约 ¥2.37(按 DeepSeek 账户余额前后差计算) |
| 召回命中率 | 50 题中 94%,其中时间类问题 97.2% |
| 上下文节省 | 与把整段历史塞进上下文相比,约省 85% |
| 召回延迟 P95 | 3.3–4.9 秒(记忆量 172–341 条) |
| 长消息 | 约 1.2 万 token 的长消息 7.6 秒写完 |
常见问题¶
- 服务启动失败:面板会说明原因,多数情况点「重试」即可;若仍失败,可在状态页「检查一下」「重新启动」或「重新安装」,并导出日志求助。
- 端口 8888 被占用:可在高级设置里修改端口,或关闭占用该端口的程序(Windows 可用
netstat -ano | findstr :8888查看)。 - 卡片显示「模型被限流」或「N 段没整理好」:免费模型有频率限制,v0.1.3 起默认一次整理 1 段,失败会自动重试,也可在状态页「重试失败项」。
- 卡片显示「模型地址连不上」:确认整理记忆用的本机模型地址(如
127.0.0.1:3425)已启动,插件会暂停写入并在恢复后补录。 - 反馈问题:在状态页「导出日志」(密钥自动隐藏),再点「去提问题」将日志拖进 GitHub 问题表单。
- 写入卡在「处理中」:v0.1.1 已将长消息切分到 1500 字符、超时放宽到 300 秒,一般不再卡住。若仍卡住,可查看控制面板「没记住的」区域与
hindsight.log。 - 数据存在哪里:记忆数据库在
~/.pg0/dsh-hindsight(Linux);Python 环境在~/.dsh-hindsight/venv;日志在~/.dsh-hindsight/logs/;进度在~/.dsh-hindsight/state;配置(含密钥)在插件根目录的.env。 - 备份、迁移、独立服务:详见使用文档「迁移和备份记忆」章节。
- 已有 Hindsight 服务:设置里选择「已经配置好了」,填地址和密码,插件只连接,不启动/停止/修改该服务。
- 卸载:在 dsh「Plugins」里关闭或移除 dsh-hindsight-memory,重启 dsh 即停止本地服务;想清数据则删除
~/.dsh-hindsight文件夹和插件目录;记忆数据库在~/.pg0,若无其他程序使用可一并删除。
适用场景与注意¶
- 适合需要长期对话记忆、多轮任务、知识沉淀的场景。
- 插件以当前 dsh 进程权限运行,安装前建议检查源码与许可证(MIT)。
- Linux 已完整实测,Windows/macOS 路径已写好但未真机验证。
- 记忆服务异常时聊天不受影响,仅暂时不带记忆。
小结¶
dsh-hindsight-memory 通过本地 Hindsight 实现对话的整理、索引与按需召回,在不阻塞聊天的前提下,让 AI 在新会话中也能「想起」之前的聊天。适合需要长期记忆、多轮对话和上下文压缩的场景。更多细节见插件目录页与 GitHub 仓库。
参考链接¶
- 插件目录页:https://www.skillhub.cn/plugins/snakejohn/dsh-hindsight-local
- GitHub:https://github.com/snakejohn/dsh-hindsight-local