前言¶
在 DeepSeek Harness(DSH)里做长对话开发时,经常要在已加载的历史里定位某段报错、接口名或配置片段。Harness 桌面版本身没有对话内查找:按 Ctrl+F 会交给浏览器,在会话视图里往往没有任何反应。社区里曾有同名查找类插件,但它们依赖的 data-chat-anchor-key、data-chat-node-key、data-chat-turn 等 DOM 属性在 0.2.x 会话视图里已经不存在;锚点找不到,跳转列表就会一直是空的。下面介绍维护者 P-PPJ 的客户端插件 dsh-chat-search:按当前 data-conversation-* DOM 契约重写,在不展开折叠块、不改变阅读位置的前提下,提供正文高亮、上一个/下一个、命中列表和边搜边涨的计数。
这是什么¶
dsh-chat-search 是 DSH 的客户端(纯前端)插件:在当前打开的对话中搜索关键词,用 Ctrl+F / Cmd+F 唤起面板。它需要 DeepSeek Harness 桌面版 0.2.x;装好后刷新页面即可,不必重启应用。源码与说明见 GitHub:P-PPJ/dsh-chat-search,社区目录页:skillhub.cn/plugins/P-PPJ/dsh-chat-search。许可证为 MIT。当前资料中的包版本为 1.0.1。
核心功能¶
插件把搜索范围限定在聊天区:[data-conversation-region="chat"] 为对话主体,输入框所在的 composer 区域会从搜索树里剪掉,因此不会搜到你正在输入框里打的字。
Ctrl+F/Cmd+F:随时打开搜索(光标在输入框里也会拦截浏览器原生查找);面板已打开时再按一次会聚焦并全选查询框。- 边搜边涨的计数:分片扫描(每帧约 900 个节点或 8ms),长对话不易卡界面,命中数随扫描递增。
- 正文高亮:用 CSS Custom Highlight API 绘制
Range,不向 React DOM 插入<mark>,减少重排与宿主冲突。 - 上一个 / 下一个:
Enter或面板 ↓ 为下一个,Shift+Enter或 ↑ 为上一个,到尽头自动回绕。 - 首个命中靠近当前视口:以视口顶部为锚从近到远找第一个匹配;只有不可见时才做最小滚动。
- 命中位置列表:点击计数(如
3/58)展开列表(最多 300 条),带片段与命中词高亮,点条目跳转;跳转后可点⟲回到开始搜索时的阅读位置(锚定元素而非滚动像素)。 - 低打扰:不展开折叠块、不改动对话内容;点面板外或聊天区不关闭,仅
Esc关闭并把焦点还回原元素。 - 中文输入法:合成期间不误触发搜索或 Enter/Esc。
- 按需补历史:开头最多补加载 80 页 / 12 秒;未完成时面板会说明「只搜索了已加载的部分」。
- 主题:使用
--dsw-alias-*token,明暗主题随 Harness 适配。
与浏览器原生查找、依赖旧 DOM 的老插件相比,README 中强调本插件在「只在对话里搜」「按字符高亮」「不展开折叠、不移动阅读位置」「计数实时增长」「首个命中在附近」等项上的差异;具体对照表见仓库 README。
快捷键¶
| 按键 | 作用 |
|---|---|
Ctrl+F / Cmd+F |
打开搜索;已打开则聚焦并全选 |
Enter / ↓ |
下一个命中 |
Shift+Enter / ↑ |
上一个命中 |
Esc |
退出搜索,焦点还回原处 |
| 点击计数 | 展开 / 收起命中位置列表 |
安装与启用¶
推荐通过 Harness 插件安装器安装预构建 .tgz(不需要 Git)。安装器里「安装源:中国大陆镜像源」只改写 npm 包名请求;填 GitHub 地址或 .tgz 直链时不会走该镜像,需本机能访问对应 URL 或使用本地文件。
任选一种能连通的填法:
https://github.com/P-PPJ/dsh-chat-search/releases/download/v1.0.1/dsh-chat-search-1.0.1.tgz
https://cdn.jsdelivr.net/gh/P-PPJ/dsh-chat-search@main/dist/dsh-chat-search-1.0.1.tgz
本地已有文件时可直接填路径,例如 Windows 上:
D:\某个目录\dsh-chat-search-1.0.1.tgz
若填 https://github.com/P-PPJ/dsh-chat-search 这类仓库地址,安装器会按 git 依赖解析,本机须已安装 Git;否则可能出现 ERR_PNPM_GIT_RESOLVE_FAILED 或「git 不是内部或外部命令」——与网络无关,可改用上述 .tgz 直链或本地文件。
中国大陆访问 GitHub Release 直链不稳定时,README 给出在完整 GitHub 地址前加第三方加速前缀的示例(如 https://ghfast.top/https://github.com/.../dsh-chat-search-1.0.1.tgz);这些是公共镜像,可用性不由项目保证,也可下载 .tgz 后用本地路径安装。
也可在 Harness 内 插件 → 市场 搜索 dsh-chat-search(社区目录条目,非 DeepSeek / 幻方官方商店)。装完后刷新页面生效。
与同名旧包冲突:社区中 helo060228/dsh-chat-search 与本插件 npm 包名相同。安装本插件前请从 profile 里删除旧依赖与 bundle,否则会被覆盖,且两个 bundle 会在同一 overlay 槽位争抢 Ctrl+F。
本地开发还可把仓库放进 profile 的 package.json 依赖与 dsh.profile.bundles(路径见 README「方式 B」),再 pnpm install 并刷新;该路径 README 含 git clone 说明,按需使用。
典型用法¶
- 在 Harness 桌面版打开目标对话,按
Ctrl+F(macOS 为Cmd+F)打开搜索面板。 - 输入关键词;观察计数随扫描上升,正文中出现高亮。
- 用
Enter/Shift+Enter或面板箭头在命中间切换;需要概览时点击计数打开列表,点某条跳转。 - 跳转后若要回到搜索前的阅读位置,点面板上的
⟲。 - 结束时按
Esc关闭并恢复焦点。
若需搜折叠块(Tool 调用、思考过程等)内的文字,须先手动展开;插件有意不自动展开,以免改变阅读位置。折叠块内未渲染进 DOM 的内容无法被搜到。
适用场景与注意¶
适合:在 0.2.x Harness 长会话里快速定位已加载消息中的术语、日志片段或代码引用;希望查找时不要被「展开全部折叠」或「从对话顶开始第一个命中」打断阅读节奏的场景。
限制(README 明确列出):
- 命中上限 3000、高亮上限 1200、位置列表 300 条。
- 依赖 CSS Custom Highlight API(Chromium 105+,桌面版满足);不支持时仍可跳转,但无染色。
- 绑定当前
data-conversation-*DOM 契约;Harness 大版本改结构时需更新插件。 - 插件以当前 DSH 进程/页面上下文运行;安装前请自行查看 源码 与 MIT 许可证,确认符合你的环境与安全要求。
结尾¶
dsh-chat-search 补上了 Harness 0.2.x 对话视图里可用的 Ctrl+F:高亮、导航、列表与实时计数,并尽量保持「不展开、不挪位」。需要安装地址与故障对照时,以仓库 README 为准。
- 目录页:https://www.skillhub.cn/plugins/P-PPJ/dsh-chat-search
- GitHub:https://github.com/P-PPJ/dsh-chat-search