dsh-study-ask:主對話劃詞追問,右側欄獨立提問且不堆滿會話列表

前言

用 DeepSeek Harness(DSH)做長文學習時,主對話裏往往有一段正在跟進的脈絡;若在同一個線程裏隨手追問細節,新問答會把前面的內容頂走,閱讀和回溯都不方便。社區裏已有劃詞追問類插件,但常見做法是每問一次就在左側會話列表新建一個帶「❓」的會話,問多了列表很快擠滿。

dsh-study-ask(GitHub:P1gG0dG0d/dsh-study-ask)把「提問」收進原生右側欄:與主對話分屏並排,提問線程不進入左側列表,同一主對話下複用一條提問會話。下面介紹它解決什麼問題、怎麼用,以及安裝時要注意什麼。

這是什麼

學習提問(Study Ask) 是維護者 P1gG0dG0d 發佈的 純客戶端 DSH 插件:無宿主業務邏輯、無獨立構建鏈,依賴 DSH 桌面版或 Web 上的原生右側欄(@deepseek-ai/dsh-client-ui-sidebar-right)。README 寫明適用 DSH 0.2.1-rc.3。

一句話定位:在主對話裏選中文字並點「提問」,右側打開專用「提問對話」;流式回答、Markdown、輸入框、模型選擇、停止與審批等行爲與 DSH 本體一致,主對話不新增消息、不滾動、不打斷。

與常見劃詞追問的差異

README 用表格對比了本插件與「每次提問新建左欄會話」的做法:

行爲
每個主對話 只有 一個 提問會話;第一次提問時創建,之後在同一線程裏累積追問
左側列表 提問會話 不顯示(CSS display:none,數據仍保留)
右側欄 提問以原生對話形態展示
主對話 保持不動

若與 dsh-sidebar-qa 同時啓用,會出現兩個劃詞入口,文檔建議二選一。

核心功能

劃詞提問與引文

  1. 在主對話裏選中一段文字,浮層出現「提問」按鈕並點擊。
  2. 右側欄出現「提問對話」,選中的內容已按 > 引用 格式寫入輸入框。
  3. 補充問題後發送;後續追問仍在同一條提問對話裏進行。

選區識別範圍是 [data-slot="conversation.session"] 內的文字,並排除輸入框與右側欄,避免誤觸。

公式(KaTeX)引文

直接用 selection.toString() 在含 KaTeX 的頁面上會得到重複、換行混亂的文本。插件從 DOM 克隆選區再處理:選區落在公式內部則整段以 $TeX$ 引用;選區跨過多個 .katex 節點時,用其 annotation(TeX 源碼)替換後再取文本,公式只出現一次。

入口與複用

  • 輸入框左側有「❓ 提問對話」按鈕;當前主對話尚無提問會話時會自動創建。
  • 關閉右側欄 tab 不刪數據;再次打開仍指向同一會話。
  • 同一提問會話在右欄按 contentId 去重,避免重複 tab。

會話 id 與持久化

提問會話 id 爲確定性值 session-<uuidv5(主會話id)>,重啓後遍歷會話列表即可認回。另用 Cookie dsh_study_ask_map(按 host 隔離、不隨端口變化)兜底——因桌面版宿主常用 --port 0 隨機端口,localStorage 按 origin 含端口隔離,重啓易失效。兩條路徑都失敗時才新建提問會話。

安裝與啓用

資料中的安裝示例針對 本地目錄開發;裝完後需 重啓 DeepSeek Harness,以便宿主重新組合 profile。

# 本地目錄(開發)
dsh plugin --profile desktop add "link:D:/Projects/PluginsCreation/dsh-study-ask"

卸載:

dsh plugin --profile desktop remove dsh-study-ask

插件在 npm 上包名爲 dsh-study-ask,版本 0.1.0,許可證 MIT。Node 引擎要求:^22.19.0 || >=24.0.0。社區目錄頁:https://www.skillhub.cn/plugins/P1gG0dG0d/dsh-study-ask(獨立站點,與 DeepSeek / 幻方無官方從屬關係)。

安裝前建議閱讀倉庫源碼與許可證:客戶端插件在 當前 DSH 進程權限 下運行,與主程序同域交互會話與 Cookie。

典型用法

按 README 的可復現步驟:

  1. 打開一條用於學習的主對話,閱讀到需要追問的段落。
  2. 選中該段文字 → 點擊「提問」。
  3. 在右側「提問對話」輸入框中,在已有引文下方繼續輸入問題併發送。
  4. 需要換話題但仍留在同一主對話時,繼續在右側同一線程追問即可;不必爲每個小問題佔一條左欄會話。
  5. 若右側欄被關掉,點「❓ 提問對話」重新打開同一提問會話。

適用場景與已知限制

適合:長時間在主對話裏學一門主題、頻繁對局部段落追問,又希望左欄會話列表保持「一條主學習線」清晰的用戶。

限制(均來自 README):

  • 提問會話是真實 DSH 會話,僅被 CSS 隱藏;若 data-row-key 等 DOM 約定變化,插件需同步適配(作者已在 0.2.1-rc.3 實測)。
  • 工作區分組裏「展開其餘 N 個會話」的計數可能仍包含被隱藏的提問會話(隻影響數字,不顯示行)。
  • 不提供「把回答回填主對話」或「學習筆記導出」。
  • 與 dsh-sidebar-qa 同時啓用會出現兩個劃詞入口。

實現結構(便於排查問題)

倉庫主要文件:

dsh-study-ask/
├── package.json        # dsh.bundle.patch + dsh.client(platform: web)
├── cordis.patch.yml    # 插入 profile 的 bundle 棧
├── lib/index.js        # 宿主半區:空插件(服務 client 半區)
└── lib/client.js       # 瀏覽器半區:資源協議 / tab / 內嵌對話 / 選區浮層 / 隱藏列表

右側通過 dsh-resource://studyask/session/<id> 打開內嵌 conversation.content(variant: embedded),與官方 subagent 側欄同構;引文經 conversation.input.shell(questionId).actions.setDraft() 寫入。

結尾

dsh-study-ask 把學習場景下的劃詞追問從「左欄不斷長出新會話」改成「右側一條可複用的提問對話」,主對話上下文不被打斷。需要細節與更新時,以 GitHub 倉庫爲準:

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

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

小夜