前言¶
在 DeepSeek Harness(DSH)中,插件、MCP 连接和工具贡献通常由 Cordis Loader 管理。改了一个 in-process plugin 的磁盘代码,或者改了某个 mcp-client 对应的 MCP server 代码后,常见做法是重启 host。
dsh-plugin-reload 提供的粒度更细:它给 agent 一个 reload_plugin 工具,可按 entry id、module name 或 MCP config.serverName 重启单个 Cordis Loader 条目,其他条目继续运行。
定位¶
dsh-plugin-reload 是一个 DeepSeek Harness 插件,许可证为 MIT。
它的目标不是提供设置界面,而是给 agent 一个可调用工具,用来在线重启指定条目。仓库地址:
https://github.com/reina4xa/dsh-plugin-reload
核心能力¶
插件提供 reload_plugin 工具。下面按条目类型说明行为。
mcp-client 条目¶
对 mcp-client 条目,重启会重新拉起 MCP server 子进程,并重新注册其工具。sibling MCP 连接不受影响。
in-process plugin 条目¶
对 in-process plugin 条目,插件执行 hard reload:
- 清除该条目的 ESM/CJS 模块缓存。
- 从磁盘重新导入代码。
- 把 fiber 切换到新模块。
- 如果重新导入或重新应用失败,回滚到之前的代码。
模式与预览¶
reload_plugin 支持以下参数:
name 必填。entry id(优先)、module name,或 MCP config.serverName
mode 可选。auto、soft、hard
dry_run 可选。true 时只报告匹配结果和将执行的策略,不实际重启
mode 的语义:
auto:in-process plugin 使用 hard reload;mcp-client重启 MCP server 子进程并重新注册工具。soft:只 dispose 并重新应用;不会取到 in-process 代码变更。hard:清除 ESM/CJS 缓存,并从磁盘重新导入 entry 代码。
dry_run: true 适合先确认会匹配到哪个条目、会使用哪种策略,再真正执行。
匹配规则¶
匹配只遍历非 group entries,优先级如下:
exact entry id > module name > mcp-client serverName
失败行为:
- 零匹配:报错,并列出可用条目。
- 多匹配:报错,列出候选 entry ids,不修改状态。
- group entries:不参与匹配。要重启插件子树,需要逐个 leaf entry 调用。
成功返回包括 entry id、module、可选 serverName、前后 fiber phases、策略和语义说明。
安装与挂载¶
从 v0.1.2 起,包声明了 dsh.bundle。使用 dsh plugin 安装后会自动挂载:
dsh plugin --profile web add dsh-plugin-reload
后续更新:
dsh plugin --profile web update dsh-plugin-reload
如果使用普通 npm 安装,或希望显式维护 patch 行,可以插入 profile patch:~/.dsh/profiles/<name>/cordis.patch.yml,或 --patch overlay:
- insert:
- id: plugin-reload
name: 'dsh-plugin-reload'
注意:不要同时保留 bundle mount 和 manual row。重复工具注册会在加载时失败。
运行要求¶
需要 DeepSeek Harness profile 提供 web 或 headless bundle,并且可用:
@deepseek-ai/dsh-tools
@deepseek-ai/cordis-plugin-loader
适用场景与注意¶
适合:
- 只想重启某个 in-process plugin,不影响其他条目。
- 修改某个
mcp-client的 MCP server 代码后,重新注册该 server 的工具。 - agent 在 DSH 会话中执行受控的插件级 reload。
注意:
- 插件以当前
dsh进程权限运行。安装前请检查源码与 MIT 许可证。 - 重载期间存在短暂工具中断。被重载条目的贡献,例如 MCP 工具,在 disposal 和 re-application 之间不可用,期间调用会失败。
- hard reload 只覆盖插件自身代码;
node_modules中的依赖不会被重新导入。修改这些依赖仍需要重启 host。 - reload 会重新执行插件顶层代码。插件不应依赖顶层持久状态跨 reload 存活。
- 该插件面向 agent,没有浏览器/UI surface;Settings plugin-inventory 标签页保持只读。
- 不支持 group reload;需要逐个 leaf entry 重启插件子树。
开发命令¶
npm install
npm run build
npm test
npm pack
链接¶
- GitHub:https://github.com/reina4xa/dsh-plugin-reload
- 插件目录页:https://www.skillhub.cn/plugins/reina4xa/dsh-plugin-reload