zizi 856a583325 feat(tier2): Phaser 自治生成引擎全栈首落(workflow 9 agent 建·6c6g 静态全过)
override spike-first(创始人 06-23 裁),全栈铺 Phaser tier2 引擎。recon→契约→6模块并行→集成 workflow 产出 ~60 文件,全 6c6g 静态校验过、红线零碰 Tier0/1 产线:
- 契约(6):tier2-source-project.schema / tier2-verdict.schema(fork·round放开·三层校验+富游戏门)/ toolkit 签名 / 探针钩子 / boot-phaser-host.d.ts / mini-肥鹅 fixture 规格
- M1 Phaser scaffold+装载 host+引擎能力面(19;logic-smoke 13/13:五耦合点真接线+赢输双路径+latch不回弹)
- M2 CDP 探针 Phaser 重写+business-sim driver+九门+富游戏三门(5;verdict 过 schema)
- M3 Python 单写 ReAct agent loop+9 工具 toolkit+M3 Anthropic接法+四熔断(9;mini-desktop 真 2.0.2 venv 验:import/9工具/中间件注册 OK)
- M4 datatable schema+金标+资产占位(4)/ M5 prompt+Phaser skill+rag(13)/ M6 成本 RecordingChatModel+trace adapter(3)
- 集成:run_engine.py 入口 + 接线断点已修 + RUN-ON-MINI-DESKTOP.md

待 mini-desktop 真跑(esbuild build + CDP 九门 + M3 生成 = 本质即 0号 spike)。AgentScope 2.0.2 API 逐条对 /root/oss/agentscope 源码核验。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-23 20:13:44 +00:00

3.9 KiB
Raw Permalink Blame History

date, topic, status, owner, 映射源档
date topic status owner 映射源档
2026-06-23 tier2 探针沙箱底座选型A6 前置阻断项的结论落点) 建(结论待 mini-desktop 实测候选 A 的能力暴露面才冻;本档先钉默认走向 + 实测清单) tier2 引擎线M2 探针+门)
tier2/contracts/engine-probe-hooks.md §沙箱底座spike 前置阻断)
docs/architecture/架构/生成引擎/tier2细节图说-D-三层校验与九门.md 图 D2/D5

tier2 探针沙箱底座选型A6 前置阻断)

为什么这是阻断项

探针怎么跑CDP 路径)是 0号 spike 开跑前必须先出结论的前置阻断项D5底座选不定整个九门 + 富游戏三门的真玩矩阵跑不起来。两个候选互斥,要先定走哪条。

两候选

  • 候选 A · agentscope-runtime BrowserSandbox:若它把 page.evaluate / navigate / screenshot / 输入注入touch/key/drag逐项暴露够直接用它跑探针矩阵。当前全仓零引用rg BrowserSandbox 命中 0能力暴露面未验故不能默认选它。
  • 候选 B · 回落自建薄沙箱 + 复用现行 CDP 骨架:复用 play.cdp.cjs 已验过很久的 connect / 截图 / 像素回读 / FNV hash / checkAssertion / runDriver 骨架,探针四钩子为 Phaser 重写。本模块M2play-phaser.cdp.cjs 即按候选 B 落地——直接走 CDPPUT /json/new 建 target → WS → Input.dispatchTouchEvent / Input.dispatchKeyEvent 注入 → Page.captureScreenshot 像素回读),不依赖任何沙箱库。

当前默认走向(务实)

默认走候选 B,理由:① 候选 A 能力面零实证、引入它本身是一笔未验风险;② 候选 B 的 CDP 骨架在 LittleJS 廉价线判过大量游戏是已证可靠的底座Phaser 化只重写四钩子canvas 选择器 / 帧源 / boot 信号 / 输入+state 读取重写面可控。M2 交付的 play-phaser.cdp.cjs 已是候选 B 的可运行实现。

候选 A 不否决,留作后续若需要「进程级隔离 / 多 target 并发编排 / 与 agentscope-runtime 工具循环同源」时再评——但那不是 spike 第一段的必要条件。

mini-desktop 实测清单(结论冻结前置)

6c6g 禁 chrome下列必须在 mini-desktop 跑过才能把本档从「建」转「冻」:

  1. 候选 B 通路自检mini-desktop 起 headless chrome--remote-debugging-port=9222+ serve game-runtime:4320node tier2/harness/play-phaser.cdp.cjs <mini-肥鹅> --base=... --cdp=...,确认 connect / boot / 截图 / 注入 / state 读取五通路全通,产出 verdict.json。
  2. Phaser 四钩子实测定参engine-probe-hooks.md 候选项落实):
    • canvas 选择器:实测 Phaser 自挂 canvas 的真实 id/选择器,回填 PHASER_PROBE.canvasSelector
    • 帧源:实测 window.__tier2Frame()host 导出,候选 game.loop.frame)单调递增,回填 frameReadExpr
    • boot 信号:实测 scene create 完成后 window.__tier2Booted 真置位,回填 bootReadExpr
    • state 读取:实测游戏经 _forensicsView → host 透传到 window.__gameState() 通路真可读。
  3. 候选 A 能力面体检(可选 / 仅当要评 A 时):在 mini-desktop import agentscope-runtime 的 BrowserSandbox逐项验 evaluate/navigate/screenshot/输入注入是否暴露够;够 → 才有资格替换候选 B。

与 host 契约的接口对账

本档的 Phaser 探针钩子依赖 hostA4boot-phaser-host.d.ts)在页面侧导出三个全局:window.__tier2Bootedboot 信号)、window.__tier2Frame()(帧源)、window.__gameState()(语义 state由游戏 _forensicsView → host 透传。host 实现方须按这三个全局名落地,否则探针读不到(回落表达式里也兼容了 __phaserGame.loop.frame / __tier2Host.state() / __genInternals 等候选名spike 实测后收敛到单一约定)。