games-development-ai/docs/plans/2026-06-22-003-feat-tier2-富游戏自治生成线-plan.md
zizi d97e194383 docs(治理): SoT注册表+docs-gate六检门,清缩历史档126→69
- 注册表:docs/architecture/README.md §2,37 份 canonical(frontmatter topic+canonical:true)与表双向机器对账
- 门:.agents/tools/docs-gate.py 六检(品牌根/canonical唯一/死链/入口卫生/留痕隔离/设计档申报),挂 .githooks/pre-commit(本仓已激活)+ .gitea/workflows/docs-gate.yml(待runner)+ wave-close 第8步;旧 check-deadlinks.sh 退役并入 G3
- 清缩:删 54 项历史档(plans 16/agent-specs 设计与spike 20/brainstorms 5/memorys 3/goals+作战清单完成史归档/王蓝莓design/SAA现状html/add-game-template);channel-spike 564K 代码资产迁仓级 spikes/;六件删前蒸馏已迁(代码评审16条open项→进度总账§5、prefix-cache字段表→cheap-model skill、意图基线29条→需求清单附录、九门降级rationale→验收门、A11 TODO→tech-decisions、3layer边界→littlejs-game-dev 指针)
- 修口径约90处:六处SAA『现行主线』旧标、Nacos/RocketMQ『未部署』旧述(07-01反转)、gameDefinition残留、全部死链改 git show 定位;AGENTS.md 249→136行(决策史归tech-decisions);_index 改纯在飞板;对外演示版 md→html
- 依据:docs/agent-specs/2026-07-02-文档治理-{全量普查与裁决-report,SoT注册表与治理门-设计}.md(四路普查191份md+Codex/Opus双评审必修项已折入);恢复基线 8ea97234(单档 git checkout 8ea97234 -- <路径>)
2026-07-02 14:24:12 +08:00

52 KiB
Raw Blame History

title, type, status, date, topic, origin
title type status date topic origin
feat: tier2 富游戏自治生成线实现方案(AgentScope 2.0.2 + Phaser) feat active · Phase A + 0 号 spike feie-005 accept 已落(2026-06-24)· 待便宜档收敛环(n=5)+ 阶段1 Agent Team · 统领并入统一执行 plan(2026-06-25),本 plan 作复杂档(tier2/Phaser)细化子计划 2026-06-22 tier2-富游戏生成线 docs/brainstorms/2026-06-22-tier2-整体实现方案-requirements.md

feat: tier2 富游戏自治生成线实现方案(AgentScope 2.0.2 + Phaser)

统领关系 banner(2026-06-25): 本 tier2 plan 的内容已纳入统一执行 plan ① 的"复杂档"(WU-B 三档实例 / WU-C 八面 / WU-F 验收)。本 plan 保留作复杂档(tier2 · Phaser)细化子计划——以 ① 统领三档全局,以本 plan 承载 tier2 落地细节。框架与验证口径以 ① 与运行时 SoT 为准(统一收敛 AgentScope、tier2 验证走 n=5 收敛环)。① = docs/plans/2026-06-25-生成引擎统一执行计划-AgentScope三档-plan.md;SoT = docs/architecture/架构/生成引擎/agentic运行时架构图说.md。子计划有效边界:Phase A 的 U1–U7 核心生成线仍是有效 runbook;Phase B 纲要 U8–U10 已被既成事实部分覆盖(服务化 / 落库 / 观测已落),读 U8–U10 时以本 plan「执行现状」节 + tier2/HANDOFF.md 为准、不照纲要字面。

Summary

把 tier2 富游戏自治生成线从设计落成可执行序列:先在新顶层 tier2/ 搭起一个独立的 AgentScope 2.0.2 Python 模块(fork 现有廉价线种子 worker、单写起步、本地 runner、不上 Agent Service),再用 M3 写代码逻辑、mmx 产美术音乐,在三层校验(初期只焊 L1)的笼子里连续迭代生成引擎。顺序连续、判据离散——M3 证路是软门、便宜档收敛环是硬门、退路树按收敛失败模式分流,只有硬门通过才投入重机器(工作室 Agent Team、第二装载分支、配置外置、控制面、ReMe)。Phase A(集成+环境+迭代)写成可立即执行的详细单元;Phase B(重机器)写成纲要、显式 gated 在 B 门后。

执行现状(2026-06-24 spike / 2026-06-25 doc-sync)

本 plan 写于 spike 前。0 号 spike 已跑、feie-005 = decision=accept(M3 自治写面包店经营合成富游戏:9 道 L1 门 + 富游戏三门全过、finished=True、无熔断,约 20K/36K tokens、墙钟约 610s),判断 = go(留观微调)。落地实况(权威基准 tier2/HANDOFF.md):

  • 已落:U1–U7 核心生成线(种子 fork + 有界外层 resume + Phaser validate/run/prompt/roles 重写)、Phaser CDP 探针 + 九门 + 富游戏三门、四道收敛契约机器门(validate_datatable/LOCKED_PLATFORM_FILES/validate_play_scene/finish 门)、mmx 资产工具、M3 Anthropic 接法 + RecordingChatModel 成本取证、Tier2TraceMiddleware→TraceAdapter(647 事件 dropped=0、cost_rmb=1.29)、L3 视觉软检 observe-only、收敛环批跑底座(n=5)(便宜档 client / RunRecord / 退路树判定器 / batch_run+aggregate——这套件就是跑收敛环的底座,n 设 5、有错追加 5)、服务化 P4 部署 mini-desktop:8200(Agent Service + 落库 MySQL+MinIO,save→fetch 已验)。
  • 两处早稿设计错已纠(回写 SoT①):官方 ReplyBudgetControlMiddleware 2.0.2 不存在 → 自建 on_system_prompt+硬熔断;纯内部多轮 ReAct 过早放弃 → 有界外层 resume(wg1 范式回归)。
  • 🔴 真待执行:便宜档收敛环 go/no-go(并发跑 5、有错追加 5、收敛即 go;本次 n=1 是机制验证、跑通一款;底座已就位可直接跑)· 阶段 1 工作室 Agent Team(决策⑤ Phase B)· 控制面/管理面对 tier2 接入(D12/GenerationDispatcher 在 SAA Java 后端)· feed→play 第二装载分支与正式源项目契约(交后端)· ReMe vs 树内 mem0 小验。
  • 下方 U8–U10「B 门后才投·纲要」口径已被既成事实部分推翻(服务化/落库/观测已落):读时以本节 + tier2/HANDOFF.md 为准,不以 U8–U10 纲要字面为准。

spike 收敛 commit 在 feat/tier2-phaser-engine。


Problem Frame

绘境现有生成线只擅长超休闲单局小游戏(LittleJS 声明式数据壳 + 便宜模型填空 + 九门 harness)。合成、经营、挂机这类多系统富游戏(肥鹅美食街档)它做不出——难在重 UI 表现层、多系统稠密接线、大内容量。2026-06-20 对抗审查把"声明式数据壳 + 自由 JS"判到几何色块单局这一档的天花板,富游戏必须另起一轨。

tier2 就是这条轨:用约束自治(O2)的单写 ReAct agent + Phaser 引擎,在确定性验收门里把富游戏逼出来。它的 WHAT 已在 origin 充分设计并过双评审。但整条线最深、最没证过的赌注是——便宜或中等模型的自治 agent 能不能稳定写出那约 56% 的表现层。历史上王蓝莓 12 文件经营游戏与 2026-06-11 Phaser 五门 spike 证的都只是"形态"(真引擎工程装得下、Phaser 能过门),用的都是最贵模型 Fable + 重人工编排,不是便宜模型自治。这份计划要做的,是把这条赌注在最便宜的时候、用可判定的判据验掉,而不是在未验证的机器上过度投入。

