games-development-ai/tier2/RUN-ON-MINI-DESKTOP.md
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

5.5 KiB

tier2 富游戏引擎 · mini-desktop 端到端真跑指南

6c6g 禁 chrome、无 esbuild → tier2 引擎的 buildrun_gates(真浏览器九门)两段只在 mini-desktop 真跑。 本档列清在 mini-desktop 上从同步分支到看是否过门的完整步骤,配 tier2/run-on-mini-desktop-smoke.sh 一键冒烟。

机器/环境(已就绪,见 docs/内网凭据与端点.md):

  • mini-desktop:/usr/bin/google-chrome 已装;Python venv /root/.venvs/agentscope-tier2(agentscope 2.0.2 已装);staging repo /root/game-staging/repo
  • game-runtime 工具链:game-runtime/node_modules/.bin/esbuild + ws 已装;phaser 包不必装(构建 external:phaser,运行时宿主页经 CDN 注入 window.Phaser)。

① 同步本分支

ssh mini-desktop
cd /root/game-staging/repo
git fetch origin
git checkout feat/tier2-phaser-engine
git pull --ff-only origin feat/tier2-phaser-engine

若 staging 树被别的 session 占在另一分支,用独立 worktree 隔离: git worktree add /root/game-tier2-wt feat/tier2-phaser-engine,后续步骤 cd 它。

② 装依赖(只首次 / 依赖变更时)

# Python:本入口的 agentscope 已装在 venv;若 venv 缺,新建并装:
python3 -m venv /root/.venvs/agentscope-tier2   # 若不存在
/root/.venvs/agentscope-tier2/bin/pip install 'agentscope[full]==2.0.2' openai json-repair pyyaml

# JS 工具链(esbuild 构建 + ws 给 CDP);在 game-runtime 下:
cd /root/game-staging/repo/game-runtime
npm i -D esbuild     # 已装则跳过
npm i ws             # 已装则跳过
# phaser 不必 npm 装(external:phaser + 宿主页 CDN)。离线环境想本地化 Phaser:
#   npm i phaser@3.80.1,再把 tier2/harness/index.template.html 的 CDN <script> 换成本地 dist 路径。

③ 写 new-api 凭据(key 不入源码,从 env / .env 读)

# 方式 A:env(临时)
export NEWAPI_KEY='<见 docs/内网凭据与端点.md 的 NEWAPI_KEY>'
# 方式 B:.env(持久;tier2/gen-worker/.env,gitignored)
echo 'NEWAPI_KEY=<见 docs/内网凭据与端点.md>' > /root/game-staging/repo/tier2/gen-worker/.env
# base_url 默认 http://100.64.0.8:3000(host 根,Anthropic 原生 /v1/messages);可 NEWAPI_BASE_URL 覆盖。

④ 跑 run_engine.py 一次(一句话 → 生成 + 过门)

cd /root/game-staging/repo/tier2/gen-worker
/root/.venvs/agentscope-tier2/bin/python run_engine.py feie-001 \
  --brief "做一个面包店经营合成游戏,合成原料做成品交订单赚金币" \
  --model MiniMax-M3 --max-tokens 16000 --thinking-budget 8000 --max-iters 40

闭环(单写 ReAct agent 自治): scaffold_init(铺 mini-肥鹅 平台预建骨架 + 留空数据表)→ write_source(填 data/datatable.gold.json 真值 + src/scenes/play-scene.js 表现层)→ build(esbuild 多文件 Phaser iife)→ run_gates(真 chrome 跑 L1 九门 + 富游戏三门,产 evidence/verdict.json)→ read_verdict 看哪门没过 → 针对性改源 → 再 run_gates …… 直到门全绿 调 finish,或四道熔断(step_cap/budget/stuck/timeout)停。

⑤ 看是否生成 + 过门

GID=feie-001
GEN=/root/game-staging/repo/game-runtime/games/_tier2-gen/$GID
# 结果摘要(run_engine 落):
cat /root/game-staging/repo/tier2/gen-worker/results/$GID.json | python3 -m json.tool | head -40
# 真玩 verdict(harness 落;tier2-verdict.schema.json 形状):
cat $GEN/evidence/verdict.json | python3 -m json.tool | head -60
# 取证四件套:
ls -l $GEN/evidence/    # verdict.json / first-paint.png / after-play.png

判读:

  • results/<id>.jsonfinished=truelast_verdict.decision="accept"layerResults.L1.passed=true = 过门
  • decision="fix" = 门没过到收敛(看 reasons / gateResults 哪门红 / richGameGates 哪个子检查 ✗)。
  • circuit_break 非空 = 触发熔断(kind=step_cap/budget/stuck/timeout)。

⑥ 单独跑某一段(调试用)

# 只 build(看 esbuild 是否打通 + 产物):
cd /root/game-staging/repo/game-runtime
node ../tier2/engine/build-phaser.mjs games/_tier2-gen/feie-001 --global-name=__Tier2GameBundle --out=bundle.iife.js
# 只 run_gates(serve 仓根 + chrome + 九门;须先有 bundle.iife.js + index.html):
cd /root/game-staging/repo
bash tier2/harness/serve-and-play-phaser.sh _tier2-gen/feie-001 4330 9322
echo "play rc=$?"   # 0=accept / 非0=非accept

一键冒烟(不烧 LLM token · 验装配链而非生成质量)

tier2/run-on-mini-desktop-smoke.shfixture(mini-肥鹅,数据表已是金标) 走 build → run_gates, 验「装载 host + esbuild + CDP 九门 + 富游戏三门」整条真跑链路打通(不调 agent / 不烧 token)。 真实生成质量(便宜模型能不能稳填表 + 写表现层)由 ④ 的 run_engine 真跑测。

cd /root/game-staging/repo
bash tier2/run-on-mini-desktop-smoke.sh
# 退出码 0 = fixture 过 build + 九门 + 富游戏三门(整条真跑链路通);非 0 = 某段断,看输出定位。

常见坑

  • 502 / 连不上网关:worker/client.py 已把网关 host 并入 NO_PROXY(clash 代理会把内网请求转走)。若仍 502,确认 NEWAPI_BASE_URLhttp://100.64.0.8:3000NEWAPI_KEY 正确。
  • __Tier2GameBundle 工厂缺失:bundle 没构建或构建失败 → 先单独跑 ⑥ 的 build 段看 esbuild log。
  • 守卫A boot 超时:多半宿主页 /tier2/engine/boot-phaser-host.js 取不到(serve 必须 serve 仓根,serve-and-play-phaser.sh 已这么做);或 Phaser CDN 拉不到(离线环境换本地 phaser dist)。
  • chrome 起不来:CHROME_BIN 显式覆盖路径,或确认 --no-sandbox(serve-and-play-phaser.sh 已带)。