opus 执行位交付、主会话四步验收过(测试亲跑/红线 diff 亲读/硬证亲眼): - playtest.cdp.cjs 生产版(§3 八件:DPR=1 playtest/1 坐标协议/坐标尺/落点回显/ 同点硬提示/反早退/预算 14→24 随进展扩/fail 二掷显式 seed+清存档/图像自检 fail-closed exit=3)+ serve-and-playtest.sh;证据落 evidence/playtest/roll-N/ - cheap_verify:project_floor 四门投影(预筛权威唯一产地,绝不复用 harness 原生 verdict.pass)+ run_playtest(子进程/超时/记账/playtest.json 真相层/端口派生避 Chrome unsafe 5060/5061)+ run_acceptance 编排器(v2=floor∧测试员阻断/ shadow=旧口径+shadowV2Accepted 对照/v1=旧判定器;修复反馈只引现象段) - 三路接线:cheap_studio/cheap_service_driver/cheap_modify 两档全改调编排器, create 与 modify 单一验收标准 - §4 字段迁移:run-summary acceptanceVersion+playtest+floor 段、trace.playtest additive(firstPlay 三字段镜像 ReadinessScorer 口径)、批账 floorPass+accepted+ acceptanceVersion(verdictPass 仅对照);result_out 三级取值(floor→verdictFull 投影→verdict.pass 回落)、gate_judge 续修触发器切四门、xtheme 同批;判定语义单轨 - §5 Java 读侧:ReadinessScorer 可玩性/firstPlay 优先读 trace.playtest, GenMetrics 归因加 playtest/tester_degraded(向后兼容,未编译验证——本机无后端 构建环境,待 mini-desktop 构建窗口) - genconfig/generation.yaml:acceptance.mode 三态(波1 灰度默认 shadow)+ playtest 旋钮(steps/二掷/超时/成本上限);judge 段未动 - 单测 32 项新增(二掷/图像 fail-closed/mode 三态/投影/现象分离/退出码/unsafe 端口) 验收:pytest 512 绿 + node 44/44(主会话亲跑);10 局考卷生产件重跑判对 9/9 (真坏 3/3 零放行、假阴 0/6,heritage-r4/puzzle-r1 二掷翻案、sb2 假超时根因= Chrome unsafe 端口已修);Service E2E(w1v2-e2e1 shadow→v2 一发收敛)与 modify 回归(w1v2-mod1 ROUND_MS 60000→45000,src 与局内截图双证)真浏览器硬证; 总成本 ¥2.3。已知余项:真续修回喂环仅单测覆盖(波2 n=3 冒烟自然覆盖)。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
136 lines
14 KiB
YAML
136 lines
14 KiB
YAML
# ════════════════════════════════════════════════════════════════════════════
|
||
# generation.yaml —— tier2 富游戏自治生成线 · 生成器旋钮配置(运行时读 · 单一事实源)
|
||
#
|
||
# 这是什么:把过去散在 6+ 个 Python 文件里写死的「调生成、优化过门率」旋钮收敛到这一份外部配置。
|
||
# worker/genconfig.py 在每次 run 运行时读它(env 覆盖 > 本文件 > 内置默认 > 调用方默认),
|
||
# 故【调生成 = 改这个文件重跑,不改码、不重同步到 mini-desktop】。对应图说 B 族「配置注册表
|
||
# (唯一事实源 / 版本化 / 运行时读)」在生成器旋钮这一面的落地。
|
||
#
|
||
# 怎么改:把某个值改掉、保存,下一次跑生成自动生效(genconfig 按文件 mtime 自动重读)。
|
||
# 想只对某一批临时压一个值而不动文件:export TIER2_GEN__<区>__<键>=值(全大写、双下划线分隔),
|
||
# 例 `export TIER2_GEN__ITERATION__WRITER_MAX_ITERS=60`;实验完 unset 即恢复本文件的值。
|
||
#
|
||
# 默认行为不变(红线):本文件每个值 = 改造前各源文件里的硬编码值,逐项对齐。只要不动这里、不设 env,
|
||
# 生成行为与外置前字节一致;只有人主动改了某个值,它才经 genconfig 流通到取值点生效。
|
||
#
|
||
# ★ 标记:directional(方向性占位)值——需 mini-desktop 跑 n≥30 真基线后据实测分布校准。
|
||
# 调这类值是「优化 20% 过门率」迭代循环的主要着力点(改这里重跑、看过门率)。
|
||
#
|
||
# 维护纪律:本文件与 genconfig.py 的 _BUILTIN_DEFAULTS 应同值(后者是本文件失效时的兜底副本)。
|
||
# 改默认值优先改本文件;若要连兜底也改,同步改 _BUILTIN_DEFAULTS。
|
||
# ════════════════════════════════════════════════════════════════════════════
|
||
|
||
# ── model · 模型客户端构建旋钮(消费方:worker/config.py)──────────────────────────────
|
||
model:
|
||
default_model_name: MiniMax-M3 # 单写 agent 默认模型(M3 路;model_name_from_env 默认值)
|
||
deepseek_flash: deepseek-v4-flash # 便宜主力档名(spike 主问「便宜到什么程度还守得住」)
|
||
deepseek_pro: deepseek-v4-pro # 强便宜救场档名(退路树 Q1 读它的过门率)
|
||
baseline_opus: claude-opus-4-8 # 强基线 Opus(网关现【无此渠道】、真调 503;待 new-api 开通后改这里即接上)
|
||
baseline_fable: claude-fable-5 # 强基线 Fable(同上,网关现无;列出不假设可用,build_baseline_model 取不到诚实报错)
|
||
baseline_crosscheck: deepseek-v4-pro # 跨族 cross-check(创始人 2026-06-24 拍:网关无 Opus/Fable,证路当前用它;实测可调)
|
||
max_tokens: 512000 # 输出上限(非上下文窗;build_model 硬约束 max_tokens > thinking_budget)。
|
||
# 2026-07-09 创始人拍「统一 512K(后面可调)」——把 output 上限抬到不再是瓶颈。
|
||
# 依据:16K 是自设限非模型限(实测 M3 单轮能输出 17000 tokens/finish_reason=stop、
|
||
# accepts 40K 与 512K 均无报错);cheap 走 OpenAI inline thinking(thinking 吃额度),
|
||
# 低上限 + 大文件整写易撞截断丢方法/导出(heritage 黑屏、thrash 病根之一)。512K 彻底消除
|
||
# 输出截断顾虑;模型 finish_reason=stop 自然收尾、不会因上限高而空转多花(thinking_budget 8K 仍封顶思考)。
|
||
thinking_enable: true # M3 是否开 thinking 分离(便宜档无此约束,只 M3 路用)
|
||
thinking_budget: 8000 # M3 thinking 预算(必须 < max_tokens,否则 build_model 抛)
|
||
max_retries: 2 # 网关偶发 502 突发的兜底重试次数(wg1 spike 实证有效)
|
||
ctx_trigger_ratio: 0.8 # 历史压缩触发比例(超 trigger_ratio×context_size token 才压;2.0.2 约束 0<r<0.9)
|
||
ctx_reserve_ratio: 0.1 # 历史压缩保留最近上下文比例(须 < trigger_ratio)
|
||
|
||
# ── budget · ¥ 累进硬闸 + 四道熔断 + 软刹(消费方:worker/middleware.py)────────────────────
|
||
# 这一区是「自治多轮 ReAct 不能无限烧钱」的硬地板。调它们 = 调成本上限与失控保护强度。
|
||
budget:
|
||
# 预算两段式(创始人 2026-07-03 一次性裁决,裁决记录 = docs/agent-specs/2026-07-03-生成引擎agentic架构-第一性重推演与差量-设计.md §5;
|
||
# 单位经济或模型单价大变即复审):软停线越线只许收尾类动作(finish/构建/跑门,禁新增大额生成调用),
|
||
# 整局 RMB 硬地板 = 软停线 × rmb_hard_floor_ratio,与轮数/墙钟闸任一先到即停(middleware 强制)。
|
||
rmb_hard_limit: 50.0 # 富档单局 ¥ 软停线(soft 档;hard 档=单段硬线)。裁决值 ¥50(原 3.0 是 0号 spike 占位)
|
||
rmb_hard_floor_ratio: 1.5 # 两段式硬地板倍率:硬地板 = 软停线 ×1.5(富档 ¥75 / 便宜档 ¥15,fail-closed 封上界)
|
||
cheap_rmb_hard_limit: 10.0 # 便宜档单局 ¥ 软停线(裁决 ¥10;生产 Service 与 CLI 经 cheap_budget.build_cheap_breaker 同源读)
|
||
max_tool_calls: 100 # step_cap 步数硬顶(工具调用总次数)。2026-07-04 创始人令提阈值 60→100:
|
||
# F-2 实证 60 步顶挤掉续修窗(writer 40 轮撞墙后 resume 只剩 ~20 步,美食类
|
||
# 硬 brief 修不完就被拦);100 = writer 60 + 续修 ~40 headroom,失控保护交
|
||
# ¥ 硬闸(50×1.5)与墙钟。cheap Service 显式传 150 不受此影响;cheap CLI 继承此值(纯兜底,¥10/15 是真闸)。
|
||
max_model_calls: 120 # budget 预算闸(模型推理总次数;¥ 取价失败时由它兜底拦飞车)。随步顶 60→100 等比 80→120。
|
||
wall_timeout_s: 2700.0 # timeout 整 reply 墙钟超时(秒)。随步顶提到 45min(F-2 美食 R1 在 60 步已跑 1464s,100 步预留 ~2400s)。
|
||
step_timeout_s: 420.0 # timeout 单步静默超时(相邻事件间隔超此判单步卡死;秒)
|
||
stuck_repeat_threshold: 4 # stuck 连续同一失败签名达此次数 → 判死圈
|
||
soft_ratio: 0.8 # 软刹触发比例(达 soft_ratio×硬顶时往 system prompt 注入收敛提醒)
|
||
group_ratio: 1.0 # new-api 分组倍率(¥ 折算用)
|
||
est_prompt_tokens: 12000 # ¥ 闸首调保守预估的 prompt token 量级(系统提示+历史+设计稿;调用后按实测覆盖)
|
||
est_completion_tokens: 2000 # ¥ 闸首调保守预估的补全 token 量级(一轮补全+tool_use)
|
||
|
||
# ── iteration · 单写 ReAct 轮数 + 外层有界 resume(消费方:worker/agent_loop/studio.py)──────────
|
||
# 这一区是「优化过门率」最直接的着力点之一:放开/收紧自治轮数与续修次数。
|
||
iteration:
|
||
writer_max_iters: 60 # 单写 ReAct 放开的最大轮数。2026-07-04 创始人令提阈值 40→60:F-2 两轮实证美食类
|
||
# 硬 brief 在 40 轮墙上反复被截(R1 churn 到 step_cap、R2 设计收敛后仍 40 轮不绿),
|
||
# 40 是预算墙不是能力墙;烧钱风险交 ¥ 两段式(50/75)兜。
|
||
max_resumes: 6 # 外层有界自纠 resume 上限(agent 过早停下、门未绿且有预算时,带反馈再踹回去续修的次数)
|
||
|
||
# ── design_team · 阶段 1 工作室星形多 agent 设计预算(消费方:worker/agent_loop/design_team.py)──
|
||
# 设计阶段是过门头号杠杆(图说 C1);这一区控制设计团队烧多少 token、跑多久。
|
||
design_team:
|
||
leader_max_iters: 12 # leader ReAct 总轮数上限(= 调四专家 + 汇总的天花板;默认够各专家 ≤2 次 + 汇总)
|
||
per_expert_cap: 2 # 单专家被 leader 调用次数上限(防 leader 反复刷同一专家烧 token)
|
||
timeout_s: 420.0 # 整设计团队墙钟硬超时(秒;超时 degrade 回单 agent 设计,不中断主链)。
|
||
# 2026-07-04 F-2 R1 实证 240→420:两败局(美食/糖水店)均为 3/4 专家已产出、
|
||
# 末段调用/leader 撞 240s 墙钟 → 降级单 agent 设计 → writer 40 轮不收敛 → step_cap;
|
||
# 三过门局设计团队全部正常收敛(超时↔失败 5/5 完美相关)。M3 thinking 慢尾单调用
|
||
# 可达 120-180s,420 给一次慢尾余量,与 runtime.step_timeout_s=420 同刻度。
|
||
|
||
# ── gates · 退路树四阈值 + harness 门阈值 ──────────────────────────────────────────────
|
||
# 退路树阈值消费方:worker/fallback_tree.py(go/no-go 判定,纯分析侧,import 时读)。
|
||
# harness 阈值消费方:tier2/harness/play-phaser.cdp.cjs(Node;经 env TIER2_GEN__GATES__* 注入,
|
||
# 或读 genconfig.export_for_harness() 导出的 JSON;.cjs 端按「env > 内置默认」消费,默认 = 现值)。
|
||
# ★ 这些多为 directional,真跑校准过门率时改这里。
|
||
gates:
|
||
qpass_go_min: 0.40 # ★ 退路树 Q1:最强便宜档(v4-pro)过门率 ≥ 此值 → GO 转铺引擎
|
||
qpass_floor_max: 0.20 # ★ 退路树 Q4:便宜档全线 < 此值 → 判「全线崩」
|
||
qpass_strong_baseline_min: 0.0 # 退路树 Q4:强基线(Opus/Fable)过门率 > 此值(即 >0,至少 1 款过)→「能过」
|
||
concentration_ratio: 0.50 # ★ 退路树 Q2/Q3:某失败桶占失败总数 ≥ 此值 → 判「集中」(过半算集中)
|
||
human_min_patience_ms: 12000 # ★ harness 人可玩 advisory:订单耐心的人类最小反应窗口(ms);低于金标 min(16s)留余量
|
||
color_dist_min: 18 # harness render-reflects-state:有 item 格 vs 空格的色差 > 此值 → 判「渲染反映了状态」
|
||
var_delta_min: 120 # harness render-reflects-state:方差增量 > 此值 → 判「渲染反映了状态」(与色差任一满足即过)
|
||
|
||
# ── judge · 独立模型玩法地板判定(消费方:cheap-worker/cheap_verify.apply_gameplay_judge)──────────
|
||
# W-AXIS 波2(质量模型 SoT 裁定三):机械九门降位为「未见明显死」预筛,玩法地板由独立多模态模型看真玩证据
|
||
# (首帧/局中连拍/局末截图 + game-log + 取证时间线)裁 broken/hollow/off-brief 三类拒绝,阻断放行。
|
||
# ok = 预筛 ∧ 判定;判定只对过筛者跑(省¥);fail-closed(评不出/无证据 → 不放行、标 degraded)。
|
||
judge:
|
||
blocking: true # 玩法判定是否阻断放行(整体回退位:false=判定只观测、ok 仍=预筛,可一键回退到修订前口径)
|
||
model: MiniMax-M3 # 判定模型(创始人 2026-07-10 令切 M3):glm-5.2 唯一通道=闲鱼二手中转,图像支持按池轮换、07-09 整日全盲实证不可依赖;M3 读图亲验可靠(裸图/判定/spike 三路实证,且当场抓出 M3 自己写的渲染 bug)且走 MiniMax Direct 一手通道。裁定三①「出题≠被考」边界随本决策修正(地板只裁「有无」+金标亲玩兜同源盲区),SoT 修订随 v2 双评审落档。
|
||
max_tokens: 202752 # 判定输出上限。1500 实测太低(创始人 2026-07-09 令调大):glm-5.2 思考长度随机,21 局里 6 局撞线重试、1 局重试后仍截断被误拒(trpg-r5)。512000 经 new-api 实探 400 拒,202752=glm-5.2 网关实探可过上限;真实成本/时长闸=timeout_s(思考再长也被 120s 截停)。
|
||
timeout_s: 120 # 判定 LLM 调用超时(秒);超时 → fail-closed degraded
|
||
max_frames: 6 # 最多喂几帧证据截图(首帧 + 局中连拍 + 局末,控 token/成本;超出保头尾均匀采样)
|
||
cost_target_rmb: 0.3 # 单局判定成本目标(¥;仅记账对照/告警,不阻断——实测约 ¥0.10/4-6 帧)
|
||
|
||
# ── acceptance · 便宜档验收 v2 版本开关(消费方:cheap-worker/cheap_verify.run_acceptance;W-AXIS-V2 波1)──
|
||
# 三态(§2):v2=测试员真玩阻断放行;shadow=测试员照跑照落证据但 accepted 仍取旧口径(新旧并跑对照,批次账落对照表);
|
||
# v1=W-AXIS 旧口径(driven 九门预筛 + 判定器读驱动器证据)。波1 灰度窗口默认 shadow——安全侧:测试员未稳时不误拒
|
||
# 生产;验收真跑/切换时改此值为 v2(或临时 env TIER2_GEN__ACCEPTANCE__MODE=v2)。
|
||
acceptance:
|
||
mode: shadow # v2 | shadow | v1
|
||
|
||
# ── playtest · 测试 agent 真玩回路旋钮(消费方:cheap-worker/cheap_verify.run_playtest;测试员模型走 judge.model)──
|
||
# §3 八件里可配的两组:步数预算(base 随进展扩到 max)与二掷/超时/成本上限;其余护栏(坐标尺/落点回显/
|
||
# 同点硬提示/反早退/图像通道自检)是 runner 侧确定性代码、不留旋钮。
|
||
playtest:
|
||
steps_base: 14 # 基础步数预算(§3 第6件)
|
||
steps_max: 24 # 有进展证据(画面变化/日志推进)时自动扩到的步数上限
|
||
second_roll: true # fail 二掷确认(§3 第7件):roll-1 判 fail 且四门地板全绿 → 重开一局二掷,两掷同 fail 才落 fail
|
||
timeout_s: 600 # 单掷子进程墙钟超时(秒;一轮 8~24 步 × M3 每步 10~40s ≈ 2~10 分钟)
|
||
cost_cap_rmb: 1.5 # 单局验收成本上限(¥;含二掷,单轮设计上限 ¥0.5,对照旧链路契约困死单局 ¥10+ 净赚)
|
||
|
||
# ── archetype · business-sim 品类 driver 参数(消费方:worker/archetypes.py)─────────────────
|
||
# 注:这里只放 driver 真玩规格里的【可调数值】(怎么玩);品类的【结构】(三系统/数据表 schema)
|
||
# 不在配置层,仍由 fixture 与品类注册表定。改这些 = 调 business-sim driver 怎么把游戏玩到终态。
|
||
archetype:
|
||
business_sim_driver_steps: 80 # driver 总步数(赢路点合成→凑单→交单→金币达标;够走完一局)
|
||
business_sim_driver_step_ms: 280 # driver 步间隔(ms;每步之间的真玩节奏)
|
||
business_sim_win_threshold: 100 # 盈利路金币胜利阈值(与 economy/latch 门、数据表 winCondition 对齐)
|
||
business_sim_bankrupt_steps: 60 # 破产路观察步数(放任流失,看是否走到 lose)
|
||
business_sim_streak_lose: 3 # 连续流失判负次数(与数据表 loseCondition.consecutiveOrderFails 对齐)
|