description: "通过统一协调队列热重载插件代码和 profile 配置。"
English | 中文
在应用运行期间重载插件源码和配置。模块替换、Include 刷新与 profile 配置变更共用一个队列。包安装在该队列之外执行。ctx.hmr 保留现有 Cordis HMR 的配置和事件。
启动器提供 profileContext 时,base 组合包以 root: [] 启用 HMR;没有该 profile 上下文的宿主保留此条目为禁用状态。Headless、SDK 和 ACP 组合包在 YAML 中禁用此条目,后续 profile patch 可以重新启用。禁用或省略 HMR 时,更改在重启后生效。如需监听源码模块,在启动前通过 profile patch 配置 base 组合包提供的 hmr 条目:
- id: hmr
disabled: false
config:
root: ["."]
已有配置将模块名 @deepseek-ai/cordis-plugin-hmr 替换为 @deepseek-ai/dsh-hmr。继续提供 hmr 服务键、baseDir、config、getLinked()、getOuterStack()、hmr/change 和 hmr/reload。工作区保留 vendored 包;DSH profile 使用本包。
| 字段 | 默认值 | 含义 |
|---|---|---|
base |
Context 的 base URL | 模块监听的基准目录。 |
root |
["."] |
模块监听目录;[] 仅保留显式注册的配置监听。 |
ignored |
["**/node_modules", "**/.*", "cache", "data"] |
排除的模块路径。 |
debounce |
100 |
合并模块变化的毫秒数。 |
Chokidar 选项(包括轮询)保持原有含义。精确配置监听同时观察新增、删除及初始不存在的父目录。它们默认使用 awaitWriteFinish: true:编辑后等待 Chokidar 的 2 秒写入稳定窗口,避免其变化事件节流丢失通知。可通过 awaitWriteFinish 调整窗口;禁用它可能漏掉快速连续编辑。直接通过 Plugin Manager 发起的操作无需等待文件事件即可应用。
ctx.hmr 不添加模型工具或消息。加载后的插件决定后续工具和提示词贡献。
没有直接的 token 贡献。
重载提供上下文的插件可能改变后续请求前缀;HMR 不改写对话历史。
loader.exit() 钩子;HMR 本身不重启进程。无。