782 Commits

Author SHA1 Message Date
lili
4d220e77da docs(轨2+板): 质量模型与回流环两设计档(双评审已修·决策包⑦已批定稿)+ 工单板对账(阶段一②收口/决策②⑥⑦落账/R6+rubric落库前置工单/在飞板/06-29§7)
Some checks failed
docs-gate / docs-gate (push) Has been cancelled
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 19:31:53 -07:00
lili
24e558a4ed fix(cost): 成本子系统改用 per-POST 凭据取价(不再依赖 Service 进程 env NEWAPI_KEY)+ Service 注 key 兜底 + requirements 补 app-runtime extras (阶段一② cutover 接缝)
Some checks failed
docs-gate / docs-gate (push) Has been cancelled
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-02 18:39:32 -07:00
lili
526e9b3d80 docs(plans): 配置控制面阶段一②(cheap 归并 Service)plan — §6.8 双评审+创始人 3 决策收口;SDD 已执行(T1-T3+终审fix 全绿、fable 终审 With fixes 已修全 merge-before)
Some checks failed
docs-gate / docs-gate (push) Has been cancelled
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-02 13:47:23 -07:00
lili
bf7f1aebfc fix(cheap): 阶段一② 终审 merge-before(红线③ unlink×2 防陈旧 verdict 假绿 + setup fail-fast + acquire_ports to_thread + 死码/ReplyEndEvent canary/restricted fail-closed) (切片一 阶段一②/终审fix)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-02 13:34:57 -07:00
lili
8d9bf1e577 feat(cheap): worker 归并驱动 Service /chat(单 POST + 洋葱内续修)+ reply 外 result_out 收口 (切片一 阶段一②/T3)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-02 12:36:38 -07:00
lili
1662eb0dc5 feat(cheap): 便宜档独立 Service 壳 build_cheap_app + 工厂(soft 预算/三闸失控兜底/端口池/session→gameId sidecar/收口采集) (切片一 阶段一②/T2)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-02 12:12:53 -07:00
lili
e9e7006cb3 feat(cheap): 便宜档九门判据 judge_cheap_verdict + run_cheap_gates 同步门跑(端口透传) (切片一 阶段一②/T1)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-02 11:51:39 -07:00
lili
8e2d5d9e50 docs(governance): 计划谱系单指针 上级: 立约(§10.8)+ docs-gate 七检加 G7 + plan-tree 查询视图 + 存量断链回填
新建 plan/设计档 frontmatter 必带一行 上级:(仓根相对路径),沿链 6 跳内达 canonical SoT;
全链/树/当前位置都是查询结果(plan-tree.py)而非维护对象,_index 在飞板保持线级、不加逐叶登记。
G7 拦三种腐坏:缺字段 / 上级死链 / 链断(中途档既非 canonical 又无上级),成环与超跳同挡(均已植坏档实测命中)。
存量修复:统一执行计划基建线补认领配置控制面设计(治真断链、含 07-01 SCA 选型反转口径),
配置控制面设计与阶段〇/一① plan 补 上级:;AGENTS.md/.agents README/feature-design-doc 模板同步七检口径。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 11:45:32 -07:00
lili
10aeed3cc2 docs(.agents): 蒸馏配置控制面阶段一① 护城河 middleware 落地(tech-decisions §11)+ AgentScope 2.0.2 续修 middleware 机制速查 + SDD 子代理产出验证纪律
Some checks failed
docs-gate / docs-gate (push) Has been cancelled
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-02 05:16:11 -07:00
lili
07100eef85 docs(plans): 配置控制面阶段一① 护城河 middleware 线实施计划(§6.8 双评审已过·SDD 4task+终审fix 执行完成)
Some checks failed
docs-gate / docs-gate (push) Has been cancelled
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-02 04:17:54 -07:00
lili
f4384dc3f3 fix(tier2): 封陈旧 verdict 假绿(run_gates 起跑前清 verdict)+ 补软停实测置位回归护栏 (切片一 阶段一①/终审fix)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-02 04:07:30 -07:00
lili
2e698566df feat(tier2): Service 工厂注入续修 middleware + drive_generation single_post 单回合(老 resume 留 fallback) (切片一 阶段一①/T4)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-02 03:23:12 -07:00
lili
c26617192a feat(tier2): 软预算 ¥ 闸从 fail-closed 改优雅收尾软停(交尽力产物·不断链) (切片一 阶段一①/T3)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-02 03:04:24 -07:00
lili
e9c7a3bb47 feat(tier2): 续修 RepairMiddleware 提升进 middleware.py + GateJudgment 真契约 + budget_exhausted 联动 (切片一 阶段一①/T2)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-02 02:37:16 -07:00
lili
55162341ca feat(tier2): 统一门判据 GateJudgment + tier2 verdict 适配器 (切片一 阶段一①/T1)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-02 02:24:22 -07:00
zizi
c62143dd1e chore: 工作树散落配置入库(.idea/.codex/.mcp.json/创作者体系白皮书V1.2)
Some checks failed
docs-gate / docs-gate (push) Has been cancelled
2026-07-02 14:24:13 +08:00
zizi
d97e194383 docs(治理): SoT注册表+docs-gate六检门,清缩历史档126→69
- 注册表:docs/architecture/README.md §2,37 份 canonical(frontmatter topic+canonical:true)与表双向机器对账
- 门:.agents/tools/docs-gate.py 六检(品牌根/canonical唯一/死链/入口卫生/留痕隔离/设计档申报),挂 .githooks/pre-commit(本仓已激活)+ .gitea/workflows/docs-gate.yml(待runner)+ wave-close 第8步;旧 check-deadlinks.sh 退役并入 G3
- 清缩:删 54 项历史档(plans 16/agent-specs 设计与spike 20/brainstorms 5/memorys 3/goals+作战清单完成史归档/王蓝莓design/SAA现状html/add-game-template);channel-spike 564K 代码资产迁仓级 spikes/;六件删前蒸馏已迁(代码评审16条open项→进度总账§5、prefix-cache字段表→cheap-model skill、意图基线29条→需求清单附录、九门降级rationale→验收门、A11 TODO→tech-decisions、3layer边界→littlejs-game-dev 指针)
- 修口径约90处:六处SAA『现行主线』旧标、Nacos/RocketMQ『未部署』旧述(07-01反转)、gameDefinition残留、全部死链改 git show 定位;AGENTS.md 249→136行(决策史归tech-decisions);_index 改纯在飞板;对外演示版 md→html
- 依据:docs/agent-specs/2026-07-02-文档治理-{全量普查与裁决-report,SoT注册表与治理门-设计}.md(四路普查191份md+Codex/Opus双评审必修项已折入);恢复基线 8ea97234(单档 git checkout 8ea97234 -- <路径>)
2026-07-02 14:24:12 +08: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
a164f4c222 docs(.agents): 配置控制面阶段〇蒸馏 + 累积能力蒸馏批次 + 本轮 plan/设计
- tech-decisions §10:配置控制面阶段〇生产基建落地(Nacos 2.4.3/RocketMQ 5.3.1/Sentinel
  自托管 mini-infra + 三层并发正交承重[Sentinel=入口QPS / consumeThreadMax=dispatch速率 /
  有界worker池=真并发cap follow-up]+ rocketmq-spring consumeThreadMax 无界队列坑:死参数须 min=max)
