{"_id":"@cao-ai/page-builder","_rev":"6-2fd8464d48fa07903f98ad0c797801a0","name":"@cao-ai/page-builder","dist-tags":{"latest":"0.4.2"},"versions":{"0.2.0":{"name":"@cao-ai/page-builder","version":"0.2.0","keywords":["lanhu","taro","design-to-code","page-builder","小程序"],"license":"MIT","_id":"@cao-ai/page-builder@0.2.0","maintainers":[{"name":"cao185493676","email":"185493676@qq.com"}],"bin":{"ui-crop":"scripts/ui-crop.js","sim-shot":"scripts/sim-shot.js","build-page":"build-page.js","lanhu-json":"scripts/lanhu-json.js","lanhu-snap":"scripts/lanhu-snap.js","page-audit":"scripts/page-audit.js","page-guard":"scripts/guard.js","slice-list":"scripts/slice-list.js","lanhu-facts":"scripts/lanhu-facts.js","lanhu-shared":"scripts/lanhu-shared.js","lanhu-modules":"scripts/lanhu-modules.js","page-inventory":"scripts/inventory.js","verify-elements":"scripts/verify-elements.js","verify-fidelity":"scripts/verify-fidelity.js"},"dist":{"shasum":"0dc7556d01346121de0fc6f337074938ab4f6f3e","tarball":"https://registry.npmjs.org/@cao-ai/page-builder/-/page-builder-0.2.0.tgz","fileCount":27,"integrity":"sha512-fHdKSIb5NcNnRTxJqV/ttcVmIxxkLqfrBvyViXTEeOWuYrD6+sb1Ny3E8C5GUIZctz7KuTr7k+d3pLqakC5NAw==","signatures":[{"sig":"MEQCIDWDRCMLbZGun9mvTnNBqTeBU3YxgvaL4RaovGonCx5QAiAgHW59mhVprOJGCKmWzZ4X9z/bKGvTEPq/McCoLHJ3SQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":215017},"engines":{"node":">=18"},"_npmUser":{"name":"cao185493676","email":"185493676@qq.com"},"_npmVersion":"10.9.3","description":"蓝湖设计稿 → Taro 页面代码生成工作流（截图/组件盘点/页面审计/生成/变更守护/还原度校验）","directories":{},"_nodeVersion":"22.19.0","dependencies":{"playwright":"^1.62.0","miniprogram-automator":"^0.12.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/page-builder_0.2.0_1788502694356_0.17358794854136583","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@cao-ai/page-builder","version":"0.2.2","keywords":["lanhu","taro","design-to-code","page-builder","小程序"],"license":"MIT","_id":"@cao-ai/page-builder@0.2.2","maintainers":[{"name":"cao185493676","email":"185493676@qq.com"}],"bin":{"ui-crop":"scripts/ui-crop.js","sim-shot":"scripts/sim-shot.js","build-page":"build-page.js","lanhu-json":"scripts/lanhu-json.js","lanhu-snap":"scripts/lanhu-snap.js","page-audit":"scripts/page-audit.js","page-guard":"scripts/guard.js","slice-list":"scripts/slice-list.js","lanhu-facts":"scripts/lanhu-facts.js","lanhu-shared":"scripts/lanhu-shared.js","lanhu-modules":"scripts/lanhu-modules.js","page-inventory":"scripts/inventory.js","verify-elements":"scripts/verify-elements.js","verify-fidelity":"scripts/verify-fidelity.js"},"dist":{"shasum":"a3de1c5ff372f7e983636468aeefda69bbf6127b","tarball":"https://registry.npmjs.org/@cao-ai/page-builder/-/page-builder-0.2.2.tgz","fileCount":28,"integrity":"sha512-iND0qweDBbWMI/MeQYdm5F50A/0s1aFwO7cboP72kfzym04eu4PG2iEWjUUCXW6DsAOc8Kpg3X1aTMonswl/Jw==","signatures":[{"sig":"MEYCIQDBHh+CWTkgxVQCM1N5cpgHh9FsNLo6elrpvQIit9GlVgIhALtreacxExPttSeA0lB+nplOY/+RnTIMQxcATG3GK6Yb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":212761},"engines":{"node":">=18"},"_npmUser":{"name":"cao185493676","email":"185493676@qq.com"},"_npmVersion":"10.9.3","description":"蓝湖设计稿 → Taro 页面代码生成工作流（截图/组件盘点/页面审计/生成/变更守护/还原度校验）","directories":{},"_nodeVersion":"22.19.0","dependencies":{"playwright":"^1.62.0","miniprogram-automator":"^0.12.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/page-builder_0.2.2_1788504262651_0.20696757542504285","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@cao-ai/page-builder","version":"0.3.0","keywords":["lanhu","taro","design-to-code","page-builder","小程序"],"license":"MIT","_id":"@cao-ai/page-builder@0.3.0","maintainers":[{"name":"cao185493676","email":"185493676@qq.com"}],"bin":{"ui-crop":"scripts/ui-crop.js","sim-shot":"scripts/sim-shot.js","page-init":"scripts/init.js","build-page":"build-page.js","lanhu-json":"scripts/lanhu-json.js","lanhu-snap":"scripts/lanhu-snap.js","page-audit":"scripts/page-audit.js","page-guard":"scripts/guard.js","slice-list":"scripts/slice-list.js","lanhu-facts":"scripts/lanhu-facts.js","lanhu-shared":"scripts/lanhu-shared.js","lanhu-modules":"scripts/lanhu-modules.js","page-inventory":"scripts/inventory.js","verify-elements":"scripts/verify-elements.js","verify-fidelity":"scripts/verify-fidelity.js"},"dist":{"shasum":"3ead61d7b635a4046ae847c6ef5713b56e486993","tarball":"https://registry.npmjs.org/@cao-ai/page-builder/-/page-builder-0.3.0.tgz","fileCount":29,"integrity":"sha512-gcWaG6NNYoWmTNjkgST44u0h9Hu/IGQAooNx+GMrKw7L1Q8SiE8S432zJggjQAnHbK7ShDR6ig7O+tX53yMZ+A==","signatures":[{"sig":"MEUCIQCLOxMLJbOI9EQd7JcHv1v8lBQEUXY2yhnLTD7J0Al8ywIgaCU8appdE3qNIN76cOTZzQbrG2++C4UYT9EN2nKRs0Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":218271},"engines":{"node":">=18"},"_npmUser":{"name":"cao185493676","email":"185493676@qq.com"},"_npmVersion":"10.9.3","description":"蓝湖设计稿 → Taro 页面代码生成工作流（截图/组件盘点/页面审计/生成/变更守护/还原度校验）","directories":{},"_nodeVersion":"22.19.0","dependencies":{"playwright":"^1.62.0","miniprogram-automator":"^0.12.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/page-builder_0.3.0_1788518450750_0.6311874333556649","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@cao-ai/page-builder","version":"0.4.0","keywords":["lanhu","taro","design-to-code","page-builder","小程序"],"license":"MIT","_id":"@cao-ai/page-builder@0.4.0","maintainers":[{"name":"cao185493676","email":"185493676@qq.com"}],"bin":{"ui-crop":"scripts/ui-crop.js","sim-shot":"scripts/sim-shot.js","page-init":"scripts/init.js","build-page":"build-page.js","lanhu-json":"scripts/lanhu-json.js","lanhu-snap":"scripts/lanhu-snap.js","page-audit":"scripts/page-audit.js","page-guard":"scripts/guard.js","slice-list":"scripts/slice-list.js","lanhu-facts":"scripts/lanhu-facts.js","lanhu-shared":"scripts/lanhu-shared.js","lanhu-modules":"scripts/lanhu-modules.js","page-inventory":"scripts/inventory.js","verify-elements":"scripts/verify-elements.js","verify-fidelity":"scripts/verify-fidelity.js"},"dist":{"shasum":"351f0373851fb47c6940ed21c262f1a39aa92ffb","tarball":"https://registry.npmjs.org/@cao-ai/page-builder/-/page-builder-0.4.0.tgz","fileCount":29,"integrity":"sha512-VKj4rSsvuxKSryKM/ho+lqFMm0p7aNb7TgOxAPagymTgFM8RqN4An8B/lMZYQiBGyW+h7O5K5MWKMnZDRhuC0w==","signatures":[{"sig":"MEYCIQD1j3D1tqjOtor9B/f1gruRvrVmbPNYNq7Op0quEGSYmAIhALxFWinWlX+HPQ16/IF/9WurEzP0qc31wRwGVeB+oYex","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":220337},"engines":{"node":">=18"},"_npmUser":{"name":"cao185493676","email":"185493676@qq.com"},"_npmVersion":"10.9.3","description":"蓝湖设计稿 → Taro 页面代码生成工作流（截图/组件盘点/页面审计/生成/变更守护/还原度校验）","directories":{},"_nodeVersion":"22.19.0","dependencies":{"playwright":"^1.62.0","miniprogram-automator":"^0.12.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/page-builder_0.4.0_1788519742682_0.8843547203305986","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@cao-ai/page-builder","version":"0.4.1","keywords":["lanhu","taro","design-to-code","page-builder","小程序"],"license":"MIT","_id":"@cao-ai/page-builder@0.4.1","maintainers":[{"name":"cao185493676","email":"185493676@qq.com"}],"bin":{"ui-crop":"scripts/ui-crop.js","sim-shot":"scripts/sim-shot.js","page-init":"scripts/init.js","build-page":"build-page.js","lanhu-json":"scripts/lanhu-json.js","lanhu-snap":"scripts/lanhu-snap.js","page-audit":"scripts/page-audit.js","page-guard":"scripts/guard.js","slice-list":"scripts/slice-list.js","lanhu-facts":"scripts/lanhu-facts.js","lanhu-shared":"scripts/lanhu-shared.js","lanhu-modules":"scripts/lanhu-modules.js","page-inventory":"scripts/inventory.js","verify-elements":"scripts/verify-elements.js","verify-fidelity":"scripts/verify-fidelity.js"},"dist":{"shasum":"44b08708a570f409532ce24720e473b9529dfca2","tarball":"https://registry.npmjs.org/@cao-ai/page-builder/-/page-builder-0.4.1.tgz","fileCount":29,"integrity":"sha512-C3dxUvaLFmsfDjWeKIujgGAD+4fikSGvpoGHNGzLXcfdeJPmvZ3UupoG+mhjZR/goLPrUFX9mnmxz5zUysmQkg==","signatures":[{"sig":"MEUCIQD/oxCaYI8/CauE6hFDQbI9dCTAuvde0OYc0CjPos5bVQIgGySsmcFGg/u86lfQjHXUyi7ThLzzb0z8UW/ieixRCS4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":221622},"engines":{"node":">=18"},"_npmUser":{"name":"cao185493676","email":"185493676@qq.com"},"_npmVersion":"10.9.3","description":"蓝湖设计稿 → Taro 页面代码生成工作流（截图/组件盘点/页面审计/生成/变更守护/还原度校验）","directories":{},"_nodeVersion":"22.19.0","dependencies":{"playwright":"^1.62.0","miniprogram-automator":"^0.12.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/page-builder_0.4.1_1788542621127_0.6704188738156416","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"_id":"@cao-ai/page-builder@0.4.2","bin":{"ui-crop":"scripts/ui-crop.js","sim-shot":"scripts/sim-shot.js","page-init":"scripts/init.js","build-page":"build-page.js","lanhu-json":"scripts/lanhu-json.js","lanhu-snap":"scripts/lanhu-snap.js","page-audit":"scripts/page-audit.js","page-guard":"scripts/guard.js","slice-list":"scripts/slice-list.js","lanhu-facts":"scripts/lanhu-facts.js","lanhu-shared":"scripts/lanhu-shared.js","lanhu-modules":"scripts/lanhu-modules.js","page-inventory":"scripts/inventory.js","verify-elements":"scripts/verify-elements.js","verify-fidelity":"scripts/verify-fidelity.js"},"dist":{"shasum":"5fb473b87efd0e85e719307df0b68227d98a51e0","tarball":"https://registry.npmjs.org/@cao-ai/page-builder/-/page-builder-0.4.2.tgz","fileCount":31,"integrity":"sha512-wtHb9YrY1nit56YgWsevv+kX6jNJURmmTvW/kPVFkMgSnG98lbNsBxAdeCVy86xWo0C6SfzfTgzFDOpYEPgZVw==","signatures":[{"sig":"MEQCIFQCu2NyNAkiK6QvXNGHubcOy0WwYJKnAr3Nd6odct9oAiAkOGP0Zm6odQl2m6PpLMYcSR+8+6bdtCZ0pue5hpXyrg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIBLjnQszdZuuey7TlzJdqjW0KPBS+ebJsnMe7iK9hxqwAiEAwXROy+aKi0KXoO+8BTHIQUSCcoiC+am0l5Hem3rLFY0="}],"unpackedSize":229651},"name":"@cao-ai/page-builder","engines":{"node":">=18"},"license":"MIT","version":"0.4.2","_npmUser":{"name":"cao185493676","email":"185493676@qq.com"},"keywords":["lanhu","taro","design-to-code","page-builder","小程序"],"_npmVersion":"10.9.3","description":"蓝湖设计稿 → Taro 页面代码生成工作流（截图/组件盘点/页面审计/生成/变更守护/还原度校验）","directories":{},"maintainers":[{"name":"cao185493676","email":"185493676@qq.com"}],"_nodeVersion":"22.19.0","dependencies":{"playwright":"^1.62.0","miniprogram-automator":"^0.12.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/page-builder_0.4.2_1789884091609_0.4724608581285783"}}},"time":{"created":"2026-09-04T06:18:14.163Z","modified":"2026-09-20T06:01:31.922Z","0.2.0":"2026-09-04T06:18:14.518Z","0.2.2":"2026-09-04T06:44:22.801Z","0.3.0":"2026-09-04T10:40:50.886Z","0.4.0":"2026-09-04T11:02:22.822Z","0.4.1":"2026-09-04T17:23:41.290Z","0.4.2":"2026-09-20T06:01:31.712Z"},"license":"MIT","keywords":["lanhu","taro","design-to-code","page-builder","小程序"],"description":"蓝湖设计稿 → Taro 页面代码生成工作流（截图/组件盘点/页面审计/生成/变更守护/还原度校验）","maintainers":[{"name":"cao185493676","email":"185493676@qq.com"}],"readme":"# @cao-ai/page-builder\r\n\r\n蓝湖设计稿 → 自动生成 Taro 页面代码。AI 看图按协议生成，校验到还原度达标为止。\r\n\r\n---\r\n\r\n## 怎么用（3 步）\r\n\r\n**第 1 步 · 安装**（一次性）：\r\n\r\n```bash\r\nnpm i -D @cao-ai/page-builder\r\nnpx playwright install chromium        # 浏览器内核（新机器必须跑一次）\r\npip install pillow numpy                # Python 3.10+，像素校验用\r\n```\r\n\r\n> pnpm monorepo 里 `npx playwright` 可能找不到传递依赖的 bin，用 `npx -p playwright@1.62.0 playwright install chromium` 代替（版本需与包依赖的 playwright 一致）。\r\n\r\n**第 2 步 · 初始化**（一次性，在项目根执行）：\r\n\r\n```bash\r\nnpx page-init .     # 建工作目录 + 写配置(projectRoot=当前目录) + gitignore + AGENTS.md + 登录蓝湖 + 组件盘点\r\n```\r\n\r\n一条命令替代原来的 mkdir / cp / 手改 config / gitignore / 复制 AGENTS.md / login / inventory 七步。重复运行安全：已有 config 不覆盖、已有 AGENTS.md 不覆盖（只提示合并）、登录态存在不重复登录；换目录传路径即可：`npx page-init ../my-app`。想拆开手动执行见使用说明书第 3 节。\r\n\r\n**第 3 步 · 让 AI 发现这个工作流**（page-init 已自动完成）：\r\n\r\npage-init 会把包内 `templates/AGENTS.md` 复制到项目根 `AGENTS.md`；若项目根**已有** AGENTS.md（可能装着其他工作流的指令），不会覆盖，只打印合并提示——请把模板里的相关小节并进去（Cursor 用户放 `.cursorrules`）。之后在 AI 会话里说：\r\n\r\n> 画个页面：https://lanhuapp.com/...\r\n\r\nAI 就会自动走完整流程：拉设计稿 → 生成代码 → 模拟器截图校验 → 修复到还原度达标。你只需验收。\r\n\r\n> 不想动 AGENTS.md？每次在会话里说完整话术也行：**\"用 page-builder 根据这个蓝湖链接画个页面，读 node_modules/@cao-ai/page-builder/README.md 按流程执行\"**\r\n\r\n---\r\n\r\n## 下面是给 AI 执行时读的参考\r\n\r\n> 以下内容是 AI 在生成页面时需要遵循的命令、流程和规则。人只需要看上面的 3 步。\r\n\r\n## 命令参考\r\n\r\n| 命令 | 作用 |\r\n|---|---|\r\n| `page-init <项目根路径>` | 初始化（建目录+配置+gitignore+AGENTS.md+登录+盘点） |\r\n| `lanhu-snap login` | 蓝湖登录（一次，存登录态） |\r\n| `lanhu-snap <链接> [--name 名]` / `--all` | 拉取画板 @2x 原图 |\r\n| `lanhu-json --pid xxx --tid xxx` | 拉全部画板 FigmaJSON |\r\n| `lanhu-snap <链接> --slices-by-json --name 页` | 按需拉切图（公开 URL 无需登录） |\r\n| `lanhu-facts <页面名>` | 生成事实表（文字/颜色/尺寸/切图，校验参考） |\r\n| `lanhu-modules` | 生成业务蓝图（页面→分包归类） |\r\n| `lanhu-shared` | 生成公共组件候选清单 |\r\n| `slice-list <页面名>` | 列出该页所有切图 URL + frame |\r\n| `verify-elements <页面名> --code <源码目录>` | 元素完整性反查（JSON 反查漏画元素） |\r\n| `sim-shot <项目根> <页面名> [--page pages/...]` | 模拟器截图（automator，输出 sim.png） |\r\n| `verify-fidelity <页面名>` | 还原度校验（全层：像素/分区/颜色/漂移/元素/网格/热力图） |\r\n| `heatmap-scan <页面名>` | 逐元素漂移扫描（Python，四维+线性拟合） |\r\n| `page-inventory` | 组件盘点 |\r\n| `page-guard snapshot/backup/check/restore` | 变更守护（生成前 snapshot+backup，生成后 check） |\r\n| `build-page <链接> [--all]` | 数据准备 + 产出生成任务文件 |\r\n\r\n## 执行流程（AI 生成页面时按此走）\r\n\r\n1. **读配置**：`.page-builder/config.json`（projectRoot 未配置先让用户填）\r\n2. **拉数据**：`lanhu-snap <链接> [--all]`（原图→designs/ui/）+ `lanhu-json --pid xxx --tid xxx`（JSON→designs/json/）\r\n3. **盘点**（components.json 不存在时）：`page-inventory`\r\n4. **守护快照**（生成前必做）：`page-guard snapshot` + `page-guard backup`\r\n5. **生成页面**：读 generation-protocol.md + conventions.md + components.json + UI 截图（唯一画页面依据）+ project-blueprint.md（分包）+ 按需拉切图 → 写代码到 `<projectRoot>/<appDir>/src/pages/`\r\n6. **变更守护**：`page-guard check`（exit 1=破坏性变更→restore；exit 3=没快照→回到第 4 步）\r\n7. **验收**（每页必做）：\r\n   - 编译：`pnpm --filter <appDir> build:weapp`\r\n   - 元素反查：`verify-elements <页面名> --code <页面源码目录>`\r\n   - 模拟器截图：`sim-shot <项目根> <页面名>`\r\n   - 还原度校验：`verify-fidelity <页面名>` + `heatmap-scan <页面名>`\r\n   - 红区/漂移逐项修复 → 重建 → 重跑 → 直到无差异\r\n   - **\"编译通过\"≠完成**\r\n\r\n## 硬性规则\r\n\r\n- 画页面**只参考 UI 截图**（designs/ui/），JSON 仅取切图 + 画后反查元素\r\n- 写组件前**必查 components.json**，禁止猜 props\r\n- 页面写入对应分包（主包只放 tabbar，其余按 blueprint 进 subPackages）\r\n- 业务数据用本地 mock，注释 `// mock 数据，待接接口`\r\n- 图片来源：JSON imageUrl → 切图缓存 → 原图裁切（不用 asset 序号猜）\r\n- 组件变更三分类：局部适配走 props；additive 放行记日志；breaking 禁止\r\n- 每页必跑校验三件套（verify-elements → sim-shot → verify-fidelity），真实 UI 区高差异格为 0 才算通过\r\n\r\n## 白屏排查（产物一致性，2026-09-20 固化）\r\n\r\n**症状**：模拟器整页白屏，**连首页和其它页也白**；控制台报 `Cannot read properties of null (reading 'mount')`。\r\n\r\n**根因**：`dist/weapp` 被写成了「半新半旧」——最常见是**同一个项目同时跑了两个 `taro build --watch`**（`npm run dev:weapp` 起一个、脚本/IDE/另一个终端又起一个），两套进程互相覆盖产物。这时入口 `app.js` 与 `app.json` 不是同一次构建的产物，小程序整个 app 起不来（Taro 的 `Current.app` 为 null），所以**任何页面**都白，不只是正在画的那页。\r\n\r\n**判定**（别只凭 mtime 就删产物）：\r\n\r\n```bash\r\n# ① 数 watcher：正常只有 1 套（= 2 个 node 进程：cross-env + taro 本体），>1 套就是它\r\nwmic process where \"name='node.exe'\" get ProcessId,CommandLine | findstr /i \"taro\"\r\n# ② 看产物是否同代：app.js / app.json / common.js 的大小与时间明显差代（注意 app.json 每次构建都会重写、\r\n#    app.js 内容不变就不重写，所以 mtime 不同本身不算证据，要和「app 起不来 + mount 报错 + 大小差代」一起判）\r\nls -l <项目>/dist/weapp/app.js <项目>/dist/weapp/app.json\r\n```\r\n\r\n**修复（按顺序做完，跳过任何一步都可能复发）**：\r\n\r\n1. 杀掉**所有** watcher 进程（`taskkill /F /PID <每个>`，或任务管理器里结束那些 node）；\r\n2. 删掉整个 `dist/weapp`（watch 模式补不回被写坏的产物）；\r\n3. 跑**一次**全量构建：`npm run dev:weapp`（或 `npx cross-env REACT_APP_ENV=dev taro build --type weapp`，**不带 `--watch`**）；\r\n4. 只重新起**一个** watcher；顺手 `cli.bat cache --clean compile`（清编译缓存，白屏根治手段）并重开项目窗口。\r\n\r\n**预防**：一个项目只留一个 watcher。换分支 / 装依赖 / 切构架后如果白屏，先按上面判定，别反复点工具里的「编译」。\r\n\r\n**清缓存的两层别搞混**：`cli.bat cache --clean compile` 清**编译缓存**（白屏唯一根治手段，sim-shot 已内置）；`debug_clear_cache cleanAllSimulatorCache` 只清**运行时缓存**，对白屏无效。\r\n\r\n## 已知限制\r\n\r\n- 验收以微信开发者工具模拟器为准（H5 是代理渲染已废弃）\r\n- 登录蓝湖（`lanhu-snap login`）会弹出真实浏览器窗口等你操作，无头模式跑不了登录；新机器必须先 `npx playwright install chromium`（或装有 Edge 作回退）\r\n- 模拟器截图需工具登录 + 开启 automator 端口（`cli.bat auto --auto-port 9420`），工具重启后需重开\r\n- guard 的 additive 判定是行级的，核心组件 additive 改动建议人工 diff\r\n- **一个项目同时只跑一个 `taro build --watch`**：两个 watcher 会把 `dist/weapp` 写坏 → 任何页面白屏（判定与修复见上面「白屏排查」）\r\n\r\n## 许可\r\n\r\nMIT","readmeFilename":"README.md"}