前言¶
在 DeepSeek Harness(dsh)的對話框裏隨手輸入一句粗糙的需求,模型經常因爲上下文不完整、指代不明而給出半生不熟的結果。常見的做法是人工反覆打磨提示詞,或者依賴外部工具(WorkBuddy、ChatGPT 的提示詞增強等)。dsh-prompt-enhancer 插件在消息真正發給模型之前,先調用一次輕量改寫,把粗糙輸入變成清晰、具體、自包含的提示詞,體驗對標 WorkBuddy / ChatGPT 的「提示詞增強」。
插件定位¶
dsh-prompt-enhancer 是一個對話框提示詞自動增強插件,由維護者 saul-dsh 開發,目前有 1 個 GitHub Star。它不改變模型能力,只是在發送前對輸入做一次改寫,讓模型更容易給出高質量回復。
核心功能¶
增強強度¶
三檔強度,分別作用於不同場景:
| 檔位 | 做什麼 | 長度變化 | 適用場景 |
|---|---|---|---|
| Low | 只修歧義、指代、冗餘、斷句,不動結構 | ≤1.4 倍 | 隨手寫的一句話,只想讓它通順明確 |
| High | 補全目標、約束、輸出形式,保留原意 | 1.3~2.2 倍 | 默認檔,日常使用 |
| Max | 第一性原理拆解,補隱含假設並逐條標註 (assumption: ...),把缺失信息寫成條件要求 |
2~3.5 倍 | 複雜任務,寧可囉嗦也要一次說清 |
Max 檔如果失控(超過該檔上限 1.6 倍)直接判失敗回退原文,不會把一句話膨脹成小作文。
效果示例¶
| 原始輸入 | High 檔增強後 |
|---|---|
| 幫我寫個爬蟲 | 編寫一個 Python 爬蟲腳本:抓取指定網址列表中每個頁面的標題和正文,按天保存爲 CSV(列:url、title、content、date)。要求:請求間隔 ≥1 秒、失敗自動重試 3 次、超時 10 秒,代碼含中文註釋並附使用說明。 |
| 這個 bug 修一下 | 定位並修復當前倉庫中的構建失敗:先運行 pnpm run build 復現報錯,給出根因分析(引用具體文件與行號),完成最小修復後重新運行構建驗證通過,並總結改動點。 |
| 做個網站 | 用單個 HTML 文件製作一個「個人書籤導航頁」:頂部搜索過濾,卡片式分組展示書籤(名稱、URL、備註),支持增刪改(localStorage 持久化),淺色主題、移動端適配,無外部依賴。 |
同一句「做個網站」在 Low 檔只會補成「用單個 HTML 文件做一個個人書籤導航頁,支持搜索過濾和增刪改」,在 Max 檔會拆成目標 / 數據 / 交互 / 驗收四段並標註「(assumption: 純前端,無後端)」。
安裝與啓用¶
方式一:從 GitHub 安裝¶
dsh plugin --profile web add https://github.com/saul-dsh/dsh-prompt-enhancer
安裝後,啓動日誌出現 [dsh-prompt-enhancer] loaded (mode=auto, ...) 即成功。
方式二:本地路徑安裝(開發/試用)¶
dsh plugin --profile web add /path/to/dsh-prompt-enhancer
dsh --profile web --dump-config # 確認插件樹裏出現 prompt-enhancer
dsh --profile web
配置示例¶
在 profile 配置(或 market 安裝後的插件設置)裏對 prompt-enhancer 行寫 config:
- override:
id: prompt-enhancer
config:
enabled: true
mode: auto # auto=發送前自動增強;manual=只註冊工具不自動改寫
level: high # 默認強度 low/high/max;前端滑塊會覆蓋它。off=整條鏈路不增強
preStepAuto: false # 服務端兜底增強,默認關;開了會在你看不到的地方改消息
# provider: deepseek-official # 留空=跟隨當前會話的模型路由
# model: deepseek-flash # 建議配一個快模型,降低每次發送的延遲
timeoutMs: 20000 # 單次增強超時,超時後原樣發送
minPromptLength: 4 # 「繼續」「ok」這類超短輸入不增強
maxInputChars: 4000 # 長輸入視爲已是完整提示詞,不再增強
language: auto # auto=跟隨輸入語言;可強制 zh / en
styleHint: "" # 追加自定義風格要求,例如"偏工程口吻,給出驗收標準"
界面與操作¶
輸入框左側一個 ✨ 按鈕,鼠標停約 1.5 秒,向上彈出一個小面板:
- ✨ 按鈕:點一下手動增強當前草稿,改完寫回輸入框不發送。增強成功後按鈕變成紅色的撤銷圖標,點一下恢復原文。
- 懸浮面板:強度滑塊(Low / High / Max)和「發送時自動增強」開關。自動增強默認關閉,裝好後先手動點 ✨ 試效果,覺得合適再打開。
- 發送時自動增強:打開後點發送按鈕或按 Enter,發送按鈕先變成三點旋轉,增強結果寫回輸入框停留約 0.7 秒,然後才自動 submit。失敗就按原文發,不會把你卡在輸入框裏。
- 不攔截的情況:空草稿(純附件發送)、斜槓命令、Shift/Ctrl/Alt+Enter、輸入法組合中的回車。
工作原理¶
- 發送攔截(主路徑):客戶端在捕獲階段監聽發送按鈕的 click 和輸入框的 Enter。命中後阻止事件到達 dsh 自己的事件根,先請求改寫,把結果
setDraft回輸入框,再調用inputActions.submit()。發送按鈕期間顯示三點旋轉。 - pre-step 兜底(副路徑):掛載
agent/pre-step瀑布流(dsh 的權威消息准入接縫),前端沒攔到時把批次內的純文本用戶消息重寫後放行。前端剛增強過的文本按指紋去重,同一句話不會被改兩遍。 - 跳過規則:斜槓命令(
/plan等)不改寫;含文件/圖片附件的消息不改寫;過短、過長輸入不改寫;非聊天框來源的內部 user 消息(goal 輪次、會話引用、notice 等)不改寫。 - fail-open:增強失敗 / 超時 / 無可用路由 / 模型輸出失控時,原始消息原樣放行,絕不阻塞對話。
- 輸入框增強按鈕:web 端在
conversation.input.left註冊 Sparkle 圖標,強度面板掛在同一個按鈕的懸浮上。CLI / TUI 等沒有 web 客戶端的宿主不加載這部分,只保留 pre-step 兜底。 - 同時註冊
enhance_prompt工具:模型自己也能調用(例如在重跑一個模糊需求前先改寫它)。
兼容性¶
| 項目 | 要求 |
|---|---|
| dsh | ≥ 0.2.0(developer preview) |
| Node | ≥ 18 |
| 客戶端 | web(桌面端與瀏覽器)。CLI / TUI 只保留 pre-step 部分,沒有按鈕 |
| 運行時依賴 | 無。只使用 dsh 自帶的 @deepseek-ai/* peer 依賴 |
dsh 處於 developer preview,插件 API 會變。升級 dsh 後如果失效,先查兩處:agent/pre-step 的簽名,[data-composer-dock] 的結構。
適用場景與注意¶
適合需要提高對話框輸入質量的場景:日常對話、需求拆解、複雜任務描述。插件以當前 dsh 進程權限運行,安裝前應檢查源碼與許可證。
結尾¶
dsh-prompt-enhancer 通過三檔強度和自動/手動兩種模式,在對話框裏做一次輕量改寫,讓模型更容易給出清晰、具體的回覆。它不改變模型能力,只是在發送前對輸入做一次改寫。更多細節見插件目錄頁與 GitHub 倉庫。