DSH Composer 的提示詞優化按鈕:dsh-prompt-optimizer-button

前言

用 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 上做三件事:

  1. 在模型選擇框與發送按鈕之間(麥克風/發送按鈕左側)插入一個 sparkle 小圖標按鈕和一個場景徽標。
  2. 點擊圖標後,插件把當前草稿發給宿主側的一段服務,用輸入框裏當前選的 provider/model(含 reasoning effort)跑一次普通模型調用,把改寫後的提示詞直接替換回輸入框。
  3. 一次調用同時返回改寫結果、場景判斷和結構化診斷。診斷不進輸入框,只顯示在彈出面板裏。

行爲細節(均來自 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
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