dsh-chat-find:DSH 会话内中文友好的字面量查找

前言

在 DeepSeek Harness(DSH)里找一句说过的话,常见三条路都不顺手:浏览器自带的 Ctrl+F 只能搜当前 DOM,长会话里未渲染的历史行搜不到;DSH 自带的跨会话搜索走 SQLite FTS5 的 unicode61 分词器,两个汉字的词经常 0 命中;纯靠滚动肉眼找,一条长回复就占几屏。维护者 ye001991g 做的客户端插件 dsh-chat-find(仓库 ye001991g/dsh-chat-find)针对的是当前会话内的字面量精确查找,并可选切到跨会话模式;不修改模型请求、不写会话日志,Host 侧 apply() 为空实现。

这是什么

dsh-chat-find 是 DSH 的客户端插件(分类:客户端),包名 @local/dsh-chat-find,版本 1.0.0,MIT 许可证。它在 Web 界面会话头部动作区增加放大镜入口,在已渲染的消息行上做大小写不敏感的子串匹配;中文不依赖 FTS5 分词。跨会话搜索勾选后复用宿主 session.search(中文仍受 FTS5 限制,面板会说明)。目录页:skillhub.cn 插件页。

核心功能

当前会话:字面量扫描

插件从当前已渲染的消息行取文本,用正则做真实子串匹配,输入带 150 ms 防抖的实时刷新。结果形如「N/M 处 · 共 K 次」,每条带轮次号与摘要。底部会标明已扫描行数,以及是「更早历史未载入」还是「整个会话已载入」;未载入时需点「载入更早」再重扫。

定位与高亮

DSH 聊天区存在嵌套滚动:外层 [data-conversation-scroll],工具调用展开区 [data-step-process-body] 还有内层滚动。插件用匹配文字的 Range.getBoundingClientRect(),从内到外逐层滚动容器,把匹配点落到视口垂直中线。高亮使用 CSS Custom Highlight API(CSS.highlights + Range),不改 DOM,避免 React 文本节点被 <mark> 包裹后流式更新异常;不支持该 API 时降级为只列结果、不画高亮。流式输出时点击结果会按 data-chat-anchor-key 重查 DOM 并重建 Range。

跨会话开关

勾选「搜索所有历史会话」后走 DSH 自带搜索;中文漏词问题仍在宿主 FTS5 侧,当前会话模式不受影响。该开关偏好记在 localStorage。

信任边界(README 自述)

源码无 fetch / XHR / WebSocket;只存一个 localStorage 偏好;不改模型请求与会话数据。

安装与启用

前提:DSH 桌面版;README 写明在 DSH 0.2.2-rc.1 上 Windows 已实测,macOS/Linux 未实测。需已有 profile(常见为 ~/.dsh/profiles/desktop,以设置里显示为准)。

方式 A:安装本地 bundle(推荐)

对应宿主能力 plugin_manager install_bundle,参数为插件目录的绝对路径(README 说明不同版本的菜单名可能不同,需在插件页使用「安装本地插件」等等价入口):

  1. 获取源码:git clone https://github.com/ye001991g/dsh-chat-find.git
  2. 在 DSH 中对 dsh-chat-find 目录执行本地 bundle 安装(绝对路径)
  3. 插件列表确认 chat-find 为运行中
  4. 重启 DSH(首次装载需要)
  5. 打开任意会话,右上角应出现放大镜

方式 B:PowerShell 脚本(Windows 批处理备选)

需 Node 22+ 与 PowerShell;脚本优先使用 DSH 自带 Node。

git clone https://github.com/ye001991g/dsh-chat-find.git
cd dsh-chat-find
powershell -ExecutionPolicy Bypass -File .\install.ps1 install

profile 名不是 desktop 时加 -ProfileName <你的 profile 名>。装完同样需重启 DSH 一次。卸载:

powershell -ExecutionPolicy Bypass -File .\install.ps1 uninstall

README 提醒:不要往 cordis.patch.yml 里重复 insert,以免同一 slot id 注册两次报错(详见仓库 INSTALL.md)。

装完看不到放大镜

按 README 四步排查:设置里插件开关是否开启;是否装进了正在使用的 profile;是否已重启;开发者工具 console 是否有 [chat-find] 报错。

典型用法

  1. 打开会话,点右上角放大镜。
  2. 输入要查的文字(支持中文;空格分词;大小写不敏感)。
  3. 用 ↑ / ↓ 或在结果列表中点击条目跳转;视口应对准匹配文字。
  4. 若底部提示「更早历史未载入」,先「载入更早」再继续搜。
  5. 需要搜全部历史会话时勾选跨会话(中文Recall 以宿主 FTS5 为准,面板有说明)。

适用场景与注意

适合:在长对话里用中文或英文短语做「当前已载入内容」的精确查找,并要跳转到嵌套滚动区内的具体匹配点。

注意:

  • 插件以当前 DSH 进程权限在本地 Web 客户端运行;安装前宜自行审阅 GitHub 源码 与 MIT 许可证。
  • 折叠区(hidden="until-found")内文本暂不参与扫描。
  • 小窗口(高 ≤ 860px)时匹配可能在行尾被浮层面板遮挡。
  • 跨会话模式的中文仍可能漏词;精确中文以当前会话字面量模式为主。
  • DSH 社区目录 skillhub.cn 为独立生态站点,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-chat-find 补上的是「会话里已渲染文本」的中文字面量查找与像素级滚动定位,与浏览器 Ctrl+F、宿主 FTS5 跨会话搜索形成互补。进一步了解安装细节与开发者说明见仓库 README 与 INSTALL.md;插件条目见 目录页,源码见 GitHub。

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

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

小夜