dsh-find-all
Ctrl+F find bar for the DSH desktop app: it searches the whole conversation, not just the messages already on screen.
- Stars
- 0
- Language
- JavaScript
- Created
- Sep 20, 2026
- Updated
- Oct 4, 2026
Introduction
dsh-find-all
DSH Desktop 的 ⌘F / Ctrl+F 查找插件。它有一个和浏览器查找不一样的地方:会向宿主请求更早的历史,不只搜索当前已经显示出来的部分。
为什么需要它
DSH 桌面窗口是 Electron 壳,本身没有浏览器那种查找栏。而会话视图一次只在页面里保留最近 50 条消息——点一次「加载更早」才再多 50 条。
所以拿普通查找条搜一个较早的词,结果永远是 0,哪怕这段会话里确实有。
这个插件在你输入关键词之后,通过会话服务把更早的历史一页页加载进来,每加载一页就重搜一次。宿主不再提供更早页时,最后重搜并提示“已搜索当前可用历史”。宿主公开接口不能证明历史完整性,插件不会把终止信号当作“全部搜完”。
功能
- ⌘F / Ctrl+F 唤起查找栏,优先带入有效的选中文字;没有新选词时恢复上次关键词。关键词仅保留在当前插件实例内存中,禁用、刷新或重启后清空
- 范围切换:
整段(默认)↔本页,点那个胶囊按钮切换 - 边搜边加载:整段模式下自动分页加载历史,高亮与计数随加载实时更新
- 进度可见:显示「正在加载更早的历史… 已 3 页」,点一下这段文字即可停止加载
- 安全上限:最多加载 400 页(约 2 万条消息);历史不再增长时会自行停止
- 导航:Enter / Shift+Enter 上下一个;⌘G(Ctrl+G)/ F3 下一个,加 Shift 反向;Esc 关闭查找栏并清除高亮
- 切换会话时清除旧结果,并在新会话里重搜同一关键词
- 后台重扫首次找到结果时选中第一项;前插历史时优先保留可确认的当前命中,不自动滚动。原节点可对应,或同一正文块仍在且原文完全未变时,可在 Text/span 换树后恢复当前项;无法确认时把旧序号夹到新结果范围,换词或换会话则选第一项
安装
先按 DSH 运行时版本选择安装入口;它不一定等于 Desktop 产品版本。下面的包名用于安装 npm 已发布版本;验收特定候选包时,请替换为对应 .tgz 的绝对路径。
运行时 0.2.0-rc.2:用 Desktop 自带的插件命令安装:
dsh plugin --profile desktop add @ryuu-64/dsh-find-all
运行时 0.2.0-rc.1 / 0.1.7-rc.2:这两个官方安装包没有上述新版 CLI 入口,通用 dsh plugin --profile desktop 也会拒绝操作。请在 Desktop 中打开「插件 / Plugins」→「添加插件 / Add plugin」,填入 @ryuu-64/dsh-find-all(验收候选时填 .tgz 绝对路径),点击「安装 / Install」,完成后点击「立即启用 / Enable now」。不要用版本豁免绕过安装错误。
安装后完整重启一次 DSH Desktop,再检查插件是否正常加载。已验证的三个桌面版本支持原生禁用/重新启用;旧宿主的刷新要求见下方兼容表说明。
装完按 ⌘F / Ctrl+F,右上角出现查找栏就算装好了。
和 dsh-find-bar 只能留一个
dsh-find-bar 和本插件都会抢 Ctrl+F,两个同时装会互相顶掉。如果你之前装过它,先卸掉。运行时 0.2.0-rc.2 可用:
dsh plugin --profile desktop remove dsh-find-bar
运行时 0.2.0-rc.1 / 0.1.7-rc.2 请在「插件 / Plugins」中找到 dsh-find-bar 并选择「卸载 / Uninstall」。
使用
| 操作 | 按键 |
|---|---|
| 打开查找栏 | ⌘F / Ctrl+F |
| 下一个 / 上一个命中 | Enter / Shift+Enter |
| 下一个 / 上一个命中(另一套) | ⌘G(Ctrl+G)/ F3,加 Shift 反向 |
切换范围 整段 ↔ 本页 | 点查找栏上的胶囊按钮 |
| 停止加载更早的历史 | 点「正在加载更早的历史…」那行文字 |
| 关闭并清除高亮 | Esc |
搜索全部在本机完成:插件只向 DSH 的会话服务要更早的历史,不发网络请求,也不改动会话内容。
已知限制
- 大小写不敏感,没有「区分大小写」开关
- 单次搜索最多记 5000 个命中
- 折叠起来的工具调用和思考块,正文不在页面里,搜不到——先展开再搜
- 整段模式要真的翻历史,所以很长的会话首次搜索需要等几秒
- 宿主尚未就绪、公开报错、无进展或到达上限时,保留已找到的结果并提示未完成;再次打开查找或输入关键词可手动重试。停止、关闭、换词或切换会话会取消插件任务,但不会中断宿主已经发出的请求
- “已搜索当前可用历史”不保证历史完整。宿主可能在正常末页和不连续页错误时都不再提供更早页;此时重新查找也不保证恢复缺失历史
卸载 / 回退
运行时 0.2.0-rc.2 可用:
dsh plugin --profile desktop remove @ryuu-64/dsh-find-all # 卸载
dsh plugin --profile desktop add dsh-find-bar # 想换回上游那个插件
运行时 0.2.0-rc.1 / 0.1.7-rc.2 请在「插件 / Plugins」中卸载本插件;需要回退时,再通过「添加插件 / Add plugin」安装 dsh-find-bar。
关于这个项目
本插件 fork 自 secyborg/dsh-find-bar(作者 secyborg,MIT),在上游的基础上加了「整段会话」搜索。上游原有的查找条界面、高亮、n/N 计数和键盘导航都保留了下来。
版权与许可为 MIT 双署名:Copyright (c) 2026 secyborg 与 Copyright (c) 2026 Ryuu-64。上游 README 原样保存在 README.fork-origin.md,改动清单与致谢见 NOTICE.md。
兼容性开发说明
当前候选改动由会话标题栏中的查找按钮取得明确的会话身份;首次快捷键在只有一个可见会话面板时可直接查找;多会话时先点击或聚焦目标会话。已明确拒绝或失效的目标不会自动改搜其它会话。无法识别可靠的会话正文范围时会提示先选择会话,不退回整页搜索。历史加载失败或中断时保留已显示的部分结果,并说明尚未搜完。
右侧嵌入会话暂不支持查找,会提示范围不可用,不会自动改搜主栏;明确选择主会话后仍可查找。
2026-10-02 验收记录(代码版本 69c477c)使用同一候选包完成十版 Web 和三个官方 Windows Desktop 的插件功能验收:首次快捷键、80 条结果的分页、会话切换、结果导航及宿主支持的启停行为。当前 rc2 还验证了实际右侧嵌入会话的范围隔离。
| DSH 运行时版本 | 实际 Web | 官方 Windows Desktop |
|---|---|---|
| 0.1.5-rc.2、0.1.5-rc.3、0.1.6-alpha.2 | 功能验收通过 | 已核官方路径未取得安装包,未验证 |
| 0.1.6-alpha.1、0.1.7-alpha.1、0.1.7-alpha.2、0.1.7-rc.1 | 功能验收通过 | 本轮未验证 |
| 0.1.7-rc.2、0.2.0-rc.1、0.2.0-rc.2 | 功能验收通过 | 插件功能验收通过;宿主错误仍保留 |
该次 CI 整体仍为失败:三个桌面版本均记录到宿主启动时的 startupData/preloadScripts 错误及退出时的连接错误,未装插件的基线也存在同类错误。没有忽略这些错误,也不把插件功能通过写成宿主整体无错误。Web 通过不代表对应 Desktop 已验证,未知未来版本不作承诺。详见 兼容性验收方法与边界;最终交付状态以 PR #9 的独立审核为准。
旧宿主 0.1.5-rc.2 / rc.3 / 0.1.6-alpha.1 本身不支持插件图变更的热卸载:禁用或重新启用后须刷新页面或重启应用。其余七个已验 Web 运行时和上述三个已验 Desktop 均通过了两次原生禁用/重新启用测试;未验证的 Desktop 不据此推定通过。