dsh-next-prompt:在輸入框裏用 Tab 採納「下一條消息」建議

前言

在 DeepSeek Harness(DSH)裏和智能體多輪對話時,常見情況是:模型剛答完,你還得自己想「下一句該問什麼」。有人靠複製上一條問題改幾個字,有人切到別的窗口查資料再回來——輸入框經常是空的,而思路還沒接上。

dsh-next-prompt 是社區插件,維護者爲 ihodorchenko,分類爲模型推理。它在每一輪迴答結束後,由 Host 側用一次短 LLM 請求(或失敗時的啓發式規則)生成 2–3 個「下一條用戶消息」候選,並在 Web GUI 的消息輸入框裏以灰色「幽靈文本」顯示最佳一條;按 Tab 或點擊即可寫入草稿,Esc 可隱藏。不會自動發送,也不會改寫會話歷史或往日誌裏塞內容。

下面介紹插件定位、安裝方式、配置與日常使用注意點。事實以 GitHub 倉庫 README 爲準;社區目錄頁見 skillhub.cn。DSH 生態強調「一切皆插件」,該目錄爲獨立社區站點,與 DeepSeek / 幻方無官方從屬關係。

這是什麼

dsh-next-prompt(npm 包名 dsh-next-prompt,當前資料中版本爲 0.1.0,許可證 MIT)由 Host 與瀏覽器兩半組成:

部分 位置 作用
index.js(Host) DSH Host 進程(Node) 監聽根會話的 turn/end,取最後一問一答,向模型請求若干條下一句建議;模型不可用時退回啓發式。通過 GET /next-prompt/suggest 提供給瀏覽器。
lib/client.js(Client) Web GUI 註冊到 conversation.input.overlay,顯示幽靈文本,處理 Tab / 點擊 / Esc,經 inputActions.setDraft 寫入草稿。

插件不新增面向模型的工具、不寫會話日誌、不改變已有消息記錄。

核心功能

  1. 回合結束後生成建議:僅在根會話 turn/end 且原因 completed 時觸發(subagent 會話不處理)。Host 用 ctx.llm.stream() 做一次受限輸出,解析 JSON 數組;任意錯誤則走啓發式,不阻塞界面。
  2. 輸入框幽靈提示:僅當輸入框爲空、回合已結束、且不在 agent 運行中時顯示;用戶已開始輸入、發送、換會話或按 Esc 會隱藏。接受後與普通草稿相同,可編輯再 Enter 發送。
  3. HTTP 接口:路由前綴固定爲 /next-prompt。客戶端輪詢 GET /next-prompt/suggest?session=<id>(Cache-Control: no-store);GET /next-prompt/config 返回當前配置。完整建議列表在 API 中,UI 只展示最優一條。
  4. 可選純 API:showGhost: false 時 Host 仍生成,但不畫 overlay。

安裝與啓用

推薦通過 Plugin Manager / CLI 安裝。資料中的命令如下,請勿自行改寫成未在文檔出現的 spec。

本地 link(開發或自託管目錄):

dsh plugin --profile desktop add link:/absolute/path/to/dsh-next-prompt

從 GitHub(與 Web GUI 裏按 git 地址安裝等價):

dsh plugin --profile desktop add git+https://github.com/ihodorchenko/dsh-next-prompt.git

也可在 Web GUI:Plugins → 使用 link:/absolute/path/to/dsh-next-prompt 或上述 git 地址。

link: 安裝會依賴包內 dsh.bundle.patch,把 dsh-next-prompt 寫入 dsh.profile.bundles;開啓 HMR 時改 Host/Client 源碼後 profile 可熱重載,但移動或刪除插件目錄會使安裝失效,需從新路徑重裝。

手動掛載時,在 ~/.dsh/profiles/<profile>/cordis.patch.yml 增加條目,並保證 profile 能解析到包(link: 依賴或 node_modules + bundles)。示例插入:

- insert:
    - id: next-prompt
      name: dsh-next-prompt

Git 安裝可通過 Plugin Manager 的 Update 或再次執行 dsh plugin add 更新。

配置

所有字段可選;在 cordis.patch.yml 的插件條目下寫 config: 即可。Host 要求 Node >= 20。

字段 默認 含義
enabled true false 時 Host 不生成、不返回建議。
maxSuggestions 3 向模型請求的條數;界面只顯示最好的一條。
showGhost true 是否在輸入框顯示幽靈文本。
language auto auto 跟隨對話;ru / en 強制語言。
model '' 空則沿用該會話最後一次請求的模型;否則指定 provider/model 或裸 model id。
minAnswerChars 40 助手回答短於該長度時不生成建議。

示例:

- insert:
    - id: next-prompt
      name: dsh-next-prompt
      config:
        language: ru
        maxSuggestions: 3
        model: deepseek-account/deepseek-flash

典型用法

  1. 安裝並啓用 profile 後,正常與 agent 對話,等待一輪迴答完成。
  2. 若輸入框爲空,應看到與 placeholder 對齊的灰色建議文(overlay 對齊 [data-composer-placeholder] 的字體與位置)。
  3. Tab(無修飾鍵、無 IME 組合、無打開菜單)或點擊幽靈文本 → 文本進入草稿,按需修改後發送。
  4. Esc 或繼續打字 → 隱藏建議,不影響已輸入內容。

診斷時可確認 Host 路由是否存活:

curl 'http://127.0.0.1:<port>/next-prompt/config'

客戶端是否加載可在 SSE GET /plugins/events 的 entries 中查找 dsh-next-prompt。

適用場景與注意

適合:長對話、探索式提問、希望減少「空白輸入框發呆」時間的 DSH Web GUI 用戶;需要 Host 能調用 LLM(或接受啓發式 fallback)的環境。

限制(README 已說明):

  • 幽靈層是 overlay,不是 Lexical 編輯器內容:未接受前不進 undo、不算草稿。
  • 應用重啓後不保留建議緩存,需等新的一輪迴答後再出現。
  • 依賴標準 composer DOM;主題或其它插件改掉輸入區結構時,可能靜默不顯示。
  • 僅展示第一個建議;其餘通過 /next-prompt/suggest 獲取。

安全與信任:插件在 DSH Host 進程權限下運行,會向配置的模型發送最近一問一答以生成建議。安裝前請閱讀 源碼與 MIT 許可證,確認符合你的數據與密鑰策略。

開發側自測(無需 npm install,Node 20+):

node test/run.mjs

結尾

dsh-next-prompt 把「下一句問什麼」做成可選的一鍵草稿:Host 生成、瀏覽器展示、Tab 採納,且不自動改對話。若你在用 DSH desktop profile 做模型推理相關的工作流,可以從目錄頁或 GitHub 安裝試用。

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

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

小夜