前言¶
DeepSeek Harness(DSH)的 Composer 是對話式智能體的核心交互組件,開發者常需要在輪次之間快速給出下一句指令。手動輸入容易遺漏上下文、重複命令或拼寫錯誤。一個自然的補全方向是讓當前會話的模型根據歷史對話生成“下一條用戶指令”,並直接在輸入框佔位中呈現,按 Tab 採納。
dsh-plugin-composer-predict 插供了 Codex 風格的 next-instruction 預測:當會話空閒且輸入框爲空時,插件將原生提示文字替換爲一條由當前模型生成的建議,按 Tab 或點擊即可填入輸入框成爲可編輯草稿,不會自動發送。
是什麼¶
dsh-plugin-composer-predict 是一個基於 DSH bundle 的插件,負責在 Composer 中預測下一條用戶指令並渲染爲佔位文字。它讀取當前會話尾部消息(用戶與助手文本、工具名、工作目錄),發送給當前會話配置的模型服務,將返回的建議直接寫入宿主佔位元素 [data-composer-placeholder],並通過 CSS 重繪實現可見效果。
插件由 Dogtiti 維護,分類爲模型推理,開源協議爲 MIT。
核心功能¶
- 上下文感知建議:基於當前會話歷史生成建議,示例包括“跑一下測試”“跑一下看看效果”“先修掉這三個失敗用例”。
- Tab 採納:建議填入輸入框後光標位於末尾,需手動發送,不自動觸發對話。
- 門禁條件:僅在以下條件全部滿足時請求並顯示建議:
- 會話已完成至少一輪對話;
- 會話不在運行中;
- 輸入框爲空、無待發送附件、無已認領的斜槓命令;
- 非一次性子會話(只讀輸入框)。
- 不接管場景:輸入框非空、會話運行中、
/或@菜單彈出時,不請求也不顯示建議。 - 配置開關與超時:
enabled: true爲總開關,關閉後路由返回 503;單次請求超時爲timeoutMs: 20000。
安裝與啓用¶
市場索引¶
- 在 DSH 中進入 設置 → 插件。
- 啓用實驗性市場 bundle。
- 點擊 Discover,添加市場索引地址:
https://raw.githubusercontent.com/Dogtiti/dsh-plugin-composer-predict/main/market-index.json
- 在插件列表中搜索並安裝
dsh-plugin-composer-predict。
npm¶
npm i dsh-plugin-composer-predict
在 DSH 的 Plugins 頁點擊“添加”,填寫包名 dsh-plugin-composer-predict。
本地目錄¶
git clone https://github.com/Dogtiti/dsh-plugin-composer-predict
Plugins → 添加 → 選擇該目錄。
典型用法¶
安裝後,插件會自動在 Composer 中生效。當會話完成一輪對話且輸入框爲空時,原生提示會被建議替換:
發消息或創建任務, / 調用指令, @ 文件或對話
變爲:
跑一下測試
此時按 Tab 或點擊建議區域,建議文字會填入輸入框,光標位於末尾,可繼續編輯或直接發送。
配置項¶
插件通過配置文件插入,示例:
- insert:
- id: composer-predict
name: 'dsh-plugin-composer-predict'
config:
model: deepseek-chat
maxSuggestionChars: 24
主要配置項:
| 鍵 | 默認 | 說明 |
|---|---|---|
enabled |
true |
總開關;關閉後路由返回 503,客戶端不再請求 |
provider / model |
'' |
指定模型;留空跟隨當前會話 |
maxContextMessages |
8 |
送入模型的消息條數(取尾部) |
maxMessageChars |
600 |
單條消息最大字符數(保留頭尾) |
maxSuggestionChars |
32 |
建議的目標長度 |
maxTokens |
200 |
輸出上限 |
timeoutMs |
20000 |
單次請求超時 |
cacheTtlMs |
60000 |
相同會話事件序號下的緩存時間 |
diagnostics |
false |
將客戶端判定寫入 .diagnostics.jsonl,用於排障 |
實現方式¶
插件爲標準的 DSH bundle,包含 Host 與 Client 兩部分:
- Host:監聽
POST /api/composer.predict,通過sessions.get(id)獲取會話信息,調用session.deriveMessages()提取尾部消息,使用當前會話的 provider/model 發送請求,按 seq 緩存 60 秒。 - Client:在對話回合結束時(
running: true→false)請求建議,重繪[data-composer-placeholder],通過 CSS 將內容設爲透明,再用::after渲染建議,字號使用font: inherit避免變量解析失敗導致的字號退化爲 0。
掛載後,Client 會自檢:若建議內容缺失或字號小於 8px,則回退爲輸入框下方一行,並在控制台輸出 [composer-predict] 警告。
數據與開銷¶
- 讀取本會話日誌尾部(用戶與助手文本、工具名、工作目錄),發送至會話自身配置的模型服務與憑據。
- 每輪一次獨立小請求,默認上限 200 tokens;
enabled: false可關閉。 - 結果不落盤,不寫入會話日誌。
開發與測試¶
項目包含 14 項測試,覆蓋提示詞拼裝、模型路由回退、輸出清洗、緩存失效、開關、CSS 轉義、門禁條件、兜底渲染等場景。運行測試:
node --test "test/*.test.mjs"
test/render-proof/ 目錄提供無頭 Chrome 渲染與截圖,用於覈對 CSS 重繪結果,包括字號變量非法的邊界環境。
兼容性¶
- DSH 版本要求
^0.2.1-0(engines.dsh)。 - 依賴宿主佔位元素的
[data-composer-placeholder]標記;缺失時走回退路徑,不影響輸入框本身。
生態背景¶
DSH 的理念是“一切皆插件”,社區目錄是獨立站點,與 DeepSeek / 幻方無官方從屬關係。本插件遵循這一生態規範,由社區開發者維護。
適用場景與注意¶
- 適合需要在對話輪次間快速給出指令的智能體開發者。
- 插件以當前 DSH 進程權限運行,安裝前應檢查源碼與許可證。
- 若會話處於運行中或輸入框已有內容,建議不會出現,避免干擾正常輸入。
總結¶
dsh-plugin-composer-predict 通過 Codex 風格的 next-instruction 預測,將建議直接呈現在 Composer 輸入框佔位中,按 Tab 採納爲可編輯草稿,減少手動輸入的遺漏與重複。安裝與配置簡單,依賴 DSH ^0.2.1-0,適合需要在對話流中增強指令補全能力的開發者。
鏈接¶
- 插件目錄頁:https://www.skillhub.cn/plugins/Dogtiti/dsh-plugin-composer-predict
- GitHub 倉庫:https://github.com/Dogtiti/dsh-plugin-composer-predict