保存本地插件源码即热替换运行中的宿主,免重启
29.9/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/26 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add Pxczxn/dsh-dev-hotreload该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:仅索引
是什么
dsh 原生插件 · tool
装得上吗
本站尚未做安装检查
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 9 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件
查看扫描证据(共 7 处,展示前 7 条)
- 读取本地文件index.js:36
return statSync(path).isDirectory(); - 读取本地文件index.js:44
return JSON.parse(readFileSync(path, 'utf8')); - 读取本地文件index.js:133
entries = readdirSync(modules, { withFileTypes: true }); - 读取本地文件index.js:147
for (const inner of readdirSync(path, { withFileTypes: true })) { - 写入本地文件index.js:169
if (logFile) appendFileSync(logFile, `${new Date().toISOString()} ${message}\n`); - 读取本地文件index.js:199
const source = readFileSync(patch, 'utf8'); - 写入本地文件index.js:205
writeFileSync(patch, `${kept}\n# hot-reload-tick: ${new Date().toISOString()}\n`);
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
DeepSeek Harness 的本地开发热重载桥:监视 link 安装的插件/预设源码,一保存就触发官方 profile 重组合,正在运行的宿主直接热替换,无需重启。
README
由 DeepSeek 最新模型翻译生成dsh-dev-hotreload
给 DeepSeek Harness(DSH)用的保存即热重载桥:你在本地开发的插件/预设源码一保存,正在运行的宿主就把那个包热替换掉,不用重启。
它解决什么问题
DSH 自带 @deepseek-ai/dsh-hmr,但它对本地链接包的模块监听是失效的:
- link: / file: 安装的包,模块在 ESM 缓存里的键是 <profile>/node_modules/<pkg>/... 这个 symlink 路径;
- 而 HMR 的模块监听 dispatch 先用 realpath 得到真实路径再去比对缓存,esmHas(url) 恒为 false;
- 结果就是:改源码只 emit 一个 hmr/change 事件,永远不会真正重载(这是 dsh-hmr 0.2.1-rc.3 实测结论)。
真正有效的官方路径是 profile 重新组合(reconciliation):profile 的 cordis.patch.yml / package.json 一变,dsh-hmr 就比对已加载模块的文件身份(mtime + size),把发生变化的插件停掉、清 ESM 缓存、重新 import。官方文档也明说「linked 包在下次重组合时生效」。
展开完整文档(README 剩余 1 节)
dsh-dev-hotreload 给 DeepSeek Harness(DSH)用的保存即热重载桥:你在本地开发的插件/预设源码一保存,正在运行的宿主就把那个包热替换掉,不用重启。 它解决什么问题 DSH 自带 @deepseek-ai/dsh-hmr,但它对本地链接包的模块监听是失效的: - link: / file: 安装的包,模块在 ESM 缓存里的键是 <profile>/node_modules/<pkg>/... 这个 symlink 路径; - 而 HMR 的模块监听 dispatch 先用 realpath 得到真实路径再去比对缓存,esmHas(url) 恒为 false; - 结果就是:改源码只 emit 一个 hmr/change 事件,永远不会真正重载(这是 dsh-hmr 0.2.1-rc.3 实测结论)。 真正有效的官方路径是 profile 重新组合(reconciliation):profile 的 cordis.patch.yml / package.json 一变,dsh-hmr 就比对已加载模块的文件身份(mtime + size),把发生变化的插件停掉、清 ESM 缓存、重新 import。官方文档也明说「linked 包在下次重组合时生效」。 所以本插件的做法很轻:监视你的本地源码目录,保存后轻触 profile 的 cordis.patch.yml,触发官方那套重组合。 保存源码 → 防抖(400ms) → 改写 cordis.patch.yml 的 tick 注释 → dsh-hmr 的配置监视 → profile 重组合 → 插件热替换(工具 schema 同步更新)→ client-hmr 推送前端 安装 从打包好的 tgz(分发用;pnpm pack 的产物) dsh plugin --profile <profile> add /absolute/path/to/dsh-dev-hotreload-1.0.0.tgz 从本地目录链接(想改源码立刻自举生效时最常用) dsh plugin --profile <profile> add link:/absolute/path/to/dsh-dev-hotreload 从 GitHub dsh plugin --profile <profile> add github:Pxczxn/dsh-dev-hotreload 打包自己分发: pnpm pack --pack-destination ./dist 包自带 bundle 层(dsh.bundle.patch),安装后行 dev-hotreload 会自动进组合,零配置即可工作。 零配置时它怎么找到东西 | 需要的东西 | 自动发现方式 | | profile 目录 | profileContext.dir → ctx.baseUrl → 宿主进程参数里的绝对路径 → $DSH_HOME/profiles/desktop,取第一个"像 profile"的目录 | | 要监视的源码目录 | 读该 profile 的 package.json,取 link: / file: 依赖的真实目录;再加 node_modules 顶层(含 @scope/pkg)所有 symlink 的真实目录 | | 要轻触的 patch 文件 | <profile>/cordis.patch.yml | | 日志 | os.tmpdir()/dsh-dev-hotreload.log | node_modules、.git、dist、build、out、coverage、cache 等目录里的写入会被忽略。 配置(可选) 在 profile 的 cordis.patch.yml 里用同 id 覆盖,config 是整体替换,没写的字段用默认值: - id: dev-hotreload config: dirs: # 额外监视的目录(自动发现之外) - 'D:\Coding\project\dsh\plugins\my-plugin' autoDiscover: true # 默认 true:自动发现 link: 依赖 profile: 'D:\...\profiles\desktop' # 默认自动定位 patch: 'D:\...\profiles\desktop\cordis.patch.yml' # 默认 <profile>/cordis.patch.yml log: 'D:\Coding\tmp\dev-hotreload.log' # 默认 tmpdir 下;false 关闭 debounce: 400 # 毫秒 只想监视指定目录、不要自动发现: - id: dev-hotreload config: autoDiscover: false dirs: - 'D:\repo\my-plugin' 验证它真的在工作 1. 编辑任意 linked 包里被 import 到的文件(比如 src/tools.js); 2. 看日志:Get-Content "$env:TEMP\dsh-dev-hotreload.log" -Tail 20,应出现 change: src/... 和 ticked cordis.patch.yml; 3. 宿主里立刻能用到改后的行为(比如工具输出变了),说明插件已热替换。 须知 / 限制 - 它依赖 @deepseek-ai/dsh-hmr 的配置监视能力。若你在 profile 里把 hmr 行 disabled: true,本插件就无效了。config.root 不需要为本插件设置(模块监听对 linked 包无效,root: [] 即可)。 - 保存后有一次重组合,性能开销与"改配置"同级;debounce 可调。 - 重组合失败时 dsh-hmr 不会回滚到旧版本 —— 改坏代码会看到插件 failed,修好再保存即可恢复。 - 只对会重新执行 apply 的宿主侧代码生效;纯 client(浏览器侧)bundle 的更新由 client-hmr 负责,视插件是否声明 dsh.client 而定。 开发 node --test test/index.test.js 许可证 MIT
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
Pxczxn/dsh-dev-hotreload
保存本地插件源码即热替换运行中的宿主,免重启
相关插件 · 工具 / 效率
破甲管控台kingcharleslzy-ai/dsh-purge
dsh-purge Community · DeepSeek Harness 社区维护版:宿主兼容、状态诊断、提示词管理、更新与本机备份回滚。基于小杨 / YuJunZhiXue 的 dsh-purge。
★ 4,330已汉化DeepSeek 客户端
74.5
网文长卷lingfengQAQ/webnovel-writer
基于 Claude Code 的长篇网文辅助创作系统,解决 AI 写作中的「遗忘」和「幻觉」问题,支持 200…
★ 7,826已汉化DSH
72.2
花束设计alchaincyf/huashu-design
一句话生成网页、原型、PPT 与信息图等可交付设计
★ 28,638已汉化DSH
71.7
多智能体协作HKUDS/AutoSwarm
AutoSwarm: Unify Your Agents. Unify Your Context (Codex · Claude Code · DeepSeek Harness · Muse · Grok · WorkBuddy· nanobot · and more)
★ 2,349已汉化DSH
71.6
Vox 拼贴视频生成Alisa0808/vox-director
🎬 Vox Director拼贴动效导演
★ 2,129已汉化DSH
71.4
Agent 演化引擎Q00/ouroboros
智能体 OS:智能体自己变聪明,我们只守住底线:面试准入、分阶段评估、带预算的进化循环。MCP 服务器,14 种运行时:Claude Code、Codex CLI、Gemini CLI、OpenCode、Copilot、Kiro 等。
★ 6,311已汉化DSH
71.4
这是你的仓库?认领条目