前言¶
在 DeepSeek Harness 裏讀長回答時,經常要對其中一段繼續問。常見做法是複製、貼進輸入框,再手工加 > 做成 Markdown 引用。引文和問題擠在同一輸入區,草稿一亂就不容易分清自己要發什麼。DSH 生態裏也有把選區引回對話的插件,路線各不相同:有的在輸入框裏嵌引用節點,有的依賴宿主尚未普遍提供的 draftContexts 服務。dsh-selection-followup(維護者 wanruxi,客戶端類插件)走另一條路——引用顯示在輸入框上方的獨立卡片,輸入框裏只留你的問題;發送時再按引用塊拼到消息末尾。下面介紹它做什麼、怎麼裝、怎麼用,以及和宿主耦合時要注意什麼。
這是什麼¶
插件全稱 dsh-selection-followup,英文名對應 README 裏的「選中追問」。在 Harness 對話頁面選中一段文字後,旁邊會浮出「追問」按鈕;點一下,選中文本變成輸入框上方的一張引用卡片,你在輸入框裏只寫後續問題即可。發送時卡片內容會以 Markdown > 引用塊追加在問題之後,模型收到的是完整原文,不是被截斷的預覽。
當前版本在 package.json 中爲 0.4.2,許可證 MIT。GitHub 星標爲 0(以目錄信息爲準)。僅支持 dsh.client.platform 爲 web 的瀏覽器半邊;宿主引擎聲明下限爲 >=0.2.0-rc.2 || >=0.2.1-rc.2。
它解決什麼問題¶
長回答裏「只追問某一段」時,複製—粘貼—排版引用會打斷閱讀節奏,且輸入框容易被引文佔滿。本插件把引用挪到輸入框外面:選好、點一下,卡片貼在輸入框上方,你只管寫問題。和「chip 引用卡片」相比,後者引文仍混在輸入框裏;和依賴 draftContexts 的「輸入框外註釋」相比,實測宿主版本里往往沒有該服務。本插件通過修補會話輸入殼的發送鏈路,換取輸入框乾淨、引用照樣送達,代價是對宿主內部函數名的依賴(見後文「發送與兼容性」)。
核心功能與行爲¶
選區與按鈕¶
- 只在非空選區出現;輸入框內部、以及按鈕自身選區會跳過,在輸入框裏打字不會誤觸發。
- 鼠標鬆開處右下方彈出按鈕;鍵盤選區(如
Shift+方向鍵)則落在選區上方。靠近窗口邊緣會翻到另一側,中英文「追問 / Ask」寬度不同也不會被裁切。 - 選區滾出可視範圍後按鈕不再出現,避免引用已經看不見的文字。
Ctrl+Shift+Q可無鼠標引用當前選區(各平臺均用 Ctrl;macOS 上Cmd+Shift+Q是系統註銷,插件不採用)。Esc收起按鈕。點擊按鈕前會preventDefault住mousedown,避免焦點跑掉導致選區提前消失。
引用卡片¶
- 點按鈕後選區變成卡片,貼在輸入框上方;卡片有
×可刪,可掛多條,按添加順序排列。 - 卡片左右邊緣與下方輸入框卡片對齊,使用宿主 CSS 變量
--dsh-composer-side-clearance與--dsh-composer-card-max-width,分欄、側欄、窄面板下仍對齊。 - 預覽只顯示第一行前 80 個字符,懸停可見全文;發給模型的是完整引用。超過 8000 字符會截斷並加省略號,懸停會說明。
- 引用前會規整選區:統一換行、去行尾空格、合併多餘空行。
- 引用成功後按鈕處短暫顯示「已引用」約 0.9 秒,且不擋下一次點擊。
- 卡片按會話分開存,別的側邊會話選中的文字不會進當前會話;數據在
sessionStorage,刷新頁面不丟。
發送與恢復¶
- 發送時,各條引用按添加順序以
> …塊追加在問題之後,塊之間空一行。輸入框必須有問題才能發送;空草稿的 Enter 會被宿主忽略,卡片保留。 - 發送失敗(網絡、被拒)時卡片退回,不會憑空消失。
- 宿主若無「輸入框外額外上下文」的公開通道,插件在發送前修補
SessionInputShell的三個銜接點:sinkSerialized(提交開始取走卡片)、deps.defaultSink(序列化後把引用拼到消息末尾)、settleDetachedFailure(失敗時放回卡片)。三者須一併補丁,否則可能重複發送或失敗後丟引用;組件卸載時可逆還原。
安裝與啓用¶
在要啓用它的 Harness profile 裏執行(命令來自倉庫 README):
dsh plugin --profile <profile> add dsh-selection-followup
也可將倉庫目錄作爲 bundle 裝進插件管理器。瀏覽器半邊安裝後立即生效,刷新頁面即可,無需重啓 DSH 進程。
安裝前應自行查看 GitHub 倉庫 源碼與 MIT 許可證。插件在瀏覽器中與當前 Harness 會話同權限運行,與安裝任何 DSH 插件一樣,需確認來源可信。
典型用法¶
- 在 Web 版 Harness 打開一段對話,用鼠標或鍵盤選中要追問的段落。
- 在選區旁點「追問」,或按
Ctrl+Shift+Q。 - 在輸入框上方確認引用卡片(可掛多條、可點
×刪除)。 - 在輸入框只輸入你的問題,發送。模型收到的消息末尾會帶上對應引用塊。
不需在輸入框裏手工寫 >;也不需在卡片預覽裏看到全文才能發送——懸停可看全文,發出的是完整內容。
適用場景與注意¶
適合誰: 經常在長回答裏「指着某一段繼續問」的 DSH / 智能體開發者與普通用戶;希望輸入框裏只有問題、引用視覺上獨立的場景。
平臺: 僅 Web 客戶端;依賴 conversation.input.overlay、conversation.input.dock 槽位及 conversation 服務的輸入殼。conversation 通過 ctx.get('conversation') 獲取,未寫入 inject,以免在缺該服務的宿主上整插件加載失敗。
兼容性風險: 若宿主改名 sinkSerialized / deps.defaultSink 等,卡片仍可添加刪除,但不會自動追加到消息;控制台會出現 [selection-followup] could not hook this compose box 警告。這是有意「保持沉默」而非破壞發送鏈路。
與相近插件: README 用表格對比了本插件、chip 引用卡片、輸入框外註釋三條路線(放置位置、輸入框內容、發出方式、宿主依賴)。選型時若更看重官方 inputTriggers 且接受引文在輸入框內,可看 chip 路線;若要堅持輸入框僅問題且當前宿主無 draftContexts,本插件是實測可選方案之一。
生態說明: DeepSeek Harness 的理念是「一切皆插件」;SkillHub 目錄頁 爲社區站點,與 DeepSeek / 幻方無官方從屬關係。
開發者本地可跑離線測試(不必開瀏覽器):
npm test # node --test test/helpers.test.mjs
npm run check # 語法檢查 lib/client.js 與 lib/index.js
界面效果仍需人工在瀏覽器裏看一眼。
結尾¶
dsh-selection-followup 把「選中—引用—追問」收成:選區旁一鍵,引用卡片在輸入框上,問題在框內,發送時引用進消息。安裝用 profile 下的 dsh plugin add dsh-selection-followup,留意宿主版本與發送鉤子的兼容性即可。
- 目錄頁:https://www.skillhub.cn/plugins/wanruxi/dsh-selection-followup
- GitHub:https://github.com/wanruxi/dsh-selection-followup