前言¶
在 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。