前言¶
DeepSeek Harness (DSH) Web 端左侧边栏的搜索框,默认只能匹配会话标题和工作区名称。这是因为官方全文索引(@deepseek-ai/dsh-session-query-sqlite)在 web 组合中是可选能力,且默认配置为不开启。
本插件通过在 profile 的 cordis.patch.yml 中覆盖配置项,开启 SQLite FTS5 全文索引;同时重写搜索过滤逻辑,支持按时间范围和内容来源(用户消息 / 机器人回复 / 项目名)筛选结果。
是什么¶
这是一个 DSH 插件,用于增强 Web 端侧边栏的会话搜索能力。它提供本地 SQLite 索引,支持按关键词检索历史会话正文,且零第三方依赖。
- 维护者:CHIP-PHILO-GH
- 许可:MIT
核心能力¶
- 自定义搜索范围:在搜索结果上方实时调整时间范围(全部 / 1 / 3 / 7 / 30 天)与内容来源(我说的话 / DSH 的回复 / 项目名)。
- 持久化设置:用户的选择会写入官方设置文档或 localStorage,重启后仍然保留。
- 命中片段显示:将单行省略的命中片段改为显示两行原文。
- 本地索引:使用 SQLite FTS5,支持首次搜索时才建索引,避免启动时阻塞。
- 索引预热:默认开启,在启动后延迟 45 秒后台运行一次搜索,确保索引就绪。
- 零第三方依赖:仅依赖 DSH 官方模块。
安装与启用¶
安装需要修改 profile 配置目录(记作 <DSH_HOME>,默认 %USERPROFILE%\.dsh)下的三个文件,修改后需重启 dsh web。
- 挂载插件目录
将插件目录(记作<REPO>)挂载到 profile 的node_modules下。Windows 上建议使用 junction 以节省空间:
$modules = Join-Path $env:USERPROFILE '.dsh' 'profiles\web\node_modules'
New-Item -ItemType Directory -Force -Path $modules | Out-Null
New-Item -ItemType Junction -Path (Join-Path $modules 'dsh-session-search') -Target '<REPO>'
- 更新 package.json
在 profile 的package.json中添加依赖和 bundle 引用:
{
"dsh.profile.bundles": ["dsh-session-search"],
"dependencies": {
"dsh-session-search": "link:<REPO>"
}
}
- 开启全文索引
在 profile 的cordis.patch.yml中覆盖官方索引配置,设置openAt: first-search:
- id: session-query-sqlite
config:
path: '<DSH_HOME>\profiles\web\session-search.db'
openAt: first-search
配置与用法¶
安装完成后,侧边栏搜索框将具备全文检索能力。
-
使用范围控件
展开侧边栏搜索框并输入关键词,结果上方会出现「范围」控件。点击可调整:- 时间范围:全部 / 1 / 3 / 7 / 30 天。
- 搜索内容:勾选「我说的话」、「DSH 的回复」或「项目名」。
- 这些修改无需重启,立即生效。
-
仅保留正文匹配
取消勾选「项目名」,侧边栏将只显示正文命中的结果,过滤掉仅匹配名称的行。 -
重建索引
删除<DSH_HOME>\profiles\web\session-search.db文件,下次搜索时会自动重新建索引。
测试与验证¶
插件包含离线验证台,不需要 DSH 运行或联网即可检查代码与配置一致性:
node test.mjs
该命令会执行语法检查、宿主与客户端验证台,并核对 README 文档与配置表的一致性。
注意事项¶
- 插件以当前 DSH 进程的权限运行,安装前建议检查源码与许可证。
- 需要依赖 DSH 官方模块,不依赖第三方库。
- 官方全文索引在 web 组合里是可选能力,本插件通过覆盖
cordis.patch.yml的openAt来启用。
参考资料¶
- 生态目录:https://www.skillhub.cn/plugins/CHIP-PHILO-GH/dsh-session-search
- GitHub 仓库:https://github.com/CHIP-PHILO-GH/dsh-session-search