dsh-chat-find: Browser-Style Find in DSH Chat View

前言

在 DeepSeek Harness(DSH)里跑长对话时,助手输出、工具卡片和已加载的历史页会堆在同一条 transcript 里。要在整段内容里定位某个错误码、函数名或 API 标识,靠肉眼滚动效率很低;把内容复制到外部编辑器再搜,又会打断当前会话节奏。下面介绍社区客户端插件 Chat Find(bulzz1233/dsh-chat-find):在 DSH 桌面 UI 的对话区域提供类似浏览器或 IDE 的查找条,只搜已渲染的聊天节点,不碰输入框草稿和查找条自身。

这是什么

Chat Find for DeepSeek Harness 由维护者 bulzz1233 发布,分类为客户端插件。它在对话视图顶部或快捷键唤起查找条,对当前 DOM 里已渲染的用户消息、助手文本、工具卡片以及分页加载进 transcript 的历史内容做字面量搜索,并支持大小写、全词匹配、匹配计数与快捷键跳转。插件以 MIT 许可证开源,当前 GitHub 星标为 0;在插件目录页与仓库 README 中的简介一致:Browser/IDE-style in-conversation find bar,含 match case、whole word、history,以及面向流式输出的 streaming-aware 行为。

核心功能

以下能力均来自仓库 README,安装后可在对话内直接使用。

打开与关闭

  • Ctrl+F / Cmd+F,或对话标题栏上的查找按钮,打开查找条。
  • 任意焦点下按 Esc 关闭(包括查找输入框或 composer 有焦点时)。

搜索范围与选项

  • 搜索对象:所有已渲染的聊天节点;composer 草稿、隐藏节点、输入框、contenteditable 草稿以及插件自己的查找条会被排除,避免「幽灵匹配」。
  • Match case(Aa) 与 whole word(ab) 开关,便于搜错误码、函数名、API 标识。
  • 查询为字面文本,不是正则表达式;全词模式使用 JavaScript/Unicode 词边界,不是按自然语言分词。

导航与历史

  • 实时显示 n / total;Enter / Shift+Enter 在首尾处循环切换上一处/下一处匹配。
  • F3 / Shift+F3、Ctrl+G / Ctrl+Shift+G 与下一处/上一处按钮行为相同。
  • 搜索历史:ArrowUp / ArrowDown 浏览,最新在前、自动去重;越过最新条目时会恢复正在输入的草稿。

反馈与流式场景

  • 零结果时计数与边框变红,查找条轻微抖动一次;连续按 Enter 会再次抖动。系统开启 prefers-reduced-motion 时不播放动效。
  • Streaming-aware:通过防抖的 MutationObserver 在回复流式输出或旧页加载时重新搜索;当前匹配按 { text node, offset } 锚定,历史前插或 token 追加不会把光标跳到别的匹配;重搜不会改变滚动位置。

实现要点(便于排查问题)

  • 从活动的 [data-conversation-scroll] 视图采集 conversation.chat.flow 子树文本;块边界保留,匹配可跨行内 <span>(例如语法高亮代码),但不跨无关块。
  • 高亮使用 CSS.highlights 与 Range,不插入 <mark>,避免改动 React 持有的 DOM。
  • UI 使用 --dsw-alias-* 主题 token,文案支持英文与中文。

环境与限制

  • 需要带 Chromium 引擎的 DeepSeek Harness Desktop,且支持 CSS Custom Highlight API(Chromium 105+)。
  • README 写明在 DeepSeek Harness 0.2.1-rc.5 上做过测试。
  • 仅已渲染文本可搜;虚拟化或未挂载的折叠节点无法匹配。

安装与启用

官方 README 的安装分两步:先把仓库放到本机稳定目录,再在当前 DSH profile 中以 local bundle 方式安装。资料中的示例为 clone 到本地;你也可以用其它方式取得相同目录结构,关键是安装时使用绝对路径。

取得插件目录后,在 DSH 会话中让 agent 安装本地 bundle,例如:

Install this local plugin bundle: /absolute/path/to/dsh-chat-find

agent 会通过 plugin_manager 的 install_bundle 传入该绝对目录;bundle 会链接进 profile,之后若在目录内更新源码,客户端重载后可生效。若插件未立刻出现,重载一次 DSH 窗口即可。

插件 bundle 名在 package.json 中为 @local/dsh-chat-find,版本 1.0.0;客户端侧为 web 平台、immediately: true,并注入 @deepseek-ai/dsh-client-locale 与 @deepseek-ai/dsh-client-ui-conversation。

安全说明:客户端插件在当前 DSH 进程权限下运行。安装前请自行阅读 client.js 等源码并确认 MIT 许可证(见仓库 LICENSE)是否符合你的要求。

典型用法

安装并重载客户端后,在任意对话中打开查找条,输入要搜的字面字符串,用快捷键或按钮在匹配间跳转。常用操作如下(与 README Usage 表一致)。

操作 快捷键
打开查找条 Ctrl+F / Cmd+F,或标题栏查找图标
关闭 Esc
下一处 Enter、F3、Ctrl+G
上一处 Shift+Enter、Shift+F3、Ctrl+Shift+G
上一条/下一条搜索词 ArrowUp / ArrowDown
切换大小写 Aa 按钮
切换全词 ab 按钮

当前匹配以品牌色高亮,其余匹配为半透明品牌色高亮。适合在长 transcript 里快速定位某次 tool 输出里的字段名、日志片段或文档里反复出现的标识符;不适合依赖正则或搜索尚未加载进 DOM 的历史页。

适用场景与注意

适合:经常在 DSH 单会话内核对长回答、工具返回和已加载历史;需要大小写或全词约束的标识符搜索;助手仍在流式输出时需要查找条自动跟上 DOM 变化。

注意:

  • 未渲染内容搜不到,需要先滚动或加载到对应页。
  • 社区插件目录(SkillHub 等)为独立站点,与 DeepSeek / 幻方无官方从属关系;DSH 生态强调「一切皆插件」,本文介绍的是社区维护的客户端扩展,不是官方应用商店条目。
  • 星标、测试版本等信息以仓库与目录页当时展示为准;升级 DSH 或 Chromium 内核后,若 Highlight API 行为变化,需自行回归测试。

结尾

dsh-chat-find 把浏览器/IDE 熟悉的查找体验搬进 DSH 对话视图,在不动 composer 草稿的前提下搜已渲染 transcript,并对流式输出做了锚定重搜。若要查看元数据或 issue,可打开 GitHub 仓库;若要浏览插件条目,可访问 SkillHub 目录页。

  • 目录页:https://www.skillhub.cn/plugins/bulzz1233/dsh-chat-find
  • GitHub:https://github.com/bulzz1233/dsh-chat-find
羽毛球分组比赛记分
小程序二维码

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

Xiaoye