AGC 小红书导出:validate 去 strict 与增强层告警,pack 加落点预警

- validate.mjs:scanJsSyntax 先 stripJsNoise 剥注释与字符串,`"#e8f4ff"` / `'#hit'` 不再误判为 ES2018
- validate.mjs:删除 MODERN_RUNTIME_API、CSS_MODERN_PATTERNS / CSS_MODERN_FEATURE 与 --strict,退出码只由 ERROR 决定
- pack.mjs:--zip-out 相对 cwd 且落在 <cwd>/.export/ 时打 workdir 警告,打印 cwd 与绝对落点
- SKILL.md:产物为项目根 .export/xhs-minitool.zip,game/ 子工程写 ../.export/...;参数表去掉 --strict
- 测试:增强层放行、JS 噪音不误报、真私有字段仍报、warning 也退出 0、workdir 预警
- manifest:vite-export-xhs-minitool 指纹与 version 同步到 2026-08-26.56
- decision-log.md:记录本次 validate/pack 收敛
This commit is contained in:
2026-10-06 17:09:49 +08:00
parent df744ae155
commit a96c0e6209
7 changed files with 157 additions and 45 deletions
@@ -1,5 +1,15 @@
# 决策记录
## 2026-10-06 小红书导出 validate/pack:去掉 strict 与增强层告警,扫 JS 先剥字符串/注释,zip 落点带 cwd 预警
- 背景:真实项目首轮适配反馈三处。① `validate.mjs` 的 `/#[A-Za-z_$][\w$]*/g`(class 私有字段)直接在原始文本上匹配,把 `"#e8f4ff"`、`document.querySelector('#hit')` 误判为 ES2018 语法并报 ERROR,把排查引向「构建链没转译」。② `--strict` 让 references 明确鼓励的「Chrome 61 基线 + 能力检测后的增强层」(`CSS_MODERN_FEATURE`、`MODERN_RUNTIME_API`)也判失败,想 strict 通过只能砍增强层。③ 宿主在**项目根** `.export/xhs-minitool.zip` 找产物,而 `--zip-out` 相对 cwd 解析;npm 脚本挂在 `game/` 子工程时 `.export/...` 会落到 `game/.export/`,没有任何提示。
- 决策(扫描先剥噪音):`scanJsSyntax` 先过 `stripJsNoise`——把注释与字符串字面量替换成等长空白(保留换行),只对真代码跑 ESM 与 ES2018 检测;模板 `${...}` 仍按代码处理。`"#e8f4ff"`、`'#hit'`、注释里的 `obj?.c` 不再命中,真 `#count` 私有字段仍报错。
- 决策(退出码只由 ERROR 决定):删掉 `MODERN_RUNTIME_API` 与 `CSS_MODERN_PATTERNS` / `CSS_MODERN_FEATURE`,删掉 `--strict`。增强层写法交给 `references/css-compatibility.md`、`js-compatibility.md` 的能力检测要求约束,`validate.mjs` 不再把「能用但需检测」判失败。
- 决策(产物落点有确定写法与预警):`SKILL.md` 写明产物是项目根的 `.export/xhs-minitool.zip`,`game/` 子工程写 `../.export/xhs-minitool.zip`;`pack.mjs` 在 `--zip-out` 为相对路径且落点位于 `<cwd>/.export/` 时打 `[warn]`,打印 cwd 与绝对落点(`../.export/...`、绝对路径或其他相对位置不触发)。
- 影响范围:`resources/agc-skills/vite-export-xhs-minitool/{SKILL.md,scripts/{validate.mjs,pack.mjs}}`、其 `resources/agc-skills/manifest.json` 指纹(version=2026-08-26.56)、隐藏测试 `scripts/.validate.test.mjs`、`scripts/.pack.test.mjs`。宿主 `export/draft/xhs_minitool` 链路与 `xhsMinitoolInstruction.ts` 契约常量不变。
- 验证方式:`node --test scripts/.validate.test.mjs scripts/.pack.test.mjs scripts/.vite.config.xhs-minitool.test.mjs`(34 passed)、`npm run agc:skill-pack:check`、`git diff --check`、`npm run check:encoding`。
- 边界:「web 与小工具共用同一 `game/index.html`」是默认姿势,不需要另起 root;只有入口 HTML 确实不同才需要并存 recipe,本次未写,留待需要时补。
## 2026-10-06 新增 agc_install_skill_resource:Skill 附件由宿主直接落盘,不走模型正文
- 背景:`vite-export-xhs-minitool` 等审核 Skill 要把自带脚本(`scripts/validate.mjs` 约 40 KB、`pack.mjs`、`vite.config.*.mjs`)原样复制进用户项目。`agc_read_skill_resource` 的大文件正文会被模型上下文截断,重抄必然失真;原生 `cp` 在 DirectProject 只读沙箱下被审批闸门拒绝。两条路都走不通。