DeepSeek Harness (DSH) 生态中的插件通常负责特定能力。对于需要回溯历史对话的开发者来说,官方 sessionQuery 服务提供了基础接口,但缺乏一个面向模型的原生检索工具,且默认配置通常不开启持久化全文检索。dsh-session-recall 补齐了这一环节,它通过 ctx.sessionQuery 接口,为模型提供了一个确定性、带显式作用域控制的跨会话全文检索工具。
是什么¶
这是一个 Memory 类别的插件,由 kittimzhe 维护。它的核心价值在于让智能体能够直接搜索过去的会话记录,而不是依赖外部记忆框架或合成摘要。
核心能力¶
该插件具备以下能力:
- 跨会话全文检索:支持对历史会话记录进行文本搜索。
- 面向模型的
recall工具:直接暴露给模型调用的接口。 - 持久化 FTS5 索引:索引存储在本地文件中,不会因进程重启而丢失。
- CJK 零命中子串回退:针对中文分词限制的优化,查询短词时自动回退到子串扫描。
- 默认基于 CWD 的作用域检索:默认只搜索当前工作目录(cwd)启动的会话。
- 类型化的
recall结果:返回包含稳定字段的 JSON 结构,包含会话 ID、标题、日期和匹配片段。
安装与启用¶
前置条件¶
- Node.js 20 或 22。
- DeepSeek Harness 的 profile 需要挂载
tools和sessionQuery服务(默认的web或agentprofile 通常满足此条件)。
安装步骤¶
使用官方提供的安装命令:
dsh plugin --profile web add dsh-session-recall
安装完成后,索引文件将存储在 <DSH_HOME>/session-recall/index.db。首次搜索时会自动构建索引。
典型用法¶
在会话中,可以通过自然语言触发,也可以通过代码显式调用。
自然语言触发¶
智能体听到提示词时会自动使用该工具:
recall: which font did we pick for the resume last week?
工具调用示例¶
recall({ query }) // 搜索当前项目会话,返回最佳匹配事件
recall({ query, all_projects: true }) // 搜索所有会话(需要部署权限)
recall({ query, session_id }) // 搜索指定会话的事件
返回结果会渲染为原生搜索卡片,包含 session id、标题、日期和匹配片段。
适用场景与注意¶
适用场景¶
- 需要检索原始会话日志而非合成摘要的场景。
- 需要严格限定检索范围(如仅当前工作目录)的场景。
- 需要审计和可追溯性的场景。
注意事项¶
- 权限控制:
all_projects参数用于扩大检索范围,只有部署允许时才有效。 - 版本区别:本插件与
dsh-recall-plugin无关(后者用于消息撤销/重放),也接替了旧版dsh-recall。 - 依赖服务:必须确保 Harness 的 profile 正确挂载了
tools和sessionQuery服务。 - 技术细节:CJK 零命中时会自动回退到子串扫描;索引在首次搜索时自动构建。
总结¶
dsh-session-recall 专注于原始会话日志的读取,不涉及写入操作。它作为 DeepSeek Harness 生态中“检索层”的一部分,为智能体提供了可审计、确定性的历史回溯能力。插件源码与目录页见下方链接。