diff --git a/.agents/knowledge/glossary.md b/.agents/knowledge/glossary.md index d4b5448a..ca5ac05c 100644 --- a/.agents/knowledge/glossary.md +++ b/.agents/knowledge/glossary.md @@ -37,10 +37,10 @@ | **资产图**(Asset Graph) | studio 的多资产组合关系模型(T-STU-02):描述图元/角色/特效/场景/界面/音乐六类资产如何组装成一款游戏;区别于"资产空间"(创作者素材仓库)。 | | **三种创作模式** | 覆盖小白到专业:模式 A 一句话生成(Prompt→成品,AI 主导)、模式 B 资产驱动创作(先攒资产再组装,AI 辅助单项)、模式 C 工作流编排(专业创作者在 Dify 可视化自定义节点)。 | | **资产空间**(Asset Workspace) | 每个创作者独立、归其所有的素材空间,含视觉/音频/设计/商业化四类资产;每类资产支持 AI 生成、手动上传、市场获取三种产出方式。 | -| **DataPermission 之外的隔离** | 匿名玩家通过 framework 层扩展的"匿名 Token"机制接入,只能浏览试玩、不能发布/收藏/进后台。 | +| **DataPermission 之外的隔离** | 匿名玩家=**免登读路径**(读端点 `@PermitAll` + 前端 anonId 透传),只能浏览试玩、不能发布/收藏/进后台。⚠️ 2026-06-10 显式变更(鉴权拍板 §9-7=B):**不再走 framework 层"匿名 Token"机制**——anonId 为纯客户端生成、身份不可信,防伪造/刷量由 telemetry 聚合侧按 anonId/IP 异常剔除兜底(见 `docs/agent-specs/2026-06-10-真实鉴权与匿名玩家-review.md` §5A/§9.1)。 | | **eCPM** | 每千次广告展示收益,是广告变现核心指标;平台用游戏内容标签 + 玩家画像优化 eCPM。 | | **T+1(结算周期)** | 自有渠道广告分成次日(T+1)自动入账创作者钱包,外部渠道按月结算;满 5 元即可提现。 | -| **分成比例** | 广告收益按创作者层级分成:小白 80% / 进阶 75% / 专业 70%(投资人叙事统一口径"创作者拿 80%")。 | +| **分成比例** | 广告收益按创作者层级分成:小白 80% / 进阶 75% / 专业 70%(投资人叙事统一口径"创作者拿 80%";D3 拍板 MVP 统一 80%)。**R3 叠加规则(2026-06-10 拍板)**:基数=平台从渠道实收**净额**(微信 IAA 渠道先扣 40%);使用 IP 素材时 IP 授权分成 15-25% **从创作者份额内扣**(创作者实得 55-65%);平台恒留净额 20%。模型见 `docs/mvp/单位经济敏感性模型.md`。 | | **SLO / Error Budget** | 服务可用性目标与可消耗的不可用预算:游戏流 API 99.5%(月 3.6h)、AI 生成 99%(月 7.2h)、支付 99.9%(月 43min)。 | | **最终一致性 + 补偿** | 跨模块写操作尽量不用分布式事务,改"本地事务 + MQ 事件 + 失败补偿",定时任务扫描超 5 分钟"中间态"记录重试或告警。 | | **Golden Config 回归** | 用模板标准配置样例做比对回归,确保模型/模板迭代后生成质量不退化。 | diff --git a/.agents/knowledge/tech-decisions.md b/.agents/knowledge/tech-decisions.md index 5f9646ae..34d623ee 100644 --- a/.agents/knowledge/tech-decisions.md +++ b/.agents/knowledge/tech-decisions.md @@ -10,6 +10,8 @@ ## 1. 关键决策表(ADR) +> **⚠️ 回填(2026-06-10,HJ-AUDIT-001)**:下表「AI 生成引擎」行已被 **C2 裁定(2026-06-09)部分取代——MVP 现行生成主线 = 模板驱动**(LLM 直出 GameConfig 参数 + 固定模板 runtime,经 new-api 网关直连 LLM;Dify/OpenGame 均未部署,降级为远期增强)。§1.1 Tier1 行的「OpenGame 文生代码」同此。证据:`docs/agent-specs/2026-06-09-generation-spike/spike-summary.md`(52/52 结构层 100%)。 + | 决策点 | 选择 | 理由 | 放弃的备选(why-not) | 风险 | |---|---|---|---|---| | **后端框架** | Yudao Cloud(Java 17 + Spring Cloud Alibaba),fork 二开 | 60%+ 后台能力开箱即用(RBAC/OAuth2/BPM/文件/通知/审计/代码生成/多租户);社区活跃(60k+ star);单体启动可平滑拆微服务 | **NestJS(Node)**:v1 验证可行但缺企业级基础设施,微服务生态弱,后台/工作流要从零建;**Go(Kratos/go-zero)**:性能好但 RBAC/BPM/代码生成无现成方案 | 绑定 Yudao 升级节奏;须守"不改 framework 层"才可升级 | @@ -32,7 +34,7 @@ | 层 | 定位 | 选型 | 生成路径 | 状态 | |---|---|---|---|---| -| **Tier1 极轻量H5/2D** | 游戏流即点即玩,首屏 P75<3s | **自研轻量 Canvas Runtime(<15KB)** + iframe 沙箱 + SDK 注入 | **OpenGame** 文生代码 | ✅ 锁定。直出 plain Canvas/JS,自研壳=护城河,**MVP 唯一交付层** | +| **Tier1 极轻量H5/2D** | 游戏流即点即玩,首屏 P75<3s | **自研轻量 Canvas Runtime(<15KB)** + iframe 沙箱 + SDK 注入 | ~~OpenGame 文生代码~~ → **模板驱动(C2 裁定 2026-06-10 回填)**:LLM 填参 + 固定模板 runtime | ✅ 锁定。自研壳=护城河,**MVP 唯一交付层**;OpenGame 代码生成降级远期增强 | | **Tier2 复杂2D+3D** | 中重度含 3D,渠道分发 | **Cocos Creator 3.8.8 + MCP**(备选 PlayCanvas) | **Cocos-MCP** agentic 工具编排(studio 编排) | ✅ 锁定。MCP 158 工具可 AI 驱动;MVP 至多 1 个探针 demo | | **Tier3 独立App** | 打包为原生应用 | **Cocos 原生导出**(同 Tier2 引擎) | 同 Tier2 + 打包 | ✅ 锁定引擎。否决 Unity(AI 适配差、启动重);MVP 后投入 | @@ -56,11 +58,12 @@ | # | 待确认项 | 候选 | 出处 | |---|---|---|---| -| 1 | MVP 首选 LLM | 通义千问 / DeepSeek / OpenAI 兼容接口(Dify 支持热切换,可后置) | 选型审阅版 §11.1 | +| 1 | ~~MVP 首选 LLM~~ → **已拍板**(D1,2026-06-08):主 DeepSeek + 备 Qwen,不接 OpenAI;**现行实际 = MiniMax-M2.7 经 new-api 网关**(DeepSeek key 未激活;激活后切换或修订 D1) | — | `2026-06-08-mvp业务决策.md` D1 | | 2 | v1 运行时资产移植方式 | Canvas2D 渲染 + 小游戏转换逻辑:移植为 Java 服务,还是保留 Node 微服务 | 选型审阅版 §11.2 | | 3 | 产品端域名方案 | game-studio 与 game-admin 同域不同路径,还是不同子域名 | 选型审阅版 §11.3 | -| 4 | MVP 登录方式 | 手机号验证码 / 邮箱+密码 / 微信扫码(均经 Yudao OAuth2/SMS 支持) | 选型审阅版 §11.4 | +| 4 | ~~MVP 登录方式~~ → **已拍板**(2026-06-10 七项全拍,见 `2026-06-10-真实鉴权与匿名玩家-review.md` §9.1):**C 验证码为主+邀请码旁路**、玩家开放注册(受限期凭邀请码)、创作/发布限 A2 白名单、互动即弹一键登录、实名提现前收、匿名=纯客户端 anonId+聚合侧剔除(glossary/contracts 已同步修订);待出 execution 版排建设(建议 M-b 后) | — | 鉴权评审版 §9.1 | | 5 | Tier3 独立App 运行时引擎 | **Cocos Creator 3.8.8 + MCP 统一 Tier2/3(见 §1.1)** | 运行时选型研究 | +| 6 | ~~MVP 模板集不一致(R4)~~ → **已拍板**(2026-06-10 创始人复审):**维持 D2 集合,按 D2 改建**——M-c 建 idle/tycoon/merge runtime(clicker 保留,顺序建议 merge→idle→tycoon);dodge/runner/match schema 降 P1 保留契约不删。回填见 `2026-06-08-mvp业务决策.md` D2 复审注 | — | HJ-AUDIT-001 R4 + mvp业务决策 D2 | --- @@ -75,6 +78,7 @@ | **时间线** | 双路线并存:投资人版 5 人/11 周、执行 spec 10 人/3 周;执行排期以 mvp-execution-spec 为准(含逐日计划与里程碑) | | **MVP 范围/口径** | MVP 验收以 Doc A 的 **55 项 P0 产品功能**为准;技术实现范围经 Doc C 反查 Doc B(工作量 ≈137 技术项)。详见 [`mvp-scope-and-milestones.md`](./mvp-scope-and-milestones.md) §3 | | **模块划分** | **13 模块**(含 game-module-studio 创作编排域,aigc 为无状态生成原子);能力清单拆为产品功能(Doc A)/技术功能(Doc B)/映射(Doc C) 三文档分离 | +| **生成主线** | **MVP=模板驱动**(LLM 直出 GameConfig + 固定模板 runtime,经 new-api 网关);Dify/OpenGame=远期增强(C2 裁定 2026-06-09,M-b 已按此上线) | --- diff --git a/.agents/rules/engineering-conventions.md b/.agents/rules/engineering-conventions.md index e9e925db..fba80281 100644 --- a/.agents/rules/engineering-conventions.md +++ b/.agents/rules/engineering-conventions.md @@ -69,7 +69,7 @@ | 类型 | 严格 TypeScript,**禁止 `any`**(必须用时注释说明充分理由) | | 请求 | 统一使用封装的 `request` 实例,自动处理 Token 注入 / Refresh 刷新 / 错误提示;禁止裸 `fetch`/`axios` | -> admin 二开:新页面放 `views/game/`、API 放 `api/game/`,复用 Yudao CRUD 组件(`XTable`/`XForm`/`Dialog`),不改 Yudao 原生 views。 +> admin 二开:新页面放 `views/wanxiang/`、API 放 `api/wanxiang/`(仓内实际目录,2026-06-10 审计校正;旧档所写 `views/game/` 已废),复用 Yudao CRUD 组件(`XTable`/`XForm`/`Dialog`),不改 Yudao 原生 views。 --- diff --git a/.agents/rules/security-and-reliability.md b/.agents/rules/security-and-reliability.md index e83443da..c9986c0e 100644 --- a/.agents/rules/security-and-reliability.md +++ b/.agents/rules/security-and-reliability.md @@ -25,9 +25,10 @@ ### 1.1 游戏沙箱具体配置(runtime / compliance 共守) -- `iframe sandbox="allow-scripts allow-same-origin"`。 -- CSP:`script-src 'self'; connect-src 'none'`(**游戏内禁止任何网络请求**)。 +- `iframe sandbox="allow-scripts allow-same-origin"`。**红线(2026-06-10 审计补,HJ-AUDIT-001)**:`allow-same-origin` 仅当游戏包托管于**独立源**(usercontent 子域,与宿主不同源)时方可使用——同源下 iframe 可触宿主 DOM/存储、甚至自移除 sandbox;独立源就绪前**禁用 `allow-same-origin`**。 +- CSP:`script-src 'self'; connect-src 'none'`(**游戏内禁止任何网络请求**);CSP 经游戏包托管侧 **HTTP 响应头**下发,不以 meta 标签为唯一依赖。 - postMessage:校验来源 origin 在白名单 + 消息 schema 校验,防伪造。 +- **LLM 产物消毒**:GameConfig 文案字段(title/label/theme 等)入库前白名单字符集+长度校验,渲染侧一律转义后绘制,**禁止 innerHTML/eval**(模板驱动后 LLM 注入面=配置字符串)。 - 资源总大小 ≤ 10MB,首屏 ≤ 2MB;创作者通过**配置(非代码)**驱动游戏,平台对运行时代码有完全控制权。 ### 1.2 内容安全分层(自部署快检 + 商用兜底) diff --git a/AGENTS.md b/AGENTS.md index 7932737a..4417130d 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -103,7 +103,7 @@ The 5 documents below form a complete picture of the project. **On first onboard | 1 | `docs/architecture/系统概要设计-投资人版.md` | Business positioning, capital efficiency, moat & window of opportunity | | 2 | Three-Doc Suite: `docs/architecture/产品需求清单.md` (Doc A · product WHAT) / `docs/architecture/技术架构与模块.md` (Doc B · technical HOW · 13 modules) / `docs/architecture/需求模块映射.md` (Doc C · RTM) | Product requirements / technical modules / M:N mapping (replaces the old "business capability overview") | | 3 | `docs/architecture/系统概要设计-技术决策版.md` | Full technical-decision picture (architecture baseline) | -| 4 | `docs/architecture/系统概要设计-开发团队版.md` | Day-to-day dev handbook: environment / directory / conventions / integration / commits | +| 4 | `docs/architecture/系统概要设计-开发团队版.md` | Day-to-day dev handbook(⚠️ target-state design: env/commands diverge from reality — follow `.agents/rules` + `docs/mvp/MVP进度总账.md` instead; see the in-doc status banner, 2026-06-10 audit) | | 5 | `docs/superpowers/specs/mvp-execution-spec-design.md` | MVP execution spec: 10 people × 3 weeks, contract-first (acceptance = 55 P0 product features / workload ≈ 137 technical items, already synced in the body) | > Tip: the original docs are long; reading them in full slows tasks down. **The distilled versions live in `.agents/knowledge/` and are the default day-to-day entry point.** diff --git a/contracts/events.schema.json b/contracts/events.schema.json index c0a85820..ab8608e4 100644 --- a/contracts/events.schema.json +++ b/contracts/events.schema.json @@ -25,7 +25,7 @@ "additionalProperties": false, "properties": { "userId": { "type": "string" }, - "anonId": { "description": "匿名 token 派生的稳定匿名 ID", "type": "string" } + "anonId": { "description": "纯客户端生成的稳定匿名 ID(localStorage 持久化;身份不可信,防伪造/刷量由聚合侧按 anonId/IP 异常剔除兜底——2026-06-10 鉴权拍板 §9-7=B,取代旧'匿名 token 派生'机制)", "type": "string" } } }, "context": { diff --git a/docs-design/zaomeng-ai-demo.html b/docs-design/huijing-ai-demo.html similarity index 99% rename from docs-design/zaomeng-ai-demo.html rename to docs-design/huijing-ai-demo.html index 6202855b..2412a414 100644 --- a/docs-design/zaomeng-ai-demo.html +++ b/docs-design/huijing-ai-demo.html @@ -3,7 +3,7 @@ - 造梦 AI - 产品交互 Demo + 绘境 AI - 产品交互 Demo