前言¶
在 DeepSeek Harness (DSH) 的使用過程中,當你在不同模型之間切換會話時,系統的行爲通常是:切換到新模型後,會自動應用該模型當前的默認推理努力級別。當你切回之前使用的模型時,之前設定的那個推理努力級別往往不會被保留,而是重置爲新模型的默認值。
dsh-effort-memory 是一個 Host-only 插件,它的作用是記錄每個 (provider, model) 路由上最後生效的推理努力級別,並在會話切回該模型時將其恢復。
插件簡介¶
這是一個 DeepSeek Harness (DSH) 的外部插件,由開發者 cup113 維護。它不依賴任何客戶端 UI 或 React 組件,完全運行在 DSH 的 Host 層。
該插件的核心功能是利用 DSH 的公共命令接口來重新發出模型選擇,從而持久化推理努力級別的設置。
核心能力¶
- Host-only 實現:僅存在於 DSH 進程內部,不包含任何 UI 代碼或客戶端邏輯。
- 記憶與恢復:以
(provider, model)爲鍵,記憶該路由最後生效的reasoningEffort。 - 自動恢復:當會話路由變更並切回該模型時,插件會通過
ctx.sessionController.selectModel重新發出選擇,將之前保存的推理努力級別應用到當前會話中。 - 安全機制:
- Loop-safe:僅當路由實際變更且事件中的努力級別與記憶不同時纔會觸發,防止無限循環。
- Replay-safe:能夠正確處理會話的構造函數種子(如恢復、分叉等場景),並檢查序列號。
- 容錯設計:
- 如果目標模型不再支持某個推理努力級別,會靜默回退到模型的默認值,不拋出錯誤。
- 如果模型聲明不支持推理能力,則不進行操作。
- 無重試機制,任何失敗僅記錄日誌。
安裝與啓用¶
插件通過 DSH 的插件系統安裝。安裝後需要重啓 DSH 進程以使配置生效。
dsh plugin --profile <name> add github:cup113/dsh-effort-memory
持久化與配置¶
插件的記憶功能依賴於 DSH 的存儲域。
- 存儲域:使用
effort_memory域,數據表名爲efforts。 - 存儲路徑:在基礎存儲棧掛載的情況下,數據存儲在
$DSH_HOME/storages/effort_memory.json,能夠跨進程重啓保留。 - 內存回退:如果上下文中缺少
ctx.storageDomain,插件會降級爲進程本地的Map,並在應用時記錄警告。這種狀態在進程重啓後會丟失。
適用場景與注意¶
- 適用場景:需要在多個模型間頻繁切換,且希望保持特定模型在切換回來後保持相同推理努力級別的開發者。
- 全局記憶:記憶是全局的,所有會話和工作區共享同一個
(provider, model)的記憶條目。 - 限制:
- 插件會作用於所有活躍會話,包括子代理會話。
- 如果沒有
sessionProjections,會話在重啓後的第一次切換隻能建立基準,無法恢復之前的記憶。 - 僅支持單進程可見,數據不會通過
domain/changed跨進程同步。
結語¶
dsh-effort-memory 通過極簡的設計(僅一個核心命令接口),解決了 DSH 中模型切換導致推理努力級別丟失的痛點。它不寫入配置文件,也不提供 UI 開關,而是通過代碼層面的介入,確保了模型設置的連貫性。