dsh-semantic-recall: Retrieve Original Messages from Old Conversations by Semantic Search Even When Starting a New Conversation

前言

在 DeepSeek Harness(DSH)里开一场新对话,上下文不会自动带上上一场聊过的内容。上下文压缩插件解决的是「当前这场对话太长」的问题;换会话、换工作区之后,过去几天里具体说过什么,往往只能靠人工翻目录或凭记忆复述。

下面介绍社区插件 dsh-semantic-recall(维护者 zhaohualiuyuejun,分类:记忆)。它在本地只读最近 N 天(默认 7 天,可调,硬上限 365 天)的会话历史,建立语义索引,支持跨工作区检索;你用模糊描述提问时,返回的是候选原话与会话锚点,相关度不够时会给出候选菜单由 agent 反问,而不是硬编答案。需要说明的是:npm 上另有他人维护的 dsh-session-recall(字面式检索),与本插件包名 dsh-semantic-recall 无关。

这是什么

dsh-semantic-recall 是 DSH 插件:只读 $DSH_HOME/sessions 下的 session.v4.jsonl.zstd,在 $DSH_HOME/session-recall/ 建索引,向 agent 暴露 4 个工具,并自带 Web 设置页(不依赖有问题的 settings.update() 写入路径)。当前版本 0.2.5,许可证 MIT;GitHub 仓库见文末链接。

它不替代长期记忆插件(不参与人格注入、不自动「记住」用户),只做索引窗口内的短期原话召回;与 topic 摘要类记忆插件搭配时,记忆给线索,本插件负责把「那天原话」找回来。

核心功能

会话语义检索

检索采用向量余弦与 BM25 字面匹配,经 RRF 融合;返回以「那场对话」为单位,而不是孤立一句。支持自然语言时间锚点(今天、昨天、上周、N 天前等)。默认 session_recall 只排除调用方当前这场会话,其他刚结束或刚归档的会话仍可搜。

嵌入能力可用时走语义检索;不可用时降级为字面匹配,只能给候选。判定上采用可调阈值:默认 minScore 0.70、midScore 0.55;最高相关度低于 0.55 时不装懂,返回 fallback_menu(按天话题卡 + 最近会话)。

日摘要与话题卡

默认用 DSH 当前模型做每日 3~5 个话题摘要,也可在设置页指定本机 Ollama(完全不出网)。Ollama 不可用时会跳过话题卡,不影响工具可用。

多源工作区隔离(设置页)

可在「源工作区」中为不同用途建隔离域:每个源独立库 scopes/<源>/index/,归属该源的工作区才可建索引与检索;未建源时保持老行为,全部工作区共用一个 index/。桥接通道(QQ 等)需自行把 session_recall 加入工具白名单,且建议仅对管理员私聊放行(返回原文)。

与记忆插件的对接约定

返回 JSON 含 session、workspace、hits[].messageId、hits[].seq 等锚点。传 session_recall({ session: "session-..." }) 可跳过语义检索,直接拉该会话原文块(受源隔离约束)。记忆插件可把 sourceSessionId 用于下钻原文。

安装与启用

bundle 自带 cordis patch,不需要 Node 依赖、不需要手改 profile。装完后刷新页面,左侧「设置」里出现「会话语义检索」即成功。

方式 A(推荐给 DSH 内 AI):用 plugin_manager 执行 install_bundle,target 填 dsh-semantic-recall,装完刷新页面。

方式 B(创造模式):

action: install_bundle
target: dsh-semantic-recall

方式 C:将 clone 所得目录的绝对路径作为 install_bundle 的 target(资料原文含 git clone 步骤;若你方环境禁止 clone,可用方式 A/B 或 Release tgz)。

网络无法访问 npm registry 时,target 可换为 Release 地址(资料原文):

https://github.com/zhaohualiuyuejun/dsh-semantic-recall/releases/download/v0.2.5/dsh-semantic-recall-0.2.5.tgz

版本要求(package.json):Node >=22(依赖内置 zlib.zstdDecompressSync);DSH >=0.2.1-rc.5(插件在该版本实测通过)。

启用后 ordinary 用户只需打开 设置 → 会话语义检索:配置索引天数、工作区勾选、云端或本地嵌入、增量/全量重建等。刚聊完想立刻搜,可点「增量更新」(默认定时增量为启动后每 6 小时)。

典型用法

Agent 侧主要工具如下(名称与参数以 README 为准):

工具 用途
session_recall 核心检索:query / days / role / maxSessions / includeActive / session
session_recall_status 索引块数、嵌入是否就绪、是否在构建等
session_recall_reindex 手动重建(force=true 全量重嵌)
session_recall_config 读/改非密钥设置(含 minScore / midScore)

语义检索示例(由 agent 调用):

{
  "query": "前几天说的 C 盘清理那个方案",
  "days": 7
}

已知会话 id 时直接下钻:

session_recall({ session: "session-fe4c6d40-889b-411c-bbf6-9329dfbc8161" })

调整阈值示例:

session_recall_config({ "minScore": 0.65 })

资料建议:minScore 不建议低于 0.60(假命中区间与真命中在实测中有重叠)。

适用场景与注意

适合:经常在 DSH 里开新对话、跨多个工作区协作,需要用自然语言找回几天内聊过的原话;愿意本地建索引,并可选择云端嵌入或纯本地 Ollama / 字面降级。

务必知晓:

  • 只索引窗口内会话;排除的工作区不会进索引;被排除或超出窗口的内容搜不到。
  • 插件以当前 DSH 进程权限运行,安装前应自行审阅源码与 MIT 许可证。
  • 云端嵌入时仅发送切好的文本块到配置的 API;不出网可将 provider 设为 local 或 none,或点设置页「停用嵌入」(检索能力下降)。
  • 索引与配置写在 $DSH_HOME/session-recall/,绝不写回 sessions 目录。
  • 全量重建可能需数分钟(资料实测约 10 块/秒量级),属正常现象。

DSH 生态强调「一切皆插件」;社区目录 skillhub.cn 为独立站点,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-semantic-recall 解决的是「换对话、跨工作区之后还能不能把原话找回来」,与上下文压缩、长期记忆插件互补:压缩保当前场次的窗口,记忆给长期线索,本插件管索引窗口内的语义召回与原文锚点。

  • 目录页:https://www.skillhub.cn/plugins/zhaohualiuyuejun/dsh-semantic-recall
  • GitHub:https://github.com/zhaohualiuyuejun/dsh-semantic-recall
羽毛球分组比赛记分
小程序二维码

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

Xiaoye