前言¶
在 DeepSeek Harness(DSH)裏寫 Composer 時,常見節奏是:助手剛改完代碼或跑完測試,下一句往往是「跑一下看看」「先修失敗用例」——這類短指令重複度高,但輸入框默認仍是通用提示。Codex 一類產品裏有過「下一條指令預測、Tab 採納」的交互;DSH 社區插件 dsh-predict(維護者 Dogtiti)把同類能力接到 Harness:根據當前會話上下文,用佔位文字給出一條建議,按 Tab 變成可編輯草稿,不會自動發送。
這是什麼¶
dsh-predict 是 DSH 標準 bundle(Host + Client),分類爲模型推理。它向當前會話正在使用的模型發起一次小請求,預測用戶可能輸入的下一條指令,並渲染在 Composer 輸入框的佔位區域;簡介原文爲:Codex-style next-instruction prediction for the DeepSeek Harness composer: a Tab-to-accept suggestion rendered as the input placeholder. 源碼與說明見 GitHub 倉庫,社區目錄頁:skillhub.cn/plugins/Dogtiti/dsh-predict(獨立社區索引,與 DeepSeek / 幻方無官方從屬關係)。
核心功能¶
佔位符裏的建議¶
會話空閒且輸入框爲空時,原生佔位提示可被替換爲模型生成的短句,例如:
- 發消息或創建任務, / 調用指令, @ 文件或對話
+ 跑一下測試
按 Tab 或點擊可將建議填入輸入框(光標在末尾),不會自動發送。README 中的對照示例包括:剛完成代碼修改時可能出現「跑一下看看效果」;測試報告有 3 個失敗用例時可能出現「先修掉這三個失敗用例」。
何時會請求、何時不顯示¶
建議僅在以下條件全部滿足時請求並顯示:
- 該會話已完成至少一輪對話
- 會話不在運行中
- 輸入框爲空、無待發送附件、無已認領的斜槓命令
- 非一次性子會話(只讀輸入框)
不接管的情況包括:輸入框非空(不請求、不顯示);會話運行中(不顯示);/ 或 @ 菜單彈出(不顯示)。
提示詞與「沒有就不顯示」¶
較新的行爲是:提示詞不再要求模型輸出 NONE 之類佔位詞——有具體任務就給一條,沒有就什麼都不輸出。插件會把少數模型把沉默寫成文字的情況(如 NONE、無、什麼都不輸出、空回覆)統一視爲無建議,輸入框保持原樣。
數據與開銷¶
讀取本會話日誌尾部(用戶與助手文本、工具名、工作目錄等),發送至會話自身配置的模型服務與憑據;每輪一次獨立小請求,默認輸出上限 200 tokens。結果不落盤,不寫入會話日誌。enabled: false 可關閉路由,客戶端不再請求。
安裝與啓用¶
插件以當前 DSH 進程權限運行;安裝前建議自行查看源碼與 MIT 許可證。兼容 DSH ^0.2.1-0(npm 包當前版本見倉庫 package.json,資料中爲 1.2.5)。
方式一:實驗性市場 bundle
在 DSH 中:設置 → 插件 → 啓用實驗性市場 bundle → Discover → 添加市場索引地址 → 安裝 dsh-predict。
市場索引地址:
https://raw.githubusercontent.com/Dogtiti/dsh-predict/main/market-index.json
方式二:npm
npm i dsh-predict
在 Plugins 頁用「添加」填寫包名 dsh-predict。
配置¶
在 bundle 的 insert 段可掛載 composer-predict,示例:
- insert:
- id: composer-predict
name: 'dsh-predict'
config:
model: deepseek-chat
maxSuggestionChars: 24
常用配置項(默認值以 README 爲準):
| 鍵 | 默認 | 說明 |
|---|---|---|
enabled |
true |
總開關;關閉後路由返回 503 |
provider / model |
'' |
指定模型;留空跟隨當前會話 |
maxContextMessages |
8 |
送入模型的消息條數(取尾部) |
maxMessageChars |
600 |
單條消息最大字符數(保留頭尾) |
maxSuggestionChars |
32 |
建議的目標長度 |
maxTokens |
200 |
輸出上限 |
timeoutMs |
20000 |
單次請求超時 |
cacheTtlMs |
60000 |
相同會話事件序號下的緩存時間 |
diagnostics |
false |
將客戶端判定寫入 .diagnostics.jsonl,用於排障 |
排障時可設 diagnostics: true,在包目錄下查看 .diagnostics.jsonl(如 found:false 表示會話未掛載,suggestion:null 且模型 raw 爲 NONE 等表示無法預測)。
典型用法¶
- 按上文任一方式安裝並啓用插件,保證會話至少有一輪完整對話且當前不在運行中。
- 清空 Composer 輸入框,等待佔位區域出現預測短句(若上下文不足以預測,則保持宿主默認佔位)。
- 按
Tab將建議變爲草稿,按需編輯後發送。
Client 在回合結束(running: true → false)時請求 Host 的 POST /api/composer.predict;宿主通過 [data-composer-placeholder] 重繪佔位內容,若自檢失敗(內容不含建議或字號過小)會回退並在控制台輸出 [composer-predict] 警告。
適用場景與注意¶
適合在 Harness 裏高頻做「改代碼 → 驗證 → 修失敗用例」等短指令鏈路的開發者。插件依賴宿主佔位元素 [data-composer-placeholder];缺失時走回退路徑,不影響輸入框本身。
注意:每次預測都會用當前會話的模型與憑據再調一次模型,有 token 與延遲開銷;敏感項目請評估是否開啓 diagnostics 及上下文截取範圍。同維護者的相關插件包括 dsh-input-history(歷史消息 ↑/↓)、dsh-subagent-bridge 等,可與本插件並列使用,互不替代。
結尾¶
dsh-predict 把「下一條用戶指令」做成 Composer 佔位建議,Tab 採納爲草稿,貼合 DSH「一切皆插件」的擴展方式。進一步瞭解請訪問 社區目錄頁 與 GitHub:Dogtiti/dsh-predict。