dsh-composer-suggest:爲 DSH Web UI 提供下一條消息與 Tab 續寫建議

前言

在 DeepSeek Harness 裏和智能體多輪對話時,輸入框往往要等你想好下一句再打字;半寫一句又卡住時,也常要自己在上下文中找線索。市面上一些瀏覽器或 IDE 的「幽靈文本」補全並不瞭解當前 Session 的對話結構,也容易在你不想觸發時搶焦點。

dsh-composer-suggest 是面向 Harness Web UI 的客戶端插件,在 Agent 回覆後的空輸入框裏給出「下一條消息」幽靈建議,或在已有草稿末尾按 Tab 觸發「續寫」——且明確區分兩種模式、用設置開關控制,並儘量不打斷 Tab 在其它場景下的默認行爲。下面按安裝、用法和配置說明如何接入。

插件定位

插件在編輯區提供兩類 Composer 建議,回答來自當前 Session 所用模型(或你在設置裏指定的模型),每次建議對應一次模型調用,會消耗 token;不會寫入 Session 日誌,也不會出現在 token 計量器上。

核心功能

下一條消息(Next message)

Agent 回覆結束後,若輸入框爲空,插件會顯示你最可能發送的下一條消息的幽靈文本。

  • Tab:把建議接受爲可編輯草稿(不會直接發送)
  • Alt+Down / Alt+Up:在最多三個候選之間切換
  • Esc:撤回當前建議
  • 一旦開始輸入,建議會被丟棄

草稿續寫(Draft continuation)

輸入框裏已有文字且光標在末尾時,按 Tab 開始續寫;界面會顯示 “Continuing…” 和加載狀態,模型會結合上方對話與你的草稿生成續寫。再按 Tab 接受結果,或 Esc 取消。

在未按 Tab 之前不會發起請求。空輸入框、光標在草稿中間、輸入 / 命令或 @ 引用時,Tab 仍保持 Harness 原有行爲,不會誤觸續寫。

粘貼圖片與續寫

輸入框附帶的圖片算作草稿內容:即使沒打字,也可以在圖片場景下用 Tab 續寫「你可能會發的說明」。最多附帶三張圖,取自輸入框縮略圖,發送前會縮小到 1024px。若模型不支持視覺,狀態行會提示圖片未被識別,續寫會退化爲純文本;若既無文字又無可用視覺能力,界面會明確說明,而不是瞎猜。

幽靈文本佈局

過長建議會在當前列換行顯示,並臨時給帶 data-input-scroll 的滾動區域增加底部邊距,把下方工具欄擠開。若 Harness 更新改了該選擇器,建議仍可能顯示,但有可能暫時蓋住工具欄,需在 client.js 裏更新選擇器。

設置與狀態

Settings → General 中爲兩種模式各有一個開關;另有狀態行顯示最近一次應答的路由、耗時或失敗原因。

安裝與啓用

插件尚未發佈到 npm(npm view dsh-composer-suggest 爲 404)。README 給出的安裝方式是從倉庫檢出後按路徑加入 profile:

git clone https://github.com/WuweiRE/dsh-composer-suggest.git
dsh plugin --profile <name> add ./dsh-composer-suggest

首次發佈到 registry 後,預期一行安裝爲(README 預留說明):

dsh plugin --profile <name> add dsh-composer-suggest

安裝後重啓 Harness,並刷新 Web 頁面。開發與測試針對 DeepSeek Harness 0.2.2-rc.1。宿主需提供 conversation.input.overlay、settings.general.item、connection.admit()、ctx.llm、session.deriveMessages();圖片續寫 additionally 依賴 attachments 服務(saveImages)及輸入框內 Host 渲染的 blob: 縮略圖。缺少圖片能力時,純文本續寫仍可用。

模型與配置

默認:建議使用 當前 Session 已選模型,並以該模型 advertised 的最低 reasoning effort 回答,不設 temperature。

在 Settings → General → Model for suggestions 填入模型 id(例如 claude-sonnet-5-5)後按 Enter,可改爲專用模型;留空則繼續跟隨 Session。該值保存在當前瀏覽器;其下方的狀態行會彙報最近路由或失敗原因。

若要爲所有瀏覽器統一默認,可在 profile 的 cordis.patch.yml 中覆蓋插件配置。設置頁裏手填的模型優先於文件默認值:

- id: composer-suggest
  name: dsh-composer-suggest
  config:
    model: claude-sonnet-5-5

未寫 provider 時,會在 profile 已掛載的 provider 中查找模型,並優先嚐試 Session 的 provider;沒有任何 provider 提供該模型時會失敗並報 model-unavailable,不會靜默換模型。要固定路由需同時設置 provider 與 model,完整選項見倉庫內 cordis.patch.yml。

典型用法

  1. 安裝並重啓、刷新頁面後,在 Settings → General 打開你需要的模式開關(下一條消息 / 續寫)。
  2. 下一條消息:等 Agent 回覆完,看空輸入框是否出現灰色建議;滿意則 Tab 收成可編輯草稿,不滿意用 Alt+Down / Alt+Up 換候選或 Esc 關掉。
  3. 續寫:在輸入框寫好半句並把光標放在末尾,按 Tab 等待 “Continuing…”;確認後再 Tab 接受,或 Esc 取消。
  4. 帶圖續寫:在輸入框掛上圖片(可零文字),光標在末尾時按 Tab;注意狀態行對「模型是否看見圖」的提示。

適用場景與注意

適合:長期在 DSH Web UI 裏做多輪 Agent 對話、希望減少「下一句寫什麼」和「半句寫不下去」的停頓,且能接受每次建議單獨耗 token 的開發者。

源碼與權限:客戶端插件隨你當前的 Harness profile 與進程權限加載;安裝前建議閱讀倉庫源碼、LICENSE 與 THIRD_PARTY_NOTICES.md(本插件整合了 Stijnus 的 dsh-composer-predictions 與 Amir Bazylkhanov 的 dsh-composer-prediction 部分思路與代碼,均爲 MIT)。插件與 DeepSeek 及上述原作者無隸屬關係。

生態:DSH 主張「一切皆插件」;SkillHub 目錄 爲社區站點,並非 DeepSeek / 幻方官方應用商店。

本地跑插件自帶測試:

node --test

結尾

dsh-composer-suggest 把「回覆後的下一條消息」和「Tab 觸發的草稿續寫」做成兩種可開關的 Composer 能力,並保留明確的接受、輪換與取消交互。需要細節與更新時,以 GitHub README 與 SkillHub 目錄頁 爲準。

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

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

小夜