From 58f8c2065f91088f5d061fc9b6fb3e36b3f6d43e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=BE=B7=E5=AE=87?= Date: Tue, 6 Oct 2026 16:21:19 +0800 Subject: [PATCH] =?UTF-8?q?AGC=20=E5=B0=8F=E7=BA=A2=E4=B9=A6=E5=AF=BC?= =?UTF-8?q?=E5=87=BA=20skill=EF=BC=9A=E6=B5=8B=E8=AF=95=E6=8C=89=E6=A8=A1?= =?UTF-8?q?=E5=9D=97=E5=91=BD=E5=90=8D=EF=BC=8C=E5=8F=96=E8=88=8D=E8=AE=B0?= =?UTF-8?q?=E5=BD=95=E6=94=B9=E5=9B=9E=E6=B8=85=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 隐藏测试 .vite-config.test.mjs 重命名为 .vite.config.xhs-minitool.test.mjs,与 pack.mjs → .pack.test.mjs、validate.mjs → .validate.test.mjs 的命名口径一致; - .selective_rule.txt 去掉日期段落,把「二次清理」的条目并进 SKILL.md / zip-artifact-spec.md 对应条目,恢复为逐文件「删除与去处」清单; - decision-log 补记 dist 收尾归 Vite 插件、pack 只读打 zip 的决策、失败语义与验证口径; - skill-pack 指纹无需重算:本次改动均为隐藏文件与文档,manifest 仍为 2026-08-26.51。 --- .../.selective_rule.txt | 30 +++---------------- ...mjs => .vite.config.xhs-minitool.test.mjs} | 0 .../shared-memory/decision-log.md | 10 +++++++ 3 files changed, 14 insertions(+), 26 deletions(-) rename apps/ai-game-creator-shell/src-tauri/resources/agc-skills/vite-export-xhs-minitool/scripts/{.vite-config.test.mjs => .vite.config.xhs-minitool.test.mjs} (100%) diff --git a/apps/ai-game-creator-shell/src-tauri/resources/agc-skills/vite-export-xhs-minitool/.selective_rule.txt b/apps/ai-game-creator-shell/src-tauri/resources/agc-skills/vite-export-xhs-minitool/.selective_rule.txt index cbfb8d2df..90e92c189 100644 --- a/apps/ai-game-creator-shell/src-tauri/resources/agc-skills/vite-export-xhs-minitool/.selective_rule.txt +++ b/apps/ai-game-creator-shell/src-tauri/resources/agc-skills/vite-export-xhs-minitool/.selective_rule.txt @@ -1,5 +1,4 @@ 【取舍记录】minitool-zip-builder MUST-only 清理 -日期:2026-10-04 原则 - references/ 只保留 MUST(必须 / 须 / 禁止 / 不得),非 MUST 的建议、可选、工具用法全部删除。 @@ -15,12 +14,15 @@ - 步骤 9:删掉 tsc / Vite 已保证项(语法错误、未定义函数、加载顺序),改为指向 references/MANUAL_CHECKS.md。 - 步骤 10:删掉 Node / Python / 人工分支,改为运行 validate.mjs 与 pack.mjs。 - 步骤 3 与 Reference 表:删掉已不存在的「目录结构 / 路径规则 / 打包自检」描述。 + - 被外部精简重写为 vite-export-xhs-minitool,只剩 Reference 表,原步骤 9 / 10 已不存在;Reference 表指向「index.html 要求」。 - zip-artifact-spec.md - 删 §1 目录结构与打包方式:pack.mjs 保证 zip 根 index.html、不多套层。 - 删 §4 路径与引用规则:base:'./' 与 pack.mjs 保证相对路径。 - 删 §6 打包前自检:validate / pack / MANUAL_CHECKS 已覆盖。 - 删 §5 表格里「资源全为相对路径」「脚本外置」两行(前者 Vite 保证,后者 §3 CSP 已声明)。 - - 保留 §2 文件类型、§3 容器 CSP、§5 index.html 要求。 + - 删 §5 的「index.html 模板」整段 HTML 骨架与其中的 reset / 字体 CSS;标题改为「index.html 要求」,只留要求表与 说明。 + - 原因:模板是 pack 之后的 dist 形状,对 Vite 源 index.html 是错的(源需要 <script type="module"> 入口);reset / 字体 CSS 不是容器要求;doctype / charset / lang 由 validate 的 *_MISSING 兜。 + - 保留 §2 文件类型、§3 容器 CSP、§5 index.html 要求(viewport 含 width=device-width, initial-scale=1.0, viewport-fit=cover;不用 <base href>;不引用外部资源;不自建 CSP <meta>)。 - device-capabilities.md - 删 §6 能力扫描清单:validate 的禁用 API code 已全覆盖。 - 保留 §1–§5(可用能力、禁用能力与替代、常见交互写法)。 @@ -53,27 +55,3 @@ 口径说明(避免后续误判为缺失) - zip-artifact-spec.md 删除 §1 / §4 / §6 后,保留 §2 / §3 / §5,编号故意留空,未重排,避免打断跨文件引用。 - device-capabilities.md 现止于 §5;performance-budget.md 现止于 §5;js-compatibility.md 现止于 §4;css-compatibility.md 现止于 §6。 - -后续更新规则 -- references/ 只加 MUST。建议、经验、数值标定写进脚本(带检查码)或本文件,不写回 references。 - -二次清理(同日) -- zip-artifact-spec.md §5:删掉「index.html 模板」整段 HTML 骨架和其中的 reset / 字体 CSS;标题改为「index.html 要求」,只留要求表与 <title> 说明。 - - 原因:模板是 pack 之后的 dist 形状,对 Vite 源 index.html 是错的(源需要 <script type="module"> 入口);reset / 字体 CSS 不是容器要求;doctype / charset / lang 由 validate 的 *_MISSING 兜。 - - 保留的 4 条要求:viewport 含 width=device-width, initial-scale=1.0, viewport-fit=cover;不用 <base href>;不引用外部资源;不自建 CSP <meta>。 -- SKILL.md:被外部精简重写为 vite-export-xhs-minitool,只剩 Reference 表,原步骤 9 / 10 已不存在;Reference 表指向「index.html 要求」。 -- 本文件名由「取舍记录.txt」改为 selective_rule.txt。 - -目录调整(同日) -- packages/pack-script、packages/validate-script、packages/vite-config-example 已合并进本 skill: - - scripts/pack.mjs(原 packages/pack-script/pack.mjs) - - scripts/validate.mjs(原 packages/validate-script/scripts/validate-xhs-tool.mjs,已改名) - - scripts/vite.config.xhs-minitool.mjs(原 packages/vite-config-example/vite.config.xhs-minitool.mjs) - - references/MANUAL_CHECKS.md(原 packages/validate-script/MANUAL_CHECKS.md) -- pack.mjs 的 import 改为 './validate.mjs';performance-budget.md 的门禁链接改为 '../scripts/validate.mjs';xhs/packages 已空。 - -收尾职责归位(2026-10-05) -- 背景:pack.mjs 之前会就地改写 dist(把 index.html 改成相对路径 / 去 module 痕迹 / 脚本移到 body 末尾 / 删空目录 / 兜底复制 icon),再打 zip。dist 只有跑完 pack 才合规,validate 看到的是中间态。 -- 决策:dist 收尾移进 `scripts/vite.config.xhs-minitool.mjs` 的 `xhsMinitoolArtifactPlugin`(`closeBundle` 钩子,`apply: 'build'` + `enforce: 'post'`)。构建结束 dist 即合规;`pack.mjs` 只做白名单预检与打 zip,不再写盘。 -- 口径:编译约束留在 `minitoolBaseConfig`,收尾只在插件里做一次,禁止在 pack 或项目脚本里重复。 -- 验证:`scripts/.vite-config.test.mjs` 真跑一遍 `vite build`,断言 dist 无 `type="module"` / `crossorigin` / 根路径、脚本在 body 末尾、空目录被清、`copyPublicDir: false` 时 icon 兜底;`scripts/.pack.test.mjs` 断言 pack 不再改写 index.html。 diff --git a/apps/ai-game-creator-shell/src-tauri/resources/agc-skills/vite-export-xhs-minitool/scripts/.vite-config.test.mjs b/apps/ai-game-creator-shell/src-tauri/resources/agc-skills/vite-export-xhs-minitool/scripts/.vite.config.xhs-minitool.test.mjs similarity index 100% rename from apps/ai-game-creator-shell/src-tauri/resources/agc-skills/vite-export-xhs-minitool/scripts/.vite-config.test.mjs rename to apps/ai-game-creator-shell/src-tauri/resources/agc-skills/vite-export-xhs-minitool/scripts/.vite.config.xhs-minitool.test.mjs diff --git a/docs/project-memory/shared-memory/decision-log.md b/docs/project-memory/shared-memory/decision-log.md index 5cc080747..3aee2bb5a 100644 --- a/docs/project-memory/shared-memory/decision-log.md +++ b/docs/project-memory/shared-memory/decision-log.md @@ -1,5 +1,15 @@ # 决策记录 +## 2026-10-06 小红书导出 skill:dist 收尾归 Vite 插件,pack 只读打 zip + +- 背景:`vite-export-xhs-minitool` 的 `pack.mjs` 之前会就地改写 dist(相对路径 / 去 `type="module"` / `crossorigin` / 脚本移到 body 末尾 / 清空目录 / 兜底复制 icon)再打 zip;dist 只有在跑完 pack 后才合规,`validate.mjs` 看到的是中间态,打包脚本也因此同时承担「整理产物」与「打 zip」两件事。 +- 决策(职责边界):dist 收尾移进 `scripts/vite.config.xhs-minitool.mjs` 的 `xhsMinitoolArtifactPlugin`(`apply: 'build'` + `enforce: 'post'` 的 `closeBundle`);`minitoolBaseConfig` 只保留编译约束。构建结束 dist 即合规,`pack.mjs` 只做白名单预检与打 zip,不再写盘;`--vite-built-dir` / `--zip-out` 契约与产物落点不变,已适配项目无需改脚本。 +- 决策(失败语义):rollup 在构建失败时也会调 `closeBundle`,插件用 `buildEnd(error)` 记下失败并直接返回,避免留下只复制了 icon 的半成品 dist,也避免用插件的「index.html 不存在」盖掉真正的语法报错。 +- 注:本条同时取代 2026-10-05 条目里 `--out-dir` 与「就地删掉非白名单扩展名文件」的旧描述——现行参数是 `--vite-built-dir`,且只预检、不删除、不改写。 +- 影响范围:`resources/agc-skills/vite-export-xhs-minitool/{SKILL.md,.selective_rule.txt,scripts/{pack.mjs,vite.config.xhs-minitool.mjs}}` 与其 `resources/agc-skills/manifest.json` 指纹、`scripts/.pack.test.mjs`(补「pack 不改写 index.html」)、新增隐藏开发辅助 `scripts/.vite.config.xhs-minitool.test.mjs`(真跑 `vite build` 断言收尾、`copyPublicDir: false` 的 icon 兜底、失败不收尾、`pruneEmptyDirs` 只删空目录)。隐藏测试不进清单、不改 `skill_pack.rs` 的 `include_bytes!` 条目数(仍 36),manifest version=2026-08-26.51。 +- 验证方式:`node --test scripts/.vite.config.xhs-minitool.test.mjs scripts/.pack.test.mjs scripts/.validate.test.mjs`(30 passed)、`npm run agc:skill-pack:check`、`git diff --check`、`npm run check:encoding`。 +- 边界:仍是小红书小工具一个目标的适配脚本;宿主 `export/draft/xhs_minitool` 链路不变,第二目标出现时再抽 target 描述符。 + ## 2026-10-05 导出产物面板:适配归 code agent,宿主只校验并运行项目脚本 - 背景:AGC 需要把项目导出成第三方平台制品,首个目标是小红书小工具。平台不给上传 API,用户只能人工上传;而制品规范(zip 根目录、扩展名白名单、尺寸上限、`index.html` 要求)会随平台变化。把规范复刻进 Rust 等于在客户端养一份会过期的第二真源。