dsh-find:在 DSH 会话内搜完整历史并逐处跳转

前言

在 DeepSeek Harness(DSH)里长对话很常见:上下文被折叠、未加载轮次不在当前视口里,只靠浏览器自带的「页内查找」往往只能扫到已渲染区域,也搜不到尚未加载的助手或用户消息。社区插件 dsh-find(仓库 iamwaller/dsh-find)针对的是另一类需求:在持久化的完整会话日志里检索,在已渲染的正文里高亮每一处命中,并用回车在命中之间前进或后退;跨越「未加载」边界时会通过宿主加载对应轮次。

下面介绍它是什么、如何安装启用,以及用法与限制。同类名称的 dsh-conversation-find 搜的是当前视图 DOM;本插件只搜持久化会话日志,二者定位不同。

这是什么

dsh-find 是维护者 iamwaller 发布的 DSH 插件(npm 包名 dsh-find,当前资料中的版本为 0.2.1,许可证 MIT)。在社区目录中归类为「记忆」相关能力:在单次 DSH 会话内查找关键词,覆盖完整会话历史(含尚未加载的轮次),在转录区域高亮所有命中,并支持快捷键与列表跳转。

插件几乎无额外配置:在 Plugins 页面里 Find in conversation 卡片上的 conversation-find 行开关,是唯一设置项。

核心功能

资料中已核实的能力如下。

  1. 入口与快捷键
    - 会话标题栏出现搜索图标。
    - Desktop:Ctrl/Cmd+F。
    - 纯 Web / 浏览器:Ctrl/Cmd+Alt+F(避免与浏览器自带查找栏冲突)。

  2. 检索范围与方式
    - 输入查询后,经宿主 sessionQuery.filterEvents 扫描持久化会话日志(资料写明不使用 SQLite FTS)。
    - 在用户消息与助手消息(user/message、assistant/message)中返回片段;带约 250 ms 防抖。
    - 结果列表展示角色、时间与摘要;最多 100 条,超出时会有「仅显示前 100 条」提示。

  3. 高亮与导航
    - 当前窗口内已渲染的转录正文里,每一处匹配都会上色;当前命中更深,计数形如 3/17。
    - Enter 下一处,Shift+Enter 上一处;若需跨越未加载边界,会调用 session.loadThrough(seq) 加载对应轮次。
    - 点击某条结果会加载该轮、跳到该消息内第一处命中并闪烁提示。
    - Esc 关闭查找并清除高亮绘制。

  4. 实现要点(便于排障)
    - 客户端注册会话头工具区、overlay 与快捷键路由 find.inConversation。
    - 宿主提供 POST /api/dsh-find/search,按文本、surface: current 与消息类型过滤事件。
    - 页内高亮优先使用 CSS Custom Highlight API(::highlight(dshfind-hit) / ::highlight(dshfind-current)),不直接改动 React 持有的 DOM;Chromium 105+ 支持该绘制,否则回退为滚动并闪烁消息。

安装与启用

安装命令以 README 原文为准:

dsh plugin --profile <profile> add dsh-find

也可在 DSH Desktop / Web 中打开 Plugins → Add plugin,输入 dsh-find,选择 Enable now,然后重启或重新加载。

启用后打开 Plugins,确认 Find in conversation 卡片里 conversation-find 行为开启。关闭该行会移除标题栏图标、查找栏与快捷键,并注销宿主路由。

环境与权限说明: package.json 要求 Node >=20、DSH ^0.2.2-rc.1。插件在当前 DSH 进程权限下运行;安装前建议阅读仓库源码与 MIT 许可证,确认符合你的使用环境。DSH 生态强调「一切皆插件」;社区目录站点为独立站点,与 DeepSeek / 幻方无官方从属关系。

典型用法

  1. 在会话中点击标题栏搜索图标,或按上述快捷键。
  2. 输入要查找的字符串;稍候结果列表出现。
  3. 在正文中查看全局高亮,用 Enter / Shift+Enter 在命中间移动。
  4. 需要直接定位到某轮对话时,在结果列表中点击对应项。
  5. 结束时按 Esc 关闭并清除高亮。

适用场景与注意

适合: 需要在同一会话里回溯较早轮次、核对模型或自己说过的话、在长上下文中定位某配置名或接口名等——且希望检索依据是完整日志而非仅当前已加载片段的开发者。

限制(资料原文):

  • 每次查询都会重放会话日志;结果上限 100 条。
  • 跳转要求目标轮次可通过 loadThrough 加载,且消息出现在当前聊天窗口;否则可能提示轮次已加载但无法在界面定位消息。
  • 高亮仅覆盖已渲染消息;折叠进 process/reasoning 分组的节点不参与高亮。
  • 依赖宿主 sessionQuery 服务;不可用时搜索会报告无法进行全会话搜索(501)。
  • 无「仅当前视图」模式,也无独立配置文件。

结尾

dsh-find 把「会话内查找」建立在持久化日志之上:未加载历史仍可被搜到,命中在正文逐处高亮,回车可逐处跳转。如需查看分类与简介,可打开社区目录页 iamwaller/dsh-find;源码与完整说明见 GitHub 仓库。

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

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

Xiaoye