dsh-gui-search:让 DSH 侧边栏搜索框能搜会话正文

前言

DeepSeek Harness(DSH)侧边栏自带搜索框,默认主要按会话标题过滤。你记得某次对话里聊过「插件冲突」「指纹校验」之类的话题,标题里却没有这些词时,搜关键词往往一条都出不来——内容在,却像没存过。

社区插件 dsh-gui-search(维护者 Dmatterdj,GitHub:Dmatterdj/dsh-gui-search)在原搜索框上扩展能力:直接匹配聊天正文,点击结果可打开会话并跳到命中的那条消息。下面介绍它做什么、怎么装、怎么用,以及和官方索引的差异。

这是什么

dsh-gui-search 是 DSH 客户端类插件(当前 GitHub 星标 1)。它不新增独立搜索界面,而是替换 Host 侧的 sessionQuery.searchSessions,并在 Client 侧接管结果点击,实现「搜正文 → 定位消息 → 高亮」。

分类上属于客户端注入;许可证 MIT;版本见仓库 package.json(资料中为 1.0.0)。要求 DSH 版本 >=0.2.1-rc.2 <0.3.0,在客户端 0.2.1-rc.5(Host 协议 4)上测试通过。

核心功能

资料中已核实的能力如下。

  • 搜正文:在原侧边栏搜索框输入关键词,匹配 user/message 与 assistant/message 正文(不索引工具输出与思考过程)。
  • 点击直达:点搜索结果后,向 Host 查询命中消息的 seq,向前翻页加载历史,滚动到对应 DOM 行并闪烁高亮。
  • 中文与短词:中日韩文字按字面子串匹配,单个汉字也可搜;不区分大小写。
  • 多词「且」:例如 插件 冲突 要求两个子串都出现。
  • 结果排序:总出现次数 → 最近时间 → 会话新旧。
  • 标题搜索仍保留:空词或带 sessionFilters 的请求交回官方实现,语义不变。

与官方可选 SQLite FTS5 索引(unicode61 分词器)相比,英文词两边都能搜;中文子串、单字、多词组合在资料实测中往往只有本插件能命中(例如查询 指纹、插件、帧 时 FTS5 为 0 命中,本插件为 1 命中)。官方能力对比表见项目 README。

插件刻意不注册任何工具,避免与 @deepseek-ai/dsh-tool-session-query 撞名导致内置会话工具失效。

安装与启用

装完后需重启 DSH 生效。插件以当前 DSH 进程权限运行,安装前建议浏览仓库源码与 MIT 许可证。

方式一:界面安装(桌面版推荐)

打开 DSH,左侧 插件 → 添加插件,粘贴:

https://github.com/Dmatterdj/dsh-gui-search

方式二:命令行安装

机器上需有 dsh 命令(桌面安装包默认可能不带,此时用方式一):

dsh plugin add github:Dmatterdj/dsh-gui-search

方式三:配置文件

在 cordis.patch.yml 中写入:

# cordis.patch.yml
- insert:
    - id: gui-search
      name: 'dsh-gui-search'
      config:
        debug: false

保存后重启 DSH。

方式四:本地开发

dsh plugin add /你的路径/dsh-gui-search

改代码可立即生效,无需重装。

典型用法

用法与原版侧边栏搜索一致:在搜索框直接输入即可,多了正文匹配与跳转。

  1. 输入关键词,结果列表中会带正文摘要(不仅靠标题)。
  2. 点击某条结果,客户端打开对应会话并定位到命中消息。
  3. 多个词用空格分隔时表示「且」关系;大小写不敏感。

可选配置仅一项(见 README):

键 类型 默认值 说明
debug boolean false 将匹配与激活日志追加到 $DSH_HOME/gui-search.log,不影响搜索行为

健康检查与定位接口(同源本机、只读):

  • GET /api/gui-search/health → { ok, name, sessions, installed }
  • GET /api/gui-search/locate?session=<id>&q=<query> → { ok, seq, time, type, snippet, count }

locate 的 snippet 含对话原文,故 Host 限制为本机回环、Sec-Fetch-Site: cross-site 拒绝、有 Origin 时需与 Host 一致。

适用场景与注意

适合谁:长期在 DSH 里积累大量会话、靠内容而非标题回忆的开发者;需要搜中文、单字或多词组合的用户。

工作原理概要:Host 半部分(index.js)只改 searchSessions,文档仍经 sessionQuery.filterEvents() 读取;Client 半部分(lib/client.js)处理点击与滚动,并与新开会话自动滚底的竞态做重试。零运行时依赖,无构建步骤,不修改 app.asar,不直接读会话文件。

已知限制(来自 README):

  • 精确跳转依赖内部对话快照;若某版本未暴露,会退回到「找第一个包含查询词的文本节点」,同一段话重复出现时可能选错行(搜索结果本身不受影响)。
  • 只索引用户与助手消息,不含工具输出与思考过程。

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

结尾

dsh-gui-search 把侧边栏搜索从「主要是标题」扩展到「正文 + 跳转 + 高亮」,并针对 CJK 与短词做了字面子串匹配。若你已在用 DSH 0.2.1-rc.x,可按上文任选一种安装方式,重启后在原搜索框试用即可。

  • 目录页:https://www.skillhub.cn/plugins/Dmatterdj/dsh-gui-search
  • 仓库:https://github.com/Dmatterdj/dsh-gui-search
羽毛球分组比赛记分
小程序二维码

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

小夜