dsh-hindsight-memory:让 DeepSeek Harness 记住对话

前言

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(默认走国内镜像)。
  • 状态卡片与控制面板:左下角卡片显示记忆状态;点开可查看各记忆库数量,浏览与搜索记忆。
  • 「现在就记住」按钮:手动触发当前工作区或全部对话写入,避免重复。
  • 不阻塞聊天:记忆服务异常、超时或被限流时,聊天仍正常进行,仅暂时不带记忆。

工作原理

  1. 写入:每轮对话结束后,插件将这一轮(带本地时间)发送给本地 Hindsight。Hindsight 后台用 LLM 把对话整理成事实,并用 embedding 建索引。
  2. 召回:提问时,插件先在记忆库中检索相关记忆(支持按时间等条件),再用 reranker 排序,取最相关的若干条作为背景注入上下文。
  3. 省上下文:只注入少量相关记忆,不把整段历史塞进上下文。

安装与启用

在 dsh 左侧点击「Plugins」→ 右上角「+ Add plugin」:

方式 A:从 GitHub 安装(推荐)

把下面这行复制粘贴,点「Install」:

https://github.com/snakejohn/dsh-hindsight-local

方式 B:下载 zip,从本地文件夹安装

  1. 到 Releases 下载 zip 并解压。
  2. 把解压后文件夹的完整路径填入插件安装对话框,点「Install」。

安装完成后,在「Installed plugins」里找到 dsh-hindsight-memory,确认开关为打开状态。

三步快速上手

  1. 选择部署方式:首次设置时选择「还没有 Hindsight」,插件会在本机部署;如已有 Hindsight,选择「已经配置好了」并填地址。
  2. 粘贴密钥:在「② 粘贴密钥」处填入硅基流动的 API 密钥。面板会自动检查,显示「密钥可以用 ✓」后会自动获取模型,「理解文字」「排序」两个模型使用默认即可,点击「一键开始」。准备时间约 3–10 分钟。
  3. 确认状态:左下角卡片变为 🟢「记忆正常」即可。之后正常聊天,插件会自动记、自动回忆。
  4. (可选)导入历史对话:设置页会询问「要导入以前的对话吗?」,点击「去选择」可导入工作区或单个对话,会逐段整理且不会重复。

默认模型

用途 默认模型 说明
整理记忆(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
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye