前言¶
在 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 行爲)¶
- 會話中途安裝的 bundle 只在下一次重載時掛載;若
plugin_manager list_plugins看不到include:prompt-optimize而 Config 仍列出該包,需重啓dsh web。 - 任何
plugin_manager包操作會清理包內node_modules,可能導致@deepseek-ai/schemastery等鏈接失效。操作後在本包目錄重建符號鏈接即可(README 給出完整命令),無需重啓。
從源碼改 Host 半邊時需構建:
npm run typecheck # tsc --noEmit
npm run build # tsc -> lib/index.js
典型用法¶
- 安裝 bundle 並確保 entry 已激活(必要時重啓
dsh web)。 - 在 設置 → 通用設置 → 提示詞優化 按需設置佔位符、替換模式、超時與固定路由(或留空以跟隨當前會話模型)。
- 在會話輸入框寫好草稿(無附件、無引用 chip、非
/命令開頭),點擊 優化提示詞,等待「優化中…」結束。 - 查看寫回結果;不滿意用編輯器撤銷一次。若失敗,看按鈕旁提示與懸停詳情,或打開調用日誌 / Console 排查 provider 與路由。
適用場景與注意¶
適合經常在 DSH Web 裏打磨 Agent 提示詞、又希望沿用當前會話模型與鑑權、不想離開輸入框的開發者。
插件以當前 dsh 進程權限運行,安裝前應閱讀 GitHub 倉庫 源碼與 MIT 許可證。社區目錄 skillhub.cn 插件頁 爲獨立站點信息,與 DeepSeek / 幻方無官方從屬關係。
結尾¶
dsh-prompt-optimize 把「用模型改提示詞」收進 Web 輸入框一側:同會話路由、原地回填、可撤銷,配置與日誌也留在 DSH 設置與 UI 裏。進一步瞭解與安裝見 目錄頁 與 GitHub。