dsh-prompt-optimize:在 DSH Web 輸入框裏一鍵優化提示詞

前言

在 DSH Web UI 裏寫 Agent 提示詞時,常見做法是整段複製到外部編輯器或另開會話,讓模型幫忙改寫後再貼回輸入框。這樣會打斷當前會話上下文,也容易在來回粘貼時丟附件、引用 chip 或 /命令 前綴。下面介紹一個客戶端原生插件:在發送按鈕左側增加「優化提示詞」,用當前會話自己的模型路由原地改寫草稿,並通過編輯器原有撤銷路徑一次還原。

這是什麼

dsh-prompt-optimize(維護者 ClockworkParrot)是 DSH Web UI 的原生插件,分類爲客戶端。它在輸入區工具行、發送按鈕左側掛載按鈕(插槽 conversation.input.right),點擊後由 Host 調用已配置的 LLM 路由,按內置 system prompt 規則優化當前草稿並寫回輸入框;不滿意時一次撤銷即可回到原文。

工具行示意:

輸入區工具行:[引號 ▾] [思考強度 ▾] [優化提示詞] [發送]
                                    ^ conversation.input.right

Bundle 通過 cordis.patch.yml 只做自包含的 insert,不改動 DSH 核心文件。

核心功能

輸入區按鈕

場景 行爲
草稿爲空 禁用,提示「草稿爲空」
含附件、引用 chip,或以 /命令 開頭 禁用
輸入框正在提交 / 判定中 / 已被認領 禁用
請求進行中 旋轉圖標 +「優化中…」,不可重複觸發
調用成功 原地替換或追加草稿,一次撤銷還原
調用失敗 草稿不變,按鈕旁一行短錯誤

若優化請求進行中你繼續改草稿,結果不會覆蓋你的編輯,按鈕提示「草稿在優化期間被改動,未回填」。

配置與設置頁

Host 與 Client 共用同一份 Config schema,在 設置 → 通用設置 → 提示詞優化(settings.general.item,id prompt-optimize)編輯六個字段,支持保存、恢復默認,以及從 ctx.remote.session.modelCatalog() 拉取的 Provider / 模型下拉(目錄未就緒時可手填)。改完配置熱替換,無需重啓 dsh web。

字段 類型 默認值 含義
datePlaceholder string {{DSH}} 草稿中日期/時間位置替換成的佔位文本
replaceMode 'replace' \| 'append' 'replace' 原地寫回,或空一行後追加優化結果
timeoutMs number(1000…2147483647) 30000 單次模型調用端到端超時
provider string '' 固定 provider;留空則跟隨會話模型
model string '' 固定模型 id;provider 未設時忽略
reasoningEffort string '' 固定路由下的推理強度;留空則跟隨路由

provider 與 model 須成對填寫才固定路由;半填會被設置頁拒絕。插件不接收 base URL 與 API Key,鑑權走 ctx.llm 背後的 provider 適配器。

也可在 profile patch 裏直接寫 config,例如:

- id: prompt-optimize
  name: dsh-prompt-optimize
  config:
    datePlaceholder: '[[DATE]]'
    replaceMode: append
    timeoutMs: 20000
    provider: deepseek-account
    model: deepseek-flash

優化規則(system prompt)

模型只返回優化後的提示詞正文(無前言、引號或代碼圍欄),並遵守六條約束:不添加情景假設;不寫具體日期時間地點(用 datePlaceholder 替換);保留原語言;路徑、標識符、命令、代碼、數字、URL 等原樣保留;只補充原稿隱含信息;只輸出正文。

模型路由

Host 每次調用按順序解析:顯式配置的 provider + model → 會話 modelSelection → 會話 header 記錄 → agentDefaultModel.currentSelection()。調用走 ctx.llm.prepareCall / PreparedLlmCall.stream,繼承部署的重試與憑據策略。

錯誤與診斷

失敗時按鈕旁顯示簡短文案(如 NO_MODEL、TIMEOUT、PROVIDER 等);懸停可見 Host 返回的路由、HTTP 狀態、錯誤碼與耗時。錯誤行可展開調用日誌面板(內存保留最近 20 條,可複製),瀏覽器 Console 也會輸出 [prompt-optimize] 日誌。

安裝與啓用

在 DSH Web GUI / Agent 裏把本包目錄作爲 bundle 安裝:

plugin_manager({ action: "install_bundle", target: "<本包的絕對路徑>" })

首次安裝以及新增 npm 依賴後的重裝,需要重啓 dsh web(Host 模塊表在啓動時固定)。純客戶端改動可由客戶端重載器拾取;日常覆蓋文件可先 set_plugin 禁用再啓用,README 說明兩種方式下純客戶端改動通常不必重啓。

安裝時注意的兩點(DSH 行爲)

  1. 會話中途安裝的 bundle 只在下一次重載時掛載;若 plugin_manager list_plugins 看不到 include:prompt-optimize 而 Config 仍列出該包,需重啓 dsh web。
  2. 任何 plugin_manager 包操作會清理包內 node_modules,可能導致 @deepseek-ai/schemastery 等鏈接失效。操作後在本包目錄重建符號鏈接即可(README 給出完整命令),無需重啓。

從源碼改 Host 半邊時需構建:

npm run typecheck   # tsc --noEmit
npm run build       # tsc -> lib/index.js

典型用法

  1. 安裝 bundle 並確保 entry 已激活(必要時重啓 dsh web)。
  2. 在 設置 → 通用設置 → 提示詞優化 按需設置佔位符、替換模式、超時與固定路由(或留空以跟隨當前會話模型)。
  3. 在會話輸入框寫好草稿(無附件、無引用 chip、非 /命令 開頭),點擊 優化提示詞,等待「優化中…」結束。
  4. 查看寫回結果;不滿意用編輯器撤銷一次。若失敗,看按鈕旁提示與懸停詳情,或打開調用日誌 / Console 排查 provider 與路由。

適用場景與注意

適合經常在 DSH Web 裏打磨 Agent 提示詞、又希望沿用當前會話模型與鑑權、不想離開輸入框的開發者。

插件以當前 dsh 進程權限運行,安裝前應閱讀 GitHub 倉庫 源碼與 MIT 許可證。社區目錄 skillhub.cn 插件頁 爲獨立站點信息,與 DeepSeek / 幻方無官方從屬關係。

結尾

dsh-prompt-optimize 把「用模型改提示詞」收進 Web 輸入框一側:同會話路由、原地回填、可撤銷,配置與日誌也留在 DSH 設置與 UI 裏。進一步瞭解與安裝見 目錄頁 與 GitHub。

羽毛球分组比赛记分
小程序二维码

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

小夜