dsh-qa-jump:DSH 对话里的提问/回答跳转与代码块折叠

前言

在 DeepSeek Harness(DSH)Web GUI 里跑长对话时,模型回答一多,滚动条很容易把「当前在看哪一轮提问、哪一段回答开头」弄丢。往上翻要找某条用户消息,往下翻要找某次模型输出的起点(含「已完成,用时 N 秒」那一行),往往要在整页里来回扫。回答里若堆着大段围栏代码块,页面还会被撑得很长。

下面介绍社区客户端插件 dsh-qa-jump(维护者 sol-ray):在输入框上方加一行紧凑导航,支持「提问 / 回答」双轴跳转,并可用纯 CSS 一键折叠回答中的代码块。插件归类为 DSH 客户端扩展,源码与说明见 GitHub,社区目录页为 skillhub.cn/plugins/sol-ray/dsh-qa-jump。

这是什么

dsh-qa-jump 是给 DSH Web 会话视图用的插件:Question/answer jump and code folding for the DeepSeek Harness web GUI。它不改动消息渲染器本体,通过 Cordis Slot 注入控制行,并依赖会话 DOM 上的稳定钩子做定位。npm 包名 dsh-qa-jump,当前 package 版本 1.6.6,许可证 MIT,要求 Node >= 18、dsh >= 0.2.0;README 写明在 DSH 0.2.1-rc.5(Windows Desktop / Web GUI) 上开发与截图。

控件行示意(README 原文):

[提问][回答]  [↑] 3/12 [↓]  [▭/▬]

核心功能

提问 / 回答双轴导航

1、点 提问 或 回答 切换导航轴,中间计数器(如 3/12)随轴变化:表示当前视口顶部落在该轴第几条 / 共几条。

2、↑ / ↓ 跳到当前轴上一条或下一条的开头(约 12px 留白)。提问轴对应 user / steering 行;回答轴取「每条用户行之后的第一条 assistant-step 行」,落点包含「已完成,用时 N 秒」一行,而不是 turn 末尾的「已编辑 N 个文件」区域。

3、边界不空转:只剩一条回答时,先滚到该回答顶部;已在开头才提示「已经是最后一条回答」类文案。

流式生成期间仍可跳

外壳在生成中会「跟随底部」,动画滚动常被取消。插件改为同步落位,再派发 scroll / scrollend,把滚动口交还给读者;之后流式内容不会再把视口拽回底部。在跟随底部期间跳转为瞬移;读者已滚上去、跟随交还后,仍可用平滑滚动。

代码块折叠

  • 图标 ▭(完整长框)表示展开态,一键折叠全部回答内围栏代码块内部的 <pre>;再点变为 ▬(压扁短框)即全部展开。
  • 折叠后点单个代码块可单独展开(data-daj-code-open),再点收回;语言标签与复制按钮保留。
  • 拖拽选字、点代码块右上角复制不会误触折叠。
  • 实现为 <html> 上插件自有属性 + CSS,折叠高度约 156px,不插入额外 DOM 节点。

布局

控制行 flex-wrap: nowrap,窄屏与粗指针断点下约 320px 宽仍可放下;按钮使用 touch-action: manipulation,便于移动端操作。

安装与启用

推荐从 npm 安装(README 写明免构建、免构建授权):

dsh plugin --profile web add dsh-qa-jump

或从 GitHub 源码安装:

dsh plugin --profile web add github:sol-ray/dsh-qa-jump

装完后重启 DSH 或刷新 Web GUI,输入框上方应出现导航行。

本地开发目录安装示例(README 为 Windows 路径写法,按本机路径替换):

dsh plugin --profile desktop add E:\path\to\dsh-qa-jump

卸载:

dsh plugin --profile web remove dsh-qa-jump

DSH 生态理念是「一切皆插件」;SkillHub 插件目录 为社区站点,与 DeepSeek / 幻方无官方从属关系。

典型用法

操作 结果
点 提问 / 回答 切换导航轴,计数器随之切换
↑ / ↓ 跳到当前轴的上一条 / 下一条的开头
中间 3/12 当前视口顶部所在条目序号 / 总数
▭ 折叠全部代码块;再点切到 ▬ 即展开
折叠状态下点某个代码块 只展开这一块;再点收回

README 提供控件行与折叠态截图(docs/control-row.png、docs/code-folded.png),运行环境为 DSH 0.2.1-rc.5 / Windows 桌面端深色主题。

工作原理(简要)

  • 注入点:conversation.input.dock(控制行,加性槽位)与 conversation.chat.assistant-actions(已完成回答的隐形锚点,兜底)。
  • 定位:[data-conversation-scroll] 为滚动口,[data-chat-flow-kind] 标记每条 Chat 行类型。
  • 若上游重命名 kind,回答轴可退回锚点映射(粒度变粗),其余功能仍可用。

适用场景与注意

适合谁:经常在 DSH Web GUI 里阅读长线程、需要在「某条提问」与「某次回答开头」之间快速切换的开发者;回答中含大量代码块、需要临时压短页面时也可用到折叠。

安装前请知悉:

1、插件以当前 dsh 进程权限在浏览器 / 桌面 Web 视图内运行,安装前应阅读 源码 与 MIT 许可证,自行判断是否信任维护者 sol-ray。

2、功能依赖 DSH 会话外壳的 DOM 钩子;版本与外壳不一致时,跳转或折叠行为可能部分失效。

3、代码折叠仅作用于 md-code-block 内围栏代码的 <pre>,不影响其它块级内容。

4、Host 侧 index.js 为空占位;逻辑集中在 client.js,无需构建,node --check client.js 即可做语法检查。

结尾

dsh-qa-jump 用一行控件补齐 DSH 长对话里「问在哪、答从哪开始」的导航,并用 CSS 折叠代码块减轻纵向噪音。若你已在用 DSH Web 配置,可按上文命令安装并在会话页试用双轴跳转与折叠图标。

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

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

小夜