# wg1/gen-worker —— W-G1 L1 生成 worker(便宜模型 → 可真玩轻游戏) > **结论看 [`REPORT.md`](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//(见该目录 .agent,解释为何落那) ``` ## 前置(本机一次) ```bash # 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`。 ## 跑 ```bash # 生成 + 真玩一款(默认 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/.json` 写 `{title, brief, play_spec:{inputs,expectedEngineCallPrefixes}}`,再 `run.py `。 ## 七门真玩判据(全过才 PASS,详见 REPORT §2) A 装载 · B 未捕获 · C 掌帧[20,45] · D 真渲染 · E 活性 · F 真接线(__engineCalls) · **G 输入有效(确定性 A/B 对照)**。 verdict 落 `game-runtime/games/_wg1-gen//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 评分。