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 插件目录

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

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

小夜