diff --git a/.agents/README.md b/.agents/README.md index 4833b689..1a31f448 100644 --- a/.agents/README.md +++ b/.agents/README.md @@ -58,7 +58,7 @@ | `skills/game-e2e-cdp-harness.md` | Canvas 游戏 e2e 证据 harness:编排形制/驱动器六律/出厂红线/四件套口径(T1b-α 实证;§7 = W-G1 生成游戏真玩九门 = 假绿守卫 G 门 + H 机制/latch + I 控制手感 + 自产 gatespec) | | `skills/cheap-model-game-generation.md` | 便宜模型(new-api DeepSeek/MiniMax)直出可真玩轻游戏 L1 worker:链路/模型与成本/L1 纪律/坑红线/latch 套壳/design agent 自产 gatespec/质量三层(W-G1 HJ-GEN-001 实证)。**注(2026-06-26)**:reframe 后便宜档生成已迁 `cheap-worker/`(Python/AgentScope,见 `agentscope-2.0-facts` 实现速查 + memory `amodel-generation-build-state`);本条 W-G1 gamedef/factory/worker-loop 路已退役,仅成本/代理坑/模型画像/质量三层跨路有效(详见篇首状态注) | | `skills/agentic-amodel-generation.md` | **agentic A-model 生成 harness(ReAct+M3 已实证·生产形态)**:scaffold→工具循环(read/write/list/check/build/done)→循环外 play;链路/5 文件/运行配方/8 坑(write 前缀·compaction·停机纪律·防假绿·bundle.tick·boot envelope·路径深度)/M3 3-玩法自闭环实证/主流定性;取代旧 gamedef 单次产线(HJ-AGI-003) | -| `skills/gen-path-parity-harness.md` | **两条生成路对照验证(parity) harness 范式**:验「换实现后生成质量没回退」(Node→Python 重写/换模型/换框架)。对照公平铁律=驱动器 held constant(每品类金标 play-spec 喂两路)/ 金标只对 tap-targets 族公平(key-cycle 按键是生成侧自由选择不在 forensics 契约,需输入键契约)/ 注入=生成与 play 拆步+金标覆写 staged 真路径(非 evidence)/ 两层判据+逐品类绝对地板+双低标红(防 flaky 基线假等价)/ 成功定义钉死「金标 spec 下」≠生产许可/ 自动 spec 期望外生防自证(语义期望字段不从被测实际反推)/ 端口池+线程前台有界并发;WU-A 后续 cheap-worker/compare_node.py、M1 达标门(003)实证(双评审揪坑) | +| `skills/gen-path-parity-harness.md` | **两条生成路对照验证(parity) harness 范式 + 按品类 ≥80% 达标门**:验「换实现后生成质量没回退」(Node→Python 重写/换模型/换框架)+ 判「生成质量够不够格上线」。对照公平铁律=驱动器 held constant(每品类金标 play-spec 喂两路)/ 金标只对 tap-targets 族公平(key-cycle 按键是生成侧自由选择不在 forensics 契约,需输入键契约)/ 注入=生成与 play 拆步+金标覆写 staged 真路径(非 evidence)/ 两层判据+逐品类绝对地板+双低标红(防 flaky 基线假等价)/ 成功定义钉死「金标 spec 下」≠生产许可/ 自动 spec 期望外生防自证(语义期望字段不从被测实际反推)/ **达标门质量口径**(编排未收敛 timeout/step_cap 剔出达标率分母、单列归编排硬化,rawPassRate 并报贴近生产交付率)/ 端口池+线程前台有界并发;WU-A 后续 cheap-worker/compare_node.py、M1 达标门(003 bake_off.py)实证(双评审揪坑) | | `skills/saa-graph-orchestration.md` | SAA(Spring AI Alibaba)裸 StateGraph 生成编排:拓扑/加节点/接 new-api(剥 /v1 坑)/checkpoint(含 saved_at 无 tiebreaker 框架坑+显式 checkPointId 修法)/observation/最小依赖集/派发契约/验证门(HJ-AGI-002 实证) | | `skills/doc-organizer.md` | 文档整理助手(创始人手动触发):增量(上次清理→现在)+**两阶段审批门**——发起分析 Workflow→编清理计划→评审→批准后才执行;三轴=过期档清理(归档/压缩)/核心设计档措辞对齐现行真相/主任务总账回填;底层 `tools/doc-organizer.{sh,-analyze.mjs,-state.json}`(检测自动·判断留人·脚本不自删·最新日在飞档不碰) | | `skills/drive-remote-claude-tmux.md` | 远程驱动交互式 Claude Code(ssh + tmux):双向通道 send-keys 派活 + capture-pane 读屏,不走 ACP/headless;每设备配置块 + onboarding 侦察配方 + 专用会话(独立 worktree 防撞树) + bypass-perms + 安全红线;**完成判据=git push 非读屏**(创始人 2026-06-18 拍板·多设备复用) | diff --git a/.agents/skills/gen-path-parity-harness.md b/.agents/skills/gen-path-parity-harness.md index d5806f36..46d77a62 100644 --- a/.agents/skills/gen-path-parity-harness.md +++ b/.agents/skills/gen-path-parity-harness.md @@ -1,6 +1,6 @@ --- name: gen-path-parity-harness -description: 两条生成路对照验证(parity)harness 范式——验证「换实现后生成质量没回退」(Node→Python 重写 / 换模型 / 换框架)。核心=对照公平铁律(驱动器 held constant)+ 金标 spec 注入 + 两层判据 + 端口池并发 + 自动 spec 期望外生防自证。WU-A 后续(cheap-worker/compare_node.py)、M1 达标门(003)实证。 +description: 两条生成路对照验证(parity)harness 范式 + 按品类 ≥80% 达标门(bake-off)——验证「换实现后生成质量没回退」(Node→Python 重写 / 换模型 / 换框架)并判「生成质量够不够格上线」。核心=对照公平铁律(驱动器 held constant)+ 金标 spec 注入 + 两层判据 + 端口池并发 + 自动 spec 期望外生防自证 + 达标门质量口径(编排未收敛剔出分母、单列归编排硬化)。WU-A 后续(cheap-worker/compare_node.py)、M1 达标门(003,bake_off.py)实证。 node_type: skill --- @@ -53,6 +53,23 @@ node_type: skill 实证:M1(`docs/plans/2026-06-26-003-feat-cheap-worker-M1-达标门绿-plan.md`)U2,Opus 评审核出自动 spec 与金标唯一实质差异就是这个字段,且它是达标门防假绿的第二层(第一层=按品类判防平均掉卡死品类)。 +## 达标门口径:质量地板 vs 生产真实交付率(M1 U3 实证) + +对照验证比的是「两路等价」;达标门(bake-off)换一个问题——「这条路生成出来的游戏,按品类稳不稳定够格上线」,按品类聚合九门过门率、逐品类 ≥80% 判。建这道门时,**算过门率的分母怎么定**是个会直接翻转结论的口径决策。 + +一次生成会以两种性质完全不同的方式「不过」: + +- **九门质量挂**:游戏产出来了、跑进对局,但某道确定性门没过(如 H_progress 没真进展)。这是真·游戏不可玩。 +- **编排未收敛**:agent 编排根本没把游戏做出来——M3 撞单步静默超时(`timeout`)或工具调用步数硬顶(`step_cap`),`finished=false`、`staged=false`、**没有九门 verdict**。这不是「游戏不好」,是「这次生成没收敛」。 + +把两者混进同一个分母,达标率就掺了模型的编排稳定性抖动,不再纯反映生成质量。M1 实测把这点钉死:click-score 合并 14 款,原始口径(未收敛计入失败)= 11/14 = 0.786 卡在 0.8 边界下;剔掉 2 个编排未收敛后质量口径 = 11/12 = 0.917 稳过——同一批样本,口径之差直接决定里程碑收不收口。两批之间的方差(0.714 vs 0.857)也几乎全来自未收敛款的计数,不是质量波动。 + +**口径铁律(创始人 2026-06-27 定)**:达标门只衡量九门质量地板,**分母 = 收敛款**(`finished=true`、有 verdict);编排未收敛剔出分母、单列一个 `unconvergedTotal` 指标,归生成稳定性(编排硬化)那条线,不混进质量判定。但**原始口径(含未收敛的 `rawPassRate`)必须并报**——它贴近生产里用户的真实交付率(用户视角:没拿到能玩的游戏就是失败),是另一层指标,只是不作质量达标判据。`converged==0`(全未收敛)→ `insufficient`,质量无从判、不得默判达标。 + +两个边界别越:① 剔未收敛**不是**给质量放水——它剔的是「没产出游戏」的样本,不是「产出了但不好」的样本;后者(质量挂)照常计入失败。② 未收敛率本身是真问题(M1 实测 ~7%),只是它的家在编排稳定性、不在达标门;达标门的职责是把它**显式量出来单列**,不是吸收进质量数字里假装没有。实现见 `bake_off.py` 的 `judge_genre`(分母 converged + rawPassRate 并报)/ `aggregate`(unconvergedTotal 汇总)。 + +> 配套的两个生成质量前置(M1 同里程碑、归生成侧不归达标门):**U1 护栏**——共享 oracle `tools.mjs` 的 `check()` 在打包前堵「返 void 的绘制 API 被误当返回值用」这类能静态判的幻觉(过 check 却运行期卡菜单的子集),救回卡死品类进样本池;**U4 预算闸**——便宜档复用 tier2 `CircuitBreakerMiddleware`,发起每次模型调用前预估累计 ¥、越 ¥10 硬上限即 fail-closed,成本按 new-api quota 口径落盘(取价不可达降级到次数/token 闸 + 告警,不静默超支也不静默阻断)。 + ## 并发(可选,提速) 并发的真约束不是产物隔离(gameId 前缀已隔离),是九门 play/smoke 的固定端口 + Chrome 实例。 @@ -67,9 +84,12 @@ node_type: skill ## 实现指针 - `cheap-worker/compare_node.py`:`judge_genre`(两层判据)/ `inject_golden` + `_write_spec_atomic`(金标覆写 staged)/ `run_pair_sync`(生成→注入→play 整对)/ `run_multi`(端口池 + 线程 + 限并发)/ `_port_pool`。 +- `cheap-worker/bake_off.py`(达标门):`judge_genre`(质量口径 = 分母 converged + rawPassRate 并报 + unconverged 单列)/ `aggregate`(按品类逐项 ≥0.8 + unconvergedTotal 汇总 + 缺收敛样本报 insufficient)/ `run_one_sync`(透传 breakerKind 供未收敛诊断)/ `run_bakeoff`(端口池有界并发 + 报告不覆盖)。 - `cheap-worker/fixtures/golden-specs/`:每品类一份金标 play-spec。 - 九门 harness 本体(驱动器家族 / play.cdp.cjs / 出厂红线)见 [game-e2e-cdp-harness](game-e2e-cdp-harness.md);AgentScope 2.0.2 便宜档实现 API 见 [agentscope-2.0-facts](../knowledge/agentscope-2.0-facts.md)。 ## 实证 WU-A 后续(2026-06-26,`docs/plans/2026-06-26-002-feat-cheap-worker-multi-genre-plan.md`):三 tap-targets 品类 n=3 对照 Python 新路 vs Node 旧路全 equivalent,坐实范式未回退。Codex + Opus 双评审揪出的四个真坑都在本范式里固化成了铁律:注入路径错(evidence 而非 staged)、品类族判错(点击得分是 occupied 反应族不是放置族)、判据缺绝对地板(双低被判等价)、只精化单侧 spec 污染对照。 + +M1 达标门(2026-06-27,`docs/plans/2026-06-26-003-feat-cheap-worker-M1-达标门绿-plan.md` U3 收口):三 tap-targets 品类各 7 款 M3 实测 + click-score 补跑 7 款确认抖动,质量口径逐品类 ≥0.8 全过——click-score 11/12=0.917、whack-mole 7/7=1.0、shop-serve 6/7=0.857,M1 达标门绿。关键发现 = 上「达标门口径」节的口径铁律:同一批 14 款 click-score,原始 0.786(边界下)与质量 0.917(稳过)之差全在 2 个编排未收敛款(timeout/step_cap),口径决定收口。收口报告 `cheap-worker/results/bake-off-M1-final.json`(results gitignored、本地证据)。