dsh-session-find:在 DeepSeek Harness 对话里做 Ctrl+F 会话内查找

前言

在 DeepSeek Harness(DSH)里跑长对话时,几十轮消息里往往混着工具调用、折叠步骤和长 JSON。浏览器自带的页内查找(Ctrl+F)只能命中渲染出来的可见文字,折叠内容、工具参数和思考过程常常搜不到,也不会标明「这条是谁说的、第几轮」。

下面介绍社区插件 dsh-session-find(维护者 fomalhaut1998):把查找做成对话原生的全文搜索,按来源归类、按轮次分组,并支持复制或导出 Markdown。插件归类为「记忆」类能力,在 SkillHub 目录页 可查到条目;源码与说明见 GitHub。

这是什么

dsh-session-find 是 DSH 的会话内查找插件:按 Ctrl+F 在当前已加载的对话 store 里全文搜索,点击结果跳到对应消息并高亮。

实现上是纯客户端、零运行时依赖、不联网——搜索在浏览器内完成,会话内容不出本机。宿主侧 index.js 的 apply() 为空,不注册工具或服务;客户端通过 @deepseek-ai/dsh-client-ui-conversation 的 conversation.session.header.utilities 槽位注入面板。

当前 npm 包版本为 1.4.1(以 package.json 为准),许可证 MIT。README 标明面向 DSH 0.2.x(开发与实测环境包括 dsh-desktop-next 2.0.18-next、@deepseek-ai/dsh-base 0.2.1-alpha.2);桌面窗口与网页端均可用。0.1.x 若槽位不存在,面板不会出现。

核心功能

资料中列出的能力如下,均可在安装后自行验证。

能力 说明
来源分类 每条命中标注来源:你 / 助手 / 思考 / 工具调用 / 工具输出 / 系统,可按来源过滤
轮次分组 结果按「第 N 轮」分组,行内带轮次标签
同文合并 同一段文字多处出现时合并为一条「同文 ×N」
正文 / 全量 默认只搜正文(用户消息 + 助手回复);可一键搜全部(含思考、工具参数、系统提示),并显示「已排除 N 处」
正则 · Aa · 全词 支持正则、大小写、全词;全词仅对英文/数字词生效
全量高亮 对话内多处高亮命中,当前选中项额外描边(CSS Custom Highlight API,不改 DOM)
复制 / 导出 结果可复制为 Markdown,或导出 .md 文件
记住状态 查询词、搜索范围、开关与最近 12 条历史记在 localStorage(键前缀 dsh-session-find:*)

数据来自对话 store 的 canonical order 逐条读节点,而非抓 DOM,因此折叠步骤、未渲染的工具参数也可被搜到。

已知限制(README 原文):只搜已加载的历史(未分页加载的旧消息不在 store);结果列表上限 300 条(匹配总数不限);不跨会话搜索;与其它抢占同一槽位或 Ctrl+F 的插件互斥,同一时间只有一个面板响应快捷键。

安装与启用

安装需 DSH 自带的 dsh plugin 子命令。官方 README 给出的命令如下。

# 从 npm 装(--profile 省略时改默认 profile)
dsh plugin add dsh-session-find
dsh plugin --profile desktop add dsh-session-find

# 需要固定版本时
dsh plugin add dsh-session-find@1.4.0

# 或从 GitHub 装(跟踪 main)
dsh plugin add github:fomalhaut1998/dsh-session-find

# 本地开发:直接 link 一个工作副本
dsh plugin add link:/path/to/dsh-session-find

装完后完全退出 DSH 再启动:客户端 bundle 在宿主启动时组装,运行中不会热加载新插件。之后若只改 client.js,刷新页面即可(桌面端 Ctrl+R,网页端 Ctrl+Shift+R)。

卸载:

dsh plugin remove dsh-session-find

同样支持 --profile。

典型用法

快捷键

按键 动作
Ctrl+F 打开 / 关闭查找面板
Enter / Shift+Enter 下一个 / 上一个命中
Ctrl+G / F3(Shift 反向) 同上
↑ / ↓ 输入框内调取历史;列表内逐条选结果
Esc 关闭面板(保留对话高亮直至再次搜索)

桌面端若 F3 被宿主占用,README 建议改用 Ctrl+G。

搜索示例

README 中的操作路径可复现如下:

Ctrl+F → 输入 dsh → 面板顶部:198 处匹配 · 已合并 3 条同文 · 已排除 6347 处
        点「Aa」→ 156 处匹配(只剩大小写完全一致的)
        点「只在正文里搜」→ 只保留你和助手说过的话,工具 JSON 里的命中被排除

说明:匹配数为全部命中(含同文重复);列表条数为合并去重后可点开的行。

导出格式

复制或导出的 Markdown 结构类似:

# 检索:工具

> 只在正文里搜 · 2026/10/18 14:56:48
> 45 处匹配 · 列出 1 条

### 第 4 轮

- **你** — …片段内容…

桌面端通过系统「另存为」;网页端为浏览器下载。

适用场景与注意

适合需要在当前会话里快速定位关键词、区分用户/助手/工具来源、或把检索结果整理进笔记与 issue 的 DSH 用户。若对话很长,需先向上滚动加载更早消息,否则 store 里没有的内容搜不到。

DSH 生态强调「一切皆插件」;SkillHub 为社区目录站点,与 DeepSeek / 幻方无官方从属关系。插件以当前 DSH 进程权限在客户端运行,安装前建议阅读 源码 与 MIT 许可证。README 说明 localStorage 仅存查询偏好与历史,不保存会话内容、无遥测;隐私敏感场景可在 devtools Network 面板确认无出站请求。

常见问题:装完 Ctrl+F 无反应时,多为未完全退出 DSH(含托盘残留进程);搜不到很早的消息时,先加载历史;升级至 1.4.0 后 localStorage 前缀变更,旧偏好不迁移。

结尾

dsh-session-find 把 Harness 长对话里的查找从「可见 DOM 文本」扩展到完整 store 内容,并补上来源、轮次与 Markdown 导出,适合日常调试与回顾会话。目录页:https://www.skillhub.cn/plugins/fomalhaut1998/dsh-session-find;仓库:https://github.com/fomalhaut1998/dsh-session-find。

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

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

小夜