dsh-search-chat:在 DSH 右侧栏跨工作区搜索聊天记录

前言

DSH 的理念是「一切皆插件」。随着工作区变多,历史会话分散在各个项目里,想找回一句几星期前说过的话,通常只能靠回忆关键词再逐个翻会话列表,成本很高。dsh-search-chat 做的就是这件事:在 DSH 的右侧栏提供会话搜索,跨全部工作区按字面匹配聊天记录,点一下就能跳到原消息。

它由 QwQ2333333-QaQ 维护,在社区插件目录的分类是「记忆」,当前版本是 0.4.1,许可证 MIT。下面介绍这个插件的定位、安装方式和使用细节。

这是什么

这是一个 DSH 宿主插件,入口在右侧栏。它本身不建语料、不下模型、不调用外部 API,数据来自 DSH 官方的 sessionQuery 会话索引。目标是让开发者在多工作区环境下快速定位历史消息,而不是做语义理解。

环境要求

需要 DSH 0.2.2-rc.1 及以上,依赖右侧栏扩展点与 sessionQuery 服务。Node 要求 >=20。桌面端和 dsh web 都可以使用,插件不改动宿主文件或其它插件。

核心功能

  • 跨工作区搜索:覆盖所有工作区的历史会话。
  • 三种字面匹配:整段短语、全部词包含、任一词包含;中英文和代码片段都可以。
  • 结果校验:先走索引找候选,再对每条命中回读原文做字面校验;索引漏检时自动退化为逐会话字面扫描。
  • 按时间排序:支持正序和倒序,结果按天分组。
  • 点击跳转:打开会话、加载到目标 seq、滚动到匹配消息并高亮 2.4 秒;失败会明确提示。
  • 日期时间轴:选一个日期后加载该日 ±3 天的聊天记录,滚动到边界继续按 3 天加载;有关键词时只在窗口内过滤。
  • 月历可用性:没有对话的日期变暗且不可选。
  • 搜索历史:聚焦输入框自动弹出,最近优先,可重搜、单删、清空。
  • 本地缓存:相同查询第二次直接读缓存,状态栏显示「缓存」。
  • 外观可自定义:高亮底色/文字色/加粗、面板背景与不透明度、面板文字色,带预设与恢复默认。
  • 中英文文案。

安装与启用

本机开发时,在 package.json 所在目录用 DSH 的插件管理器安装绝对路径:

plugin_manager install_bundle  target = D:\Deepseek Workpalcae\dsh-search-chat

安装完成后如果右侧栏没有立即出现,重启 DSH 客户端,因为宿主路由与客户端模块在启动时装载。

发布到 npm 之后,按包名安装:

plugin_manager install_bundle  target = dsh-search-chat

卸载用:

plugin_manager remove_bundle  target = dsh-search-chat

典型用法

  1. 右侧栏点击「会话搜索」,或右侧栏指南页里的同名入口。
  2. 输入要查找的文字,默认「整段匹配」,也可以切「全部词」或「任一词」。
  3. 需要时切换范围与时间顺序。
  4. 点击结果:插件会打开该会话、加载历史并滚动到匹配消息附近,同时闪烁高亮。

状态栏会显示命中总数、耗时,以及这次结果来自「索引」还是「扫描」。

外观与高亮设置

点击标题右侧的设置图标展开「外观设置」。默认命中关键词底色是 #ffd54f(亮黄),附 1px 深色描边;高亮文字默认按底色亮度自动取黑或白以保证对比度;关键词加粗默认开启。

面板背景默认透明,继承宿主主题;想更好读可以选一个颜色并用滑条调整不透明度。选了深色面板背景时建议把面板文字改成浅色。预设有「默认 / 高对比 / 柔和」,底部的「恢复默认」回到透明背景加亮黄高亮。

改动立即生效,约 0.5 秒后自动保存到 $DSH_HOME/.dsh-search-chat.json,刷新页面、重启客户端、重装插件都会保留。保存失败时界面提示「仅本次生效」,不影响搜索。

日期时间轴、搜索历史与本地缓存

日期时间轴的月历依据最近 100 个会话的事件时间聚合,没有对话的日期变暗不可点。选中日期后加载该日 ±3 天记录并按时间正序排列,列表顶部和底部有「加载更早 3 天 / 加载更晚 3 天」,滚动到边缘也会自动加载。有关键词时只在窗口内做字面匹配,清空日期则回到全局关键词搜索。

搜索历史按最近使用时间排序,点击任一项回填条件并立即搜索,相同条件会命中缓存;鼠标悬停显示单条删除;底部「清空历史」需要二次确认。历史保存在 $DSH_HOME/dsh-search-chat/history.json。

关键词搜索和时间窗口结果都会按「请求键 + 语料签名」缓存。同一查询第二次直接读缓存,状态栏显示「缓存」。语料签名由会话数、最新会话时间和当天日期组成,变化时自动失效;窗口包含今天时只用内存缓存,避免读到活动会话的旧快照。缓存文件在 $DSH_HOME/dsh-search-chat/cache/,自动做 LRU 清理,上限 200 个 / 20MB。

适用场景与注意

适合经常在多个 DSH 工作区之间切换、需要靠关键词找回历史消息的开发者。如果只是想找「大意」,字面匹配不适用,得换几个关键词;语义检索在路线图中,默认关闭。

有三个已知限制需要注意。第一,关键词搜索固定最多扫描 80 个会话、每会话 8 条命中;日期时间轴每个窗口最多 500 条、每会话 200 条,超出会截断,用日期窗口可以显著缩小范围。第二,跳转优先按命中片段在聊天行里定位,其次按轮次定位;如果当前会话打开的不是「聊天」视图,会提示无法定位。第三,跳转使用聊天行的 data-chat-* 属性,这是产品内部属性而非公开 API,选择器集中在 lib/client.js 的跳转区,DSH 升级后只需调整这一处,细节见 docs/API-NOTES.md。

关于运行权限:插件以当前 DSH 进程的权限运行,安装前应检查源码与许可证(MIT)。隐私方面,搜索、历史和缓存完全在本机完成,没有遥测、没有外部请求,不读取或返回任何凭据;宿主路由只接受回环地址请求,拒绝跨站请求和异源 Origin,查询内容与结果不写入日志。

结尾

dsh-search-chat 解决的问题很具体:多工作区下怎么快速找回一句聊天记录。它用索引加字面校验的方式保证结果可信,又用日期时间轴、搜索历史和本地缓存把翻历史这件事做顺。如果你的工作区已经开始堆积会话,可以从下面的入口安装试用。

  • 目录页:https://www.skillhub.cn/plugins/QwQ2333333-QaQ/dsh-search-chat
  • 仓库:https://github.com/QwQ2333333-QaQ/dsh-search-chat

需要说明的是,社区目录是独立站点,与 DeepSeek / 幻方没有官方从属关系,它不是官方应用商店。

羽毛球分组比赛记分
小程序二维码

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

小夜