前言¶
用 DSH(DeepSeek Harness)寫提示詞時,一個常見痛點是:草稿寫完了,但不知道要不要改、怎麼改,只能整段發出去讓模型自己理解。手動重寫、複製粘貼對比、讓模型返回優化後的文本再貼回來,都打斷在 composer 裏的工作流。
下面介紹的插件 az-666316/dsh-prompt-optimizer-button 就是一個針對這個場景的小工具:在 composer 輸入框上加一個「優化提示詞」按鈕,點一下,用當前選中的模型把草稿改寫好,直接替換回輸入框,不發送、不新增對話輪次。
這是什麼¶
dsh-prompt-optimizer-button 是 DSH 的一個插件(dsh-plugin),由 AZ-666316 維護。它解決的問題很單一:在 composer 裏對當前草稿做一次模型驅動的提示詞改寫,並提供改動理由的診斷面板。
它屬於社區目錄中的模型推理類插件,採用 MIT 許可證,當前版本 0.4.2,engines 要求 dsh >= 0.2.2-rc.1 < 0.3.0-0。來源:GitHub 倉庫 AZ-666316/dsh-prompt-optimizer-button 的 README 與 package.json。
核心功能¶
插件在 composer 上做三件事:
- 在模型選擇框與發送按鈕之間(麥克風/發送按鈕左側)插入一個 sparkle 小圖標按鈕和一個場景徽標。
- 點擊圖標後,插件把當前草稿發給宿主側的一段服務,用輸入框裏當前選的 provider/model(含 reasoning effort)跑一次普通模型調用,把改寫後的提示詞直接替換回輸入框。
- 一次調用同時返回改寫結果、場景判斷和結構化診斷。診斷不進輸入框,只顯示在彈出面板裏。
行爲細節(均來自 README):
- 不發送、不新增對話輪次。改寫結果先寫回輸入框,用戶看完、改完,再按 Enter。
- 不另配密鑰,沿用輸入框當前選的 provider/model。
- 草稿爲空時按鈕置灰;請求進行中圖標呼吸閃爍、按鈕不可再點;失敗時圖標變紅並自動打開面板說明原因。
- 場景徽標顯示模型判斷出的場景:自動 / 論文 / 派活 / 日常 / 英文。點徽標可打開面板,並在面板裏手動釘住下一次要用的場景。
診斷面板的內容依次是:功能提示、場景選擇 chips(自動/論文/派活/日常/英文,點一下即釘住)、診斷(任務類型、要支撐的決策)與三條自檢(✓ 通過 / ! 未通過,各帶一句理由)、失敗原因(僅失敗時)。面板用 position: fixed 掛在按鈕上方(空間不足自動翻到下方),水平居中並夾在視口內;外部點擊、Escape、關閉按鈕都能收起;帶 role="dialog"。視覺爲深色半透明 + 背景模糊 + 圓角 14 + 投影,徽標是圓點 + 文字的膠囊。
工作原理¶
插件由宿主側和瀏覽器側兩部分組成(依據 README 的「結構」一節):
- 瀏覽器側(
client.js)註冊conversation.input.right單元格,用ReactDOM.createPortal把徽標與按鈕插到 composer trailing 行的standardControls(模型選擇器塊)之後;診斷面板再 portal 到document.body,用按鈕矩形計算固定定位座標。 - 宿主側(
index.js)註冊一條同源路由:
POST /prompt-optimizer/rewrite
請求 : { text, provider, model, reasoningEffort?, scenario? }
響應 : { ok: true, text, scenario, diagnosis }
其中 text 是改寫後的提示詞(唯一寫回輸入框的內容),scenario / diagnosis 只給面板用。桌面版頁面 origin 是 dsh-app://app,主進程會把非本地資源的 fetch 轉發到宿主 Web 服務器(帶認證 cookie),所以相對路徑的 fetch 在桌面與網頁版都能用。
模型答案用行標記解析(SCENARIO: / DIAGNOSIS: / PROMPT:),長提示詞正文不塞進 JSON 字符串,避免換行與引號導致解析失敗;解析失敗時回退爲「整段當提示詞」。
工程上有兩點值得注意:
- 宿主側不
import任何@deepseek-ai/*包(profile 裏並沒有 dsh-llm),只通過ctx.get('llm')/ctx.inject(['webServer'])拿運行時服務,避免插件拖慢或拖垮啓動握手。 - 不再依賴
prompt-optimizer技能:優化規則寫在index.js的 system prompt 裏。倉庫裏仍保留了skills/prompt-optimizer/目錄作爲對話用的技能(Codex 場景按$prompt-optimizer調用,DSH 場景按/prompt-optimizer調用),兩者不衝突。
安裝與啓用¶
推薦的方式是本地通過 plugin_manager 的 install_bundle 以 link: 方式裝到 profile(如 desktop)。手動安裝等價於三步,按 README 原文:
1、在 profile 的 package.json(如 %USERPROFILE%\.dsh\profiles\desktop\package.json)的 dependencies 加:
"dsh-prompt-optimizer-button": "link:<本目錄絕對路徑>"
2、把 dsh-prompt-optimizer-button 加進 dsh.profile.bundles。
3、讓 profile 重新組裝(plugin_manager 的 set/install,或重啓 DSH),頁面刷新後生效。
插件自帶的依賴項(package.json 的 dsh.client.inject)要求注入 @deepseek-ai/dsh-client-locale 與 @deepseek-ai/dsh-client-ui-conversation,這兩個包由 DSH 自身提供,無需額外安裝。運行中的 DSH(0.2.2 級別)自帶 llm、webServer 服務即可,無需額外包。
卸載有兩種方式:
# 方式一:在 plugin_manager 裏禁用/移除 prompt-optimizer-button 行
# 方式二:命令行移除
dsh plugin --profile desktop remove dsh-prompt-optimizer-button
典型用法¶
1、正常打開一個會話,在 composer 輸入框輸入草稿,例如一句比較含糊的任務描述。
2、確認輸入框裏選的 provider/model 和 reasoning effort 是否符合預期——插件會原樣用這套配置發起這次改寫,不另配密鑰。
3、點擊 sparkle 圖標。此時按鈕進入「請求進行中」狀態(圖標呼吸閃爍、不可再點);模型返回後,改寫後的提示詞直接替換輸入框草稿,場景徽標更新爲模型判斷出的場景(自動 / 論文 / 派活 / 日常 / 英文之一)。
4、點一下場景徽標(或失敗時自動彈出的面板),查看診斷面板:場景選擇 chips 可以手動釘住下一次要用的場景,正文裏的任務類型、決策目標和三條自檢給出改寫理由。不需要診斷的話,直接關掉面板。
5、查看寫回的提示詞,不滿意就手動改,滿意再按 Enter 發送。插件默認不自動發送。
適用場景與注意¶
適合的用戶:
- 經常在 composer 裏調整提示詞、希望「改一版看看」而不是發一輪對話的用戶。
- 需要知道模型爲什麼這樣改寫的開發者:診斷面板把任務類型、決策目標和自檢結果擺出來,比單純看改寫結果更容易判斷質量。
注意事項:
- 插件以當前 dsh 進程的權限運行,並通過同源路由調用宿主側服務。安裝前應檢查源碼(
index.js、client.js、cordis.patch.yml)與 MIT 許可證,確認路由行爲是否符合自己的預期。 - 宿主路由不做額外鑑權,依賴 Web 服務器本身只在 loopback 暴露;若要對外暴露需自行加策略。
- 單次請求上限:輸入 20k 字符、輸出 4000 tokens、超時 90 秒;輸出被 max tokens 截斷時直接報錯(提示縮短草稿),不會把半截提示詞寫回草稿。
- DSH 0.2.2 的 composer 內部 DOM 不是公開 API;升級後若
[data-composer-card]/standardControls結構變化,按鈕定位會失效(插件有「發送按鈕前」的兜底定位)。 - 按鈕只在會話輸入框出現,歡迎 hero 態沒有該單元格。
- 目前不自動發送。要「點完直接發送」,需改
client.js的onClick,在setDraft後調用inputActions.submit()。
生態背景:DSH 的理念是「一切皆插件」,本插件來自社區目錄與個人倉庫,與 DeepSeek / 幻方無官方從屬關係,不屬於官方應用商店收錄。
結尾¶
這個插件的價值在於把「改寫提示詞」這一步留在 composer 內部完成:一次普通模型調用、一個按鈕、一個診斷面板,不改變現有會話流。如果你主要在 DSH 裏寫提示詞,且剛好在 0.2.2 版本的支持範圍內,值得裝一個試試。
- 目錄頁:https://www.skillhub.cn/plugins/AZ-666316/dsh-prompt-optimizer-button
- GitHub:https://github.com/AZ-666316/dsh-prompt-optimizer-button