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