前言¶
在 DeepSeek Harness(DSH)裏寫提示詞時,草稿往往還處在「能表達意圖但未整理」的狀態:上下文在會話裏、模型在會話選擇裏,若要把同一段文字交給模型潤色,常見做法是複製到外部工具或另開一輪對話。DSH 社區插件 dsh-prompt-optimizer 把「普通輸入 / 優化輸入」做成聊天輸入框右上角的常駐切換,優化結果直接回填草稿,仍可繼續編輯。
下面介紹插件定位、能力與在 web profile 下的安裝方式。事實以 GitHub 倉庫 README 爲準。
這是什麼¶
dsh-prompt-optimizer 是 DSH 可註冊的正式 bundle 插件(非僅在進程內存活的動態沙箱包)。維護者爲 EmotionG,在 SkillHub 目錄中歸類爲「模型推理」,簡介爲優化提示詞。
Host 側註冊 Connection RPC 通道 /prompt-optimizer;Client 側在 conversation.input.right 提供「普通模式 / ✨ 優化模式」切換。優化模式下,插件基於當前會話上下文,並複用當前會話選擇的模型,對輸入框草稿做流式優化,再通過 setDraft 寫回 composer。
與僅用 cordis_define 的動態插件版相比:本包通過 profile 的 dsh.profile.bundles 安裝,進程重啓後仍生效;通信走 Connection RPC,宿主 handler 能收到真實 AbortSignal,取消會傳播到 LLM 適配器底層傳輸(動態版多爲協作式 break)。
核心功能¶
輸入框 UI 與快捷鍵¶
- 槽位:
conversation.input.right,包含模式切換、發起優化、加載、取消、錯誤與截斷提示、成功漸隱等狀態。 - 快捷鍵:
Alt+O(實現中對 IME、表單控件、defaultPrevented做了防護)。
優化與上下文¶
- 使用會話投影上的
modelSelection:next ?? lastUsed;若 provider/model 只傳其一,視爲未提供,回退 agent 默認模型。 - 上下文約束(README 行爲要點):最近 10 條消息、每條最多 800 字符、總量 6000 字符;草稿超過 8000 字符會截斷後再優化。
取消與健壯性¶
- 用戶取消、會話切換卸載、插件停止、傳輸關閉,匯聚到同一
AbortController,在傳輸層中止 LLM 請求(含 DeepSeek 適配器 idle watchdog 兜底)。 max-tokens導致截斷時返回truncated並提示;拒絕重複 token;每條請求使用唯一消息 id。- 模式選擇爲模塊級變量,跨會話切換保持;插件重載時重置。
代碼結構(便於二次開發)¶
| 路徑 | 職責 |
|---|---|
src/index.ts |
Host:optimize / cancel RPC,ctx.llm.stream 流式生成 |
src/client/index.ts |
Client:UI 與 RPC 調用、setDraft 回填 |
scripts/build-client.mjs |
esbuild 產出 lib/client.js(react 外部化) |
cordis.patch.yml |
bundle patch,插入 profile 組合 |
版本 0.1.0,許可證 MIT(見倉庫 package.json)。peer 依賴含 @deepseek-ai/cordis(>=4.0.2)、react(^18.2.0)。
安裝與啓用¶
插件面向 web profile。安裝前需在包目錄完成構建,產出 lib/index.js 與 lib/client.js。
方式一:在 profile 目錄手動改依賴¶
在 profile 目錄(示例路徑 C:\Users\<user>\.dsh\profiles\web):
- 在
package.json的dependencies中加入本包,路徑改爲本機 clone 或解壓後的實際目錄,例如:
"dsh-prompt-optimizer": "file:D:/developRelevant/product/dshp/dsh-sen-message/dsh-prompt-optimizer"
-
在
dsh.profile.bundles中加入"dsh-prompt-optimizer"。 -
在 profile 目錄執行:
pnpm install
- 在本包目錄執行:
npm install
npm run build
- 重啓 dsh web(或通過 dsh plugin 命令管理)。
README 說明:npm install 用於 devDependencies(esbuild、tsc、類型包);npm run build 等價於 build:host(tsc)與 build:client(esbuild)。
方式二:dsh plugin 命令¶
同樣需要先在本包目錄 npm install 與 npm run build。之後可用:
dsh plugin --profile web -- add "file:..."
將 "file:..." 換成本包在本機的 file: 路徑;該命令會轉發 pnpm 管理依賴。
典型用法¶
- 安裝並重啓 DSH web 後,打開任意會話,在聊天輸入框右上角切換到「✨ 優化模式」。
- 在輸入框寫好草稿(注意 8000 字符上限與上下文條數/長度限制)。
- 觸發優化(UI 或
Alt+O,以 Client 實現爲準)。等待流式結果回填到草稿。 - 若生成被 token 上限截斷,界面會給出
truncated相關提示;可隨時取消,取消應中止底層 LLM 傳輸。 - 回填後可繼續編輯,再切回「普通模式」按 usual 方式發送。
模式選擇在切換會話時仍會保持,直到插件重載。
適用場景與注意¶
適合誰:經常在 DSH composer 裏寫長提示、希望用當前會話同一模型在原地潤色草稿的開發者或智能體使用者;需要可註冊 bundle、重啓後仍生效的安裝方式時,應選本倉庫而非僅內存動態插件。
權限與安全:插件以當前 DSH 進程權限運行,優化請求會走 ctx.llm.stream,會讀取會話表面作上下文。安裝前請自行審閱 GitHub 源碼 與 MIT 許可證,確認 file: 路徑指向可信目錄。
生態說明:DSH 強調「一切皆插件」;SkillHub 目錄頁 爲社區站點,與 DeepSeek / 幻方無官方從屬關係,並非官方應用商店。
結尾¶
dsh-prompt-optimizer 把提示詞優化嵌進 DSH 輸入框:切換模式、用會話模型與有限上下文優化草稿、回填可編輯,並通過 RPC 與 AbortSignal 把取消鏈路接到傳輸層。需要安裝細節與行爲邊界時,以倉庫 README 爲準。
- 目錄頁:https://www.skillhub.cn/plugins/EmotionG/dsh-prompt-optimizer
- GitHub:https://github.com/EmotionG/dsh-prompt-optimizer