前言¶
在 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 寫入草稿。 |
插件不新增面向模型的工具、不寫會話日誌、不改變已有消息記錄。
核心功能¶
- 回合結束後生成建議:僅在根會話
turn/end且原因completed時觸發(subagent 會話不處理)。Host 用ctx.llm.stream()做一次受限輸出,解析 JSON 數組;任意錯誤則走啓發式,不阻塞界面。 - 輸入框幽靈提示:僅當輸入框爲空、回合已結束、且不在 agent 運行中時顯示;用戶已開始輸入、發送、換會話或按 Esc 會隱藏。接受後與普通草稿相同,可編輯再 Enter 發送。
- HTTP 接口:路由前綴固定爲
/next-prompt。客戶端輪詢GET /next-prompt/suggest?session=<id>(Cache-Control: no-store);GET /next-prompt/config返回當前配置。完整建議列表在 API 中,UI 只展示最優一條。 - 可選純 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
典型用法¶
- 安裝並啓用 profile 後,正常與 agent 對話,等待一輪迴答完成。
- 若輸入框爲空,應看到與 placeholder 對齊的灰色建議文(overlay 對齊
[data-composer-placeholder]的字體與位置)。 - Tab(無修飾鍵、無 IME 組合、無打開菜單)或點擊幽靈文本 → 文本進入草稿,按需修改後發送。
- 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 安裝試用。