前言¶
在 DeepSeek Harness(DSH)的 Web 端聊天時,助手回覆後往往需要接一句上下文相關的續寫。手動打字既費時又容易偏離語境。dsh-next-suggestion 插件在每輪助手回覆結束後,在輸入框上方給出 1–3 條候選句子,點選或用快捷鍵即可填入,不改變已有輸入內容。
是什麼¶
- 名稱:
dsh-next-suggestion - 維護者:xiaoxiaomoyu
- 分類:客戶端
- 簡介:DSH Web 輸入框「下一句」預測:每輪迴復後給候選,點擊 / Tab / → 填入。
核心功能¶
- 每輪助手回覆結束後觸發;切換到空閒會話時也會補一次。
- 只讀當前會話的最近 12 條消息 + 會話開頭那條任務描述。
- 給 1–3 條完整句子,按可能性排序,語言與對話一致。
- 接受方式:點擊某一行、Tab、→;Esc 收起卡片。
- 可收起爲「只留最可能的一條」,也可關閉這一輪卡片。
- ↻ 換一批(提高溫度重問一次)。
- 連續五次忽略後自動降頻,改爲每三輪試一次。
- 失敗靜默:模型慢或掛了,只不顯示卡片,不彈錯。
安裝與啓用¶
需在 Web UI profile 下運行。從源碼安裝:
git clone https://github.com/xiaoxiaomoyu/dsh-next-suggestion.git
dsh plugin --profile web add "link:/絕對路徑/dsh-next-suggestion"
安裝後重啓 Host,再刷新頁面。卸載:
dsh plugin --profile web remove dsh-next-suggestion
若 dsh.profile.bundles 裏殘留條目,手動刪除後重啓。
使用¶
助手回完一輪後,輸入框上方出現候選卡片:
- 點某一行:整句填入輸入框,光標在末尾,不自動發送。
- Tab / →:僅在輸入框爲空且聚焦時,接受第一條。→ 僅在空輸入框生效。
- Esc:收起卡片。
- ▾ / ▸:收起爲最可能的一條,或重新展開;狀態按會話記在 localStorage。
- ↻:換一批,提高溫度重問一次,多一次調用。
- ×:關閉這一輪;切會話、刷新頁面後不再出現,直到下一輪開始。
只有輸入框爲空、沒有附件、沒有排隊消息、會話不在跑時纔會出現。
設置¶
輸入框工具欄右側、發送按鈕旁有一個滑桿圖標,點開即爲設置。設置保存在本機瀏覽器,改完立即生效,無需重啓。
- 啓用開關、候選條數(1–3)、顯示方式(卡片 / 內聯 ghost)
- 接受方式:Tab、→、Esc 各自開關
- 觸發時機:每輪 / 僅當助手最後一句是問句
- 默認收起、是否顯示條數角標
- 降頻:連續忽略幾次後改爲每幾輪出現一次
- 本會話不再提示
- 高級:provider、model、上下文條數、每條字符數、超時、最大輸出 token
- 底部「恢復默認」:快捷鍵、行爲、高級參數一起回到初始值
內聯 ghost:候選以灰色文字出現在輸入框裏,只顯示第一條,末尾帶 Tab 提示。點擊、Tab、→ 均可接受,Esc 關閉;ghost 出現時會暫時隱藏 placeholder,避免文字重疊。卡片模式行爲不變。
配置文件(可選)¶
設置面板是本機偏好;profile 配置是默認值和服務端開關,兩邊都會生效:
- id: dsh-next-suggestion
name: dsh-next-suggestion
config:
enabled: true # 總開關
count: 3 # 候選條數,1–3
provider: deepseek-official
model: deepseek-flash
maxMessages: 12 # 取多少條對話
messageChars: 1200 # 每條截斷長度
timeoutMs: 15000
maxOutputTokens: 4000 # 只是封頂,寫完就停
debug: false # 寫 $DSH_HOME/dsh-next-suggestion/debug.log
保存即熱生效,無需重啓。
實現方式¶
- 瀏覽器端:註冊
conversation.input.dock(order: 10),監聽session.running,回合結束後等 250ms 再請求 Host。結果按會話在內存裏緩存兩分鐘。開始打字、發送、切會話都會取消請求並清掉卡片。 - Host 端:三條只監聽迴環地址的路由:
GET /plugins/dsh-next-suggestion/config:返回{ enabled, count, debug }POST /plugins/dsh-next-suggestion/predict:body{ sessionId }→{ items: string[] }POST /plugins/dsh-next-suggestion/debug:瀏覽器端診斷打點,僅debug: true時註冊predict用session.deriveMessages()取最近 12 條 user/assistant 文本,助手消息保留開頭 350 字和結尾 1200 字,最前面附上會話第一條用戶消息,然後讓模型輸出 JSON 數組。解析容忍代碼圍欄、被截斷的數組、按行列表;復讀用戶最近消息的候選會被丟棄,也不會把["..."]這種序列化殘渣顯示出來。
隱私與成本¶
- 只讀當前會話的文本,不碰附件、文件、其他會話和工作區內容。
- 這段對話會發給 provider/model 指定的服務,走你聊天用的同一個賬號和額度。
- 路由註冊在
/api鑑權之外,所以自己校驗 Origin,非迴環一律拒絕。 - 每次預測是一次小請求。調試日誌默認關閉,且只記事件名和條數,不記對話內容。
已知限制¶
- 只有 Web 端,沒有 TUI / Desktop 版本。
- Tab 接受有範圍:只在卡片可見、輸入框聚焦時由捕獲階段攔截;其他時候 Tab 仍是焦點切換,沒有全局快捷鍵。
- 預測的是整句;已打了一半的字不會被補全,輸入框非空時也不出卡片。
- 內聯 ghost 只顯示第一條,不支持下方向鍵在候選間切換;它出現時會暫時隱藏 placeholder,依賴 DSH 的 data-composer-placeholder 屬性。
- 每輪一次模型調用;打開沒有緩存的空閒會話再補一次;每次點 ↻ 再加一次。
- 界面文案按 navigator.language 在中英文之間切換,沒有接完整的 DSH locale 服務。
適用場景¶
- 使用 DSH Web 端、已配置模型 provider(默認 deepseek-official/deepseek-flash)。
- 需要在每輪對話後快速接續上下文相關的句子。
- 需要避免重複打字,同時保留手動編輯的靈活性。
小結¶
dsh-next-suggestion 在 DSH Web 輸入框提供每輪迴復後的下一句候選,支持點擊、Tab、→ 接受,收起、換一批、關閉等操作。配置項包括候選條數、觸發時機、降頻策略、高級參數等,可熱生效。插件本身無運行時依賴,測試覆蓋了正常預測、非法 Origin、關閉開關、復讀過濾等場景。適合需要減少重複輸入、提升對話連貫性的 DSH Web 用戶。
- 目錄頁:https://www.skillhub.cn/plugins/xiaoxiaomoyu/dsh-next-suggestion
- GitHub:https://github.com/xiaoxiaomoyu/dsh-next-suggestion