lili
|
b78a8dfa4f
|
merge: A1 核心修复批——单①驱动器约定收敛(C5接线:startRitual起局仪式+driver显式selectionBasis+sourceHash陈旧重生+金标held-constant不误杀)+单③反馈补厚(C6结构化单一来源:latch双支phaseNow+driverType+game-log摘要+CLI九门回喂对齐+tier2 sidecar富文本不变)+预算两段式(软停¥10/¥50只许收尾·on_acting拦生成面+硬地板×1.5 fail-closed,CLI/Service同源,W-ARCH②)+genre最小路由(五类词表·特异性降序)+Service壳合成终结事件+压缩崩fail-open补丁(SummarySchema全required根因坐实)。T7复现:fx4c-3 9/9·fx4c-1起局成功8/9;T8真M3 smoke:C6回喂环真转·软停真触发·硬地板真fail-closed(¥3.0158)
contract-gates / contract-gates (push) Has been cancelled
docs-gate / docs-gate (push) Has been cancelled
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-03 14:43:31 -07:00 |
|
lili
|
34923812c3
|
fix(gen): 模板起局鲁棒性 menuStartBtn 解耦 render + targets 键/起局约定进 prompt v1.6.1 + gen.mjs 入口守卫 (W-S1 修复单②)
T1 六款模板(_template + feiyi/puzzle/shop/story/trpg)起局/重开按钮命中矩形:
从 render 副作用回写(menuStartBtn = renderMenu(...).startBtn)改为抽纯几何
menuStartRect/overRestartRect + 在场景进入点 onEnter 确定性赋值、render 只画;
治并发 rAF 饥饿下 render 未跑过=命中矩形恒 null=卡 menu(归因案4)。
no-render 探针坐实:修复前六款均卡 menu、修复后均按坐标起局进 play。
T2 cheap-system.md 升 v1.6.1,红线段增两条硬约束:①点 target 玩法 state 键名
固定为 targets(不得改成 items 等,C5 驱动器族选择依赖)②起局命中矩形须在状态
进入点建立、不依赖渲染帧;各模板 _forensicsView 加同义契约注释。cheap_roles.py
_SYSTEM_PROMPT 与 md 正文逐字节 parity 同步,registry.yaml 版本 bump 对齐。
T3 gen.mjs 顶层裸调 main() 加入口守卫(import.meta.url === pathToFileURL(argv[1])),
被 import 时不再触发真生成(footgun,曾 ~116s)、直接执行行为不变。
T4 puzzle-game-design.md §9 死链经核实在本 commit 不存在(唯一 play-spec 引用已
正确指向存在的 puzzle.play-spec.json),未伪造改动;littlejs-game-dev.md 补一条
起局 onEnter 指导闭合 doc-code。
验证:test_roles 12/12 + check_registry 17 对齐 + md↔_SYSTEM_PROMPT parity True
+ 6 模板 esbuild build 全绿 + amodel-gen tests 15+11 + 模板 node --test 除
_template-shop/headless-boot(既存红,与基线同)外全绿。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-03 14:17:53 -07:00 |
|
lili
|
234c076f51
|
feat(cheap): T1 驱动器约定收敛·C5 考卷契约接线(startRitual 起局仪式+driver 显式化+sourceHash 陈旧重生·金标 held-constant 不误杀) (W-S1 修复三单·单①)
- cheap_run:_build_play_spec 产 C5 形状(schemaVersion/derivedFrom/selectionBasis;key-cycle 带默认 startRitual);
ensure_play_spec 以 derivedFrom.generator 区分本产线自动 spec 与手工金标——自动 spec 按 sourceHash 判陈旧重生,
金标/旧世代 held-constant 永不覆盖;产出走 C5 best-effort 自校验(强校验在单测)
- play.cdp.cjs:NONPLAY 升模块级;runStartRitual(tap-selector 读 state 坐标/input-sequence/默认 Enter→Space→中心点,
进游玩态即止);主流程 runDriver 前执行声明仪式(无声明零行为变化);runKeyCycle 对 MENULIKE 前置态做默认起局尝试
(镜像 runTapTargets 扫点范式,治 fx4c 卡 menu 驱动器约定漂移)
- tests/test_play_spec_contract.py:两族过 C5 强校验/显式字段/hash 重生/金标不误杀/保守支 14 用例
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-03 14:02:53 -07:00 |
|
zizi
|
0e66fc953e
|
feat(prompts): 策划知识包v2——cheap主prompt v1.5.0(⑨否决项判定句式+计数口径统一,test_roles 12/12逐字节绿)+剧情/经营rubric fixture补全接线(skill表改指针消双写)+tier2四专家v1.1.0加策划判据(内置↔md parity×4,registry 17条对齐)+prompt.mjs冻结为A/B史料;真LLM金标复验挂窗;3待拍(⑨升底座第12条/prompt.mjs退役/品类适配)
|
2026-07-04 02:25:55 +08:00 |
|
lili
|
8a566c9e0e
|
feat(amodel-gen): check 门加模块内未定义标识符+import断链静态扫描(4例实证失败模式)
动机:便宜档 M3 生成的代码语法过 check、运行时才炸,九门才拦得住,浪费整局——
解谜 gen3(renderMenu 用未定义 cy → 卡菜单 E/G/H 连锁挂)/ gen6(stepUntilMs 未定义
uncaught)/ 非遗首败(import 断链模块级即炸);node --check 只查语法不查引用。
- 新增 check-undef.mjs:esbuild(树内现货 devDependency,build 步同款)当作用域分析器,
零新依赖、零手写 parser——
① 未定义标识符 = transformSync + define 探针(define 只替换模块内任何作用域都未声明的
自由变量;声明全形态 var/let/const/函数提升/类/参数/解构嵌套默认值/catch 参/import
绑定由 esbuild 生产级 parser 认定,实测 12 形态零误认);
② import 断链 = buildSync(bundle,write:false) 以 game-logic.js 为根整图静态解析
(named/default/re-export 缺 export 的 error、namespace 成员缺 export 的 warning
——后者正是既有 build 步按退出码拦不住的形态、模块文件不存在的 resolve error);
报错为生成 agent 可照修的中文(文件+行+标识符名+一句修法);esbuild 不可用(零依赖
环境)静默降级,check 其余门照跑。
- tools.mjs check() 挂第 6 节:生成侧五文件(game-logic/core/render/balance/assets)
逐模块扫 + 断链整图解析;输出协议(PASS/FAIL+明细)与退出码语义不变。
- 零误报口径:白名单取宽(ES 内建+浏览器宿主,"能不能用"归红线门、本门只管定义与否);
typeof 直用守卫名/双下划线名/上下文关键字名/中文标识符/动态下标列为已知漏报面,宁漏勿误。
- 单测 15 项全绿:三实证失败模式必红且文案含标识符名 + 隐式全局赋值必红 + 声明全形态/
typeof/globalThis/属性/对象键/label/字符串/注释零误报 + 8 现存正样本(6 模板+2 few-shot)
0 报固化为持续回归门 + 语法坏文件不崩不添噪。
- 验证:新测 15/15 + 既有 check.test 11/11 零回归 + 7 完整正样本 scaffold-saa+check 全
PASS(_template 仅既有 2.5 节设计内报错、新门零添报)+ 注入三类 bug 端到端 check CLI
必红 + pytest cheap-worker 回归门 6/6 + node --check 全过。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-03 00:19:50 -07:00 |
|
lili
|
db4aadd785
|
merge: W-GENRE 解谜品类四件套(skill puzzle-game-design + _template-puzzle 9/9 + _fewshot-puzzle 正例 + rubric fixture/金标 spec + 范例签名机器门)——品类路由并集 v1.4.0(剧情6/TRPG7/非遗8/解谜9)
docs-gate / docs-gate (push) Has been cancelled
合并裁定(rubric 挂点两套实现收敛,fable 亲审):评分尺主干 = TRPG 机制(单 checks 数组契约+嵌套
richness.genre,19 单测钉住);从分支嫁接 fixtures/genre-rubrics/<genre>.json 加载器为第二来源
(内联 GENRE_CHECKLISTS 优先、fixture 兜底,puzzle.json 即刻生效);分支平铺 genreHits/genreChecks
双数组契约弃用,其接线测试适配主干形状。run_studio 增显式 genre= 参数(None→按模板推断,原行为不变)。
GENRE_BY_TEMPLATE += _template-puzzle。顺手补账:.agents/README 索引四个品类 skill(前三次 merge 欠账)。
验收(本机):金标 7 品类 6/6 + cheap_verify 19/19 + 解谜资产门 6/6(含 node scaffold/check 真 shell-out)
+ 模板 node 13/13 + check_registry 17 条 + node --check/py_compile 全过;test_roles 2 红=主干既有基线
(回落分叉,归一单已排)。
诚实记录:分支验收唯「n=3-5 小批全过门」BLOCKED(4/7;三失败=AI 大面重写引入运行时 bug,九门正确
拦截,根因已回写 skill §9 品类红线;spike 路无续修环是结构缺口,生产路 RepairMiddleware 覆盖)。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-02 23:48:41 -07:00 |
|
lili
|
cabc53f71e
|
fix(genre): 解谜品类红线补两条(小批收敛环失败模式回写)
n=5+2 小批实测三例失败(gen2 自写符文生成器产 0 解盘面=不可解关 / gen3 renderMenu 未定义变量 cy 被 scene-fsm 隔离致 startBtn 恒 null 卡菜单 / gen6 重写删声明留使用 stepUntilMs 未定义 uncaught),全部被九门正确拦截。据失败模式回写资产侧:skill §9 增「重写盘面生成器必须保住可解性质(恰好 N 解/至少 1 解/干扰不撞规则)」与「render 回调未定义变量会被隔离成告警、命中区拿不到卡菜单」两条品类红线;模板 generateBoard 注释同锚可解性质。模板 13 测仍全绿、签名门全过。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-02 23:32:37 -07:00 |
|
lili
|
496f8b6de7
|
merge: W-GENRE 非遗品类四件套(skill heritage-game-design + _template-feiyi 9/9 + _fewshot-feiyi 正例 + rubric fixture/金标 spec;n=5 过 4/5·首败根因=import 断链已加护栏后 3 连过·幻觉 0)——品类路由并集 v1.3.0(剧情6/TRPG7/非遗8)
docs-gate / docs-gate (push) Has been cancelled
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-02 23:16:52 -07:00 |
|
lili
|
39cc2c09ba
|
feat(cheap-worker): 非遗品类件③few-shot正例+rubric金标锚定回填+骨架import护栏 (W-GENRE)
③ game-runtime/games/_fewshot-feiyi/:few-shot 过门正例(木版年画作坊,源=n=5 小批第 3
款 p11d-print):attempts=1/¥2.65/九门 A-I 全绿/丰富度 9-11;范例签名机器校验门
(tools.mjs check)蒸馏时复跑 PASS;README 带来历/复验配方/漂移纪律(设计档 §3⑥
「必须同改」清单成员)。
④ 锚定回填 heritage.rubric.json:通用 11+品类 5 合评、两分母分开(M3 judge,容差
±1/组)——正例 通用 10/11(L2 6/6·L3 2/3·L4 2/2)+品类 5/5;薄反例(骨架原样)
通用 6/11+品类 3/5(节律张力/技艺成长 false=骨架无 combo/解锁,判罚与轻起点定位
一致)——评分尺判别力坐实。
② 骨架 game-logic.js 头注加 import 完整性护栏:n=5 首款 p11d-porc 失败根因 =
agent 改写时 import 列表漏 FIRST_READY_DELAY_MS、裸标识符 esbuild 当全局放行、
运行时点开工即 ReferenceError 被 L1 隔离→永卡菜单、E/G/H 三挂(check/build 双门
拦不住的盲区;node headless 探针定位)。护栏注释进克隆起点后 3 连过佐证。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-02 23:13:11 -07:00 |
|
lili
|
8301f650fa
|
Merge branch 'p11-trpg' into dev/2.0.0
docs-gate / docs-gate (push) Has been cancelled
# Conflicts:
# cheap-worker/cheap_roles.py
# cheap-worker/tests/test_golden_specs.py
# contracts/prompts/04-config/cheap-system.md
# contracts/prompts/registry.yaml
# game-runtime/tools/amodel-gen/prompt.mjs
|
2026-07-02 23:09:27 -07:00 |
|
lili
|
89f1c60534
|
feat(cheap): TRPG 品类设计 skill + 双源 prompt 品类条目注册(W-GENRE 品类件①③)
件① .agents/skills/trpg-game-design.md:TRPG(掷骰冒险)「设计什么才好玩」作业手册,照
sim-business-game-design 体例——6 心理引擎(掷骰悬念/抉择掌控/成长兑现/叙事感/连胜/收集)
/ 玩法范式可达子集(掷骰爬塔·事件链·queue 试炼·轻队伍) / 掷骰概率数值锚(首层 ~70% 成功
·成长写进概率) / §9 红线(单局可完非长流程·核心动作单击即结算 driver 可达·掷骰过程可见
非黑箱·亮牌取舍非纯随机) / §10 品类自检 5 条与 cheap_verify.GENRE_CHECKLISTS 同源 /
底线四件映射逐条确认(质量模型 SoT §7 档位要求,TRPG 全可映射、无需申报替代轴)。
件③ 双源 prompt 只加本品类条目(few-shot 过门正例 = _template-trpg 骨架本身,scaffold
clone 后即 agent 起点范例,check 门〔API 静态门+形状门〕对范例签名 PASS 已在件② 验):
· 读手册第 6 条(TRPG/掷骰/冒险/地牢爬塔类 → read trpg-game-design.md)
· 设计步品类范式一句(掷骰可见/亮牌取舍/难度爬坡)
· 步骤 A「读手册(1 + 按品类 5/6)」
三处物理文件同改:prompt.mjs(Node 半角)/ cheap_roles.py 内置回落(全角)/
contracts/prompts/04-config/cheap-system.md 热取正文(version 1.0.0→1.1.0,registry 同步)。
验证:node --check + buildSystemPrompt 出 TRPG 条目、新增行零反引号;cheap_roles 热取/
内置两路都含 TRPG 条目;test_roles 2 failed 与基线逐项一致(基线既有热取-内置分叉红:
⑨条升级只落热取路,pre-existing、非本次回归,回落路同步归编排层)、零新增红。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-02 22:46:44 -07:00 |
|
lili
|
50d98ce937
|
feat(genre): 解谜品类路由进生成 prompt 三源同改(W-GENRE 注册点·最小条目)
生成 system prompt 加解谜品类条目(先读手册第 6 条:解谜 brief → read puzzle-game-design skill + few-shot 正例参照;自检行补解谜范式指针)。三源同改防脏数据:① contracts/prompts/04-config/cheap-system.md(热取生效源,版本 1.0.0→1.1.0、registry 同步升版、check_registry 17 条对齐)② cheap_roles.py 内置回落 _SYSTEM_PROMPT ③ prompt.mjs Node 双源(半角标点、零反引号,node --check 过)。只加本品类条目、其余不动(另外三品类代理并行,共享注册点冲突交编排层 merge)。
已知基线漂移留痕:cheap-system.md 生效版在基线即领先内置回落版(9 条自检/两层奖励段,test_roles hotload 恒等 2 项基线已红、主仓同状态);本次两侧同加同一条目、未扩大漂移面,恒等回填归 prompt 治理线。
验证:热取生效版与 Node 版 buildSystemPrompt 均含解谜路由;test_roles 维持基线 10/12。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-02 22:36:33 -07:00 |
|
lili
|
cd292b2d65
|
feat(cheap-worker): TRPG 品类黄金脚手架 _template-trpg(W-GENRE 品类件②)
per-genre 轻起点骨架(照 _template-shop/_template-story 打样、L1 六件与 _template 逐字同):
勇者限时闯塔→每层翻遭遇卡(怪物/宝箱/奇遇,难度与奖励亮牌)→点卡=掷 d20+等级加成
vs 难度三档结算(金币/经验升级/怪物卡失败扣血)→清层登塔难度渐升→登顶 win/HP 耗尽
lose/60s 到点结算。掷骰过程可见(飘判定式 d20:骰+加成 vs 难度——不黑箱)。
_forensicsView 的 targets/score 取证契约 = 九门 tap-targets occupied driver 可达
(play 态 ready 遭遇卡 occupied:true、menu 空数组防误点;score=金币战利品单调升,
失败也有安慰 1 金=进展契约;卡命中区=绘制区=取证 targets 三者同源于 core.buildFloor)。
core.js 顶部多样性参数空间(ENCOUNTER_DECK 遭遇表/层数/血量/难度经验曲线)+
结构约束单测机器化(牌库 ≥4 项三 kind 齐/同层无重复抽样/难度地板 2)。
前任半成品盘点续做:src/ 7 件 + entry/index/manifest 已完整(沿用,零改动);
本次补齐 README.md + test/core.test.mjs + test/headless-boot.test.mjs + assets/gen-ledger.md。
验收:core 单测 13/13 + headless 全链路 3/3(真 tap 坐标起局→targets 驱动逐卡掷骰
→score 严格递增→翻层→over latch→再闯一次;同 seed 确定性;异 seed 牌面多样);
scaffold-saa/check/build-saa/stage/smoke 全 PASS(check=API 静态门+形状门对范例签名过门);
独立过九门 9/9(verdict: games/_wg1-gen/p11c-tpl/evidence/verdict.json,
H_progress score 0→97 increased + latch over 驻留,F_wiring sessionScore./audioMusic./juice. 全中);
金标 spec 注入复验九门同样 9/9。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-02 22:31:05 -07:00 |
|
lili
|
932b4f6d8c
|
feat(genre): 解谜 few-shot 过门正例 _fewshot-puzzle + 范例签名机器校验门 + 品类 rubric 机器版(W-GENRE 品类件③+④rubric)
few-shot 正例「深海寻宝谜航」:从 _template-puzzle 骨架换身份加深度的完整成品范例(主题全换/6 关维度递进带 intro/星级评价按错点数/称号+save 跨局星星收集/结算炫耀面板/GENRE_META 同款钩子元数据/8s 卡壳软提示),取证契约与骨架一致。独立过九门 9/9(p11b-fewshot,score 0→833、latch 真到 over,verdict= game-runtime/games/_wg1-gen/p11b-fewshot/evidence/verdict.json)。
范例签名机器校验门 test_genre_puzzle_assets.py(防范例成下一代漂移源,设计档 §3 决策⑥):scaffold 克隆两件解谜范例 → tools.mjs check(API 存在/形状/红线/结构契约)必须 PASS,模板缺失回落也判红;另静态兜底取证契约面 + GENRE_META + rubric fixture 形状(≥4 条/层标/正反例)。纯机械零 LLM。
品类 rubric 机器版 fixtures/genre-rubrics/puzzle.json:5 条品类扩展(谜题规则递进 L2/顿悟距离 L2/关卡阶梯可见 L3/卡壳兜底 L2/成绩可炫耀 L4),逐条 0/1+层标+正反例,与 puzzle-game-design §10 同源;金标锚=正例 _fewshot-puzzle/薄反例 _template-puzzle。喂 LLM 验证 agent 的接线随下一提交(cheap_verify 品类扩展)。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-02 22:25:26 -07:00 |
|
lili
|
c18e7f5324
|
feat(cheap-worker): 非遗品类件①②④+品类路由——heritage-game-design skill + _template-feiyi 工序节拍骨架(独立过九门) + 品类rubric/金标spec fixtures (W-GENRE)
① .agents/skills/heritage-game-design.md:非遗品类设计手册(照 sim-business 体例:玩法化
范式/工序节奏目标值/双层奖励/文化表述红线/§11 品类 rubric 5 条 逐条 0/1+层标 L2×3/L3×1/
L4×1+正反例,对齐质量模型 SoT §4 计分制;成长轴按 SoT §7 申报为工艺步骤解锁)。
② game-runtime/games/_template-feiyi/:工序节拍品类骨架(轻起点):一条工序链依次就绪→
火候窗口内点击完成→出成品,过窗回炉不判死;L1 plumbing 逐字节复用 _template-shop;
core.js 顶部多样性参数空间(CRAFT_CHAIN/WORKS/节奏常量);_forensicsView targets/score
取证契约(occupied=当前就绪且窗口内可点的工位)。独立过九门:A-I 全绿、H_progress
score 0→302、latch advisory(限时类口径,同经营打样)(verdict=
games/_wg1-gen/p11d-tpl/evidence/verdict.json,本品类金标 spec 驱动);tools.mjs check
机器门 PASS;单测 11/11(core 8 + headless 3,headless 按本品类语义重写、不复刻陈旧拷贝)。
④ fixtures/golden-specs/heritage-craft.play-spec.json(tap-targets occupied 族 + score
递增 + expectLatch;test_golden_specs 登记 heritage-craft,6/6 绿)+
fixtures/genre-rubrics/heritage.rubric.json(机器可读评分尺,锚定值待金标复验回填)。
路由(双源+热取三处同改):cheap_roles.py _SYSTEM_PROMPT 与 prompt.mjs 与
contracts/prompts/04-config/cheap-system.md 各加先读手册第 6 步(非遗品类→heritage
skill + _fewshot-feiyi few-shot 指针,正例随品类小批蒸馏后落库);cheap-system
version 1.0.0→1.1.0 + registry 同步(check_registry 17 条对齐 OK)。
既存问题(非本单造成,未扩大):cheap-system.md 自 8ea97234 起领先内置 _SYSTEM_PROMPT
一段「决策层/9 条自检」→ test_roles 两条 hotload 不变量测试基线即红;本单第 6 步在
热取/内置双路对称加入、漂移行数不变(仍 7 行)。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-02 22:25:05 -07:00 |
|
lili
|
3223117d49
|
feat(cheap): 剧情品类路由三源同改 + story-branch 金标 play-spec(W-GENRE 品类件③④)
品类路由(保持最小,只加本品类条目):手册列表 +6「剧情/互动叙事/文字冒险类读
narrative-game-design + read _template-story/src/game-logic.js 过门范例(few-shot
read-on-demand 供给,与经营件同构)」+ 自检末行加剧情分支(选项单击即推进/latch/
选择有重量)。三源同改:contracts/prompts/04-config/cheap-system.md(热取生效面,
version 1.0.0→1.1.0)+ cheap_roles._SYSTEM_PROMPT(回落面)+ prompt.mjs(Node 双源,
禁反引号守住,node --check 过)。注:热取面与内置面的逐字节漂移是基线 pre-existing
(test_roles 10/12,fail 集未扩大;两面均已含剧情条目、语义一致)。
金标 play-spec:fixtures/golden-specs/story-branch.play-spec.json(tap-targets
occupied 反应族 + score increased + expectLatch,formalize p11a-tpl 独立九门 9/9
已验证的取证契约;无货币轴,不用货币递减门=质量模型 SoT §3 裁定二档位判据不跨档);
test_golden_specs._EXPECTED_GENRES 追加 story-branch,6/6 绿;
contracts/prompts/check_registry.py 17 条全对齐。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-02 22:22:51 -07:00 |
|
lili
|
a3163428dd
|
feat(genre): 解谜品类轻脚手架 _template-puzzle 规则谜盘(W-GENRE 品类件②)
轻起点、非丰富脚手架(红线):工程骨架(L1 plumbing 与 _template 逐字节同一)+ 完整规则谜盘循环(出题→观察窗→点解连击→过关递进→通关 win/限时 lose 双 latch)+ _forensicsView 取证契约(targets 兼职求解器:只把当前正确解标 occupied,score 单调升)+ 多样性参数空间(THEME 主题元素/LEVELS 关卡曲线逐关引入 颜色→形状→数量→组合 四规则维度/节奏常量)。
验证:node --test 13/13 全绿(纯逻辑性质测 + 无浏览器全链路 win/lose/确定性);独立过九门 9/9(scaffold-saa p11b-tmpl → check/build/stage/smoke PASS → 自动 tap-targets occupied spec → play verdict.pass=true,H_progress score 0→773、latch 真到 over 通全关,verdict= game-runtime/games/_wg1-gen/p11b-tmpl/evidence/verdict.json)。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-02 22:17:42 -07:00 |
|
lili
|
8e6d414a2b
|
feat(cheap-worker): 剧情品类黄金脚手架 _template-story(W-GENRE 品类件②)
per-genre 轻起点骨架(照 _template-shop 打样、L1 六件与 _template 逐字同):
读场景文本→点选项→属性累积→分支推进→多结局 latch→结局图鉴(save 跨局)。
_forensicsView 的 targets/score 取证契约 = 九门 tap-targets occupied driver 可达
(play 态选项 targets occupied:true、menu/over 空数组防误点;score=选择数单调升;
选项命中区=绘制区=取证 targets 三者同源于 core.layoutChoices)。core.js 顶部
多样性参数空间(STORY_NODES 节点图/STORY_TITLE/STAT_NAMES 属性轴)+ 故事图三铁律
(无死链/无回环有限步必达结局/结局≥3 含 win+lose,单测机器化)。
验收:core 单测 8/8 + headless 全链路 3/3(真 tap 坐标起局→targets 驱动→latch→图鉴);
scaffold-saa/check/build-saa/stage/smoke 全 PASS(check=API 静态门+形状门对范例签名过门);
独立过九门 9/9(verdict: games/_wg1-gen/p11a-tpl/evidence/verdict.json,
H_progress score 0→3 increased + latch 驻留,F_wiring sessionScore./audioMusic./juice. 全中)。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-02 22:12:48 -07:00 |
|
lili
|
8ea972340e
|
chore: 工作树散落活账整理提交(多工作线)
- .gitignore:忽略 AgentScope 2.0.2 源码克隆(.claude/skills/agentscope-skill/agentscope/,本机开发直读参考、~17MB、含自带 .git、非本仓产物、可重克隆)
- .claude/skills/agentscope-skill/SKILL.md:agentscope skill 更新
- contracts/prompts/04-config/cheap-system.md:便宜档 system prompt 加「核心操作非无脑」第9条好玩自检(否决项:⑨不命中则①-⑧全中也只是有元素的无趣游戏)+ 决策层与九门自动验收解耦(基础分保盲驱动器过门 / 技巧分给真人爽感)
- game-runtime/evidence/integration/evidence.json:集成 evidence 更新
- game-studio/public/mock-manifests/:U5+U2 真 UI 走查 runbook + walk 脚本 + mock manifest
- wg1/gen-worker/results/gamedef-quickcheck.json:bake-off 结果(同既有 27 tracked 同类)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-07-01 19:00:42 -07:00 |
|
lili
|
e6525aaa3d
|
feat(cheap-worker): 便宜档生成丰富度 + M1 达标门富化重验(切片一 A/B)
接 sim-business 设计指导到生成 agent(cheap_roles+prompt.mjs 双源,先设计后写码+MVP-first);新建纯 LLM 丰富度验证 agent cheap_verify(非阻塞·不进 verdict·零 code-presence 断言,红线落地);bake_off 加 richness 列;cheap_roles 三级回落配置热取(C2a 加载器);cheap_studio trace 接线(C1b)。富游戏 M1 三品类各 5/5=100% 过九门达标。测试 test_roles 12 / test_cheap_verify 11 / test_bake_off 17 / test_cheap_trace 4 全绿。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-30 01:39:06 -07:00 |
|
lili
|
47d6394347
|
feat(cheap-worker): per-genre 脚手架路由接入 scaffold_template/scaffold_desc(扩模板数据点)
扩模板需让难品类 AI 从预置品类骨架起步、少写。接入(全缺省回落 _template、create 路零改):
- tools.mjs scaffoldSaa(gameId, templateName='_template'):clone 指定模板;CLI 加第 3 参;模板缺失 warn 回落。
- cheap_run.scaffold(game_id, template=None):shell-out 透传模板名。
- cheap_studio.run_studio(scaffold_template, scaffold_desc):线程到 prep + build_system_prompt。
- cheap_roles:system prompt 脚手架描述参数化(⟦SCAFFOLD_DESC⟧),让 AI 知道起点已是该品类完整游戏、换皮而非重写。
管线 routing 单测 27/27、prompt 参数化 8/8。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-30 01:39:05 -07:00 |
|
lili
|
9ddd173c06
|
feat(cheap-worker): 经营品类黄金脚手架 _template-shop(扩模板数据点)
蒸馏 6/7 过九门的 bake-shop-serve 实证 pattern 成 per-genre 黄金骨架:
顾客→桌位→上菜收钱→耐心→限时循环 + _forensicsView 的 targets/score 取证契约
(自动驱动器据此点 occupied 桌驱动上菜、score 涨过 H_progress)。母语化 API
(sessionScore.add / juice.burst / drawButton 返命中矩形)+ core.js 顶部多样性参数
空间(DISH_MENU/数值)+ fill-in 标记界定结构层 vs 身份层;修 patienceRatio 的
_elapsedMs 潜伏 bug。独立过九门(H_progress score 0→154),core 单测 8/8。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-30 01:39:05 -07:00 |
|
lili
|
f9393ccbb8
|
feat(cheap-gen): 阶段一B #12 collision Aabb 统一接受 {x,y,w,h} 与 {x,y,hw,hh}
附A #12(最后一处·几何约定统一):collision Aabb 用中心+半宽高 {x,y,hw,hh},与 hud-ui Rect/
drawButton 的 {x,y,w,h}(左上角+尺寸)不一致——AI 易混,skill 原要专门警告"非 {x,y,w,h}"。
加 _normAabb 归一化:circleVsAabb/aabbVsAabb/raycastAabb 现同时接受 {x,y,w,h}(自动按左上角换算中心)
和 {x,y,hw,hh}(原样),AI 可用与 Rect 一致的 {x,y,w,h}、不必记区别。低风险(存量 {x,y,hw,hh} 透传不变)。
全链路同改:collision/impl.js(_normAabb + 3 直接函数归一化)+ api.d.ts Aabb 文档 + skill:113。
验证:collision 16/16(存量 center-form 不破)+ 确定性({x,y,w,h} 与等价 {x,y,hw,hh} 三函数结果全一致)。
注:SpatialHash broadphase(进阶、便宜档罕用)仍取 center-form {x,y,hw,hh};AI 常用的直接查询函数已统一。
至此附A 15 处可改签名全部完成(#1-#15)+ 正交泛型门修复。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-30 01:39:05 -07:00 |
|
lili
|
619351052d
|
feat(cheap-gen): 阶段一B #1 ctx.random/ctx.time 改可调用(双 API·向母语直觉,最高频)
附A #1(最高频·每游戏用):ctx.random/ctx.time 原是对象、须 .next()/.nowMs(),AI 直觉 ctx.random()/
ctx.time() 当函数调会抛错——prompt/形状门都教"是对象不是函数"当幻觉拦。改成双 API:既可直接调用
(ctx.time()=毫秒、ctx.random()=[0,1))又保留全部方法(.nowMs()/.elapsedMs()、.next()/.range()/.reseed()),
向后兼容(框架/插件内部仍用方法形态)。
单点实现:boot-game-host 复用 createHostDevContext(单一 context 源),故 buildContext 一处包装即覆盖
host-dev + 真游戏。加 _callableTime/_callableRandom 双 API 包装器,ctx 装配处 time/random 包装。
全链路同改:plugin.js(包装器+装配)+ tools.mjs(CTX_METHODS 加 time/random、API 门错误文案翻转)
+ prompt.mjs/cheap_roles.py 双源(调用形态翻转:两形态都对、但 ctx.nowMs() 漏 .time 仍错)+ skill:144。
验证:core plugin 31/31(核心不破)+ 确定性(ctx.random()/time() 可调用 + .next()/.range()/.reseed()/
.nowMs()/.elapsedMs() 双 API)+ 形状门 11/11 + [check] PASS(双形态同段)+ cheap-worker 16/16 + 双源一致。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-30 01:39:05 -07:00 |
|
lili
|
fb01654311
|
feat(cheap-gen): 阶段一B #14 palettePost 加 applyPreset 常用后处理观感预设
附A #14:palettePost 原不内置成品观感,AI 要逐项配 vignette/dither/scanline 的 enabled/strength
才出效果。加 applyPreset(name) 一键套预设:'none'(全关)/'soft'(柔暗角)/'retro'(扫描线+暗角)/
'crt'(扫描线+暗角+抖动)/'dither'(抖动),委托 setPost。换色色板(from/to RGB)仍由游戏注入
(那需源色、非预设态)。全链路同改:impl(applyPreset 委托 plugin.setPost)+ api.d.ts 声明 + skill:117。
验证:palette-post 12/12 + 确定性(retro 开扫描线+暗角、none 全关)。prompt 不细列 palettePost 故仅 skill。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-30 01:39:05 -07:00 |
|
lili
|
ea229edf78
|
docs(cheap-gen): 阶段一B #7+#11 timer 单位钉死 + juice.render 每帧手调钉死
附A #7(文档钉死类·timer 是 ms 时钟、改秒是破坏性重构,取显式标注):timerScheduler.after/every
收毫秒、与 update(dt) 的 dt=秒相反——AI 易混(3 秒误写 after(3))。skill:129 + prompt.mjs/cheap_roles.py
双源钉死"3 秒=after(3000)、别 after(3)、与 dt 秒相反"。
附A #11(文档钉死/自动化·自动化不可行=render 需游戏侧 g):juice.render(g) 须每帧在游戏 render 里手调,
忘了粒子/打击感不显示。skill:116 强化(原已钉死、补 #11 标记 + 后果)。
均 doc-only(timer 本就标 ms、juice.render 本就钉死),本次显式化 + 双源对齐。验证:prompt node --check
+ cheap_roles py_compile 绿、双源一致。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-30 01:39:05 -07:00 |
|
lili
|
8196e07c2c
|
feat(cheap-gen): 阶段一B #8+#9 audioMusic 音效放开语义名 + play 强度容错
附A #8:playSfx 原限 blip/thud/chime 三预设,AI 直觉用 'click'/'hit'/'win'/'coin' 等语义名会静默失败。
加 SFX_ALIASES 语义名→预设映射(click/jump/coin→blip、hit/fail/land→thud、win/success/levelup→chime),
未识别名兜底 blip(不静默)——AI 用任意音名都出声。
附A #9:play(intensity) 入参是情绪强度 0..1、非曲目名,AI 误传字符串 → NaN 强度。play/loop 对非数容错
为默认强度;api.d.ts/skill 文档钉死"入参是强度非曲目名,曲子先 loadSong"。
全链路同改:impl(SFX_ALIASES + playSfx 兜底 + play/loop 容错)+ api.d.ts(playSfx 放宽 string + 文档)
+ skill line118。验证:audio-music 16/16 + 确定性(playSfx 任意名不抛、play 非数不抛)。prompt 不提 audioMusic 故仅 skill。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-30 01:39:05 -07:00 |
|
lili
|
5cb73a6d82
|
feat(cheap-gen): 阶段一B #4 gamefeel 加 CoyoteTimer/ComboWindow 工厂方法(免 new+传 time)
附A #4:gamefeel 的 CoyoteTimer/ComboWindow 是 class、须 new 且要传受控 TimeSource——AI 拿不到
受控 time、做不出来。加工厂方法 gamefeel.createCoyoteTimer(opts)/createComboWindow(opts):
用 init 时捕获的受控时间源自动注入,AI 直接调、免 new + 免找 time。全链路同改:
- gamefeel/impl.js:init 捕获 ctx.time,加两个工厂方法(new CoyoteTimer/ComboWindow(time,opts))
- gamefeel/api.d.ts:GamefeelPlugin 接口加两个工厂声明
- skill line115:列工厂方法(免 new + 自动注入受控 time);内置 inputBuffer 改 gamefeel.inputBuffer
验证:gamefeel 18/18 + 确定性(init 后工厂可调、返带 isAvailable/hit 的实例)。prompt 不提 gamefeel 故不同改。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-30 01:39:05 -07:00 |
|
lili
|
b29a379f9c
|
feat(cheap-gen): 阶段一B #3 collision 几何查询函数挂实例(向母语直觉)
附A #3:collision 实例原只有 spatial,7 个几何查询函数(circleVsCircle/circleVsAabb/
aabbVsAabb/satVsPolygon/raycastCircle/raycastAabb/raycastSegment)仅模块级导出——但 skill:113
本就把它们列在 collision 能力下,AI 直觉 collision.circleVsCircle(...) 取不到=真 gap。
把 7 个纯函数挂上实例(引模块级、不依赖 this),api.d.ts CollisionPlugin 接口同补。skill:113
原措辞现在成真、无需改。验证:collision 16/16 + 确定性(实例 circleVsCircle/aabbVsAabb/raycastAabb
可调且算对)。注:Aabb{x,y,hw,hh} 与 Rect{x,y,w,h} 的几何约定统一(#12)风险高、留后续careful。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-30 01:39:05 -07:00 |
|
lili
|
d79e1b9f89
|
feat(cheap-gen): 阶段一B #2+#13 physics 几何挂实例 + ProjectileState px/py→x/y
附A #2:physics 实例原为空 {}、几何运动函数仅模块级导出,AI 直觉 physics.integrateProjectile(...)
取不到。把 6 个运动原语(integrateProjectile/springStep/criticalDamping/moveWithConstraint/
clampSpeed/applyFriction)+ Projectile 类挂上实例(引模块级纯函数,不依赖 this),api.d.ts 接口同补。
附A #13:ProjectileState 位置 px/py → x/y(向母语直觉,与 Vec2/命中矩形的 x/y 统一)。impl/test/
PLUGIN.md 同步(px/py 仅 ProjectileState 字段,replace_all 安全)。
注:physics 当前无 prompt/skill 指引(便宜档 niche、projectile 罕用),本次是完整性 + 正确性
(实例可用 + 字段直觉),不改生成侧行为。验证:physics-lite 16/16 + 确定性(实例 integrateProjectile/
clampSpeed 可调、ProjectileState 返 x/y)。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-30 01:39:05 -07:00 |
|
lili
|
c6d31c0d81
|
docs(cheap-gen): 阶段一B #15 scene 回调签名钉死(防臆造首参)
附A #15(文档钉死类、非 API 改):scene-fsm 回调表里 update 只收 (dt)、render 只收 (g)
(api.d.ts:38 本就如此),但 prompt/skill 未明示防臆造首参。加钉死:别写 update(scene, dt)
这类场景名/state 首参、与五法同形。prompt.mjs + cheap_roles.py 双源 + skill define footgun 同改。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-30 01:39:05 -07:00 |
|
lili
|
bdcd7d472c
|
feat(cheap-gen): 阶段一B #10 juice 加 burst(x,y) 便利方法(向母语直觉)
附A #10:AI 母语直觉是 juice.burst(x,y),旧 API 只有 spawnEmitter('burst',x,y)、burst 仅预设名
——prompt 原本教"particles-juice 没有 burst"当幻觉拦。加 burst(x,y,overrides?) 便利方法委托
spawnEmitter('burst',...) 后,直觉名直接可用。全链路同改:
- particles-juice/impl.js:加 burst(x,y,overrides) 委托 plugin.spawnEmitter('burst',...)(引 plugin 自身不依赖 this)
- particles-juice/api.d.ts:实例接口加 burst 声明
- prompt.mjs + cheap_roles.py 双源:删"particles-juice 没有 burst"(它现在有了)
- skill line116:spawnEmitter 旁注 burst(x,y) 母语别名
验证:particles-juice 18/18(含 burst 别名 spec 等价测试)+ 确定性 burst≡spawnEmitter('burst')
+ [check] PASS(juice.burst 被 API 门认可)+ 双源一致。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-30 01:39:05 -07:00 |
|
lili
|
8c361f4a5b
|
feat(cheap-gen): 阶段一B #6 sessionScore 加 add 别名(向母语直觉)
附A #6:AI 母语直觉是 score.add(10),旧 API 只有 addScore——skill 原本把 add 当
幻觉拦(❌ add → ✅ addScore)。改签名加 add 别名后,直觉名直接可用,翻转 skill。
全链路同改:
- session-score/impl.js:加 add(delta) 别名(引 plugin 自身委托 addScore、不依赖 this)
- session-score/api.d.ts:实例接口加 add(delta): number 声明
- skill:line 145 由"❌ add→✅ addScore"翻为"add=addScore 别名直接可用";line 126 方法表注别名
- prompt.mjs/cheap_roles.py 无需同改(它们不提 addScore,仅 skill 提)
验证:session-score 插件测试 7/7(含 add 别名断言)+ 确定性验 add≡addScore + cheap-worker 16/16。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-30 01:39:05 -07:00 |
|
lili
|
13126a08ca
|
fix(amodel-gen): API 静态门方法名提取支持泛型声明(治 save.get<T> 被误判不存在)
#5 九门 gen 暴露的正交真 bug:check 的 API-存在静态门用正则
/(?:^|\n)\s*(\w+)\??\s*\(/ 抽 api.d.ts 方法名,遇泛型声明 `get<T = unknown>(`
时 \w+ 后是 `<` 非 `(`、抽不到 `get`,把真实存在(impl + api.d.ts:79 都有)的
save.get 误判"方法名幻觉不存在"→ 误杀一整类带存档持久化的游戏(高分榜等)。
修:两处方法名正则加可选泛型段 (?:<[^>]*>)?(apiMethodSet + apiVoidMethodSet)。
验证:形状门单测 11/11;针对性 check 一段同用 save.get('best',0)+sessionScore.add+
drawButton 的 game-logic → [check] PASS(三者均不再误判)。over-permissive 取向不变。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-30 01:39:05 -07:00 |
|
lili
|
dc49f5f866
|
feat(cheap-gen): 阶段一B #5 drawButton 改返命中矩形(黄金首件·治 #1 翻车点根因)
降AI参与·阶段一B 改签名第一处(附A #5)。逐插件改逐插件回归的黄金样板。
drawButton 由返 void 改为回吐它绘制的归一化命中矩形 {x,y,w,h}——AI 的直觉写法
const btn = hudUi.drawButton(g,{x,y,w,h},{label}); if (hudUi.pointInRect(px,py,btn)) 现在就对,
治了 #1 翻车点(drawButton 返 void 误用→变量恒 undefined→命中短路→卡菜单)的根因,而非教绕路。
全链路同改(漏一个造新脏数据):
- hud-ui/impl.js:drawButton 模块函数 + 实例方法回吐归一化矩形 r(g=null 也回吐、绝不 undefined)
- hud-ui/api.d.ts:模块函数 + 实例方法 两处 :void → :Rect + JSDoc
- tools.mjs 形状门:删 drawButton 特例分支(api.d.ts 改后自然掉出 void 名集),
泛化判据留给仍真返 void 的方法(drawText/drawPanel/drawBar/play/flashScreen)
- prompt.mjs/cheap_roles.py(双源)/skill:指引由"返void绝不接"翻为"回吐命中矩形可直接 pointInRect"
- check.test.mjs:drawButton 测试反转(赋值不再拦)+ 链式测改 drawText
- test_roles.py/test_toolkit.py:footgun 断言 + 形状门 drawButton 测试随签名更新
验证(逐插件回归矩阵):
- 形状门单测 11/11(amodel-gen)+ cheap-worker test_roles/test_toolkit 16/16 + hud-ui 19/19
- 确定性 impl 铁证:drawButton 回吐 {x,y,w,h}、g=null 不 undefined、回吐矩形直接 pointInRect 闭环
- 真生成代码(菜单+按钮游戏)用了 drawButton、check 未拦 drawButton,证明 #5 不破坏生成
- 双源 drawButton 文案一致;prompt.mjs node --check + cheap_roles.py py_compile 绿
正交发现(非 #5):该局九门 gen 栽在 save.get() 方法名幻觉(save 插件无 get)——
是另一处方法名摩擦,记为阶段一B 后续/补密度候选,不在 #5 范围。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-30 01:39:05 -07:00 |
|
lili
|
74a7135746
|
feat(cheap-gen): 便宜档降AI参与 设计落仓 + 阶段一A 清脏数据(治传导断裂)
探索会话诊断+设计(Codex+Opus 双评审、证据驱动重定位),认领进 plan① 切片一里程碑。
落仓产物:
- 动因 evidence(母语vs方言:M3 不弱、便宜档现状方言产同款要 ~26× token)
- 方向设计(降AI参与=减摩擦[小头]+扩模板覆盖[大头未验];附A 22处摩擦/15可改签名清单)
- tech-decisions §5.1 + agent-specs/_index 蒸馏
阶段一A 清脏数据 + 文档治理锚(prompt.mjs + cheap_roles.py 双源 + skill 三文件):
- 治"传导断裂"根因:植入定位锚——便宜档=AI参与深度低的高质游戏(轻量≠简单),
复杂度靠工程脚手架+L2 插件库、少写多调;"极小/最小游戏「点圆得分」"重框成
"脚手架起点、借插件能力改造成高质游戏"
- collision.pointInRect(不存在)收敛 hudUi、删干净
- 漂移范例 catch-fruit/wanglanmei(旧 opts 签名)→ _template(唯一匹配现契约)
- 插件数口径统一"注入 11 + runtime-probe 取证不注入"
验证:prompt.mjs node --check + cheap_roles.py py_compile 绿;九门复验跑一局打地鼠
(历史翻车品类)attempts=1、verdict.pass、failedGates=[]、¥0.95——清脏数据未破坏生成。
核心结论(创始人确认):便宜档≠简单游戏;L2 插件库是降AI参与核心载体非税;
"换母语扔插件"=升参与、与策略相反,已推翻。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-30 01:39:05 -07:00 |
|
lili
|
ffe3a5c993
|
fix(WU-C 5.4): tap-targets harness 认单数/可空 target — 解 M2 Node 退役阻塞
M2 auto-vs-golden 门抓到的生成契约漂移修复(Codex 实现 + 主代理诊断/受控验证)。
根因:~20% click-score 款 _forensicsView 暴露单数 target(对象、菜单态为 null)
而非复数 targets(数组),tap-targets harness 只认复数数组:① _build_play_spec
推断漏判→误推 key-cycle;② 驱动器 targetsPath 找不到单数 target。
两处修(认两种合法形态、既有数组行为零变):
- cheap_run.py:_build_play_spec 以【键存在性】判 tap-targets(targets/target 键
在即可,菜单态 null/空数组仍归 tap-targets)——非值类型(空数组过/null 不过的
非对称是漏判根因)。
- play.cdp.cjs:runTapTargets 取值非数组时回退读单数 target、包成 1 元素数组。
验证:退化款 avg-click-score-14 auto 路 E_live/G_input/H_progress 0.667→1.0
(3/3 确定性复现);test_ensure_play_spec 8→13 绿。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-27 10:41:16 -07:00 |
|
lili
|
6b334ff738
|
feat(amodel-gen): 形状门泛化到全 void 方法返回值误用 + 防回归单测(M1 U1)
KTD2 实证现有形状门已接住 base2/base3 两类已知幻觉(check 跑两款各 FAIL 于唯一形状门
错误;翻车产物早于形状门落地 3.5h),据此把形状门①从硬编码 drawButton 泛化为
apiVoidMethodSet 全 void 方法的赋值/链式返回值消费检测,②补 define 数组批量变体。形态
收窄到赋值/链式——base1/4/5 合法 void 调用(独立语句 / if(guard)call() 防御写法)实证
零误杀;条件/参数形态会误杀防御写法,移交 WU-C 5.4。判定抽 _shapeGateErrors 便于单测。
验证:check.test.mjs 11/11(靶子 catch + 泛化4方法 + 链式 + 零误杀6类);check base1-5
行为不变(base1/4/5 PASS、base2/3 FAIL);真跑重新生成打地鼠过九门(E_live 进对局
distinctStates=52、H_progress score 0→44)。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-27 02:01:20 -07:00 |
|
lili
|
9fe50a4fee
|
fix(amodel-gen): 治便宜档生成幻觉 + 补 play-spec 链路(九门基线剩两层根因)
便宜档九门基线诊断后,治创始人选的剩两层:
- 层1 生成幻觉:M3 对插件参数形状/返回值幻觉(drawButton 返 void 误赋值、
sceneFsm.define 单对象批量),check 门只查方法名存在 → 带病过 check+build+smoke。修:
· prompt.mjs + littlejs-game-dev.md 补两条 footgun 正反例(drawButton 返 void、
命中用 pointInRect;define 逐场景调)
· tools.mjs check 加形状静态门(拦 drawButton 返回值赋值 + define 单对象批量)
- 层2 链路假绿:stage 不产 play-spec → 裸跑 driven=false → E/H 降 advisory → 假绿。修:
· tools.mjs ensurePlaySpec 据 _forensicsView 形态自动推 driver(有 targets→tap-targets/否则 key-cycle)
· play.mjs smokeBoot 抓 _forensicsView().state();gen.mjs done 门 smoke 绿后调用
验证(vf-* 干净重跑):
- check 形状门对 base1/4/5 好游戏零误伤、对 base2/3 幻觉精准命中
- vf-mole 打地鼠(base2 同类):卡menu/E·G·H挂 → 九门全过、进 play(drawButton 幻觉治好)
- vf-2048 合成(base3 同类):define 已写对(幻觉治好);仍卡 menu = 新发现 key-cycle driver
缺起局点击(menu 用 tap、play 用 key)= 第三层 driver bug、非本两层,下一步小修
- 两款 playspec 自动产、driven=true(假绿终结)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-25 23:15:42 -07:00 |
|
lili
|
8b491d1330
|
fix(九门): latch 终态口径修法 — 命名同义 + 限时类有进展降 advisory
便宜档当前 HEAD 九门真实基线诊断(n=5 收敛环):harness 健康、3/5 真可玩;
0/5 主因 = latch 终态词表 bug(只认 gameover、漏 over/win/lose)+ 限时类
driver 玩不到终局。按创始人 2026-06-25 口径修 play.cdp.cjs:
- latch 认 gameover/over/win/lose 同义(对齐 driver 家族 runTapTargets)
- 未达终态但有真进展的限时/无快速失败态类 → latch 降 advisory(不致命),
无进展仍致命(不放水)
- 验证:base1-5 重跑 0/5→3/5(base1/4/5 真可玩转绿,base2/3 卡 menu 无进展仍正确挂)
SoT① §5.4 同步 latch 口径演进(文档↔代码兑现)。
附:docs/内网凭据与端点.md 登记 glm-5.2(opus 高级档/512K,作复杂档证路高级档)。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-25 22:26:37 -07:00 |
|
lili
|
b31cc37a4f
|
chore(brand): 造梦AI→绘境AI 全活层品牌不变量收口(441 文件)
把活层退役旧品牌「造梦AI」统一改为现行「绘境AI」,brand-invariant 门红线归零。构成:
~412 Java @author 署名 + game-studio/index.html 浏览器标题 + game-runtime/package.json 描述
+ game-admin/.env VITE_APP_TITLE 运营后台标题 + contracts API title/@Schema 用户协议示例/events 描述
+ docs-design mockup 品牌位 + 各模块注释。全是注释/显示/元数据,零逻辑改动。
zaomeng 拼音持久化标识符按 2026-06-24 评审 GR-05 不动(347 处保留)。
白名单(docs/ip 法律备案 / _archive / 带日期留痕)与 AGENTS.md 门定义自身不动。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-25 08:29:11 -07:00 |
|
lili
|
d55030bf4a
|
feat(runtime): 删 gamedef 运行时核心(gd-runtime/build-from-source/2d-api)
gamedef 声明式 JSON + new Function 解释路线的 game-runtime 核心,随
gamedef 判废一并清除:
- 4 测试:src/host/{gd-runtime.test,gd-archetypes.test,build-from-source.test,gameplay-pitfalls.test}.mjs
- 4 被引文件:src/host/{gd-runtime.js,build-from-source.mjs,runtime-api-2d.d.ts,runtime-api-2d.md}
这 8 文件互相引用闭环、仅被彼此与那 4 个 gamedef 测试引用;A-model 全线
(src/core / src/plugins / host / _template / _generic)不依赖它们。
src/core/game-host.d.ts L25 一句史化石注释提及 gd-runtime(非 import),
属"绝不动"的 A-model 核心,保留,列入残留报告。
验证(必跑·删后绿基线):
- 核心 node --test src/core+src/plugins = 211 pass / 0 fail
- games/_generic 壳 = 5 pass / 0 fail(确认未误伤 _generic 标准插件壳)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-25 02:04:46 -07:00 |
|
lili
|
0ccce16aa2
|
feat(amodel-gen): gen.mjs --brief-file + SAA→A-model 执行版 plan(集成C)
--brief-file 容大段富化设计稿(避 argv 长度/引号坑;U3 Java shell-out 复用),design+saa 双模式生效。plan 已折叠两轮 Codex+Opus 双评审。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-06-23 19:45:33 -07:00 |
|
lili
|
f5918e449e
|
feat(amodel-gen): Phase1 MVP-first 设计护栏(治"富设计→code thrash")
v5/v6 e2e 实证一个系统张力:driver-可达护栏让设计转单击成单(✓),但也让策划 agent 产出越来越富
(v4 5.3KB → v5/v6 7.5KB:离线收益/6级/广告/7商品/hitstop/9插件)→ **code agent 实现负担过重 →
read-thrash → loop-detection 截停、finished:false**(v5 26步/v6 27步均未收敛;对比 v4 精简设计 9 步收敛)。
护栏(design prompt + sim skill §8 加 MVP-first 铁律):设计聚焦可玩核心 = 核心循环 + 1 主机制
+ 1 资源环(进货)+ 3–4 级解锁 + 基础数值/音效,商品 ≤3 起步;离线收益/广告/雇员/多档 BGM/hitstop
/6+ 商品 一律标「后续·MVP 不做」。**先出能玩核心,再谈丰富** —— 降 code agent 负担、保收敛。
待:v7 验(精简设计 → code 收敛 + 单击成单 → H 过 → 护栏闭环全绿)。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-06-23 11:36:47 -07:00 |
|
lili
|
75dc86ad56
|
feat(amodel-gen): Phase1 e2e 验证 + driver-可达性设计护栏(两步成单 footgun)
本地 e2e(design→code)实证策划 agent 价值:一句话「做一个网兰梅的街角小卖部经营小游戏」
→ 策划 agent 读真 sim skill(115s)→ 比手写 v2/v3 brief 更丰富的设计(进货-库存-补货环 + 6 级解锁
阶梯 + 满意度 + 数值表 + 客流节奏区间 rush≥35s + 好玩自检 4/4 + clean gatespec score↑/currency↓)
→ code agent **9 步**收敛(vs v3 的 39 步)check/build/smoke 全绿。**设计层补料 → 更好玩 + 更快 + 更省 兑现。**
九门验 v4 = 8/9(A/B/C/D/E distinct=82/82/F/G/I 全绿,游戏真活、输入真响应),**仅 H score 0→0**:
根因 = 设计选了**两步成单**(选顾客锁定→点货架商品),零-LLM tap-targets driver 只单击 occupied 目标、
跟不动两步 → 选客不成单 → 营收 0(截图实锤:蓝顾客被选中高亮但没卖出)。**好游戏被误判,非代码 bug。**
护栏(设计-guidance,非改 driver/九门——守"九门玩法无关"):
- sim skill §9 + design prompt 可达性自检 + littlejs _forensicsView 契约 三处加「driver 可达」铁律:
核心成单/得分动作**单击 occupied 目标即完成**(casual 友好 + driver 可达);深度靠进货/库存/解锁/节奏,
不靠两步匹配;确需多步则 _forensicsView.targets 随状态把"下一步该点的"标 occupied。
待:re-gen v5(验护栏 → 单击成单 → H 过)+ U3(designNode Java shell-out)+ U6 蒸馏。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-06-23 10:48:21 -07:00 |
|
lili
|
57c30909cd
|
feat(amodel-gen): Phase1 设计 agent(--mode design,读真 sim skill)+ API-存在静态门 + sim skill 扩
承 Phase1 执行版(2026-06-23-design-agent-phase1-execution.md)U5/U1/U2/U4。
U5 sim skill 扩:补「进货→库存→售卖→补货」资源环范式(经营核心,治"没进货")+ 客流/出现节奏目标值
区间(治"顾客太快":清闲 ~2.4s/3/6s、rush 起点 ≥35s)+ §10 标注可机检 N=4(即时反馈/可见成长/解锁/音反馈 + 经营加经济扣减)。
U1+U2 设计 agent:gen.mjs 加 --mode design(tool-using 策划 agent:read_file/list_dir/done,M3,scaffold-free,
日志走 stderr / stdout 末行 JSON {ok,designText,gatespec})+ prompt.mjs buildDesignSystemPrompt(薄指令指
**read 真 sim skill 不手抄** + 可达性自检 + 好玩 N-of-8 + 结构化 gatespec)+ normGatespec 容错(M3 偶把
assertAfterPlay 包成 {item:[]}/expectLatch 写字符串 → 拍平)。
验:一句话经营 brief → 读 sim skill → 8.5KB 玩家视角设计稿(含进货环 + 节奏目标值表 rush≥5min + 好玩自检)
+ clean gatespec(expectLatch:true / score↑ / currency↓ 经济断言 / inventory changed)。
U4 API-存在静态门(tools.mjs check,玩法无关):游戏调的 plugins.<键>.<m>()/ctx.<m>() 必须在 api.d.ts 真存在
→ 廉价根除"方法名幻觉"类(stopBgm/defineScenes/ctx.nowMs);键→dir 映射(juice→particles-juice 等);
只查已知插件键+ctx、非键跳过(over-permissive 少误报)。验:_template 零误报 + 抓 stopBgm/ctx.nowMs
+ 不误伤 loop/ctx.log。
待:U3(designNode amodel 路 shell-out,Java/mini)+ 本地 e2e(design→code 验更好玩)+ U6 蒸馏。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-06-23 10:28:16 -07:00 |
|
lili
|
88d3a23787
|
feat(amodel-gen): 根治B(input→L1 handleTap)+driver起局扫点+5 footgun蒸馏+wanglanmei E2E→studio可玩
根治 B(缩 M3 错面,结构性根除"点击在错 phase 消费/永不消费→启动不了"):
- input 订阅收归 L1(_template/src/game.js wrapper):L3 只写实例方法 handleTap(x,y)/handleKey(key),
L1 在 pointerdown/keydown 直达派发;_template/src/game-logic.js 范例改用 handleTap。
- tools.mjs check:拦 ctx.getInput + 必须暴露 ≥1 输入方法;prompt.mjs/README/skill 同步输入契约。
- 机制+门双实证(node 全链路:menu→点开始→play、点客加分、点空白不加分;check 对 getInput/零输入方法拦截)。
driver(play.cdp.cjs):occupied 族起局从固定点 (195,422) 改中线纵向扫点,robust 命中各游戏「开始」按钮
(原固定点落空→死菜单假阴;实测 wanglanmei「开门营业」在 y≈502)。
资产通道(boot-game-host.loadHostAssets + gen.mjs --assets-dir):M3 只决定怎么用资产、不造。
入库工具 publish-amgen.mjs:staged bundle → game_runtime_package(package_json.engineBundle,status=1)→ studio /play。
5 个 M3 footgun 蒸馏进 prompt.mjs + skill(均 wanglanmei-v2 实测翻车):
① scene update 回调签名 (dt) 非 (running,dt) ② ctx.random.next() 非 ctx.random()
③ ctx.time.nowMs() 非 ctx.nowMs() ④ _forensicsView 的 phase/targets 必须在 state() 内实时算(否则定格 boot 快照)
⑤ update(dt) 的 dt 是秒,毫秒计时要 ×1000。
验证:M3 生成 wanglanmei-tycoon-v2(+上述 5 footgun 修复)→ 九门 PASS(score 0→364,distinct 43/43)
→ 入库 → studio /play/80002/80002 加载+boot+渲染菜单真玩(art 走程序化回退,水彩 art 需引擎资产线 E2/E3)。
(root-fix A 门可信化先于 cbe42933 提交;SAA Java 驱动绑定另track 暂不入此 commit)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-06-23 05:48:03 -07:00 |
|
lili
|
8ac4ccc861
|
feat(amodel): B 收尾——_forensicsView 必需(可测性红线)+ E_live/H 未驱动时降 advisory
创始人 B 裁:E_live/H 暂降 advisory + _forensicsView 必需 + 转优化循环。
- _forensicsView 必需:prompt 红线 + check() 验 game-logic 含 _forensicsView + skill(可观测红线;M3 之前当可选丢了致 H_progress 读不到 state)。导出 {phase,score[,targets]}。
- E_live/H_progress advisory:play.cdp.cjs verdict 改——未被驱动(spec 无 driver 且无 inputs)时这两门降 advisory(仍跑+报告 verdict.advisoryGates,不计入 pass)。自动可逆:将来 design 产 driver→driven=true→恢复致命;factory/gamedef 有 driver→不受影响。
- prompt/skill 同步:关键事件用 ctx.log 记日志(承接日志基建)。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-06-22 22:26:42 -07:00 |
|
lili
|
db3c42c5de
|
feat(amodel): 运行时日志基建(ctx.log+插件自带+harness捕获) + 九门A(play-spec透传)+B2(F_wiring) + 预算
创始人指令:游戏要有日志,读日志诊断运行时问题,模板+可选插件自带日志。
日志基建:
- plugin.js:受控面 ctx 加 log(tag,...args) → window.__gameLog 环形(800)+ console;用受控 time.nowMs。
- boot-game-host.js:B2 插件 Proxy wrap 顺手记插件语义调用进 __gameLog(跳 draw/update/current/get 等高频)→ 插件自带日志免逐个改;recHook 仍记 __engineCalls 供 F_wiring。
- _template game-logic.js:ctx.log 生命周期(init/scene play/over)→ 模板自带。
- play.mjs smokeBoot:抓 __gameLog 写 staged evidence/game-log.json + 末12条进 out.logTail(boot 成败都抓,失败时最有诊断价值)。
- 实证:scaffold→smoke logtest → logCount:165、game-log.json 有 [p:sceneFsm:define/start]+[game:init];读日志诊断可用。
九门对齐(C 之 A+B2,recon ad3c564):
- A(SaaGenNodes validateAmodelStaged):amodel 路 validate-ok→play 短路了 scaffoldNode(唯一写 play-spec.json 处)→ 补写 play-spec.json(从 design 产 K_PLAY_SPEC)→ 九门可驱动(治 E_live/G_input/H_progress 机制)。
- B2(boot-game-host):插件 recHook wrap → F_wiring callCount>0(实证 e2e 从 [E_live,F_wiring] → [E_live,H_progress],F_wiring 已过)。叠加式,factory/gamedef 零回归。
预算(gen.mjs):maxSteps 45→70 / maxWallMs 12→20min —— SAA design 富化 brief 比 raw(7步)需更多步。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-06-22 22:21:29 -07:00 |
|
lili
|
32fd756f3f
|
feat(amodel): 落地 3 层架构——L1 全11插件固定 + game.js 拆 wrapper/game-logic + L3 扁平契约
实现创始人 3 层模型(评审稿 2c220c13):
- L1 工程骨架(LLM 不写,writeFileTool 拒):host-config 注入全 11 插件(编排4+save+gamefeel/juice/palettePost/audioMusic/collision/physics,registerOrder 合集显式定义,viewport 硬编码 390×844 下传)+ game.js 薄 wrapper(摊平 opts.runtime→交 game-logic)。
- L3 游戏代码(LLM 只写):新 game-logic.js = createGame({plugins,bundle,viewport}) 收扁平件(无 opts.runtime 嵌套坑);必写 1=game-logic,core/render 推荐拆可内联。
- harness:tools.mjs check/真改写守卫迁 game-logic.js + 验 export createGame;writeFileTool 拒全 L1 文件(host-config/game.js/index.html/entry-bundle/entry/main)。
- prompt.mjs + skill + README:全对齐扁平契约 + 11 插件键 + 手感二分(方法名以 api.d.ts 为准,修 burst 幻觉)。
验证(全绿):
- M1 控制门:全11插件一起 boot(ctrl11 smoke PASS)+ 拆分后 boot(ctrl12 smoke PASS)——两个从未跑过的组合都过。
- 端到端 newarch1(M3 写 game-logic):**ok:true / 7 步 / 102s / 82K token / smoke PASS**,且 **M3 只写 1 文件 game-logic.js**。对比修前(5文件含wiring/thrash21-70步/600K+常失败)→ '降低 LLM 的活' 彻底兑现。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-06-22 11:08:46 -07:00 |
|