dsh-prompt-optimizer:在 DSH 輸入框裏用當前模型優化草稿

前言

在 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):

  1. 在 package.json 的 dependencies 中加入本包,路徑改爲本機 clone 或解壓後的實際目錄,例如:
"dsh-prompt-optimizer": "file:D:/developRelevant/product/dshp/dsh-sen-message/dsh-prompt-optimizer"
  1. 在 dsh.profile.bundles 中加入 "dsh-prompt-optimizer"。

  2. 在 profile 目錄執行:

pnpm install
  1. 在本包目錄執行:
npm install
npm run build
  1. 重啓 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 管理依賴。

典型用法

  1. 安裝並重啓 DSH web 後,打開任意會話,在聊天輸入框右上角切換到「✨ 優化模式」。
  2. 在輸入框寫好草稿(注意 8000 字符上限與上下文條數/長度限制)。
  3. 觸發優化(UI 或 Alt+O,以 Client 實現爲準)。等待流式結果回填到草稿。
  4. 若生成被 token 上限截斷,界面會給出 truncated 相關提示;可隨時取消,取消應中止底層 LLM 傳輸。
  5. 回填後可繼續編輯,再切回「普通模式」按 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
羽毛球分组比赛记分
小程序二维码

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

小夜