前提措辞对齐(2026-06-23):origin 写「廉价线只擅长超休闲单局、声明式数据壳天花板」——此后 Mac 的 A-model 优化(feat/mac-amodel-foundation)已让廉价线也走向 agentic(自治写真 JS + 插件库 + 轻量经营/合成,仍在 LittleJS)。故两线边界不再是「声明式 vs 自治」的能力档,而是「引擎 / 表现层复杂度档」:A-model 吃 LittleJS 轻量档,tier2 吃 Phaser 重表现富游戏档(肥鹅美食街档)。详见下文「与 A-model 分支的关系」。

Key Technical Decisions

  • 代码落点 = 新顶层 tier2/:独立模块、与 wg1/(廉价线 Python worker)并列、与 game-cloud 的 Java SAA 线运行期零耦合。理由:origin 定 tier2 为"独立 AgentScope 模块、SAA 可删、运行期零依赖";物理隔离 + forbidden-import 守门把这条落地。这是可调整的——若改为 wg1/ 下或别的根,全部 **Files:** 路径随之平移。

  • 锁 AgentScope 2.0.2;但「迁移=版本钉」只对 AgentScope 框架接缝成立,种子业务模块链要按 Phaser 重写:迁移面取证证明种子用到的 AgentScope 框架符号(Agent/ReActConfig/UserMsg/OpenAICredential/OpenAIChatModel + duck-typed ChatUsage)在 2.0.2 全兼容、0 改签名——这层确实是版本钉(requirements 钉 2.0.2)。但 studio.py 拖着的业务模块链(validate.py/run.py/roles.py/prompt.py)是 LittleJS 专属、要按 Phaser 重写、工作量≈net-new:validate 的硬规则(禁 import / 禁 littlejsengine / 必须单 export default 工厂)对 Phaser 多文件 src/ 工程完全反转;run 的 scaffold/build/play 是 LittleJS 单包 iife 形态;roles.DESIGN_SYSTEM 全是声明式壳 few-shot。别让"框架符号兼容"误导成"整个 U2 是平移"。真正的 AgentScope 新功夫另在 net-new 的多轮 ReAct / Workspace / Service(Phase B)。

  • 顺序软、判据硬:先集成+环境再连续迭代(顺序连续,不设建设前的离散生死门),但生成证据的判据保持离散可判定——A 门 = M3 证路(软,创始人试玩判"有肥鹅味的可玩雏形");B 门 = 便宜/强便宜档 deepseek-v4 跑收敛环(并发 5、有错就读日志分析修复再追加一次 5、收敛即 go,硬);退路树按收敛失败模式分流(某系统反复装不出→补骨架 R2 / 表现层反复崩→更模板化 R1 / 便宜档全线不收敛而强档能过→便宜模型天花板换档 R3 / 收敛但需微调→留观 KEEP),按失败模式转退路、不再调参。双评审揪出"软化顺序时别把判据也软化"是本计划最要紧的一条纠正。

  • 起步只单写(阶段 2),工作室 Agent Team(阶段 1)后置到 Phase B:最快拿到"M3+mmx 能不能产过门 mini-肥鹅"的真信号。生产态正式流程仍是阶段 1 工作室设计 → 阶段 2 单写实现;起步只跑阶段 2 是 spike 范围裁剪,不是永久颠倒。

  • 复用 _client.py/cost.py 走显式传参,禁读模块级全局:cost.compute() 已是纯函数显式传参可直接复用;但 _client.chat() 内部读模块级 BASE_URL/env key —— tier2 调用须把 endpoint/key/model/pricing/quota/retry/timeout 全显式传入,否则暗中继承 SAA/L2 的模型路由与预算表,"SAA 可删"成空话。

  • CDP harness 对 Phaser 是重写适配层、不是参数化;其底座是迭代开跑前的前置阻断验证:play.cdp.cjs 的探针硬编码 LittleJS 专属 #game-engine 选择器、window.__engine.snapshot().frame 帧源、window.__gameHostEngineInitFired boot 信号;Phaser 的帧源、canvas 注入、活动 hash 全不同。沙箱底座(agentscope-runtime BrowserSandbox 是否暴露足够 page.evaluate/CDP,不够则回落复用 play.cdp.cjs 路 + Phaser driver 重写)须在生成迭代开跑前出结论(origin 标记的 spike 前置阻断项)。

  • tier2 装载/契约/沙箱独立,绝不碰 Tier0/1 ECS-lite 装载路:contracts/agent-loop/source-project.schema.json 第 5 行明示 tier2 另立独立 schema;boot-game-host.js 的 opts.engine 注入边界可参照、但 Phaser boot 序列独立、不改它;build-from-source.mjs 的 new Function + 静态禁则路不复用(tier2 是真 src/ 工程 + 真 Workspace 沙箱)。

  • M3 走 Anthropic 原生端点 + 启动校验 + 首 smoke 三证:AnthropicChatModel + AnthropicCredential.base_url 指 new-api /v1/messages + thinking 分离;启动前校验 max_tokens 严格大于 thinking_budget;首个 M3 smoke 必须证明 thinking 分离 / 工具调用 / new-api quota 计费三者都通。模型统一从 new-api 出口走(baseUrl+NEWAPI_KEY),协议/SDK 不锁。

  • 三层校验初期只焊 L1,L3 只评分绝不阻塞/拒发,绝不让 LLM 自评:L1 编译/启动/运行错误必须解决、循环;L2 设计符合尽量;L3 效果(M3 视觉软检)只进趋势/告警/人工终审减负,绝不参与"算不算完成"、绝不单独拒发(防 Goodhart)。

  • forbidden-import CI 守门升为 pre-spike 验收项(= 《tier2 四层工程架构》§11 T4):禁运行期 import SAA 配置 / 现有 studio.py 运行态 / L2 模型路由表;只许种子拷贝 + 显式传参复用 _client.py/cost.py。

与 A-model 分支的关系(边界 · 复用 · 协调)

feat/mac-amodel-foundation 是 Mac 在做的 Tier1 廉价线「A-model」agentic 优化(ReAct+M3 + 3 层架构 + 插件库 + 九门 SAA-mode,仍在 LittleJS/game-runtime)。它废了 gamedef 的 JSON 框死(contracts/agent-loop/source-project.schema.json 升 oneOf:2.0 = 真多文件 JS),所以廉价线现在也是「便宜模型自治写真 JS + ReAct + 九门」——这更新了 tier2 立轨前提的措辞。但两线边界仍清晰、分立不收敛(创始人 2026-06-23 裁定):

  • A-model(Tier1) = LittleJS 上的轻量自治生成(单局 + 轻量经营/合成,插件库 + sim-business 配方)。
  • tier2 = Phaser 上的重表现富游戏(肥鹅美食街档:大内容量 / 稠密 UI / 多系统耦合,LittleJS 表现层撑不住那一档)。

