DeepSeek Harness Plugin Hub

插件 HMR 不工作

理解 DSH 的四种 HMR 模式,选择正确的模式并排查热更新失效的原因。

四种 HMR 模式

DSH 插件支持四种热更新模式,在 dsh.hub.compatibility.hmr 字段中声明:

full — 插件可以在不重启宿主进程的情况下应用和销毁。这是最高级别的 HMR,需要插件正确实现 apply 和 dispose 生命周期钩子。

config — 配置变更可以通过重新组合配置层来生效,无需完全卸载插件。

refresh — 需要刷新 web/客户端界面才能看到变更。

restart — 必须重启 DSH 进程才能加载变更。这是最低级别的兼容模式。

选择正确的模式

如果你的插件只修改配置,config 模式就够了。如果插件有 UI 组件,通常需要 refresh。只有当插件完全实现了运行时钩子时才能用 full。

声明比实际支持更高级的 HMR 模式会导致更新不生效或状态不一致。

json
{
  "dsh": {
    "hub": {
      "compatibility": {
        "hmr": "refresh"
      }
    }
  }
}

排查 HMR 失效

检查插件声明的 HMR 模式是否和实际行为匹配。如果声明了 full 但没有正确实现 dispose,旧实例可能不会清理。

确认 Cordis patch 中的 entry ID 没有冲突。多个插件注册相同 ID 时,后加载的会覆盖先加载的。

查看 DSH 日志中的 HMR 相关事件,确认变更是否被检测到。