DSH CtrlF:在对话渲染页里用 Ctrl+F 搜索 transcript

前言

在 DeepSeek Harness(DSH)里跑长对话时,transcript 是渲染后的 Markdown:加粗、斜体、软换行会把一句拆成多个 DOM 文本节点。直接用浏览器自带的「页面内查找」,经常搜不到跨 markup 的短语,或者高亮改 DOM 导致滚动锚点、虚拟列表行为异常。DSH 生态奉行「一切皆插件」;社区目录(如 SkillHub 上的条目)与 DeepSeek / 幻方无官方从属关系,插件需自行甄别源码与许可证后再安装。

下面介绍维护者 Johnson-lab1111 的客户端插件 dsh-ctrlf(GitHub:Johnson-lab1111/dsh-ctrlf):在会话界面按下 Ctrl+F(macOS 为 Cmd+F),对当前可见 transcript 做匹配高亮并逐步跳转,尽量贴近宿主滚动与流式输出行为。

这是什么

DSH CtrlF 是 DSH 的 Client 侧 bundle:在浏览器中注入查找条,搜索当前对话渲染结果,对所有匹配项高亮,并支持在匹配项之间前后切换。Host 侧 index.js intentionally 为空,仅满足 bundle 行需要模块;无服务、无路由、无可配置项。

分类:客户端。当前仓库在目录页星标为 0;package.json 版本 1.0.0,许可证 MIT。

核心功能

快捷键与界面

操作 按键
打开查找条 Ctrl+F / Cmd+F
下一个匹配 Enter 或 F3
上一个匹配 Shift+Enter 或 Shift+F3
关闭 Esc 或 ×
区分大小写 Aa 按钮(会记住状态)

计数器显示 当前 / 总数;无结果时显示 “No results”。

与浏览器查找的差异(README 说明)

  1. 跨行内 markup 匹配:在可见文本节点的虚拟拼接串上搜索,strong、em、软换行拆开的一句话仍可匹配;块级边界插入 NUL,匹配不会跨段落。
  2. 不改 DOM:不用 <mark> 包裹;用 CSS Custom Highlight API(::highlight())绘制高亮,避免 reflow,宿主滚动锚点与虚拟化可继续工作。
  3. 流式输出时仍可用:查找条打开时,新轮次与逐 token 输出到达后,经防抖 MutationObserver 重新扫描,且重扫不会把用户跳回第 1 个匹配。
  4. 外观随宿主主题:颜色使用 --dsw-alias-*;界面文案经 ctx.locale,支持 zh / en / ja / es / fr / de / ru / pt。

隐私与持久化

  • 无网络请求;无 session 事件;不写磁盘。
  • 搜索词仅在页面内存中,关闭查找条即丢弃。
  • 唯一持久项:localStorage 中的布尔值 dsh.find.caseSensitive(区分大小写偏好)。

安装与启用

DSH 从 GitHub 包解析 bundle。README 说明可在 Harness UI 添加仓库:

# from the Harness UI: Plugins -> Add plugin -> paste the repository

在界面中 Plugins → Add plugin → 粘贴仓库 https://github.com/Johnson-lab1111/dsh-ctrlf,将包目录作为 bundle 装入 profile 并启用。bundle 贡献一行 Client 配置,无需额外配置字段。

package.json 中 client 注入目标为 @deepseek-ai/dsh-client-ui-conversation,platform: web,immediately: true。

安装前请自行阅读仓库源码与 LICENSE;插件以当前 DSH 进程 / 浏览器上下文权限运行,与任意第三方 DSH 插件相同。

典型用法

  1. 在 DSH 中打开一段已渲染的对话 transcript。
  2. 按 Ctrl+F(macOS:Cmd+F)打开查找条,输入关键词。
  3. 用 Enter / F3 或 Shift+Enter / Shift+F3 在匹配项间移动;需要时用 Aa 切换大小写(偏好会写入 dsh.find.caseSensitive)。
  4. 对话仍在流式追加时,可保持查找条打开;插件会 debounce 后重扫,且尽量不重置当前匹配序号。
  5. 按 Esc 关闭查找条,搜索词从内存清除。

适用场景与注意

适合:在长 Harness 对话里定位某段回复、命令或错误信息;需要跨 Markdown 行内标记连续匹配,又不想破坏宿主滚动与虚拟列表的场景。

注意:

结尾

DSH CtrlF 把「页面内查找」收到对话渲染层:高亮走 presentation layer,匹配考虑 Markdown 文本节点拼接,并在流式 transcript 下尽量保持当前跳转位置。需要时在 UI 添加仓库并启用 Client bundle 即可使用。

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

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

Xiaoye