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>
3.9 KiB
3.9 KiB
date, topic, status, owner, 映射源档
| date | topic | status | owner | 映射源档 | ||
|---|---|---|---|---|---|---|
| 2026-06-23 | tier2 探针沙箱底座选型(A6 前置阻断项的结论落点) | 建(结论待 mini-desktop 实测候选 A 的能力暴露面才冻;本档先钉默认走向 + 实测清单) | tier2 引擎线(M2 探针+门) |
|
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 重写。本模块(M2)的play-phaser.cdp.cjs即按候选 B 落地——直接走 CDP(PUT /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 跑过才能把本档从「建」转「冻」:
- 候选 B 通路自检:mini-desktop 起 headless chrome(
--remote-debugging-port=9222)+ serve game-runtime(:4320),跑node tier2/harness/play-phaser.cdp.cjs <mini-肥鹅> --base=... --cdp=...,确认 connect / boot / 截图 / 注入 / state 读取五通路全通,产出 verdict.json。 - 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()通路真可读。
- canvas 选择器:实测 Phaser 自挂 canvas 的真实 id/选择器,回填
- 候选 A 能力面体检(可选 / 仅当要评 A 时):在 mini-desktop import agentscope-runtime 的 BrowserSandbox,逐项验 evaluate/navigate/screenshot/输入注入是否暴露够;够 → 才有资格替换候选 B。
与 host 契约的接口对账
本档的 Phaser 探针钩子依赖 host(A4,boot-phaser-host.d.ts)在页面侧导出三个全局:window.__tier2Booted(boot 信号)、window.__tier2Frame()(帧源)、window.__gameState()(语义 state,由游戏 _forensicsView → host 透传)。host 实现方须按这三个全局名落地,否则探针读不到(回落表达式里也兼容了 __phaserGame.loop.frame / __tier2Host.state() / __genInternals 等候选名,spike 实测后收敛到单一约定)。