- AGENTS.md:Nacos/RocketMQ/Sentinel 反转为 MVP 生产 runtime(2026-07-01 build-vs-buy 现货尽调)
- 累积 .agents 蒸馏:agentscope-2.0-facts / build-vs-buy 硬门 / cheap-model-game-generation /
  contract-first-development / game-e2e-cdp-harness + README 索引
- 本轮留痕:配置控制面 spike 与阶段〇 plan + 设计文档

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-01 18:53:39 -07:00
lili
2fac985bbf feat(gen-worker): middleware 热参经 Nacos v1 同步 watcher 热读(快照兜底)(切片一 阶段〇 D2)
NacosHotConfig 线程安全 store(RLock)+ get_config 三级兜底 + v1 add_config_watcher 同步热更(免 event-loop),
消灭自建薄读接口。回调 dict 键逐字对齐已核验 v1 源(data_id/group/namespace/raw_content/content)。
6 单测绿(初读/热更/不可达回落/默认保留/脏内容保旧值/并发线程安全)。真连烟测随后端窗口。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-01 17:40:40 -07:00
lili
ab6791cf34 feat(gen-worker): AgentScope Service 注册进 Nacos discovery(替硬编码@8200)(切片一 阶段〇 D1)
nacos_registry 注册实例+心跳+优雅注销,advertise_ip 指 mini-desktop Tailscale;代理旁路;
NACOS_REGISTER=1 才开、best-effort 失败不中断 Service。单测 mock client 锁注册+旁路+best-effort。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-01 17:40:40 -07:00
lili
4bc36ec6dd feat(game-cloud): RocketMQ 异步 gen 队列(生产者+有界消费≤15+CAS 幂等)(切片一 阶段〇 C3)
入队发 AIGC_GEN_TOPIC 信号替 @Scheduled 轮询触发;消费者 consumeThreadMax=15(在跑并发权威)+ 既有
claimQueuedTask CAS 认领幂等;派发失败落 failed 不留悬空 running;@Scheduled 降级兜底(捞 stale queued +
超时 running)。发 MQ best-effort 不回滚入队。单测锁幂等/best-effort;端到端随后端窗口。

