承接目录治理:上轮只压缩内容未减文件数,闭线工作记录仍平铺致目录看着仍一堆(创始人指出)。本次执行 B2 归档。 64 个 ≤06-15 闭线档(25 压缩桩 + 闭线 review/report/纪要/edit-plan)git mv 入 docs/agent-specs/_archive/(文件名不变、仍 git 跟踪可查)。热目录 ≤06-15 仅留 13 活档(决策/纲领/SoT/活spike)+13 个 06-16 在飞。 活资产 20 处旧路径引用(.agents/docs/memory/_index)同步改 _archive/,引用断裂复测=0;_index 活地图 + 治理档状态收口。约束:0 个 06-16 被移、orchestrator 等未跟踪在飞档零误纳。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
13 KiB
《W-G1 · 最小 agentic studio(黄金模板先行)+ 模型路由三阶段》执行版 master spec
状态:执行版 master spec · 2026-06-14 重写(supersede 单角色 bake-off 框架)· 待 Round-2 review。 上游:review 版 §8(决策+战略扩展+守护栏,创始人已确认);Round-1 四评审(对抗/可行/范围/一致)findings 已纳入本版。 本 lane:
wg1/gen-worker。代码wg1/gen-worker/+game-runtime/games/_wg1-gen/;judge rubric →contracts/prompts/(或先暂存 lane,见 §9)。零改冻结契约 / 不碰主线 / 不推 dev·2.0.0。 定位转变(关键):这不是"便宜模型写代码",是 agentic 多角色 studio——一队便宜模型 agent(设计/代码/修复/player panel)在 AgentScope 上协作产出游戏,player agent 真玩真判,studio 闭环修到"真能玩+好玩"。Opus=脚手架(建门/校准/改 agent scope),建好即退,生产无 Claude。
结论先行
- 主干:最小 studio = 设计→代码→七门(确定性地板)→player panel(M3 视觉+flash 文本)真玩真判→回喂修复 ≤5。黄金模板先行:先在**一款(打砖块 Breakout)**打磨透整条闭环,再克隆扩。
- 模型 = 可替换配置旋钮,分三阶段:Stage1 flash/M2.7(便宜双家)+M3 先跑通 → Stage2 pro+M3 再生成对比 → Stage3 逐 agent×逐模型 评分矩阵 → model routing。
- 命门验真闸(不可省):player agent 判"好玩"必须对创始人亲玩锚定(含"能跑但无聊"反例集),证便宜 player 真跟人类相关再信。否则是 vibes。
- 交付即资产:打磨过的 agent 层(角色/循环/门/自修复)+ 模型性能矩阵(喂 routing)+ player 校准结论 + 引擎/插件库缺口清单。
1. 目标与范围
本期目标(可验收)
- 最小 studio 闭环(on AgentScope 进程内多 agent):Breakout 一款,设计→代码→七门→player panel→自修复 ≤5,端到端真跑通(非桩)。
- player panel + 校准件:M3 视觉位 + flash 文本位多人格;校准 panel↔创始人亲玩一致率(含反例集)。
- 模型路由三阶段:Stage1 跑通(flash+M3)→ Stage2 对比(pro+M3 再生成一版)→ Stage3 逐 agent×模型评分矩阵。
- Opus 改 agent scope 的 lift(单变量隔离、held-out、分布对照——见 §9 方法约束)。
- 缺口清单:Breakout 暴露的引擎/插件库短板(为克隆扩款做准备)。
非目标(本期不做)
- art/music 生成角色(后续波次走 MiniMax/mmx-cli)、全 20+ 款 bake-off、4 档全靶集、生产接线、quality_score MQ 化。
- 不 fork AgentScope 内核(只改我方 agent 层);Opus 不进生产环;音乐质量不硬判(无验证音频模态)。
2. 前置条件(均已核实 · 2026-06-14)
| 前置 | 状态 | 证据 |
|---|---|---|
| AgentScope 2.0.1 | ✅ 三闸全过 | spikes/agentscope-wg1/VERDICT.md(分布式/持久化/L1 开销);进程内多 agent 单机即可,避 #1868 多实例 bug |
| 文本模型 flash/pro | ✅ 可路由 | 网关探活;flash ¥0.0015/1k out、pro ¥0.0058/1k out |
| 视觉模型 M3 | ✅ 能看且准 | 双色图实测答对"左红右绿";¥0.0175/1k out(贵 11×,输出限短) |
| 七门真玩 harness | ✅ 可信 | _wg1-gen/_shared/play.cdp.cjs;golden-path 自检无假绿 |
| L1 worker 底座 | ✅ 已落地 | wg1/gen-worker/worker/(含薄自修复循环,Simon 2 重试真过) |
| MiniMax 生图/音乐 | ✅ 能力在 | mmx-cli skill;后续 art/music 波次用 |
| 创始人好玩基线 v2 rubric | ⚠️ 未定稿 | W-T1b §4"待过目";故 player 校准锚=创始人亲玩本人,不依赖未定稿 rubric(见 §6) |
3. 总体架构
flowchart TB
OPUS["Opus 脚手架(写角色prompt/人格·校准·改agent scope·建好即退)"]
subgraph STUDIO["最小 agentic studio · AgentScope 进程内多 agent · 模型=配置旋钮"]
BRIEF["brief"] --> DESIGN["设计 agent"]
DESIGN --> CODE["代码 agent(玩法/机制/平衡/关卡/脚本=生成域)"]
CODE --> VAL["静态校验门"] --> BUNDLE["esbuild __GameBundle"] --> PLAY
PLAY["七门真玩(确定性地板·假绿守卫)"] -->|"挂:门+证据"| FIX["自修复 agent"]
FIX -->|"≤5(含模型升档)"| CODE
PLAY -->|"过七门"| PANEL["player panel:M3视觉位 + flash文本位·多人格<br/>真玩→判完整度+好玩+具体问题"]
PANEL -->|"问题回喂"| FIX
end
OPUS -. "写/校准" .-> DESIGN & CODE & PANEL
PANEL --> ANCHOR["校准件:panel ↔ 创始人亲玩一致率(含'能跑但无聊'反例集)"]
style STUDIO fill:#1a2a3a,stroke:#4090c0,color:#fff
style ANCHOR fill:#3a2a2a,stroke:#c06060,color:#fff
4. 模型路由(本版新增核心 · per-agent 配置旋钮)
原则:模型可替换 → per-agent 模型在 config(worker/models.yaml)声明,不硬编码。换配置即换模型,支撑对比与后续路由。
三阶段:
| 阶段 | 配置 | 目的 |
|---|---|---|
| Stage 1 先跑通 | 文本 deepseek-v4-flash + MiniMax-M2.7(便宜双家)· 视觉 MiniMax-M3 |
验 studio 闭环端到端通 + 早期 DeepSeek×MiniMax 跨家对比信号(M2.7 输出贵些但要跨家信号) |
| Stage 2 出对比 | 文本 deepseek-v4-pro · 视觉 M3,同款再生成一版 |
同 brief/同 studio 只换模型 → 对比真实效果(过门率/好玩/手感) |
| Stage 3 评+路由 | 逐 agent × 逐候选模型 跑,采集各 agent 输出 | 模型性能评估矩阵(哪个模型配哪个角色)→ 喂 engine 优化 + model routing |
默认起步配置(Stage 1):
| Agent | Stage1 模型 | 说明 |
|---|---|---|
| 设计 / 代码 / 自修复 | flash + M2.7(便宜双家,逐 agent 可配) |
先跑通 + 早期跨家对比(同款各跑一版) |
| player·视觉位 | MiniMax-M3 |
唯一视觉;输出强制短(结构化 verdict+一句理由)控成本 |
| player·文本位 | deepseek-v4-flash |
只读结构态,给 panel 异构 |
| (后续)art 生成/判定 | MiniMax 生图 / M3 判 |
走 mmx-cli;本期不接 |
| (后续)music 生成 | MiniMax 音乐 | 走 mmx-cli;质量留人/指标 |
成本纪律:Stage1 最省(flash 统一);pro/对比开销 Stage2 才花;实验期"测而不闸"(照测 ¥/款,不拿 ¥0.15 卡质量),出分级结论。reasoning 档(flash/pro)给够 max_tokens;M3 非 reasoning 快、输出限短。
5. 角色契约(契约先行 · 最小集)
| Agent | 输入 | 输出 | 默认模型 |
|---|---|---|---|
| 设计 | brief 题面 | 设计稿{机制/胜负/操作/juice 要点} | flash |
| 代码 | 设计稿 | GameHostFactory 源码(默认导出,只调插件面+6 受控面) | flash→(Stage2)pro |
| 自修复 | 失败门(七门哪挂)+证据 + player 问题 | 修订源码 | 跟随代码档;连败升档(flash→pro) |
| player(视觉) | 截图序列 + 结构态探针 | {完整度判, 好玩判, 具体问题[]} | M3 |
| player(文本) | 结构态探针 | 同上(无截图) | flash |
玩法/机制/平衡/关卡/脚本本期合于代码 agent 生成域(模板哲学);拆细为独立 agent 属后续波次。
6. player panel 校准(命门验真闸 · Round-1 BLOCKER-2 存活形态)
- 锚 = 创始人亲玩本人(非未定稿 rubric、非 Opus):一组样本(含故意"能跑但无聊"反例:单机制/无失败惩罚/无进度感)→ 创始人亲玩打分 vs player panel 打分 → 量一致率 + 区分力(panel 能否把反例判否)。
- 达标才信:一致率/区分力达标→panel 判进流程;不达标→该维度退回创始人亲玩,并记"便宜 player 判不了 X"为天花板结论(无论达标与否都是有效交付)。
- 七门是前置地板:player 只玩过七门的件(挡"对坏游戏幻觉好玩")。
7. 涉及文件
| 模块 | 路径 | 动作 |
|---|---|---|
| 模型路由 config | wg1/gen-worker/worker/models.yaml(新) |
per-agent 模型声明 |
| agent 编排层 | wg1/gen-worker/worker/agent_loop/(新·框架中性名) |
AgentScope 角色/进程内编排/状态;框架适配隔离 |
| 复用底座 | worker/{_client,prompt,validate,run,cost}.py |
以现有薄自修复循环增量,非搬 agent-loop-v1 1269 行 |
| player 驱动 | _wg1-gen/_shared/play.cdp.cjs |
加 player 感知钩子(截图导出 + 结构态);采集项待 panel 设计 |
| 校准件 | wg1/gen-worker/calibration/(新) |
反例集 + 创始人亲玩打分录入 + 一致率算 |
| judge rubric | contracts/prompts/(或暂存 lane) |
Opus 派生(对齐创始人 eval 门,未定稿则暂存) |
| 黄金款产物 | game-runtime/games/_wg1-gen/breakout/ |
factory + bundle + evidence |
8. 波次
| 波次 | 内容 | 完成条件 |
|---|---|---|
| P0 跑通 | AgentScope 进程内 设计→代码→七门→player→自修复 闭环,Breakout 一款,Stage1 配置(flash/M2.7 + M3) | 一款端到端真跑通(非桩)+ shakedown 初裁 |
| P1 校准 | player panel 多人格 + 校准件(创始人亲玩 vs panel,含反例) | 一致率/区分力表 + "信哪些维度"结论 |
| P2 对比 | Stage2:pro+M3 同款再生成 → 与 Stage1 对比真实效果 | 模型对比表(过门率/好玩/手感/¥) |
| P3 评+路由 | Stage3:逐 agent×模型评分矩阵 + Opus 改 agent scope 测 lift | 模型性能矩阵 + lift 报告(单变量/held-out) |
| (后续) | art/music 角色(MiniMax)、克隆扩款、4 档靶集、获奖压测 | 下一 spec |
9. 边界失败路径(纳入 Round-1 findings)
| 失败 | 处置 |
|---|---|
| AgentScope 进程内编排不稳 | 退薄 Python 编排(--no-agentscope);记 shakedown |
| 创始人 eval 门 rubric 未定稿 | player 校准锚用创始人亲玩本人,不阻塞;rubric 我起草、事后采纳 |
| player panel 一致率不达标 | 该维度退创始人亲玩 + 记"便宜 player 判不了 X"(有效交付,非失败) |
| 自修复 5 次仍不过 | kill,记 unrepairable+失败门分布 + 缺口 |
| 获奖/超界款 | 仅源码证伪的硬边界(3D)豁免;tilemap/网格/文本/swipe 是 🟡 半缺口,造不出算真失败、三分类归因(3D硬界/模型顶/未尽改进),不许用"超界"洗低产出 |
| 成本超 ¥0.15 | 运行时记 over-budget(测而不闸,主力档可加软闸) |
| Opus 在环泄漏 | CI 断言生产路径(七门+断言+便宜 player)零 Claude 依赖 |
| lift 归因混淆 | 单变量隔离改进(一次只改一类)、held-out brief 验集(调测分离)、N≥3 重复取分布、temperature=0;≤2 轮收敛,禁反复调凑 lift |
10. 验证 / 完成 / 回滚
验证:P0 单款真跑通(非桩);七门全过;校准一致率/区分力表;Stage1↔Stage2 对比表;模型矩阵;lift(单变量/分布/显著性);CI 断 Claude;每结论标【实测】/【推断】/【假设】。
完成:Breakout 闭环跑通 + player 校准结论 + 模型对比 + 矩阵 + lift + 缺口清单 + shakedown 裁决 + 沉淀 .agents/。
回滚:全 lane,git revert 净回滚;--no-repair 退已验收 L1 裸路;--no-agentscope 退薄编排;judge rubric 先 lane 再并 Registry。
风险与假设(诚实标注)
- [verified·2026-06-14] AgentScope 2.0.1 三闸过、flash/pro/M3 可路由、M3 视觉准、七门可信、L1 底座在——均带证据(§2)。
- [inferred] 便宜 agent 队能产 Breakout 级可玩+好玩件——待 P0/P1 验。
- [assumption·核心待验] 便宜 player 判好玩跟人类相关——靠 §6 校准定论;不相关则退亲玩。
- [assumption] agent-scope lift 显著为正(harness 复利)——单变量/held-out 测;证伪则记模型天花板。
- [守护栏·创始人确认] 只改我方 agent 层、AgentScope 可替换不 fork、Opus 建好即退不进生产、便宜模型生产 in-loop、模型 per-agent 可配置可路由。
执行进展回填(L1,2026-06-15)
本轮创始人定档「driver 残留闭口 + P2 对照(L1 自主)」;P1 校准放量 blocked-on-founder。详见
driver-coverage 闭口与 P2 对照报告。
- P0 跑通 ✅:studio 多角色闭环(设计→代码→七门→player panel→自修复)Breakout 端到端真跑通(非桩),Stage1/Stage1_mmx/Stage2 三档均有数据。
- P1 校准 ⚠️(N=4 命门结论已出,放量 blocked-on-founder):
calibration/report.json实证 M3视觉/flash文本 playergatekeeper_ok=false——便宜 player 高估碰撞 bug 件(pro 件两 player 给 fun4,创始人亲玩 fun2/fix),坐实 review §8「player panel 有结构性天花板、人锚不可替代」。放量需创始人对更多款亲玩补labels.json锚。 - P2 对比 ✅(N=1 Breakout):同款三档对照表(flash ¥0.194 / M2.7 ¥0.514 / pro ¥0.417;过门率/自修复轮/¥/player 分 + 创始人锚)已成。多题面横比留 P3。
- driver-coverage 6 款闭口 ✅:scale-20 余 6 款失败全部归因,0 个模型造不出 / 0 个 3D 硬界。harness driver 1→8 型(新增 flap-to-gap vy 前瞻 / paddle-intercept 弃守排空 / drag-aiming / aim-fire),四因归因铁律(宿主门面 / driver 太朴素 / 可测性边界 / 实例缺陷≠模型)入
game-e2e skill §8。 - P3 评分矩阵 / agent-loop-v1 处置 / 全 20 款补全:留后续波次。