zizi 238ec2dbe8 test(aigc-3b-B): 视觉终局达成——真游戏真玩入 feed(亲眼验);一句话现生成腿缺口=tap类driver:none→L1
3b-B 重跑视觉终局(mini-desktop·证据 wg1/gen-worker/evidence-3bB-final/):

✅ 视觉终局达成(亲眼复核截图):feed 里一款真渲+真玩有进展的井字棋(gameId=9306/versionId=93112)——
  空盘「轮到X」→ 落子填盘 X·O → 「X 胜!」+ 重新开始(latch 终态);feed 真玩门 10/11 过
  (no_demo_fallback/engine_rendered/lively_interactive 全 true,唯一 false=play_start 遥测非阻断)。
  经真 HMAC 回调写链落库(验签通过 engineBundleLen=210891→建版本→组包 checksum 自洽→翻 feed)。

走兜底路(诚实标注):主路一句话现生成两次均失败,故取已验证过九门样板 tictactoe(便宜模型 flash 真生成、
  verdict A-I 全 pass)的 engineBundle 经派发面真回调路落 feed,DB bundle 与样板 sha256 字节级一致。
  仍是便宜模型真生成的过门游戏,只是非本次现生成。

★ 主路两次 fresh 失败真因(非模型壁垒,铁证):design agent 在 dispatch 面 run_studio(play_spec={}) 下
  均给 driver:{type:none}→harness 盲打打不中目标→moves/score 恒 0→H_progress 挂+latch 不触发,repairs=5
  耗尽。游戏本体全对(gen9306/9307 verdict 8/9 门过,targetX/Y/radius·board·moves 导出正确,G_input/
  I_control/F_wiring 均过)。样板过门靠 lane brief 手供 play_spec.driver=tap-targets。
  → 蒸馏入 cheap-model §7:DESIGN_SYSTEM 须对离散点击类强制产 tap-targets driver(纯 L1 生成域,
  moat『一句话现生成』腿的真·临门一脚)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-15 00:48:50 +00:00
..

wg1/gen-worker —— W-G1 L1 生成 worker(便宜模型 → 可真玩轻游戏)

结论看 REPORT.md(durable)。本文件 = 如何跑。 验证 HJ-GEN-001:便宜模型(new-api)在插件库+装载契约上写出可真玩轻游戏,质量由 harness 七门保证。

它做什么

brief(题面)→ 便宜模型写 GameHostFactory 源码 → 静态校验门 → esbuild 打 __GameBundle iife → P1 宿主 bootGameHost 装载 → 本机 Chrome+CDP 真玩七门取证,失败回喂错因重试 ≤N。"能生成代码 ≠ 能玩"——必须过真玩门才算 pass。

目录

wg1/gen-worker/
├── REPORT.md            # 交付报告(结论/四件套/成本/坑/最优模型)
├── requirements.txt     # openai==2.41.1 + json-repair
├── .env                 # NEWAPI_KEY 等(gitignored,绝不入库)
├── worker/
│   ├── _client.py       # 裸 openai 客户端 + 代理旁路 + usage(复用 spike 范式)
│   ├── prompt.py        # 生成上下文包(契约/能力面/禁用项/few-shot)→ system+user
│   ├── validate.py      # 校验门:抽码 + 静态契约扫描 + node --check 语法
│   ├── cost.py          # ¥ 折算(new-api quota 口径,/api/pricing+/api/status)
│   └── run.py           # 编排(§3 job-in/result-out + 重试门)
├── briefs/              # pong.json / simon.json / whack.json(题面 + CDP play-spec)
└── results/             # 每 run 结果(pass/retries/verdict 七门/tokens)
# 生成游戏产物在 game-runtime/games/_wg1-gen/<game>/(见该目录 .agent,解释为何落那)

前置(本机一次)

# 1) 密钥(gitignored,走环境):编辑 wg1/gen-worker/.env 写 NEWAPI_KEY(向创始人要)
# 2) game-runtime 工具链(esbuild + ws,CDP 驱动用)
npm i --prefix game-runtime
# 3) worker venv
uv venv wg1/gen-worker/.venv --python 3.12
uv pip install -p wg1/gen-worker/.venv/bin/python -r wg1/gen-worker/requirements.txt
# 4) 自测连通(列模型,零成本)
wg1/gen-worker/.venv/bin/python wg1/gen-worker/worker/_client.py

依赖本机 macOS + Google Chrome(headless)+ Tailscale 可达 new-api 网关 100.64.0.8:3000。

跑

# 生成 + 真玩一款(默认 deepseek-v4-flash;--model 换模型;--max-retries N)
wg1/gen-worker/.venv/bin/python wg1/gen-worker/worker/run.py pong
wg1/gen-worker/.venv/bin/python wg1/gen-worker/worker/run.py simon  --model deepseek-v4-pro
wg1/gen-worker/.venv/bin/python wg1/gen-worker/worker/run.py whack
# 成本表(聚合 results/*.json)
wg1/gen-worker/.venv/bin/python wg1/gen-worker/worker/cost.py
# 仅重放某款已生成 bundle(不重新生成,调试 harness 用)
( cd game-runtime && bash games/_wg1-gen/_shared/serve-and-play.sh pong )

新游戏:在 briefs/<id>.json 写 {title, brief, play_spec:{inputs,expectedEngineCallPrefixes}},再 run.py <id>。

七门真玩判据(全过才 PASS,详见 REPORT §2)

A 装载 · B 未捕获 · C 掌帧[20,45] · D 真渲染 · E 活性 · F 真接线(__engineCalls) · G 输入有效(确定性 A/B 对照)。 verdict 落 game-runtime/games/_wg1-gen/<game>/evidence/verdict.json + 首帧/玩后截图。

边界

  • 只消费冻结契约(game-host.d.ts / boot-game-host.js / __GameBundle / bootGameHost),零修改。
  • 不推 dev/2.0.0;只在 lane 分支 wg1/gen-worker。
  • 不做(创始人并行 P3/mainline):AigcGenerateExecutor 接线、白名单注册、全 20 游戏 bake-off、judge 评分。