dsh-reload:改完插件代码一键热重载,不必反复重启 DSH

前言

在 DeepSeek Harness(DSH)里开发插件时,常见流程是改源码、重新构建,再回到客户端看效果。DSH 内置的热更新(HMR)主要监听 profile 配置;用 link: 挂本地开发包时,源码变动往往不在监听范围内,界面仍显示旧逻辑。于是每轮调试都要关掉再打开 DSH,会话虽可保留,但操作成本会随次数累积。

下面介绍社区插件 dsh-reload(维护者 daimingxing):在桌面端提供显式「热重载」与可选「重启客户端」,并给智能体暴露一个无参工具,让改动尽量在不中断当前进程的前提下生效。

这是什么

dsh-reload 是 DSH 生态下的 MIT 许可插件(当前 package 版本 1.0.1),定位是:开发插件时,重新加载磁盘上已有变动的插件模块,必要时一键重启桌面客户端;不替代 DSH 官方升级流程,也与监听 lockfile、在版本升级时自动刷新的 dsh-hot-reload 场景不同——后者面向已安装包升级,本插件面向「改源码 → 构建 → 手动触发重载」。

热重载走宿主官方路径:调用 hmr.reconcileProfile(),由文件系统比对决定重载范围,而不是自行清模块缓存或 dispose fiber,以降低误把插件写成 disabled: true 并持久化到配置的风险。

核心功能

热重载与重启

  • 热重载:点按钮或调用工具后,重新加载文件有改动的插件;不重启进程、不中断当前会话(聊天记录与进行中的 Host 任务仍保留)。成功时可见类似「已热重载 N 个插件」的提示。
  • 重启客户端:改 package.json、依赖或 lockfile 等必须整机重启的场景,可一键关闭并自动重新打开桌面端。重启会中断所有 Host 任务;若有任务在跑,插件会拒绝并列出任务,避免误丢工作。终端仅作提醒,不作为硬拦截条件。
  • 智能体工具:注册工具 dsh_hot_reload,参数为空对象;改完代码可直接让模型调用,无需手点按钮。

对模型上下文的占用

按 README 说明,本插件不注入 system prompt、不 agent.inject、不注册 skill,仅 1 个工具,描述约 349 字符;界面入口默认关闭,避免默认占侧边栏或悬浮层。

入口方式

入口 默认
设置面板顶栏「热重载 / 重启客户端」 始终可用
侧边栏底部按钮 关
右下角 32px 悬浮按钮 关
侧边栏「更多」菜单中的「刷新插件」 常驻

安装与启用

插件以当前 DSH 进程权限运行;安装前建议在 GitHub 查看源码与 MIT 许可证,自行判断是否信任维护者。

桌面端:侧栏 插件 页,在安装入口输入包名:

dsh-reload

命令行(profile 为 desktop):

dsh plugin --profile desktop add dsh-reload

装好后 刷新一次页面,客户端模块图在页面加载时构建,入口才会出现。打开 设置 → 插件 → 热重载(dsh-reload) 可看到两个主按钮,以及侧边栏 / 悬浮按钮的显示开关。

典型用法

  1. 安装并刷新页面,按需打开插件页或顶栏按钮。
  2. 修改插件源码并完成构建(热重载加载的是磁盘产出,未构建则界面不变)。
  3. 点击「热重载」,或对话中说「改完了,帮我热重载一下插件」,由模型调用 dsh_hot_reload。
  4. 若返回里 pending / restartReason 非空,或你改了 package.json、依赖、pnpm-lock.yaml,改用「重启客户端」(仅 Windows 桌面客户端;dsh web 下重启按钮会禁用并说明原因)。

可在 AGENTS.md 中约定「每次改完插件代码都热重载」,作为智能体默认动作。

适用场景与注意

适合:本地 link: 或频繁改插件代码的 DSH 插件开发者,希望减少整进程重启次数。

热重载够用的情形(README 表格):改了插件源码并重新构建;插件曾 failed,修好文件后再热重载。

必须重启客户端的情形:改了 package.json(名称、依赖、dsh.client 等);更换依赖或动了 lockfile。

其他限制(README 进阶说明):

  • 被重载插件的内存状态会清空(含本插件自身)。
  • 新实例加载失败时,旧代码不再运行,插件可能处于 failed,需修文件后再热重载。
  • 仅改 package.json 不会被 HMR 检测,属 DSH 官方限制。
  • 重启失败时日志位于 $DSH_HOME/dsh-reload/restart.log;Windows 侧边栏折叠时底部区域可能被宿主隐藏,可改用悬浮按钮或设置顶栏按钮。

与 dsh-hot-reload 可同时安装:前者显式触发、面向开发;后者在插件版本升级时自动处理,不含整机重启。

结尾

dsh-reload 把「改代码 → 看效果」从反复重启 DSH,收敛为热重载按钮或 dsh_hot_reload 一步;需要换依赖或改 manifest 时再走受控的重启路径。目录与详情可在 SkillHub 查看:daimingxing/dsh-reload;源码与完整 FAQ 见 GitHub 仓库。

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

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

Xiaoye