前言¶
在 DSH 的长会话中,上下文会随多轮对话不断累积。经过压缩或摘要后,模型窗口里留下的可能只是概括,而原始措辞、具体设置和临时讨论并不方便再次定位。dsh-recall 把“搜索聊天记录”做成一个可被 agent 调用的召回工具,用于在需要时找回会话中的原文片段。
这是什么¶
dsh-recall 是 Relistencode 维护的 DSH 插件,用于在 DeepSeek Harness 中检索会话历史原文。它提供 literal、fuzzy 和 semantic 三层检索,资料称其完全本地离线,无外部模型 API。
资料中给出的版本为 0.2.2,许可证为 MIT,运行环境要求 Node >=22。它面向 DSH web profile 安装,并可在 agent 需要时调用 recall 工具。
核心功能¶
三层混合检索¶
dsh-recall 将 literal、fuzzy 和 semantic 三种检索结果合并。literal 与 fuzzy 负责直接关键词和近似表述;semantic 层只在覆盖 ≥90% 的 literal/fuzzy 命中时参与,否则静默降级。
当某一层不可用时,机制会退化到下一层,而不是直接报错。这样 recall 工具能继续返回可用结果。
渐进披露¶
默认情况下,dsh-recall 返回轻量粗召回。需要更完整内容时,可以进一步读取原文窗口。
这使得插件可以先提供足够判断的摘要或片段,再按需展开原文,避免一开始就载入过多上下文。
事件聚合¶
同一主题的多次提及会被合并为事件。资料称这可以将散落的多处提及整理成更完整的一组内容,并可通过进一步读取获得完整事件文本。
对反复出现的设置、决定或需求,这比逐条碎片更接近一次完整讨论。
主动召回¶
agent 可以在需要时自行调用 recall 工具。典型场景包括压缩之后、当前上下文缺少早期细节,或用户明确要求找回此前讨论。
默认范围是当前会话。workspace 和 all 范围仅在用户显式请求时使用。
压缩锚点与历史覆盖¶
在 compaction/summary 时,dsh-recall 会注入轻量锚点。索引会覆盖已被压缩的历史,因此摘要之后仍可以检索原始文本。
资料还列出增量索引和后台 warm-up,用于在后台完成索引准备。
本地离线与可选模型¶
dsh-recall 的资料称其完全本地离线,无外部模型 API。
如果可选依赖 dsh-recall-models 无法解析,资料称会使用仓库内模型。
安装与启用¶
安装¶
执行以下命令安装指定版本:
dsh plugin --profile web add dsh-recall@0.2.2
安装完成后,重启 dsh web。
资料还提到,也可以从 dsh-extension-hub 的 Add-ons 块安装、禁用或卸载 dsh-recall。
从源码安装¶
如果使用源码安装,命令为:
dsh plugin --profile web add git+https://github.com/Relistencode/dsh-recall.git
这种方式适合离线环境。
可选配置¶
如果禁用语义层,只保留 literal 和 fuzzy,可以配置:
- id: recall
name: dsh-recall
config:
semantic: false
如果希望降低后台 warm-up 的 CPU 占用,可以配置:
- id: recall
name: dsh-recall
config:
warmup: gentle
以上配置项来自已核实资料;实际使用以插件当前版本文档为准。
典型用法¶
安装并重启 DSH web 后,可以在对话中让 agent 查找早期上下文。用户也可以显式提出召回请求,例如要求确认此前是否讨论过某个配置、某个决定或某个需求。
召回默认从当前会话开始。若需要扩大到 workspace 或 all 范围,应由用户明确请求。
如果轻量粗召回不够完整,可以进一步读取原文窗口;如果同一主题分散在多处,可以先查看聚合后的事件,再读取完整事件文本。
适用场景与注意¶
dsh-recall 更适合历史较长、经过压缩,或同一主题多次出现的会话。它按需提供原始记录,而不是一次性把大量历史塞入上下文。
需要注意:dsh-recall 作为 DSH 插件,会以当前 dsh 进程权限运行。安装前应检查源码、依赖和 MIT 许可证,并确认其本地离线行为符合你的使用环境。
链接¶
- 目录页:https://www.skillhub.cn/plugins/Relistencode/dsh-recall
- GitHub:https://github.com/Relistencode/dsh-recall