name-server 各 profile(dev/local/staging)+base 指 mini-infra 100.64.0.8:9876;rocketmq-spring-boot-starter
在 starter-mq/websocket 均 optional=true 不传递,故 aigc-server 直依赖(版本走依赖管理)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-01 17:40:40 -07:00
lili
6d6bb52d9d feat(game-cloud): Sentinel 入口 QPS 突发保护(FLOW_GRADE_QPS·规则热源 Nacos)(切片一 阶段〇 C2)
入队入口套 @SentinelResource(aigc:gen:admission)做入口速率闸,与 DB 三门(per-creator 配额)分层;
越限 blockHandler 优雅拒非 500。并发≤15 权威=C3 consumeThreadMax(非本 Task)。规则改 Nacos dataId 热生效。
单测锁降级语义;真限流集成验证随后端窗口。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-01 09:59:31 -07:00
lili
55e833b470 feat(game-cloud): 重启用 Nacos 配置中心+服务发现指向 mini-infra(切片一 阶段〇 C1)
application.yaml nacos discovery/config enabled false→true + server-addr 100.64.0.8:8848 + 鉴权。
依赖零新增(starter 已声明)。本地编译绿;真注册验证随后端窗口。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-01 09:32:42 -07:00
lili
c197abc420 docs(architecture): 新增总架构图说·创始人对外演示版(13 张内置 SVG)
面向技术尽调/技术顾问的单文档对外演示:开篇全闭环价值锚点,三大部分(整体技术架构 / 功能模块 / 游戏生成),收尾护城河四层。诚实技术口径、自研 vs 不自研边界、采主流标准(A2A/MCP/OTel),非程序员散文 + 13 张内置 SVG(商业信息图风格,已逐张渲染验证)。README §3 加对外版指针。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-01 09:03:12 -07:00
lili
22b3016048 feat(infra): RocketMQ 5.3.1 自托管 mini-infra(NameServer+单 Broker+lean 1g JVM)(切片一 阶段〇 B2)
纯增量、host 网络、brokerIP1 指 Tailscale 地址;探针绿、Broker 注册成功、内存在 lean 预算内。
端点写回 docs/内网凭据与端点.md。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-01 08:55:59 -07:00
lili
38dd2dc4e5 feat(infra): Nacos 2.4.3 自托管 mini-infra(standalone+MySQL 后端+lean 512m JVM)(切片一 阶段〇 B1)
纯增量部署、host 网络、复用既有 MySQL nacos 库;鉴权开 token。探针 200 绿,内存 <700M 不挤 RAGflow。
端点/密钥写回 docs/内网凭据与端点.md。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-01 08:32:13 -07:00
lili
061cf22c87 feat(cheap-worker): 续修 middleware 机制 spike 坐实(拦 finish+注入+续跑)(切片一 阶段一前置)
on_reasoning 洋葱拦 finish Msg + 独立跑 fake check + 没过压制+注入 UserMsg 续跑,
4/4 确定性单测绿(stub 模型、零 LLM/chrome)。机制成立,阶段一接真 run_gates。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-01 05:22:49 -07:00
zizi
6d2f8789d7 remove archive doc 2026-07-01 11:18:20 +08:00
lili
ba69b386ee docs(plans): 便宜档 M3 生产 cutover plan(已批准·选B·§6.8 双评审收口)+ plan① 横切回写
M3 plan:承接 6-28 已完成的路由 cutover、推进对外开闸放量(S0 核实→S1 worker 更新到 M1 富化→S2 control-plane 重启+验Bean→S3 阈值起步→S4 小流量→S5 生产≥80%复验→S6 6门放行);Codex 有条件放行 + Opus(BLOCKER 经核实=误判)双评审 12 项发现全修;创始人裁定决策点二选 B(直接 live 开 flag+回滚兜、不走 staging 避 split-brain)。plan① 横切回写:状态表/§M3 记路由 cutover 已 6-28 go-live、§104 五款3/5 校正为 M1-rich 达标、§119 灰度→D3 整体翻转校正(横切一致性漂移修齐)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-30 03:37:17 -07:00
lili
9ae3334240 docs(.agents): 蒸馏便宜档切片一收口(richness 红线兑现 + 两个测试坑)
tech-decisions §5.1 回写:richness 架构落地(纯 LLM 非阻塞、代码零丰富度断言)+ 富游戏 M1 全 3 品类 100% 达标 + 退役授权 authorized;蒸馏 stale-play-spec 复用坑(复验须 --offset)与 amgen-base* 是 load_brief 依赖(清理须排除)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-30 01:39:06 -07:00
lili
1e004a361b feat(game-admin): 生成控制面只读监控页(切片一 C3b)
genMonitor 三 card(角色模型表/trace 时间线/成本对账)照搬既有 wanxiang 页模式;独立 axios 实例取 gen-worker 裸 JSON(不走 CommonResult 拦截器);eslint 0。页面真跑随 M3 部署窗口。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-30 01:39:06 -07:00
lili
5265f538b8 feat(contracts,aigc): prompt registry 一致性 CI 门 + Java TTL 运行时热取(切片一 C2)
check_registry.py 校验 registry.yaml 每条 id.version 与 .md frontmatter 对齐(漂移 exit 1,17 条全绿);PromptResourceLoader 加 @Scheduled 60s TTL 热取 + classpath 永久兜底 + volatile 原子换 Map(mvn compile 过 + 9/9 测试)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-30 01:39:06 -07:00
lili
f4cea4677a feat(tier2): 统一 trace 落库 sink + SAA schema + 生成控制面只读后端(切片一 C1/C3a)
JsonlFileSink 把五字段 trace 落 workdir/trace.jsonl(非阻塞·写失败不阻断生成);studio.py sink 接线;SAA 扩展段 schema(接口对称五核心+内容不对称 ext);管理面 3 只读端点 roles/traces/cost(惰性 import 保住「仅 import service.app 不牵 fastapi」红线)。测试 test_jsonl_sink 3 / test_admin_routes 6 全绿。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-30 01:39:06 -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
ba0197a1a3 docs(cheap-worker): 纠 reskin 错框 + plan 切片完成度回写
创始人纠正:reskin「锁循环只换皮作成本主线」/「重做丰富脚手架」= 越线,成本数据留痕、
策略框作废。架构红线:项目代码只做机械确定的事;玩法/美术/音乐的「丰富生成」归生成 agent
设计创作(据 sim-business 指导 + 组合插件)、「丰富校验」归纯 LLM 验证 agent(非阻塞)——
代码/九门/脚手架都不碰。便宜=LLM 低参与度≠游戏低质量,底线=2D 丰富游戏。

