跳到正文
MyDSH我的 DSH 实战笔记
English
独立维护,非DeepSeek官方;与mydsh.dev等其他MyDSH站点无关联。

首页/开发者与插件开发/开发环境与脚手架

改了不生效:热重载的真相(配置写 live 也不重载)

改完插件代码,刷新页面没变化,以为哪里配错了。

已核验版本与环境核验日期2026-11-14
宿主
0.1.2-alpha.5
配置
web profile,patchReload: live
核验日期
2026-11-14

可复制指令

# 改完插件后必须重启,别等热重载

直接说结论:改插件源码不热重载,改profile的patch层也不热重载——尽管配置里明明写着 patchReload: live。

实测过程

改什么怎么测结果
插件源码lib/index.js启动后apply写一行v1;改成写v2-changed,等15秒没有变化,日志仍是那一行v1
profile的cordis.patch.yml把插件条目改成disabled: true,等15秒没有变化,apply既没被撤销也没重跑

「live」这个词容易误解

它不等于「改了文件立刻生效」。实测两种改法都要重启进程才看得到效果。

开发期的正确循环

  1. 改代码。
  2. 重启进程(这台机器上web启动约10–20秒)。
  3. 看副作用文件有没有新增行——这是唯一能确认「新代码真的跑了」的方式。
别指望省掉重启。我第一次改完等了15秒没动静,还怀疑是不是文件没保存。写这条的目的是省掉你下一次同样的15秒——直接重启就对了。

为什么副作用比日志可靠

web默认不打info日志,插件里 ctx.logger.info(…) 什么都看不到。所以验证「代码是否被执行」只能靠外部可见的东西:写文件、往stdout打、或者改一个能被HTTP请求观察到的行为。

怎么算跑通

照着逐条对,全过才算完成。有一条没过,先解决它再往下。

  • 重启后副作用文件出现新的一行
  • 没有把「配置写live」当成「改了会立即生效」
  • 验证用的是可观测副作用,不是ctx.logger.info

会失败在哪

现象 / 原因 / 怎么办,按实际踩到的顺序写。

现象原因怎么办
改了代码但没变化没有重启进程重启;这台机器上web起来约10–20秒
日志里看不到自己的输出web默认不打info日志改用写文件这类外部可见的副作用

来源

标「已核验」的,来自本站实跑;标「公开资料整理」的,逐条附出处。