dsh-effort-memory:DSH 插件,用於記憶和恢復推理努力設置

前言

在 DeepSeek Harness (DSH) 的使用過程中,當你在不同模型之間切換會話時,系統的行爲通常是:切換到新模型後,會自動應用該模型當前的默認推理努力級別。當你切回之前使用的模型時,之前設定的那個推理努力級別往往不會被保留,而是重置爲新模型的默認值。

dsh-effort-memory 是一個 Host-only 插件,它的作用是記錄每個 (provider, model) 路由上最後生效的推理努力級別,並在會話切回該模型時將其恢復。

插件簡介

這是一個 DeepSeek Harness (DSH) 的外部插件,由開發者 cup113 維護。它不依賴任何客戶端 UI 或 React 組件,完全運行在 DSH 的 Host 層。

該插件的核心功能是利用 DSH 的公共命令接口來重新發出模型選擇,從而持久化推理努力級別的設置。

核心能力

  1. Host-only 實現:僅存在於 DSH 進程內部,不包含任何 UI 代碼或客戶端邏輯。
  2. 記憶與恢復:以 (provider, model) 爲鍵,記憶該路由最後生效的 reasoningEffort。
  3. 自動恢復:當會話路由變更並切回該模型時,插件會通過 ctx.sessionController.selectModel 重新發出選擇,將之前保存的推理努力級別應用到當前會話中。
  4. 安全機制:
    • Loop-safe:僅當路由實際變更且事件中的努力級別與記憶不同時纔會觸發,防止無限循環。
    • Replay-safe:能夠正確處理會話的構造函數種子(如恢復、分叉等場景),並檢查序列號。
  5. 容錯設計:
    • 如果目標模型不再支持某個推理努力級別,會靜默回退到模型的默認值,不拋出錯誤。
    • 如果模型聲明不支持推理能力,則不進行操作。
    • 無重試機制,任何失敗僅記錄日誌。

安裝與啓用

插件通過 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 開關,而是通過代碼層面的介入,確保了模型設置的連貫性。

更多技術細節、源碼結構及測試用例,請參考:
* GitHub 倉庫
* DSH 插件目錄

羽毛球分组比赛记分
小程序二维码

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

小夜