- tech-decisions §5.1 / 设计文档执行进度 / plan① 切片一里程碑:reskin 错框纠正 + 修正方向
  (接 sim-business 设计指导 + 建 LLM 丰富度验证 agent → 喂 M1「过九门+丰富」)。
- plan① §2 执行现状:加切片完成度快照(切片一地基✅/达标门✗ · 切片二 go-no-go悬 · 切片三~90%
  · 基建线~15%)+ 便宜档待办更新(减摩擦已落 + 丰富度新缺口 + 预算闸已接线)+ A11 现状更新。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-30 01:39:05 -07:00
lili
92f6a84205 docs(cheap-worker): 经营 reskin n=5 收敛环确认——降本杠杆坐实
5 个不同店主题(奶茶/书店/花店/拉面/冰淇淋)强制换皮跑:
5/5 全过九门 · 成本均 ¥0.252(区间 0.21-0.38,-64% vs 基线 ~¥0.7)·
game-logic.js 全 0-diff(循环锁定证明生效)· 全 1 轮 · 5 店菜单全互异。

连同咖啡馆 = n=6 全过、全腰斩、循环全锁定——reskin 三件(成本腰斩稳 /
过门 100% 可靠 / 多款不雷同)全确认收敛,无失败无需追加。扩模板降本杠杆
= 脚手架 + 写边界强制锁循环,经营档坐实;阶段二以 reskin 为成本主线、
剩四品类各建骨架 + n=5 确认。蒸馏入设计/tech-decisions §5.1/plan① 切片一。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-30 01:39:05 -07:00
lili
c17b15cbdf docs(cheap-worker): 扩模板数据点结论蒸馏——降工作面只在强制换皮 reskin 模式
经营品类三路对照(同咖啡馆 brief,n=1):
- 无脚手架基线(7 局 bake-shop-serve):~890 行 / ¥0.7 / 6·7 过门。
- 软脚手架(骨架 + 软提示):892 行 / ¥0.85 / 过门 / distinct——AI 把省下预算投增富化
  (自加 combo + VIP)、对基线三指标(行数/成本/轮数)全平没降。
