凌晨3点,我把‘自习室空座监控’网页发到考研群
页面很简单:一张实时座位表,绿色=空,红色=已占,灰色=维修中。用Claude Code生成,部署在cdn.woshird.com,群友扫码就能看。
发完不到10分钟,群消息炸了:
> “能加个‘预约1小时’按钮吗?”
> “我想锁定靠窗第三排!”
> “要是能显示‘最后使用时间’就完美了”
我喝了口咖啡,打开Cursor,找到seat-map.js,在renderSeat()函数里加了3行:
// 新增:显示最后使用时间
const lastUsed = seat.lastUsed ? formatTime(seat.lastUsed) : '未使用';
div.innerHTML += ⏱️ ${lastUsed};
然后——按下Ctrl+S。
Cursor右下角弹出:
> ✅ Hot update deployed to https://cdn.woshird.com/seat-20240522.html
> 🔄 All open tabs auto-refreshed (WebSockets active)
我切到微信,扫码刷新——新时间戳已出现。
我又改了style.css,把预约按钮颜色从蓝变橙,Ctrl+S → 刷新 → 橙色按钮亮了。
整个过程,没关浏览器、没清缓存、没重新发链接。群友正在看的页面,自己就变了。
这就是Cursor的「热更新部署」(Hot Update Deploy),它不是Live Server那种本地模拟,而是真·生产环境热替换。
---
🔥 它怎么做到的?(3层机制)
.html/.css/.js文件的SHA-256哈希值变化{"type":"refresh"}指令,自动location.reload()> ✅ 实测延迟:从保存到全网生效,平均1.2秒(国内节点)
---
🛠️ 实操:5步开启热更新(含避坑)
步骤1:确认项目已托管
确保你用的是
claude deploy --native或cursor deploy发布的链接(非GitHub Pages/Vercel)步骤2:启用热更新开关
Settings → Extensions → Woshird AI Tools → Enable Hot Update Deploy ✅.cursorrc,写入: {"hotUpdate": true}
步骤3:改任意文件 → Ctrl+S
支持热更新的文件类型:
.html(整页刷新).css(CSS-in-JS注入,无需刷新).js(自动eval()新逻辑,DOM保留)步骤4:验证是否生效
__WOSHIRD_HOT__ → 返回true步骤5:群内同步(关键!)
告诉用户:“页面已更新,下拉一下即可看到新功能!”(微信下拉=强制刷新)
> ⚠️ 避坑清单:
> - ❌ 不支持.json/.md热更新(需手动重部署)
> - ❌ 不支持修改外链(必须内联或用ESM动态导入)
> - ✅ 支持移动端:iOS/Android微信、QQ、钉钉全部兼容
---
🌟 真实副业场景:热更新救急清单
| 时间 | 需求 | 我怎么做 | 结果 |
|------|------|-----------|-------|
| 周一早9点 | 咖啡店老板说“价格牌太小” | 改CSS中font-size: 14px → 20px,保存 | 9:02分群友扫码已变大 |
| 周三晚8点 | 广场舞队长要加“音乐下载”按钮 | 新增,保存 | 8:03分队员已下载成功 |
| 周五凌晨1点 | 宠物医院要加“疫苗到期提醒” | 改JS逻辑,加倒计时模块,保存 | 1:04分护士扫码看到红色数字 |
热更新,不是炫技。
它是把“客户提需求”和“客户用上功能”之间的时间,从“小时级”压缩到“秒级”的终极武器。
当别人还在打包、上传、等构建、发新链接时——你已经改完、保存、群内喊一声“好了”。
这才是AI时代,属于普通人的交付速度。