Files
makelore/.project-docs/10-decisions/adr-008-interactive-ai-app-scaffold.md
T

4.2 KiB
Raw Blame History

ADR-008: 交互式 AI 应用使用显式 Scaffold Skill

  • Status: Accepted / implemented
  • Date: 2026-09-04
  • Applies to: Project creation, ProjectType, official bundled Marketplace Plugins, scaffold Skill, release readiness

Context

历史客户端把 mini_game 和 mini_program 作为两个可发布产品类型,并在创建项目时自动生成两套业务模板。这把项目身份、起步文件和发布规则绑定在同一次创建操作中,使模板演进和平台发布约束难以独立维护。

项目服务当前已经只负责 .makelore/project.json 与 knowledge/。用户确认将小游戏和小程序合并为一个“交互式 AI 应用”类型,并把生成文件、目录以及提交审批要求放进由官方 Marketplace 管理、随签名客户端交付的 Skill。

Decision

  • 新建项目只提供规范产品类型 interactive_ai_app(显示为“交互式 AI 应用”)和 custom。ProjectType 创建后仍不可变。
  • mini_game 与 mini_program 只作为历史读取和脚手架兼容别名,在内存中归一为 interactive_ai_app。读取或运行脚手架不会改写原配置;后续普通配置变更可以保存规范值。缺少类型字段的旧项目仍归一为 custom。
  • 项目创建只生成 .makelore/project.json 和 knowledge/,不生成业务源码、依赖、锁文件或发布模板。
  • 代码内置的官方 Marketplace Plugin makelore.project-scaffold 提供显式 Skill makelore-project-scaffold。它保留 Account Library 获取、项目启用和 Agent 分配语义,但固定版本资源随 MakeLore 客户端交付,不经过 Package Store 下载。其脚本生成六个交互式 AI 应用起步文件;写入前预检全部目标,不覆盖已有路径,受控失败时只回滚本次创建的文件和目录。
  • Scaffold Skill 不安装依赖、不访问网络、不执行构建、不上传、不提交审核,也不提供 --force、类型覆盖或模板迁移状态。Main 继续独占固定 npm/Vite 构建、同字节预检、打包和上传;Works Square 继续独占服务端校验、不可变 Release 与运营审核。
  • 官方 Plugin 的 .mjs 仅因它位于客户端固定、代码所有的 bundled resource root 中而可执行。应用通过不可覆盖的 MAKELORE_NODE_EXECUTABLE 向父 Pi worker/Agent Server 提供自身 Node;不得回退系统 Node。该例外不适用于 Marketplace 下载 artifact:P0 下载包仍只接受文本/图片 Skill 资源并拒绝 .mjs。第三方 Device Package 的可执行代码继续走自身的披露与确认边界。
  • Skill 的发布检查只是只读准备度指导:区分确定阻断、源码包排除影响、运行时/平台待确认项和静态已满足项,并引用项目相对证据。它不能宣称构建、上传、审核或生产发布成功。

Consequences

  • 模板可随官方 Plugin 版本演进,不再扩大项目创建服务的职责,也不需要把脚本上传为 Marketplace artifact。
  • 旧项目无需批量迁移即可继续打开、生成脚手架和发布;新写入只使用规范类型。
  • 发布规则在 Skill 中可被 Agent 解释和预检,但权威执行仍只有 Main 与 Works Square,避免形成第二套发布实现。
  • 对外分发仍需不可变 SemVer/Git 版本、服务端 bundled Release 元数据、已安装 Windows、签名 macOS 与 native Linux 运行证据;工作区测试不能替代这些发布门禁。

Supersedes

本决定取代 2026-08-09 的双可发布类型与创建时自动生成模板行为;固定 Vite 构建、artifact contract、运营审核与公共播放边界保持不变。

  • Source commit: 959b633
  • Integration merge: 4bc3e0ea5331a7d3f3576768c0119c02c0f0f952
  • Official Marketplace source commit: ddb678b46ff10a28e04beeafcfc00c8c8a23ff9f
  • Official Marketplace integration merge: 2bc3e4420852388ce46841e05c1cbf49e80b250c
  • Source task: 20260904-project-scaffold-implementation-7e4c2a91
  • Marketplace source task: 20260904-marketplace-scaffold-client-6c4e8a21
  • Marketplace integration task: 20260904-project-scaffold-integration-client-4f2a8c71
  • Proposal: 10-decisions/proposals/20260904-project-scaffold-implementation-7e4c2a91__interactive-ai-app-type.md