前言¶
在 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 说明不同版本的菜单名可能不同,需在插件页使用「安装本地插件」等等价入口):
- 获取源码:
git clone https://github.com/ye001991g/dsh-chat-find.git - 在 DSH 中对
dsh-chat-find目录执行本地 bundle 安装(绝对路径) - 插件列表确认
chat-find为运行中 - 重启 DSH(首次装载需要)
- 打开任意会话,右上角应出现放大镜
方式 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] 报错。
典型用法¶
- 打开会话,点右上角放大镜。
- 输入要查的文字(支持中文;空格分词;大小写不敏感)。
- 用
↑/↓或在结果列表中点击条目跳转;视口应对准匹配文字。 - 若底部提示「更早历史未载入」,先「载入更早」再继续搜。
- 需要搜全部历史会话时勾选跨会话(中文Recall 以宿主 FTS5 为准,面板有说明)。
适用场景与注意¶
适合:在长对话里用中文或英文短语做「当前已载入内容」的精确查找,并要跳转到嵌套滚动区内的具体匹配点。
注意:
- 插件以当前 DSH 进程权限在本地 Web 客户端运行;安装前宜自行审阅 GitHub 源码 与 MIT 许可证。
- 折叠区(
hidden="until-found")内文本暂不参与扫描。 - 小窗口(高 ≤ 860px)时匹配可能在行尾被浮层面板遮挡。
- 跨会话模式的中文仍可能漏词;精确中文以当前会话字面量模式为主。
- DSH 社区目录 skillhub.cn 为独立生态站点,与 DeepSeek / 幻方无官方从属关系。
结尾¶
dsh-chat-find 补上的是「会话里已渲染文本」的中文字面量查找与像素级滚动定位,与浏览器 Ctrl+F、宿主 FTS5 跨会话搜索形成互补。进一步了解安装细节与开发者说明见仓库 README 与 INSTALL.md;插件条目见 目录页,源码见 GitHub。