前言¶
在 DSH 里跑长对话时,工具输出、注入的上下文和系统提示往往混在同一条时间线里。浏览器自带的页面查找只能扫当前 DOM,而会话正文是分页加载、还会随流式输出不断重绘;想快速回到某段命令结果或某句回复,单靠肉眼翻卷很费时间。下面介绍社区插件 dsh-session-search(维护者 minhaoli),它在会话头部挂一个查找入口,针对已加载的会话正文做匹配列表,并滚动定位、高亮命中内容。
这是什么¶
dsh-session-search 是 DSH 的客户端插件:在对话会话头部的工具区增加查找按钮,打开浮动查找面板;也可通过 Ctrl+F / Cmd+F 打开同一面板。面板会扫描当前已加载的会话转录,列出匹配项,跳转到对应位置并用高亮标出。
搜索范围覆盖整段转录中的可见文本:用户消息、助手回复、工具调用及其结果、系统提示、命令与注入上下文等。模型内部的 reasoning(通常折叠的私有草稿区) deliberately 排除在外,避免无关命中淹没真正要找的内容。
插件当前版本为 0.1.0(见仓库 package.json),许可证 MIT。在 GitHub 上星标数为 0(以目录页统计为准)。分类归属为客户端能力,无 CLI 界面,仅在 Web UI(web 或 desktop profile)下生效。
环境要求¶
开发与测试针对的 DSH 版本为 0.2.1-rc.2;更早版本未声明兼容。依赖 @deepseek-ai/cordis 约 ~4.0.5。插件挂载到 Cordis 插槽 conversation.session.header.utilities;若所用 DSH 发行版重命名或移除了该插槽,头部按钮将不会出现。
核心功能¶
查找与高亮¶
- 点击会话头部工具区的查找按钮,或使用 Ctrl+F / Cmd+F(在
keydown捕获阶段拦截,与浏览器默认查找行为区分)。 - 输入关键词后,插件在已加载的转录 DOM 中检索,结果以列表展示。
- 选择某条或按 Enter / Shift+Enter 在匹配项间前后切换,视图滚动到对应位置;命中处通过 CSS Custom Highlight API 高亮,而不是在 React 管理的节点外包
<mark>,以避免流式更新与折叠状态导致的 DOM 被协调抹掉。
键盘操作¶
| 按键 | 作用 |
|---|---|
| Ctrl+F / Cmd+F | 打开查找栏 |
| Enter | 下一个匹配 |
| Shift+Enter | 上一个匹配 |
| Esc | 关闭查找栏 |
架构要点(便于排障)¶
包体分两半,由 bundle patch 一并挂载:
lib/index.js:宿主侧,导出空的apply(),不注册路由或服务;搜索完全在浏览器执行,该文件仅满足 bundle 组合需要。lib/client.js:通过dsh.client.inject: ["@deepseek-ai/dsh-client-ui-slots"]注入,向conversation.session.header.utilities注册 React 组件并实现查找栏逻辑。
安装与启用¶
官方安装命令(须将 <your-profile> 换成你的 profile 名):
dsh plugin --profile <your-profile> add github:minhaoli/dsh-session-search
包声明了 dsh.bundle.patch,安装后条目会追加到 dsh.profile.bundles,下次启动 DSH 时由加载器挂载。客户端脚本以独立模块提供,安装后建议刷新页面一次。
手动安装时,可在 profile 的 Cordis patch 中插入 bundle 行,例如:
# ~/.dsh/profiles/<profile>/cordis.patch.yml
- insert:
- id: session-search
name: 'dsh-session-search'
典型用法¶
- 启动或切换到已安装插件的 profile,打开一条会话。
- 若对话很长,先用顶部的「加载更早」把需要检索的历史载入当前页;未载入的轮次没有 DOM,无法被搜到。
- 点击头部查找按钮或按 Ctrl+F / Cmd+F,输入要找的字符串或片段。
- 在结果列表中点选,或用 Enter / Shift+Enter 遍历;若命中落在已折叠的轮次上,仍会滚动到该容器,展开后即可看到高亮。
适用场景与注意¶
适合谁: 经常在单条 DSH 会话里核对工具输出、命令、注入片段或某句回复的开发者;与同维护者的会话侧栏、管理类插件可搭配使用(仓库 README 中列有 dsh-session-tree、dsh-session-manager、dsh-session-query-vector、dsh-ui-reload 等,语义检索与正文查找是不同层次的能力)。
插件作者明确说明的两条限制:
- 仅能搜索已加载的历史。 转录分页加载,未加载的更早轮次搜不到;搜不到只表示「不在当前已加载部分」,不等于「从未出现过」。
- 折叠轮次内的文字在折叠时不可见。 匹配仍会出现并定位到折叠容器,需展开后才能看到高亮。
安装前建议: 插件随 DSH 客户端在本地运行,安装命令会从 GitHub 拉取包体;请自行查看源码与 MIT 许可证,确认符合你的环境与安全策略。DSH 生态奉行「一切皆插件」;社区目录 SkillHub 插件页 为独立站点,与 DeepSeek / 幻方无官方从属关系。
结尾¶
dsh-session-search 把「在当前会话正文里找一句话」做成头部一键可达的查找栏,并针对 React 流式会话用 Highlight API 做稳定高亮。需要语义级跨会话检索时,应另选向量检索类后端插件;若只是在已打开的会话里定位工具输出或上下文,按上文安装、刷新页面后即可使用。
- 目录页:https://www.skillhub.cn/plugins/minhaoli/dsh-session-search
- 源码与说明:https://github.com/minhaoli/dsh-session-search