前言¶
在 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) 可看到两个主按钮,以及侧边栏 / 悬浮按钮的显示开关。
典型用法¶
- 安装并刷新页面,按需打开插件页或顶栏按钮。
- 修改插件源码并完成构建(热重载加载的是磁盘产出,未构建则界面不变)。
- 点击「热重载」,或对话中说「改完了,帮我热重载一下插件」,由模型调用
dsh_hot_reload。 - 若返回里
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 仓库。