dsh-next-suggestion:DSH Web 輸入框的下一句預測

前言

在 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
羽毛球分组比赛记分
小程序二维码

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

小夜