- 强制换皮(write_whitelist 锁 game-logic.js、只改 core 主题 + render 观感):
  696 行(-22%)/ ¥0.34(-51%)/ tokens -64% / game-logic 0-diff / 过门 / 仍 distinct。

结论:设计 §1「扩模板缩小 AI 工作面」假设成立、但只在强制换皮 reskin 模式(脚手架 +
写边界强制锁循环);软脚手架买质量/过门鲁棒(增富化)、不买成本。降本杠杆 = 脚手架 + 锁循环、
非脚手架本身。取舍:reskin 省成本但封顶增富化,软脚手架反之。阶段二应以 reskin 为成本主线
(待创始人定范围、n=3-5 每类确认)。蒸馏入设计执行进度 / tech-decisions §5.1 / plan① 切片一。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-30 01:39:05 -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
c7811c7dfa docs(knowledge): tech-decisions §5.1 蒸馏阶段一B落地 —— 方向①向母语对齐全完成
把"降AI参与方向①(插件API向母语直觉对齐)"的落地写回 tech-decisions §5.1(该节正是
drawButton 等改签名的方向源):附A 15处签名 #1-#15 全完成 + 正交泛型门修(save.get 误杀)
+ 减摩擦端到端见效(打地鼠+save 从失败→一次过九门/¥0.64/不thrash),2a20e5e7→2be7b718 13提交。
剩:补密度(阶段一C)+ 扩模板(数据点门控)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-30 01:39:05 -07:00
lili
7c9c8a8b47 docs(cheap-gen): 阶段一B 改签名收口 —— plan①里程碑 + 设计执行进度 + 存量重生成复验
阶段一B(附A 15 处可改签名 #1-#15)全完成收口:
- plan① 切片一「降AI参与」里程碑:执行序列标记阶段一A/B ✅(2a20e5e7→2be7b718 共13提交、前置核查证 L2/tier2 隔离)
- 设计文档执行进度:逐条母语化要点 + 正交泛型门修复 + 存量重生成九门复验结果
- 存量重生成代表性一局 PASS:打地鼠+菜单+高分(drawButton/sessionScore/save.get/ctx.random)
  attempts=1/¥0.64/209s,对比改签名前同款栽在 save.get 泛型门 bug(2attempts/¥6.69/失败)
  —— 现一次过、更便宜更快不 thrash,减摩擦端到端见效。
下一步:难品类数据点(B,前置阶段二)→ 阶段一C 补密度 → 阶段二扩模板。

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