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 配置,可按上文命令安裝並在會話頁試用雙軸跳轉與摺疊圖標。

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

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

小夜