前言¶
在 DeepSeek Harness (DSH) 的 Web 配置文件開發中,若僅依靠 Persona 或 System 層面的規則來約束模型,在長會話中往往不可靠:模型會逐漸遺忘這些規則,即使規則寫得再明確(例如“每次編碼前刷新代碼圖譜”、“遇到事實問題先查 Wiki”),在後續輪次中也可能靜默失效。
dsh-prompt-injector 解決了這個問題。它複用了 dsh-mem0-plugins 中的記憶召回機制,將其通用化:你可以在設置頁面維護一個提示詞列表,插件會在每次對話輪次中,將這些提示詞以“Context injection”通知行的形式注入到模型上下文的前置位置。這確保了關鍵規則或提醒在每一輪都能被模型“看到”,從而提高執行的一致性。
插件定位¶
- 名稱:
runfali/dsh-prompt-injector - 維護者:
runfali - 許可:MIT
- 核心能力:爲 DSH Web 配置提供通用的每輪上下文注入機制,支持通過 UI 管理注入內容,且不侵入 DSH 源碼。
核心功能¶
該插件主要提供以下能力:
- 每輪注入:在
agent/pre-step階段,當檢測到新輸入時,將所有已啓用的提示詞追加到本輪上下文中,作爲一條摺疊的“Context injection”通知行。 - 觸發模式:
everyTurn(默認):每次對話輪次都注入。postCompaction:在上下文壓縮/摘要生成後注入一次。
- 全局開關:通過
enabled配置項控制全局注入開關。 - 簡略輪次過濾:默認開啓
skipTrivial,會自動跳過“好的/嗯/收到/繼續/ok/thanks”等簡略確認語,避免干擾實質性對話。 - 提示詞管理 UI:支持在 DSH 設置頁面直接添加、刪除、編輯提示詞,並單獨控制每行的啓用狀態。
- 僅提醒,不執行:插件本身不調用任何工具,不執行任何檢查,僅負責將文本注入上下文,決策權完全在模型。
- 零侵入:不修改 DSH 源碼,僅依賴兩個較小的運行時包。
安裝與配置¶
插件以標準 DSH Bundle 插件形式發佈。
安裝命令:
dsh plugin add
配置方式:
安裝後,在 DSH 的設置頁面即可找到該插件的配置卡片。你可以在此管理提示詞列表:
* 標題:用於 UI 展示的行標題。
* 內容:實際注入的提示詞文本。
* 開關:每行可獨立啓用或禁用。
* 觸發模式:選擇 everyTurn 或 postCompaction。
* 過濾:確認 skipTrivial 是否開啓。
工作原理¶
插件在 agent/pre-step 掛載點運行,向 decision.messages 追加消息。注入的消息格式如下:
- Role:
user - Source:
kind:plugin:dsh-prompt-injector(使用插件自己的命名空間,符合 V4 消息規範)form:noticesummary: 插件的行標題
DSH UI 會將這類消息渲染爲摺疊的“Context injection”通知行,模型在規劃回覆時即可看到這些前置信息。
安全與依賴¶
- 運行時依賴:插件僅聲明瞭三個
peerDependencies,均由 DSH 宿主提供:@deepseek-ai/dsh-settings@deepseek-ai/schemasteryreact
- 權限邊界:
- 無網絡訪問權限。
- 無子進程創建權限。
- 無文件系統寫入權限。
- 任何注入錯誤都被隔離,不會導致整個對話輪次崩潰。
- 要求:
- DSH 版本:
>=0.1.2-alpha.3 - Node.js 版本:
^22.19.0 || >=24.0.0
- DSH 版本:
適用場景¶
此插件適合需要在每一輪對話中反覆強調特定約束或規則的開發者。例如:
* 在編碼任務中反覆提醒模型“先查圖譜再寫代碼”。
* 在複雜問答中反覆提醒模型“遵循安全紅線清單”。
* 在長對話中強制刷新特定的上下文摘要。
插件的設計哲學是“提醒而非執行”,它將規則下沉到上下文中,讓模型在生成最終回覆時自行判斷何時執行。
結語¶
dsh-prompt-injector 通過將通用化的上下文注入機制集成到 DSH 的工作流中,解決了長會話中規則遺忘的問題。其零侵入的設計和基於 UI 的管理方式,使其易於維護和調試。
- GitHub 倉庫:https://github.com/runfali/dsh-prompt-injector
- 插件目錄:https://www.skillhub.cn/plugins/runfali/dsh-prompt-injector