边界从旧的「能力档(声明式 vs 自治)」精确为「引擎 / 表现层复杂度档」。tier2 计划据此维持不动,只对齐前提措辞,并接住 A-model 已造好的可复用资产(省 Mac 重新发明):

  • 插件契约(最大协同)→ U6 / 引擎能力包(U10):A-model 的 scene-fsm / hud-ui / session-score / timer-scheduler 是引擎无关、零语义契约 + 一份 sim-business 配方(game-runtime/src/plugins/*/api.d.ts + .agents/skills/agentic-amodel-generation.md)——正是经营/合成的系统骨架。tier2 Phaser 能力面复用其契约 / 命名 / sim-business 配方,仅渲染 impl 按 Phaser 重做(impl 绑 Canvas、跨不了引擎)。
  • 循环范式 → U2 / U7:game-runtime/tools/amodel-gen/gen.mjs 已把「多轮 ReAct done 门 + check/build 循环内快反馈 + 历史压缩 + 5 工具沙箱」在 M3 上跑通——tier2 的多轮 ReAct 移植其循环范式,别只从单轮 repair 摸索(种子仍是 Python studio.py,参照系加 amodel-gen)。
  • 九门基线 → U3 / U6:A-model 改了 play.cdp.cjs(SAA-mode __GameBundle 信封 + driven 感知 advisory 分级:无 driver 降 advisory、有 driver 恢复致命 + _forensicsView 必需)。tier2 的 fork 源与行号锚点要钉到 A-model 合并后的版本重取;其「driver 缺位→advisory,driver 到位→致命」范式正好复用到 tier2 修 latch 与经营门 observe→enforce。
  • 源项目契约 → 维持独立(KTD7 / U9):A-model 把 source-project.schema.json 升 oneOf(1.0/2.0),但 2.0 绑死 __GameBundle+九门+ECS-lite 装载路;tier2 的 Phaser 工件装载序列不同(第二装载分支),故另立独立 schema、不加 3.0 变体进同一 oneOf——避免把 Phaser 差异焊进 LittleJS keystone 契约。

术语消歧:tier2 的 L1/L2/L3 指三层校验门(编译门 / 设计门 / 视觉软检),与 A-model 分支的 L1/L2/L3 代码层(plumbing / 插件 / 游戏码)是不同坐标系,勿混。

协调:A-model 是 Mac 在飞分支(未并 dev/2.0.0)。它合并后 tier2 接缝(play.cdp.cjs、source-project.schema.json)会刷新——Mac 在 tier2 实现时对账两分支(见 tier2/HANDOFF.md)。


High-Level Technical Design

实现主轴(顺序软 / 判据硬 · Phase A 详 / Phase B 纲要):

flowchart TB
  subgraph PA["Phase A · 集成+环境+生成迭代(立即可执行)"]
    U1["U1 tier2 独立模块骨架<br/>落点 tier2/ · 锁 2.0.2 · 复用 client/cost · forbidden-import"]
    U2["U2 fork 种子 → 2.0.2 + Agent 内多轮 ReAct<br/>放开 max_iters · 两阶段角色(起步只单写)"]
    U3["U3 Phaser 浏览器探针路径(前置阻断验证)<br/>沙箱底座小验证 + CDP harness 为 Phaser 重写"]
    U4["U4 mini-肥鹅 Phaser 靶子<br/>经营骨架+耦合点+数据表schema+资产占位"]
    U5["U5 mmx 资产管线接成 agent 工具"]
    U6["U6 L1 门重写 + 富游戏专属门<br/>引擎无关 L1 + 联动/经济门 + latch"]
    U7["U7 生成迭代闭环 + 证据门<br/>M3 Anthropic端点+三层校验(只L1)+四熔断"]
    U1 --> U2 --> U7
    U1 --> U3 --> U7
    U4 --> U7
    U5 --> U7
    U6 --> U7
    U3 --> U6
  end
  U7 --> GA{"A 门 · M3 证路(软)"}
  GA -->|过| GB{"B 门 · 便宜档收敛环(硬)<br/>并发5·有错追加5·收敛?"}
  GA -->|不过| R["退路树(按收敛失败模式分流)"]
  GB -->|不收敛| R
  GB -->|收敛 · 硬证据| PB
  subgraph PB["Phase B · 重机器(B 门后才投 · 纲要)"]
    U8["U8 工作室阶段1 + Agent Service<br/>create_app + Agent Team(SubAgentTemplate/EXPLORE)"]
    U9["U9 第二装载分支 + tier2 源项目契约七要素"]
    U10["U10 平台化: 配置外置(引线A)+控制面(D12/trace)+ReMe"]
  end

依赖与排序:U1 是地基(其余都依赖);U2/U3/U4/U5/U6 可并行推进,全部汇入 U7 的迭代闭环;U3 的沙箱前置阻断验证须在 U7 开跑前出结论,且 U6 的门重写依赖 U3 的探针。Phase B 三单元在 B 门通过后才进入细化与建设。

Requirements

承接 origin 的 R1-R21(见 origin: git show 8ea97234:docs/brainstorms/2026-06-22-tier2-整体实现方案-requirements.md),按关注点分组并溯源到实现单元。

起步 · 集成与环境(无论生成证据如何都要做)

  • R1. AgentScope 集成 pre-spike 档:起步只用 Agent+ReActConfig+Workspace 本地 runner,不上 Agent Service / Agent Team / 配置外置。→ U1, U2
  • R2. 单写循环演进 + 版本钉:fork 种子,agentscope 钉 2.0.2,多轮自治从外层 repair 搬进 Agent 内 ReAct(放开 max_iters),运行期零依赖现有 worker。→ U2
  • R3. Phaser 浏览器探针路径前置阻断验证:Workspace 解决代码/构建/shell;L1 门要的浏览器真跑低层探针接 CDP harness,对 Phaser 是重写;底座可行性须迭代开跑前出结论。→ U3
  • R4. mini-肥鹅 fixture(迭代靶子 + spike 产物目录范本):经营骨架(三系统+耦合点、先天过 boot),产物以 Workspace.workdir 本地多文件工程形态、harness 直接构建+真跑,不走正式契约/落库。→ U4
  • R5. mmx 资产管线最简形态:接成单写 agent 可调资产工具。→ U5
  • R6. L1 门抽象重写:现九门为 LittleJS 单文件壳而建、带病灶,抽象重写进 L1(引擎无关)+ L2(设计符合),补富游戏专属跨表联动门/经济门、修 latch。→ U6
  • R7. 成本计量 + 轨迹最小版:接 new-api quota(复用 cost.py),落最小轨迹仓。→ U1, U7

生成迭代 · M3 + mmx · 判据离散

  • R8. M3 走 Anthropic 原生端点 + smoke gate:启动前校验 max_tokens > thinking_budget,首 smoke 证 thinking 分离/工具调用/quota 计费。→ U7
  • R9. 三层校验初期只焊 L1,L2 尽量、L3 只评分绝不阻塞/拒发、绝不让 LLM 自评。→ U6, U7
  • R10. 四道熔断(步数硬顶/预算闸/卡死探测/双层超时),任一触发优雅收尾、每轮 checkpoint;早期预算闸只需时间盒,强制 fail-closed 是规模化前项。→ U7
  • R11. 生成证据判据离散:A 门 M3 证路(软)/ B 门便宜档收敛环(硬,并发 5、有错追加 5、收敛即 go)才转重机器。→ U7
  • R12. 退路树按收敛失败模式分流:据收敛失败模式(装不出→补骨架 / 表现层崩→更模板化 / 全线不收敛而强档能过→换档 / 收敛需微调→留观)转退路、不再调参。→ U7

重机器 · B 门通过后才投

  • R13. 阶段 1 工作室(Agent Team 星形):SubAgentTemplate+PermissionMode.EXPLORE 只读设计 worker,跨 session 对话,设计结论写工程内文档。→ U8
  • R14. 第二装载分支 + tier2 源项目契约七要素(独立 schema + finish 工具,与 ECS-lite 解耦并存)。→ U9
  • R15. 完整配置外置(认领引用线A 阶段 2-3)。→ U10
  • R16. 控制面接入:D12 补 tier2 入口/预算/并发/补偿,统一 trace 契约,观测走 TracingMiddleware→OTel。→ U10
  • R17. 长期记忆/经验召回(ReMe vs 树内 mem0,起步前小验证 + 创始人定)。→ U10

收口 · 对齐(横切硬约束)

  • R18. 正典档对齐(《自治富游戏引擎》升三层校验口径)——已在 origin 收口提交完成。→ 已交付
  • R19. §11 六条跨档 TODO 作 follow-up doc-sync。→ Open Questions
  • R20. forbidden-import 守门升为 pre-spike CI 静态检查验收项(= 四层档 T4)。→ U1
  • R21. spike 产物承载 = Workspace.workdir 本地多文件工程,harness 直接构建+真跑,不走正式契约/落库(落库随重机器后置)。→ U4

Implementation Units

Phase A — 集成 + 环境 + 生成迭代(到 A/B 证据门 · 立即可执行)

U1. tier2 独立模块骨架 + 依赖 + 复用 + forbidden-import 守门

  • Goal:在 tier2/ 立起一个独立 AgentScope 2.0.2 Python 模块骨架,含独立依赖、对 _client.py/cost.py 的显式传参复用接缝、以及禁运行期 import SAA 的 CI 守门。这是其余单元的地基。
  • Requirements:R1, R7, R20
  • Dependencies:无
  • Files:
    • tier2/gen-worker/requirements.txt(新建:agentscope==2.0.2 + phaser 工具链所需 + pyyaml;不复用 wg1/gen-worker/requirements-l2.txt 的 2.0.1)
    • tier2/gen-worker/worker/cost_reuse.py(新建:薄包装,显式传 endpoint/key/pricing/quota,内部转调 wg1/gen-worker/worker/cost.py:compute——纯函数可直接复用)
    • tier2/gen-worker/worker/client_reuse.py(新建:薄包装,显式传 endpoint/key/model/retry/timeout,禁读 _client.py 模块级 BASE_URL/全局)
    • tier2/.agent(新建:模块目标/边界/红线声明,参照 game-runtime/games/_wg1-gen/.agent)
    • tier2/ci/check-forbidden-import.sh(新建:参照 .agents/tools/docs-gate.sh 形制,扫 tier2/ 禁 import wg1.* 运行态 / SAA 配置 / L2 模型路由)
    • tier2/README.md(新建:指向本 plan + origin + agentscope-2.0.2-facts)
  • Approach:tier2 自有 env、独立锁 2.0.2。复用边界严格走"显式传参"——cost.compute() 已是纯函数直接调。注意 agent 循环真正消费的不是 _client.chat()(那是 L1 裸路、agent 不调),而是 _client 的模块级 BASE_URL + get_api_key() + import 副作用(.env 加载 + 必须在 import agentscope 前设 NO_PROXY 代理旁路——config.py:11 注释明示是 spike 头号坑)。所以要显式参数化的是 endpoint/key 来源 + 显式、有序地处理那个代理旁路副作用,而非包装 chat()。forbidden-import 脚本进 CI(pre-spike 验收项)。
  • Patterns to follow:wg1/gen-worker/worker/cost.py:compute(纯函数范本)、game-runtime/games/_wg1-gen/.agent(模块隔离声明)、.agents/tools/docs-gate.sh(CI 脚本形制)
  • Test scenarios:
    • tier2/ci/check-forbidden-import.sh 对一个故意 import wg1... 的样例文件返回非零(守门生效);对干净 tier2 代码返回零。
    • cost_reuse 用显式传入的 pricing/qpu/usd_rate 调 compute,结果与直接调 wg1 cost.compute 一致(复用未走样)。
    • client_reuse 在未设模块级 BASE_URL 时仍能用显式 endpoint 工作(证不依赖全局)。
  • Verification:pip install -r tier2/gen-worker/requirements.txt 成功且 agentscope.__version__ == "2.0.2";forbidden-import CI 在干净树通过、对违例样例失败;复用包装的单测绿。

U2. fork 种子 worker → 2.0.2 + Agent 内多轮自治 ReAct

  • Goal:以 wg1/gen-worker/worker/agent_loop/studio.py 为种子拷贝到 tier2/,版本钉 2.0.2(代码零签名改),把多轮自治从外层 repair 循环搬进 Agent 内 ReAct(放开 max_iters),并按两阶段重写角色 prompt(起步只单写阶段 2)。
  • Requirements:R1, R2
  • Dependencies:U1
  • Files(标注 fork=框架接缝可平移 / 重写=LittleJS 专属、按 Phaser 重做、工作量≈net-new):
    • tier2/gen-worker/worker/agent_loop/studio.py(fork:编排骨架可平移;_agent_reply 的 ReActConfig(max_iters=1) 放开为多轮,外层 for attempt in range(max_repairs) 改为 Agent 内 reason→act→读结果→再 reason)
    • tier2/gen-worker/worker/agent_loop/config.py(fork:保留 RecordingChatModel.__call__ 成本取证覆写——2.0.2 仍命中;清 config.py:30-32 关于 DeepSeek cache 的过时注释)
    • tier2/gen-worker/worker/validate.py(重写:现 extract_code 只认单 ```js 块、validate 硬规则=禁 import / 禁 littlejsengine / 必须单 export default 工厂——对 Phaser 多文件 src/ 工程完全反转,重写为多文件抽取 + Phaser 工程校验)
    • tier2/gen-worker/worker/run.py(重写:scaffold/build/play 三件是 LittleJS 单包 iife 形态,换成 Phaser 多文件 scaffold + 构建 + Phaser CDP harness 接线)
    • tier2/gen-worker/worker/prompt.py(重写:build_messages 按 Phaser 工程 + 两阶段重组)
    • tier2/gen-worker/worker/agent_loop/roles.py(重写:DESIGN_SYSTEM 全是 LittleJS 声明式壳 + gatespec/tap-targets few-shot,按 Phaser 富游戏 + 单写实现角色重写;阶段 1 工作室角色留 Phase B)
  • Approach:fork-为-起点、独立演进、运行期零依赖现有 worker、不回写(origin §1.1)。分清两层:AgentScope 框架接缝(studio.py/config.py 的 6 符号)据迁移取证是版本钉、零签名改,重点回归验证 RecordingChatModel.__call__ 仍被 Agent 经 await model(...) 命中(成本取证命脉);但 validate/run/prompt/roles 是 LittleJS 专属业务逻辑、需按 Phaser 重写(≈net-new),按"6 符号兼容"排期会严重低估。多轮 ReAct 也是 net-new(种子是单轮),用 2.0.2 Agent+ReActConfig(max_iters=N)。
  • Execution note:先为"Agent 内多轮 ReAct 写源→build→读 verdict→再 reason"写一个最小集成测试(mock 模型 + 假 verdict),证循环骨架跑通,再接真 M3。
  • Patterns to follow:wg1/gen-worker/worker/agent_loop/studio.py(种子,run_studio@230 / _agent_reply@153 / repair@266 / 五接线点@270-300)、config.py:RecordingChatModel(usage 取证)
  • Test scenarios:
    • Agent 内多轮:mock 模型先返回"调写工具"再返回"纯文本收尾",循环正确在收尾终止、产出 src/。
    • max_iters 硬顶:mock 模型永远调工具,循环在 max_iters 处停(不无限)。
    • RecordingChatModel.__call__ 在 2.0.2 被命中:跑一轮真/mock 模型,断言 per-call usage(input/output/cache_input tokens)被捕获。
    • 版本钉:agentscope.__version__ == "2.0.2" 且 6 个框架符号 import 不报错。
    • 消息形态复验(2.0.2):UserMsg(name, content=str) 仍把 str 包成 TextBlock、agent.reply 返回 block-list Msg(这层是形态契约、不在 6 符号 import 面内)。
  • Verification:最小集成测试绿;一轮 mock 端到端(组 context→reason→act 写 src/→读 verdict→收尾)跑通;usage 捕获非空。注意:6 符号 import 通过≠迁移完成——validate/run/prompt/roles 的 Phaser 重写另有各自验收(不被本单元的框架接缝绿误判为"迁移已完成")。

U3. Phaser 浏览器探针路径(spike 前置阻断验证 + CDP harness 重写)

  • Goal:先做沙箱底座小验证定方案,再把 play.cdp.cjs 的低层探针为 Phaser 重写(参数化引擎钩子 + 新增经营 driver)。这是生成迭代能否照设计跑起来的前置阻断项。
  • Requirements:R3
  • Dependencies:U1
  • Files:
    • tier2/harness/SANDBOX-PROBE.md(新建:小验证结论——agentscope-runtime BrowserSandbox 是否暴露足够 page.evaluate/CDP;不够则回落自建薄沙箱 + 复用 play.cdp.cjs 路)
    • tier2/harness/play-phaser.cdp.cjs(fork 自 game-runtime/games/_wg1-gen/_shared/play.cdp.cjs:参数化 canvas 选择器 #game-engine、帧源 window.__engine.snapshot().frame、boot 信号 window.__gameHostEngineInitFired 三个 LittleJS 专属钩子为 Phaser 等价;新增经营类 driver)
    • tier2/harness/drivers/business-sim.driver.js(新建:经营品类确定性 driver——"点合成→凑齐订单物品→交单→看金币涨"序列)
  • Approach:先出 SANDBOX-PROBE 结论(前置阻断),它决定本地 runner 选型。CDP 探针对 Phaser 是重写适配层——帧源、canvas 注入、活动 hash 取法全不同,不是简单参数化。沿用 play.cdp.cjs 的 checkAssertion/runDriver 分发/九门组装骨架,但引擎钩子与经营 driver 全换。
  • Patterns to follow:game-runtime/games/_wg1-gen/_shared/play.cdp.cjs(探针 #game-engine、__engine.frame、boot 信号、9 driver runDriver@217、checkAssertion@189、九门组装 main@894)、game-runtime/src/host/boot-game-host.js(opts.engine 注入边界,参照不改)
  • Test scenarios:
    • Covers AE(机制地板):一个手搓的过门 Phaser mini 经营页跑过重写后的 L1 门(boot/frame/像素/hash/输入改状态/控制跟手)。
    • 一个故意空壳页(不响应输入)被重写后的门判 fail(守假绿)。
    • business-sim driver 真输入驱动 mini-肥鹅到赢/输双终态并 latch。
    • 沙箱探针矩阵:navigate/screenshot/page.evaluate/输入注入逐项在选定底座上可用(SANDBOX-PROBE 结论的可执行验证)。
  • Verification:SANDBOX-PROBE.md 出明确结论(复用现有 CDP 或回落自建薄沙箱);重写后的 harness 对过门页 pass、对空壳页 fail;经营 driver 跑通赢输双路径。

U4. mini-肥鹅 Phaser 靶子工程 + 数据表 schema + 资产占位

  • Goal:预建 mini-肥鹅 经营骨架 Phaser 工程作迭代靶子(三系统+耦合点、先天过 boot),数据表 schema 留空给 LLM 填,配共用资产占位图。产物以 Workspace.workdir 本地多文件工程形态承载。
  • Requirements:R4, R21
  • Dependencies:无(可与 U2/U3 并行)
  • Files:
    • tier2/fixtures/mini-foie-gras/(新建 Phaser 经营骨架工程:合成系统 3×3 棋盘 / 资源系统 {coins,ingredients} / 订单系统;耦合点=合成产出进库存、订单读库存、金币门控解锁;参照 game-runtime/games/wanglanmei-ref/src/game-shop.js 的系统结构,Phaser 重写非代码复用)
    • tier2/fixtures/mini-foie-gras/data/(数据表 schema:12 物品 / 6 合成链 / 5 订单 / 2 货币,留空给 LLM 填值)
    • tier2/fixtures/_assets/(共用资产池占位图)
  • Approach:按《tier2 实现详设》mini-肥鹅 fixture 规格 mini 化复刻——砍任务弹窗/背包深度/上百物品,留三个联动系统 + 胜负(赢=金币 20→100,输=连续 3 订单流失)。是 Phaser 版(不是 LittleJS 的 wanglanmei-ref 代码复用,只参照系统/耦合结构)。spike 产物不走正式源项目契约/落库——harness 直接在 workdir 构建+真跑。
  • Patterns to follow:game-runtime/games/wanglanmei-ref/(src/game-shop.js@729 经营骨架、entry.js@42 引擎动态 import Option C 范式)、《tier2 实现详设》mini-肥鹅 fixture 规格
  • Test scenarios:
    • 骨架先天过 boot:mini-肥鹅 工程构建 + 真跑过 U3 的 L1 boot/frame 门(无 LLM 填值也能起)。
    • 跨表耦合可达:合成产出的物品能满足某订单的 requires(跨表可达性,经营专属硬门的前提)。
    • 胜负双路径:harness driver 能把骨架驱动到赢(金币达 100)和输(连续 3 流失)双终态。
  • Verification:mini-肥鹅 骨架构建成功、过 boot 门;赢输双路径可被 driver 驱动到 latch 终态。

U5. mmx 资产管线接成 agent 可调工具

  • Goal:把 mmx-cli 接成单写 agent 可调的资产生成工具(进 Toolkit、有 tool schema),产美术/音乐,用量计入成本台账。
  • Requirements:R5
  • Dependencies:U1
  • Files:
    • tier2/gen-worker/worker/tools/mmx_asset_tool.py(新建:包装 mmx-cli 为 AgentScope Tool 工具函数,参数 schema = 资产类型/描述/规格;产物落 Workspace.workdir 资产目录)
  • Approach:最简形态——mmx 作 agent 同一 ReAct 回路里可调的资产工具(符合"一台游戏工作站"范式),而非旁路并行管线。用量 quota 计入 cost_reuse 台账。资产产物进 fixture 的 _assets/ 同构目录。
  • Patterns to follow:memory mmx-asset-pipeline(mmx-cli 用法、quota 对账)、AgentScope 2.0.2 Toolkit(tools=[...]) + Tool 工具函数(见 agentscope-skill v2-building-blocks)
  • Test scenarios:
    • mmx 工具被 agent 调用一次,产出资产文件落 workdir、且 quota 计入台账。
    • 工具失败(mmx 不可达/超时)返回结构化错误,agent 能据此降级(不崩循环)。
  • Verification:agent 经工具调用产出一个占位级资产;失败路径返回可恢复错误。

U6. L1 门抽象重写 + 富游戏专属门

  • Goal:把现九门抽象重写进 L1(引擎无关的确定性门),补 tier2 富游戏专属的跨表联动门、经济门、latch(胜利/弃守分流)的 assertAfterPlay 规格。
  • Requirements:R6, R9
  • Dependencies:U3
  • Files:
    • tier2/harness/gates/l1-engine-agnostic.js(新建:能装载/不报错/帧 delta/像素回读/活动 hash/引擎调用前缀/输入改状态/控制跟手——从九门抽象重写、引擎无关)
    • tier2/harness/gates/business-sim-gates.js(新建:跨表联动门(订单引物品可达·合成 DAG 无环)+ 经济门(可盈利可破产)+ latch 分胜利/弃守)
  • Approach:现九门为 LittleJS 单文件壳而建、带病灶(latch 空壳蹭过)。抽象重写时三层职责绝不混——L1 确定性门拒发权全来自确定性信号、零 LLM 判定;富游戏专属门走 observe→enforce(默认只观测,达标率稳后才赋拒发权)。
  • Patterns to follow:game-runtime/games/_wg1-gen/_shared/play.cdp.cjs(九门组装 main@894、checkAssertion@189、latch 终态轮询@1040、readGameState@168 可测性红线)、《tier2 四层工程架构》§4.1 三层校验
  • Test scenarios:
    • 联动门:订单 requires 无法被任何合成链产出的工程被判 fail(跨表可达性);合成链成环被判 fail(DAG 无环)。
    • 经济门:开局即破产/永远攒不到目标金币的数值配置被判 fail(可盈利可破产)。
    • latch:只合成不交单的空转工程不蹭过 latch(弃守 ≠ 胜利)。
    • observe→enforce:新增门默认只 observe(记录不拒发),达标率阈值后才 enforce。
  • Verification:联动/经济/latch 门对正例 pass、对各退化反例 fail;observe/enforce 档位可配。

U7. 生成迭代闭环 + 证据门(M3 + 三层校验 + 四熔断 + A/B 门 + 退路树)

  • Goal:把 U1-U6 汇成可跑的生成迭代闭环——M3 走 Anthropic 原生端点写代码、三层校验(初期只焊 L1)裁决、四熔断关着,并落 A 门(M3 证路软)/ B 门(便宜档收敛环硬:并发 5、有错追加 5、收敛即 go)证据门与退路树(按收敛失败模式分流)+ 采集字段。
  • Requirements:R7, R8, R9, R10, R11, R12
  • Dependencies:U2, U3, U4, U5, U6
  • Files:
    • tier2/gen-worker/worker/agent_loop/m3_model.py(新建:AnthropicChatModel+AnthropicCredential.base_url 指 new-api /v1/messages+thinking;启动校验 max_tokens > thinking_budget;含 RecordingChatModel 的 Anthropic 变体——subclass AnthropicChatModel 同样覆写 __call__ 抓 ChatUsage。⚠️ 现有 RecordingChatModel(OpenAIChatModel) 对 Anthropic 路不生效;不做这个变体,A 门 M3 路的 per-call usage 抓不到、成本证据链断、A 门与 B 门成本口径不可比)
    • tier2/gen-worker/worker/finish_spike.py(新建:spike-grade 最小产物收尾。M3 开 thinking 时 generate_structured_output 的强制 tool_choice 被 Anthropic 拒——改用 tool_choice=auto 非强制 + 兜底重试,或一个最简 finish 工具把多文件 src/ 吐到 Workspace.workdir,不走正式契约/落库(与 R21 一致)。Phase B U9 升正式 finish + 源项目契约)
    • tier2/gen-worker/worker/breakers.py(新建:四熔断——步数硬顶/预算闸时间盒/卡死探测/双层超时;预算闸早期只时间盒上限)
    • tier2/gen-worker/worker/evidence/gates.py(新建:A 门 M3 证路记录 + B 门收敛环判定——并发 5 跑、错误数 >1 即读日志分析修复后追加一次 5、全过或可接受即 go)
    • tier2/gen-worker/worker/evidence/fields.py(新建:采集字段表——run_id/model/stage/pass/repairs/fail_stage/fail_system/cost_rmb/wall_s/file_count/长程一致性,承《实现详设》)
    • tier2/gen-worker/worker/evidence/retreat.py(新建:退路树判定器——按收敛失败模式分流:装不出→补骨架 R2 / 表现层崩→更模板化 R1 / 便宜档全线不收敛而强档能过→换档 R3 / 收敛需微调→留观 KEEP / 超 max_iters)
  • Approach:闭环 = 组 context→M3 reason→Workspace act 写多文件 src/→经 finish_spike 收尾吐产物到 workdir→build→真跑→三层校验→repair/checkpoint→产出。初期只焊 L1,L2/L3 渐进,L3 永远软。A 门是两段与,不是纯软门:① M3 产物先确定性过 L1(机器判,别对崩溃页试玩)② 再创始人试玩判"有肥鹅味的可玩雏形"(软)——两段都过才算 A 门过。B 门硬(便宜档 deepseek-v4-flash/pro 收敛环:并发跑 5、有错误就读日志分析修复再追加一次 5、收敛即 go)才允许转 Phase B。给"A 门后、B 门收敛环前"的前置物调参加显式上限(≤K 轮或 ≤¥/≤墙钟,超即按退路树 KEEP/缓行处置),把"不再调参"前移一个兜底闸,杜绝无限调参。退路树按收敛失败模式分流、转退路后不再调参。环境切分见 Risks——本计划"项目初始化"在 6c6g 搭骨架,"运行调优"(M3+mmx 真生成、收敛环 spike、CDP 真跑)转 Mac/mini-desktop。
  • Execution note:先 M3 smoke(thinking 分离/工具调用/quota 三证)再接迭代闭环;先 M3 证路(A 门)再用便宜档跑收敛环(B 门:并发 5、有错追加 5)。
  • Patterns to follow:wg1/gen-worker/worker/agent_loop/studio.py(迭代骨架)、wg1/gen-worker/worker/cost.py(per-model 折¥)、《tier2 实现详设》§模型矩阵/过门判据/采集字段/退路树
  • Test scenarios:
    • M3 smoke:一次 M3 调用证 thinking 分离(拿到 ThinkingBlock)+ 工具调用 + quota 计费三者都通。
    • M3 路 per-call usage 捕获:RecordingChatModel(AnthropicChatModel) 跑一次 M3,断言 input/output/cache_input tokens 被抓到非空(成本证据链不断)。
    • 闭环首次端到端(独立验收门 · 最高风险点):M3 真调一次 → 写多文件 src/ → finish_spike 收尾 → build → Phaser harness 真跑 → 三层裁决 → 产出一行采集。这是闭环首次贯通的独立 gate,不被分散子测试掩盖。
    • 启动校验:max_tokens <= thinking_budget 配置在启动期被拒(不到运行期才撞)。
    • 四熔断:步数/时间盒/卡死/超时各造一个触发样例,闭环优雅收尾、每轮 checkpoint 存在。
    • 证据采集:一次迭代 run 产出采集字段表一行(pass/repairs/cost_rmb/fail_system 等齐全,M3 路成本非空)。
    • A 门两段与:M3 产物未过 L1 时 A 门判不过(不靠对崩溃页试玩);过 L1 + 创始人试玩才过。
    • A/B 门逻辑 + 调参上限:mock 一批 run,B 门按收敛环正确判定(5 个全过→go;有错→读日志修复后追加 5、收敛→go、仍不收敛→按失败模式走退路);A→B 间调参超 K 轮上限即按退路树 KEEP/缓行(不无限调)。
  • Verification:M3 smoke 三证 + M3 路 usage 非空;闭环首次端到端独立门通过;四熔断各自可触发并优雅收尾;一次迭代产出完整采集字段;A/B 门 + 退路树 + 调参上限对 mock 分布给出正确判定。

Phase B — 重机器(B 门通过后才投 · 纲要)

以下三单元在 B 门硬证据通过后才进入细化与建设。此前不投,避免在未验证的机器上过度排细节。细度为纲要级——建设前据 origin + 当时实测再细化。

U8. 工作室阶段 1 + Agent Service

  • Goal:上官方 Agent Service(create_app)+ Agent Team 星形(阶段 1 工作室多 agent 设计),恢复生产态两阶段。
  • Requirements:R13;并解除 R1 的「pre-spike 不上 Agent Service」限制——service 化是 R1 显式 deferred 到 B 门后的部分,不是新需求
  • Dependencies:U7(B 门通过)
  • Files(纲要):tier2/service/(create_app + storage/message_bus/workspace_manager)、tier2/gen-worker/worker/agent_loop/studio_roles.py(阶段 1 设计 worker 角色)
  • Approach(纲要):用官方 create_app(storage, message_bus, workspace_manager)(REST+SSE+durable session,Redis 后端);阶段 1 工作室 = Agent Team 星形,只读设计 worker 经 create_app(sub_agent_templates=[SubAgentTemplate(permission_context=PermissionMode.EXPLORE)]) 注册、leader AgentCreate 按 subagent_type 拉起——AgentScope 原生机制(见 agentscope-skill v2-deploy)。
  • Test scenarios(纲要):阶段 1 leader 经 AgentCreate 拉起只读 worker、worker 不能写文件(EXPLORE 生效);阶段 1→2 收敛到单写;Agent Service POST /sessions+SSE 断线 replay。
  • Verification:阶段 1 多 agent 设计跑通且只读、阶段 2 单写、SSE 可恢复。

U9. 第二装载分支 + tier2 源项目契约七要素

  • Goal:立 tier2 自己的源项目契约(七要素)与 feed 第二装载分支,与 Tier0/1 ECS-lite 装载路解耦并存。
  • Requirements:R14
  • Dependencies:U7(B 门通过)
  • Files(纲要):contracts/agent-loop/tier2-source-project.schema.json(新建独立 schema,绝不扩 source-project.schema.json)、game-runtime/src/host/boot-phaser-host.js(新建第二装载分支,参照 boot-game-host.js 的 opts.engine 注入边界但 Phaser boot 序列)
  • Approach(纲要):七要素=类型标记/文件树 manifest/入口/构建 profile/依赖锁/内容哈希/落库寻址;finish 工具的参数 schema 与该契约共用一份定义(防漂移)。绝不碰 Tier0/1 装载契约与 build-from-source.mjs 的 new Function 路。
  • Test scenarios(纲要):tier2 Phaser 工程经第二分支落库→取回→feed 真跑;Tier0/1 装载路不受影响(回归);finish 工具产物形状 = 契约认的形状。
  • Verification:tier2 产物 feed 真跑通;Tier0/1 装载零回归。

U10. 平台化:配置外置 + 控制面接入 + ReMe

  • Goal:完整配置外置(引线A 阶段 2-3)、控制面接入(D12/统一 trace 契约)、长期记忆 ReMe,让 tier2 被配置/观测/审计/限流地管起来。
  • Requirements:R15, R16, R17
  • Dependencies:U8, U9(B 门通过)
  • Files(纲要):认领引用《生成主线架构演进路线》阶段 2-3(不另立分期);contracts/trace/(additive 立位,公共核心子集+扩展段);tier2 接 D12 运行治理门入口
  • Approach(纲要):配置外置归线A、本档只引用;trace 走官方 TracingMiddleware→OTel→Studio + adapter 映射统一契约;D12 现仅覆盖 SAA,tier2 入口/预算扣减/并发释放/失败补偿需补;ReMe vs 树内 mem0 起步前小验证 + 创始人定;强制 fail-closed 预算闸自建 Middleware(订阅 ModelCallEndEvent)。
  • Test scenarios(纲要):配置改 prompt/模型不发版生效;轨迹按统一契约公共核心子集可查;D12 对 tier2 入口限流/降级生效;fail-closed 预算闸越硬上限即终止本次生成。
  • Verification:配置热改生效、轨迹可反查、预算闸硬熔断。

Scope Boundaries

早期不做(B 门硬证据通过后才投)

  • 工作室 Agent Team(阶段 1)、官方 Agent Service 服务化、第二装载分支与完整源项目契约、完整配置外置、控制面/管理面 UI、引擎能力包接口抽象、ReMe 长期记忆、强制 fail-closed 预算闸——全排在 B 门后(即 Phase B)。

本计划不做(属主在别处或别线/别会话)

  • 不重排 0 号 spike 可跑 runbook(归《tier2 实现详设》)与控制面治理细节(归《agentic 集成架构》)——只引用、只落执行序列。
  • 不碰 gamedef 废除(另一会话);不碰 SAA 廉价线运行态(运行期零耦合,forbidden-import 守门)。
  • 不做 Cocos / Tier3 / 3D / 渠道导出(正交轴、Phaser 证成后)。
  • 不拍实测类阈值(¥3/款、过门率、ReMe vs mem0),迭代中校准。

Deferred to Follow-Up Work

  • 《tier2 四层工程架构》§11 六条跨档 TODO(studio.py "演进 vs fork" 措辞统一、trace 契约立位时机、SAA 线 player 软门是否与 tier2 同步收紧等)作 doc-sync follow-up。

Risks & Dependencies

  • 最大风险(全线 go/no-go 所系):便宜/中等模型自治写 56% 表现层能否稳定达 B 门阈值——零证据,正是 U7 迭代要验的赌注。务必与"2026-06-18 已证便宜模型产 Tier0/1 声明式数据壳过门"硬区分:后者已证、是另一档(gameDefinition 数据壳);tier2 的 Phaser 富游戏自治零证据,历史 Fable+Phaser 只证形态。
  • 前置阻断(U3):Phaser 浏览器探针路径可行性(agentscope-runtime BrowserSandbox 够不够,不够回落自建薄沙箱)须在 U7 迭代开跑前出结论,否则 spike 跑不起来。
  • 运行环境切分(逐单元 · 6c6g 搭骨架 / Mac·mini-desktop 跑调优):6c6g 禁 chrome(exit 144)、本机零依赖,凡需真跑 chrome/headless+esbuild 的验证必在 mini-desktop。逐单元归属——6c6g 可完成:U1(pip install / 纯函数复用单测 / forbidden-import CI)、U2(mock 模型集成测试 / 版本钉 / 消息形态复验)、U4 与 U5 的骨架与 schema 文件创建。必须 mini-desktop 真跑:U3(page.evaluate/CDP 探针矩阵真验)、U4(mini-肥鹅 构建+真跑过 boot 门)、U6(门对过门页 pass/空壳页 fail 真验)、U7(M3 smoke / 四熔断真触发 / 闭环端到端 / 收敛环)。即"项目初始化(骨架+mock 级)"在 6c6g 完成、"运行调优(真跑迭代)"转交 Mac。
  • 外部依赖:new-api 网关(baseUrl+NEWAPI_KEY,凭据见 docs/内网凭据与端点.md,M3 走 Anthropic 端点);mmx-cli(创始人已亲验);已 clone 的 AgentScope 2.0.2 源码 /root/oss/agentscope。
  • 版本风险:tier2 独立锁 2.0.2,不随廉价线(2.0.1)走;2.0 系列内部 API 仍在变(参照 agentscope-skill 的 v2 离线镜像 + 源码为权威,SKILL.md 正文示例是 1.x 勿照抄)。

Open Questions

Resolve Before Planning(建设前要定)

  • U3 沙箱底座可行性(BrowserSandbox vs 自建薄沙箱 + 复用 CDP)——属主标记的 spike 前置阻断项,U7 迭代开跑前必须出结论。
  • ReMe vs 树内 mem0 长期记忆后端选型——起步前小验证 + 创始人定(影响 U10)。

Deferred to Implementation

  • 单款成本闸(¥3/款)最终校准值,及 B 门收敛环在 M3 证路后对各便宜档(v4-flash/pro)的具体跑法(先各跑一轮 5、有错追加 5)。
  • CDP 探针对 Phaser 重写的具体接口(帧源/canvas 注入/活动 hash 取法)。
  • 第二装载分支与源项目契约的字段级细节、与 finish 工具 schema 的共用落点。
  • tier2 独立 service 错误码/契约归属(运行期零耦合 → 自有空间,细节随建设定)。

附:生成平台「采标准」上层路线(提案 · 待 §6.8 双评审)

上面 U1–U10 是 tier2 富游戏 spike 的执行序列;这一段是更高一层——把整条生成平台的 adapter 从「自研」翻转为「采 2025 收敛标准」的路线。对标结论与架构已并入 生成运行时架构图说 §二(canonical SoT,标「提案」);本段只记执行序列与待决。触及 build-vs-buy 基石翻转、属高风险,须先过 §6.8 双评审(Codex+Opus)再据以执行,评审前不动手。 收敛自原 docs/mvp/后续路线图.md(已删,无 git 痕,其设计入 SoT① §二/§三、其路线序列入本段)。

  • 第 0 步 · 按对标重订 adapter:A1/A2→A2A、A7→MCP、A2.5→OTel;自研收缩到 checkpoint/续跑 + 验收门;明确「框架可替换=采三标准」。(已部分兑现:SoT① §二/§三 已按对标重写,待双评审定稿。)
  • 第 1 步 · 采标准落地(按依赖):OTel GenAI 接 trace(钉版本 + TraceAdapter,顺手消 split-brain)→ MCP-native 暴露工具(run_gates/build 用 Task 原语)→ A2A 端点包住 dispatch(白得 cancel)→ Langfuse 式 prompt/model 运行时热取(解后端构建期快照)。
  • 第 2 步 · 沙箱与扩容采现成件:沙箱接抽象接口替固定端口 CDP(内网用 AgentScope-local / E2B 自托管,上云用阿里云 AgentRun/AIO Sandbox);K-槽搬成无状态 worker + 共享 checkpoint + 队列。
  • 第 3 步 · 自研两块主流空白:生成专属 checkpoint/续跑;A5 per-tier 验收门(元协议 + tier2 fork)。
  • 第 4 步 · 三档产品阶梯:tier1(L2 能力库+L3 高质轻游戏→大众 feed)/ tier2(本计划 U1–U10)/ phase3(独立 App·高复杂 3D)。
  • 第 5 步 · 账实收口:doc-sync 回写 tier2、退役死掉的 gamedef plan 链、修 verdict F3/F5、总账回填 tier2。

5 个 build-vs-buy 待创始人拍板(随 §6.8 双评审一并定):① 采 A2A+MCP+OTel 作 adapter 底座?② 「框架可整体替换」非主流目标值不值得自背?③ 沙箱采 microVM 抽象、扩容采 durable-execution?④ prompt/model 采 Langfuse 式运行时热取?⑤ 接口协议层(原 76KB design)§7 其余开放问题随第 0 步一并定。

§6.8 双评审结论(2026-06-24 · Codex web 源验 + Opus repo 验真,总判一致:采纳但修):方向可采,但本路线不能照此当执行基线,收口前置——

  • (a) 先 doc-sync:tier2 已落 accept(dev/2.0.0:92 文件 / feie-005 / 服务化@8200 / Phase B),上面 U8–U10「B 门后才投·纲要」口径已被既成事实推翻,执行前须按 tier2/HANDOFF.md+git 重取"现/建"。这是最高优先——在失真基线上批准的 build-vs-buy 不可信。
  • (b) 5 个待决改 ADR 矩阵:每条 ≥3 具名候选 + 排除理由(按 .agents/rules/build-vs-buy.md 硬门);最站不住的是 ②可移植(白得被夸大,实际协议边界可迁、业务语义 net-new)与 ③沙箱+扩容。
  • (c) 第 1 步标准按成熟度分层:MCP Tools/A2A 任务壳/OTel 映射可采;MCP Tasks(2025-11 experimental)/durable-execution(范式非标准)/microVM/Langfuse 热取标 maturity gate,不当"已收敛"。
  • (d) 第 2 步「沙箱+扩容」拆开:沙箱→SandboxDriver 能力矩阵(先 Local/Docker/薄沙箱);扩容→durable-execution 独立选型,先旁路 tier2、不动在产 SAA K-槽(已参数化非反模式)。

修正详见 SoT① §二补。本附段路线据此收口后再作执行基线。


Sources & Research

  • Origin:git show 8ea97234:docs/brainstorms/2026-06-22-tier2-整体实现方案-requirements.md(R1-R21、已定决策、已过 Codex+Opus 双评审)。
  • 属主设计档(2026-06-24 已收敛为单一 SoT):生成运行时架构 = docs/architecture/架构/生成引擎/agentic运行时架构图说.md(原《tier2 四层工程架构》《tier2 实现详设》《自治富游戏引擎》《agentic 集成架构》等 16 份已并入——§三 adapter 协议层 A1–A13 / §4 两实例 / §5 八面;forbidden-import 与四层落点见 §5.8、源项目契约七要素见 §5.6、三层校验与九门见 §5.4、控制面/D12/trace 见 §5.2/§5.7)。0 号 spike runbook(建设五步/模型矩阵/过门阈值/采集字段/退路树/mini-肥鹅 fixture)= 配套执行 runbook docs/architecture/架构/生成引擎/tier2细节图说-G-spike-runbook.md(本 plan 的 spike 视图)。
  • 子代理研究(本计划):repo 文件级定位(种子 studio.py run_studio@230 / ReActConfig(max_iters=1)@158 / repair@266 / 五接线点;_client.py/cost.py 复用边界;play.cdp.cjs@1131 探针;Tier0/1 装载契约边界;wanglanmei-ref 12 文件经营样板);AgentScope 2.0.1→2.0.2 迁移面取证(6 符号全兼容、迁移=版本钉+注释清理非 API 重写)。
  • A-model 分支(Tier1 agentic 优化 · 复用 / 边界源,见「与 A-model 分支的关系」节):feat/mac-amodel-foundation 的 game-runtime/tools/amodel-gen/*.mjs(JS ReAct+M3 循环范式)、game-runtime/src/plugins/{scene-fsm,hud-ui,session-score,timer-scheduler}/api.d.ts(引擎无关零语义契约)、.agents/skills/agentic-amodel-generation.md + .agents/skills/littlejs-game-dev.md(3 层边界:L1 骨架/L2 能力库/L3 游戏代码、write 拒清单、11 插件 canonical 键、createGame 签名)+ .agents/skills/sim-business-game-design.md(sim-business 经营范式)、contracts/agent-loop/source-project.schema.json(oneOf 1.0/2.0)。
  • 框架权威:/root/oss/agentscope(2.0.2 源码);.agents/knowledge/agentscope-2.0-facts.md(速查);agentscope-skill 的 references/v2-building-blocks.md/v2-deploy.md(v2 离线镜像,集成权威;SKILL.md 正文 1.x 勿照抄)。
  • 关键记忆:saa-agentic-infra-decision、m3-agentic-anthropic-protocol、generation-lifecycle-project-model、true-structured-foundation-proven(Tier0/1 数据壳已证、与 tier2 硬区分)、mmx-asset-pipeline、tiered-engine-cocos-decision。