288 Commits

Author SHA1 Message Date
zizi
2b59f53f44 feat(saa): Python agentic 生成系统迁移到 SAA(Spring AI Alibaba)裸图 spike (HJ-AGI-002)
全图 design->generate->validate->[repair环]->scaffold->build->play(九门)->player->emit;build/play 复用既有 harness 子进程。
SAA 完整框架集接入 aigc-server(graph-core/agent-framework/builtin-nodes/observation/openai,3 BOM;Boot3.5.14/Redisson4.4.0 保住)。
双评审(Opus+Codex)9 项对比前必修:LLM超时重试/ProcessBuilder超时修复/采样面对齐/playerFeedback清串味/gatespec强解析/problems归一/recursionLimit兜底/cost/端口参数化。
首轮对比 breakout/whack/flappy:SAA 通过率 2/3 >= Python 1/3。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-16 07:55:27 +08:00
zizi
b780323e53 Merge commit 'a9d11725' into dev/2.0.0 2026-06-15 14:49:26 +00:00
zizi
063ec4edf2 docs(rename): ③ 文档/契约漂移清理——contracts+docs+根文档 yudao 标识同步 com.wanxiang.huijing(follow-up,脚本)
- 范围:全仓除已完成的 game-cloud/game-admin(及排除区);91 文件
- cn.iocoder.yudao→com.wanxiang.huijing / cn.wanxiang.game→com.wanxiang.huijing.game / cn.iocoder.cloud→com.wanxiang / Yudao*→Huijing* / bare yudao→huijing
- 含 contracts/api-schemas(apiInterface FQCN)、docs/architecture+agent-specs(含中文名,git ls-files -z 修复)、AGENTS.md/CLAUDE.md 等根文档
- 保留不动:上游归属 URL(gitee/github yudaocode·YunaiV,改则断链+违反署名)、game-cloud Flyway 迁移注释(保 checksum)、lockfile(装包重生)
- 纯文档/字符串,零构建影响(game-cloud/game-admin 字节码未动)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-15 14:32:44 +00:00
lili
a9d1172509 docs(ip): 知识产权申报材料(6软著+4专利)+ 双层复核(Codex×Opus)整改
- 6 件软著材料 ruanzhu-1..6(软件说明书/源文件清单/源代码鉴别材料/申请信息表)
- 4 件发明专利交底材料 patents/01..04 + 知识产权申报总表
- 双层复核报告 + 整改(均经验证、零第三方泄漏):
  · ru-3 补漏纳 2 文件 + 重生成鉴别材料消逐字不符 + 统计→123/10186
  · ru-6 补 service.py(300行)→12/1650;ru-1 修鉴别材料截断边界
  · ru-4/ru-5 计数漂移同步(12841 / 9859);run.py/prompt.py「九门」口径
  · 6 包 清单/鉴别材料/申请表 三者一致
- docs/ip/_tools 确定性重生成器 + README(提交窗口重快照复用)
- 材料含【待填】行政占位,待律所终审 + 著作权人实名提交后生效(尚未提交)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-15 07:09:16 -07:00
zizi
384a26da59 fix(studio): feed 卡占位封面(1×1 透明 GIF)当无封面走标题底纹兜底——修"一片黑"卖相
链路③⑤ 人测亲见:feed 卡一片黑+只剩播放按钮。根因=生成侧无缩略图时后端回填 1×1
透明占位 GIF(data:image/gif;base64,R0lGODlhAQAB…),它是 truthy → 绕过旧 `!coverUrl`
兜底、被当背景渲染成透明(视觉=黑)。

修:GameCard.vue 加 hasCover 计算属性,识别 1×1 占位 GIF 当"无封面"→走既有标题底纹兜底,
feed 卡始终有可读内容。真实封面(OSS http(s)/实质图)才用作背景;真缩略图归 W-G1。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-15 13:39:14 +00:00
zizi
cf2e1ed3b5 docs(agents): 改名收尾——playbook 内 yudao-server/YudaoServerApplication/cn.wanxiang.game 同步到 huijing-server/HuijingServerApplication/com.wanxiang.huijing.game(follow-up ②,c74aa7da 改名连带)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-15 13:31:31 +00:00
zizi
c74aa7dab6 refactor(rename): yudao 命名空间整体改名 com.wanxiang.huijing(公司 Wanxiang / 项目 Huijing)
- 包根 cn.iocoder.yudao → com.wanxiang.huijing;业务 cn.wanxiang.game → com.wanxiang.huijing.game(统一单一命名空间)
- groupId cn.iocoder.cloud → com.wanxiang;artifactId + 模块目录 yudao-* → huijing-*(含 huijing-server/framework/gateway/dependencies)
- 类名 Yudao* → Huijing*(44 个);配置前缀 yudao.* → huijing.*(Tier A 标识符 + Tier B 配置)
- 排除不动:Flyway 迁移脚本(不可变历史,保 checksum)、上游归属 URL/LICENSE、DB 表名(真表 system_*/game_*,无 yudao_ 业务表)
- 范围:game-cloud + game-admin。范围外 contracts/docs/.agents 的 yudao 引用=文档漂移,后续单独清(Opus H4 判不阻断)

评审:Opus 对抗复审(逮 Flyway checksum Blocker→已修排除迁移);Codex 未同步交回。
本地验证:apply 幂等✓;范围内真代码残留 0(16 处 \bYudao 均在已排除迁移注释内)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-15 13:05:48 +00:00
zizi
fce6713f17 merge(wg1): 并入 L1 W-G1 bake-off——便宜模型0造不出/失败全归基建·人锚不可替代
L1(lili-mac)自主完成 P2(P1 校准放量 blocked-on-founder)。核验:flappy verdict 九门全绿
(实证非自述)、results.json 真 bake-off 数据(deepseek-v4-flash retries=2 真重试链)。

- driver-coverage 1→8 型闭口:flappy/multiball/asteroids/angrybirds 四款翻绿(九门真验)
- 三分类铁论:0 模型造不出 / 0 3D 硬界——失败全归 ①宿主键盘桥(L0 已修 d754b71)
  ②driver 覆盖(L1 增强)③可测性边界(游戏 exportState)
- P2 三档对照(同款 Breakout):flash ¥0.194 / M2.7 ¥0.514 / pro ¥0.417;
  pro 碰撞 bug 被两便宜 player 假绿=人锚不可替代(创始人亲玩锚)
- t2048 8/9(2048 抗死锁 latch 体裁边界,游戏真可玩,建议放宽门)
- 蒸馏:game-e2e §8(driver 1→8+H 假阴归因)/cheap-model §9/L1 闭口报告
- L1 lane(_wg1-gen+gen-worker),与 L0 lane 不相交=clean merge

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-15 11:21:27 +00:00
zizi
00a1275637 chore(cleanup): 清理 yudao 存量死代码/垃圾(139 删+1 改,净删 ~5.6 万行)
- yudao 内置 demo 示例代码:infra Demo01/02/03 学生CRUD · pay PayDemo · bpm flowable 监听器示例 · system DemoJob(零外部引用,无菜单/xml/test 连带)
- yudao-ui/ 5 个占位 README stub(实际前端在顶层 game-admin/game-studio)
- 21 个 .http IDE scratch 文件(infra/pay/system/bpm)
- sql/ 非 MySQL 方言 DDL:db2/dm/kingbase/oracle/opengauss/postgresql/sqlserver(平台只用 MySQL;含 dm/flowable-patch 手工补丁,未入 maven 构建)
- infra ErrorCodeConstants 移除 10 个 DEMO 孤儿错误码常量(引用方已删)
- game-admin src/{api,views}/infra/demo codegen 示例视图

未动:yudao-module-bpm/pay 模块裁剪 + scripts/ 一次性脚本(待产品决策);改名搁置。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-15 10:57:46 +00:00
zizi
23decfefaf feat(passport): staging 限定免真实短信验证登录——内测解锁(profile 门控·生产不受影响)
创始人:「allow login and registration without SMS verification for now」。staging 未接真实
短信网关,随机码外人无从得知→创始人人测/e2e UI 走查均无法登录。

实现(信任边界=后端服务层 PassportServiceImpl,profile/配置级门控):
- 新增 @Value sms-mock-enabled(缺省 false)+ sms-mock-code(缺省 8888)
- sendSmsCode:开关开→mock 受理成功(不依赖真实网关)
- smsLogin:开关开 ∧ 提交码==固定码 才跳过 system_sms_code 校验,否则真实校验(双条件,非无脑放行)
- 仅 application-staging.yaml 置 true;生产/dev/local 不配→@Value 缺省 false→真实短信校验绝不削弱
- log 经 DesensitizedUtil 脱敏手机号;安全注记三处冗余(Javadoc/行内+log.warn/yaml)

⚠ 公网上线前必须关闭(=实名/短信网关日历闸门):开启=任何人凭 8888 登录任意号,绝不可进生产。
编译 BUILD SUCCESS + 20/20 单测(含 5 新增,2 个"开关关→生产不受影响"反证)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-15 10:40:06 +00:00
lili
06e59de659 feat(wg1): angrybirds 也翻绿——drag-aiming 解析瞄准(暴露物理常数闭可测性边界)
续 cc5fa48:最后一个 driver-coverage 边界 angrybirds 转确定性闭口(复刻 asteroids「暴露所需常数+适配 driver」范式)。

- play.cdp.cjs drag-aiming 加 45° 抛【解析模式】:游戏暴露 launch{gravity,powerScale} 即反解拖拽矢量(各发±力度微抖兜物理离散),否则退化力度扫描
- angrybirds brief:pin 死简单可解析物理(powerScale=8/gravity=1200,无阻力)+ 导出 launch:{gravity,powerScale}
- flash 重生成首发过(retries=0):launch 导出与 pin 完全一致、score 0→20 result=win 清场、latch✓
- 终局:flappy/multiball/asteroids/angrybirds 4 款翻绿;仅 t2048 余 8/9(2048 抗死锁 latch 体裁边界,游戏真可玩,建议放宽门)
- 回填:闭口报告 + game-e2e §8(drag-aiming 解析)+ cheap-model §9

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-15 03:36:01 -07:00
lili
cc5fa486ac feat(wg1): driver-coverage 闭口 + P2 三档对照——flappy/multiball/asteroids 翻绿,0 模型造不出
创始人 2026-06-15 定档「driver 残留闭口 + P2 对照(L1 自主)」;P1 校准放量 blocked-on-founder。

- play.cdp.cjs driver 库 1→8 型:+flap-to-gap vy 前瞻 / paddle-intercept 弃守排空 / drag-aiming(第7) / aim-fire(第8)
- flappy (重生成 score 0→5,vy 前瞻+可达缝隙 brief)
- multiball (重生成首发 retries=0,弃守排空 driver+底部丢球语义 brief)
- asteroids (enrich exportState 暴露陨石坐标+aim-fire driver,score 0→6=可测性边界转确定性闭口范式)
- t2048(8/9,键盘桥已修 score 0→4;latch=2048 抗死锁体裁边界)/ angrybirds(8/9,隐藏弹道物理可测性边界)honest 留界
- 三分类铁论:0 模型造不出 / 0 3D 硬界——全是宿主键盘桥(L0 已修)/driver 覆盖(我域已增强)/可测性边界(游戏 exportState)
- P2:同款 Breakout 三档对照(flash ¥0.194/M2.7 ¥0.514/pro ¥0.417)+ 创始人锚(pro 碰撞 bug 被两便宜 player 假绿=人锚不可替代)
- 蒸馏:game-e2e §8(driver 1→8 型 + H 假阴四因归因铁律)、cheap-model §9(重生成区分实例bug/可测性/模型短板);W-G1 spec 执行进展回填;新增 L1 闭口报告
- 顺带:run.py/prompt.py 注释 六门→九门 对齐(我域,trivial)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-15 02:00:07 -07:00
zizi
3c6e3d4ad0 feat(feed): 修 feed 卡 authorName 恒 null——三层补作者昵称回填(链路③⑤走查收口)
curl 实测 feed/stream 9 卡 author 全 null:契约 feed.yaml:216 与 FeedCardRespVO 早有
authorName 字段,纯三层缺实现。补:
- ProjectFeedMetaDTO 加 authorName 字段(来源 creatorUserId 查 system 用户 nickname)
- ProjectServiceImpl.getFeedMeta 经 AdminUserApi(单体内本地 bean·非网络 Feign)单查回填,null 安全
- FeedServiceImpl.backfillCardMeta 加 setAuthorName

最小改动:复用 PlayerApi 既有跨模块本地 bean 范式,不动 pom(project-server 已含 system-api)、
不改批量(单体本地查非真实 N+1)。编译 BUILD SUCCESS(28 模块)。运行时昵称回填待 Phase 2
重部署后 CDP 走查实证。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-15 08:42:20 +00:00
zizi
29f34b9fda docs(mvp): 总账补 yudao 死菜单清理收口 row(§6)——16棵死子树1243行软删+437孤儿,staging复验12/12,SQL落仓dev/2.0.0
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-15 08:11:08 +00:00
zizi
3279b5c5a9 chore(admin): yudao 死菜单清理 SQL 落仓——16 棵死子树 1243 行软删+437 行 role_menu 孤儿(备份表+固化删除集,staging 已执行) 2026-06-15 08:07:45 +00:00
zizi
c2cb4d75e3 docs(t1b-beta): T1b-β 实质收口落档——引擎真接线+Runner v2(arc)支撑feed真玩,零闭环缺口/零split-brain
5路并行侦察(读代码非读规格,PLANNED vs ACTUAL 以代码为准)实证:每个灰度闭环必需项
done/absorbed-by-arc 且有真机证据(A6 6/6 `3e5cab4` / P2真机6门 `5d3f7a8` /
3b-B井字棋入feed `238ec2d` / B1主链9001-9002);剩余全是 audit-debt+gold-plating,
无一在完成线(日历闸门)关键路径。

3处 spec↔代码漂移(有意改判非bug,已回填澄清):
- Phase B: packageUrl外链 → engineBundle内嵌(absorbed,契约一致无split-brain)
- Phase C: 1.x srcdoc→URL退役被P2 O2(b)supersede(moot,单宿主GamePlayer.vue无双轨)
- Phase A: random/time/input改判插件自管(透传破粒子确定性/污染帧钟,血统债)

落档(纯文档additive/低风险):
- 母spec 9处banner回填(Phase C supersede / Phase B engineBundle / Phase A drifts / 门3·门5·门12 / §12 immutable裁决)
- 新收口报告 docs/agent-specs/2026-06-15-T1b-β收口报告.md(wave-close七步)
- 总账(§5 backlog+推迟清单+§6执行记录row+表头日期2026-06-15)
- 作战清单(§0+T1b-β item标done)+ .agent(TODO→收口block+推迟清单)
- schema immutable孤儿字段标future(消无孤儿设计红线 AGENTS §7)

推迟清单(gold-plating+audit-debt)入backlog,创始人可点名某项转required。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-15 08:00:19 +00:00
zizi
c77f7a1e60 docs(mvp): 作战清单回填到 2026-06-15 + 三线分工(6c6g L0‖mac L1‖你)防冲突铁律
回填铁律(本会话多收口未回填):
- 维护行/§0 补本会话生成线大推进:3b-B 派发面+HMAC+视觉终局(via 兜底)/scale-20 14款/
  键盘桥 fix/saolei 翻绿/OpenGame 评审版 merge;DS key 你已解→W-G1 前置清
- §0 重锁候选(可并):①W-G1 bake-off(L1,unblocked)②T1b-β(L0)③dispatch tap-targets(L1)
- 范围裁决:生成游戏「游戏内社交+内购」延后(平台全量不变)
- 新增 §0.5 三线分工表 + 防冲突四铁律(文件=lane 边界/机器分区/git rebase 节奏/brief 防撞名)
- W-G1 标 DS key 已解+【L1】+生成成熟度;new-api 标 DeepSeek+MiniMax 已解

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-15 05:15:54 +00:00
zizi
824ff672e3 merge(wg1): 并入 L1 saolei-borderline 修复(tap-targets safeOnly 避负族 driver)
独立验证(saolei verdict pass=9门0挂、trial merge、roles.py 未碰)后并入 L1 38032c7:

 L1 完成(避负族 facet,真+验证):
- harness driver runTapTargets 加 safeOnly(规避/推理族只点 safe===true 确定性避负到 win;
  安全放置族缺省关、零回归)
- saolei 题面加 safe x-ray 观测位(仅 _forensicsView·勿渲染)+ safeOnly + 断言改 result==win
- 重生成 saolei flash 一次过九门(revealed 0→71/all_cleared/win-latch)=borderline→confirmed-playable;
  自产 safe 正确→坐实缺口在题面非模型;回归 tictactoe/invaders 全绿
- 家族二分法(安全放置 vs 避负/推理)沉淀进 cheap-model/game-e2e skill

冲突解:brief add/add(L1 与 L0 同路径不同切片)取 L1 版为底 + 追加 §十 L0 补充——
澄清 L1 治的是 lane/避负族(saolei),与 3b-B 派发面 driver:none 是不同 facet;
cheap-model skill auto-merge 已含两 facet(line 58 dispatch 面 / line 80 避负族)。

⚠️ 仍 pending(不同 facet):3b-B 派发面 design agent 给 driver:none(roles.py:32,安全放置族
在派发面拿不到 driver)=「一句话现生成 tap 类」缺口,L1 本次零碰 roles.py/studio.py→属 L1 下一步。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-15 04:56:42 +00:00
lili
38032c72b4 feat(wg1): tap-targets safeOnly oracle driver——扫雷 borderline 翻绿(自产缺口修复)
driver: runTapTargets 加 safeOnly(规避/推理族只点 safe===true、确定性避负到 win;安全放置族缺省关、零回归)。题面: saolei.json targets 加 safe x-ray 观测位(勿渲染)+ safeOnly + 断言 result==win。重生成 saolei: flash 一次过九门(revealed 0→71 / all_cleared / win-latch),自产 safe 正确→坐实缺口在题面非模型。回归 tictactoe(X)/invaders(win)全绿。沉淀 L1brief §九 + game-e2e/cheap-model skill 二分法。零碰 L0(boot-game-host/契约/门面)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 20:36:51 -07:00
zizi
b96aa84866 docs(opengame): 评审版 baseline 刷新到 post-3b-B(v0.4)——吸收派发面 e2e + driver:none 种子
创始人「先 merge+刷新 baseline」拍板执行(OpenGame 执行后续归 L1):
- §1 现状基线补 post-3b-B:派发面全链真证(238ec2d)+视觉终局达成(via 兜底)+唯一剩余生成缺口=tap 类 driver:none
- D4 种子加一条已验证失败类「设计 agent 自产 driver:none(应产 tap-targets)」喂 U3,失败类目=design 自产物缺陷
- 形态/决策/分期全不变,仅刷现状+加种子

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-15 03:35:47 +00:00
zizi
d9fc9eee3f merge(docs): 并入 OpenGame 蓝图补缺评审版 v0.3(HJ-AGI-OG-001)
L1 产 OpenGame 源码级精读评审版(两轮评审过、待创始人拍板)入档 dev/2.0.0。
形态=A 增量改造(蓝图当内核输入,不换 AgentScope/LittleJS/九门 harness/便宜模型);
核心补 U3 Debug Skill + U4 Template Skill(离线冷路径、零碰热路径/成本/契约 churn);
仅 Tier1,Cocos 维持冻结。创始人拍板:先 merge 存档 + 刷新 baseline 到 post-3b-B,
OpenGame 执行后续归 L1。
2026-06-15 03:34:05 +00:00
lili
076c407551 docs(agent-specs): OpenGame 蓝图补缺升级 评审版 v0.3(HJ-AGI-OG-001)
源码级对标 OpenGame(Debug/Template Skill)后为 W-G1 设计 A 形态增量升级:分类/GDD 折叠 + Debug 活调试协议(9h)+ Template 骨架自增长;离线冷路径经验复利、热路径不变;经验绑契约非绑引擎(engineBinding)保引擎可换不降级。两轮评审收口(1 P0 + 5 P1 全采纳),分四期执行,仅 Tier1/LittleJS,Cocos 维持冻结。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 19:34:37 -07:00
zizi
dee2fcaa5f docs(L1-brief): 闭合「一句话现生成 tap 类」临门一脚——design agent 自产 tap-targets driver
3b-B 视觉终局重跑逮出唯一剩余缺口的 L1 执行 brief:
- 精确根因:roles.py:32 DESIGN_SYSTEM 规则③ 明确叫模型对纯点击类给 driver:none,
  但 harness 早有 tap-targets/tap-pairs driver(play.cdp.cjs:205/208,样板 tictactoe 手供即过)
- 修向(双保险,镜像现有 ball.y→ball.x):① prompt 改离散点击类产 tap-targets+导出 targets 数组
  ② _extract_gatespec 兜底注入
- 验收:2 款 tap 现生成过九门 + 理想派发面落当场生成新游戏入 feed=全真现生成终局
- lane 纪律:只动 wg1/gen-worker,冻结契约/host/backend/壳零改,rebase 238ec2d

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-15 01:21:12 +00:00
zizi
238ec2dbe8 test(aigc-3b-B): 视觉终局达成——真游戏真玩入 feed(亲眼验);一句话现生成腿缺口=tap类driver:none→L1
3b-B 重跑视觉终局(mini-desktop·证据 wg1/gen-worker/evidence-3bB-final/):

 视觉终局达成(亲眼复核截图):feed 里一款真渲+真玩有进展的井字棋(gameId=9306/versionId=93112)——
  空盘「轮到X」→ 落子填盘 X·O → 「X 胜!」+ 重新开始(latch 终态);feed 真玩门 10/11 过
  (no_demo_fallback/engine_rendered/lively_interactive 全 true,唯一 false=play_start 遥测非阻断)。
  经真 HMAC 回调写链落库(验签通过 engineBundleLen=210891→建版本→组包 checksum 自洽→翻 feed)。

走兜底路(诚实标注):主路一句话现生成两次均失败,故取已验证过九门样板 tictactoe(便宜模型 flash 真生成、
  verdict A-I 全 pass)的 engineBundle 经派发面真回调路落 feed,DB bundle 与样板 sha256 字节级一致。
  仍是便宜模型真生成的过门游戏,只是非本次现生成。

★ 主路两次 fresh 失败真因(非模型壁垒,铁证):design agent 在 dispatch 面 run_studio(play_spec={}) 下
  均给 driver:{type:none}→harness 盲打打不中目标→moves/score 恒 0→H_progress 挂+latch 不触发,repairs=5
  耗尽。游戏本体全对(gen9306/9307 verdict 8/9 门过,targetX/Y/radius·board·moves 导出正确,G_input/
  I_control/F_wiring 均过)。样板过门靠 lane brief 手供 play_spec.driver=tap-targets。
  → 蒸馏入 cheap-model §7:DESIGN_SYSTEM 须对离散点击类强制产 tap-targets driver(纯 L1 生成域,
  moat『一句话现生成』腿的真·临门一脚)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-15 00:48:50 +00:00
zizi
23e86934d2 merge(wg1): 并入 L1 scale-20 放量 + 宿主键盘桥 fix(d754b71·关键盘输入缺口)
独立验证(不信自述)后并入 fix/host-keyboard-bridge(=wg1/scale-20 超集,merge-base d79f2c3):

 宿主键盘桥 fix(d754b71·5行纯增量):boot-game-host.js attachInput() 补 window keydown/keyup
  桥接(ctx.getInput 键盘通道原为空→方向键/空格游戏输入死),对齐 host-dev/host.js:427-428 既有范式,
  inputBridge _assertType 白名单本已含 keydown/keyup=零兼容风险。独立验:tetris verdict 修后
  pass=True/9门/0挂(翻绿铁证)、tictactoe pass=True。

L1 scale-20 14 款放量(briefs/results/calibration/m3_player_test.py + tictactoe/tetris 正样本):
  主力 7/8 真可玩;spec 预判门面缺口几乎全推翻(CCD/文本HUD/网格/match-finding 便宜模型自写对),
  真·L0 门面缺口收敛为唯一一处=宿主键盘桥(本 fix 已补)。trial merge 干净(仅 .agents skill
  auto-merge),我 3b-B 文件(service.py/CallbackSignatureVerifier)完好。

校正:我 §5『点击坑=moat 真壁垒』系单样本(3b-B)过度泛化,与 L1 §9 scale-20 实证矛盾→已改为
  承认便宜模型相当能干、真缺口=键盘桥(已修)+driver-coverage(harness),非模型能力。

重大上修:moat 生成质量远好于 3b-B 单样本所示;失败主因=宿主门面(已补)+harness driver 覆盖,非模型。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 23:49:40 +00:00
lili
1eae58d0ac docs(wg1): 报告补 driver-coverage 残留实测记录(multiball/t2048/flappy/愤怒小鸟)
driver 调参(flap 前瞻/paddle 弃守/2048 双向)实测未翻绿,因玩法特性、收益递减;论题已由 invaders+tetris 双证。实验代码已 revert,仅留必要 key() 修复(早于 4836a6f 已提交)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 10:58:20 -07:00
lili
4591d64818 verify(host): 重打包键盘款证 host 键盘桥生效(tetris 翻绿)
补宿主键盘桥(d754b71)后重打包 t2048/tetris/asteroids 重跑九门:tetris 整盘翻绿(piecesLocked 0→10 + latch 驻留;修前 0→1 重力假性)、t2048 score 0→4 真合并(修前 0→0)、asteroids F_wiring 0→27 + latch✓(船真动真开火;修前全冻 0)。键盘根因坐实。残留 t2048-latch(2048 盲态难死锁)/asteroids-score(盲射没瞄准)=harness driver 跟进,非键盘非模型。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 10:42:49 -07:00
lili
d754b71e65 fix(host): attachInput 补 keydown/keyup window 桥接(getInput 契约 key 两态)
boot-game-host.js attachInput() 原只桥 pointerdown/move/up,漏 keydown/keyup → ctx.getInput() 键盘通道空,所有方向键/空格游戏(2048/Tetris/Asteroids)输入死。对齐同仓 host-dev/host.js:427-428 范式挂 window 桥 ev.key。纯增量、零兼容风险(inputBridge _assertType 白名单已含 keydown/keyup)。W-G1 scale-20 两轮对抗诊断实证:失败严格沿键盘 vs 指针分界。属 L0 域冻结契约修复,经创始人授权隔离执行,供 cherry-pick 到 dev/2.0.0。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 10:34:43 -07:00
lili
4836a6f519 feat(wg1-scale20): 20基准放量(14款)+ 三方门验证 + driver库泛化 + 宿主键盘缺口定位
主力批 7/8 真可玩(Opus 对抗审计 0 假绿)、压测 match3 ;失败收敛:3 键盘款(2048/Tetris/Asteroids)挂宿主缺 keydown 桥=唯一真·L0 门面缺口(已 spawn_task 交 L0)、multiball/flappy/愤怒小鸟=driver-coverage(非模型)。spec 预判 CCD/文本HUD/网格/match/手势缺口全推翻(便宜 flash 自带 swept CCD/自写网格文本)。

- driver 库 1→6 型(tap-targets/flap-to-gap/seek-x/tap-pairs/key-cycle/paddle-intercept)+ drag 输入事件 + key() Arrow 修
- M3 视觉 player 当生产过滤器实证(与门 8/9 一致、抓显性空心)→ 门(地板)+M3(主观过滤)+创始人(人锚)三层互补
- 短板量化报告定稿 + 两 skill 沉淀(game-e2e §8 driver库/门承重/键盘缺口 · cheap-model §9 模型能力画像)
- 2 个 ultracode 对抗 workflow(审计10+诊断7 agents)抓 saolei 弱断言、纠 flappy 归因(driver 非模型)、定位宿主键盘根因

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 10:30:06 -07:00
zizi
ff73574538 docs(.agents): 蒸馏 3b-B 派发面 HMAC 服务间签名范式 + 便宜模型过九门=moat真壁垒
- ai-generation-pipeline.md §⓪′:@PermitAll 回调路签名 TODO→3b-B 已补;沉淀 HMAC
  服务间签名范式(对原始字节验签/常数时间比对/一次算定既签既发逐字节对账/两侧密钥一致)
  + 真 worker service.py 服务壳 + e2e 真证结论(P0-P4 安全面+管线闭合·P5 生成质量转 L1)
- cheap-model-game-generation.md §5:生产接线已成(3b-B);e2e 确认点击坑=moat 真壁垒
  (三款真生成全卡九门·渲对点击坏·质量门正确拒发不可玩=系统履职非故障)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 16:24:28 +00:00
zizi
c99014c243 test(aigc-3b-B): 派发面 e2e 真证安全面+全自动管线闭合(HMAC双向),P5 生成质量转 L1
3b-B e2e(mini-desktop 真跑·证据 wg1/gen-worker/evidence-3bB/):

 P0-P4 安全面+全自动管线=真证闭合(铁证 backend-callback-hmac.log + p4*.txt):
- HMAC 双向证:缺签名头→HTTP 401 / 错签(deadbeef≠482147b5)→HTTP 401 / 正签→过门(走到下游"任务不存在"非401)
  =关死 /dify/callback-internal 裸 @PermitAll 缺口
- 全自动派发链真通:执行器认领 taskId→dispatchGeneric 投 §6.1 job→worker 真生成(真烧模型)→
  HMAC 签名回调→验签通过→handleCallback 落库(gen-9303/9304/9305 三轮齐全)

 P5 一句话真生成=未达终局:三款全 nine_gate_failed。但截图(gen-9303-after-play.png)证生成
  真出 on-theme 可渲可动的「点击小怪物」游戏(Score/3s 倒计时/多彩怪物 monsters/targetScore=12),
  仅点击→计分坏(Score 仍 0)→九门确定性地板正确拦截「看着像但玩不了」=质量门正确履职、拒发不可玩。

判:L0 交付(管线+安全+质量门)已完成且证;缺=便宜模型把「点击命中→计分」写对=L1 生成域
  (prompt 点击坑+模型档+player/calibration,run_studio 自修 max_repairs 未救回)→转 L1 v3 迭代。

附带:serve-and-play.sh 跨平台 Chrome 探测(CHROME_BIN 覆盖>Linux /usr/bin>macOS>PATH 兜底,
  Linux 在前因 mini-desktop x86 是权威 e2e 机);p3bB_*.sql 发布四态/翻 feed 桩。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 16:20:28 +00:00
zizi
d59093f84c feat(aigc-3b-B): 派发面真 worker 服务壳 + HMAC 服务间签名(关 @PermitAll 裸缺口)
P3 W-G1 派发面 3b-B:把 3b-A 的 stub worker 升级为真生成 worker 服务壳,
并补 HMAC-SHA256 服务间签名关掉 /dify/callback-internal 的裸 @PermitAll 安全缺口。

后端安全面(评审验证):
- CallbackSignatureVerifier(新):HMAC-SHA256 对回调原始字节验签,MessageDigest.isEqual
  常数时间比对(抗时序),JDK 原生零新依赖,空密钥=回退 3b-A 仅内网兜底(灰度/回滚兼容)
- AigcExecutorProperties:加 callbackSecret 字段(来源 aigc.executor.callback-secret)
- AigcExecutorConfiguration:注册 Verifier @Bean(随 executor.enabled 装配)
- AdminAigcTaskController.difyCallbackInternal:接 @RequestBody String rawBody 先 HMAC 验签
  (错签真 HTTP 401),再用同字节反序列化为 VO,补 traceId/status 非空(绕 @Valid 手动校验);
  系统身份 id=0 注入 + finally clearContext 保留(部署窗口#3 同根因)
- application-staging.yaml:加 callback-secret 占位符 + worker-url 指真 worker :9401

worker 服务壳(语法+契约对账验证):
- wg1/gen-worker/worker/service.py(新):http.server 服务壳包 L2 run_studio
  (design 展开一句话→自产 gatespec→九门真玩),run.py/agent_loop 逐行不改;
  POST /generate 收 §6.1 job 立即回 202→后台串行真生成→读 bundle.iife.js→
  HMAC 签名(逐字节对齐 Java 验签:json.dumps ensure_ascii=False 一次算定既签既发)→
  POST 回调入参驱动落包入 feed

契约对账:执行器 dispatchGeneric job 含 brief/gameId/traceId/templateId ↔ service.py 读取一致;
HMAC 两侧密钥(CALLBACK_SECRET/AIGC_CALLBACK_SECRET)须逐字节一致。
e2e(worker 起+HMAC双向证+一句话真生成入feed真玩)待 mini-desktop 跑。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 15:03:53 +00:00
zizi
ce9085df6b feat(runner-v2): P3 3a+3b-A 派发面 plumbing——便宜模型生成游戏经后端 dispatch 自动入 feed 真玩(零回归验)
3a canary:pong 真 bundle→buildGamePackage→发布→feed 引擎真渲真玩(gameId 9301,brick-2 真值通路 mvn 13/13 验)。3b-A 派发面:执行器对 generic dispatch 外置 worker→worker 回调→buildGamePackage→feed,stub worker e2e 实证(任务129→版本93111→gameId 9302 引擎真渲 CDP 11/11)。

改动:① 点亮 AigcTemplateConstants(List.of(generic))+PromptResourceLoader ② 派发面 AigcGenerateExecutor(dispatchGeneric 分支:仅 dispatchTemplateId=generic 走、其余进程内 LLM 旧路逐行不变=零回归)+WorkerDispatchClient+AigcExecutorProperties/Configuration ③ 内网回调 AdminAigcTaskController @PermitAll /dify/callback-internal(注入系统身份解 updater-null=部署窗口#3 同根因复发,镜像 executeWithSystemIdentity)④ stub worker scripts/wg1_stub_worker.py + 灌库/发布桩 p3_*/p3b_* + config worker-url ⑤ 单测 +3 派发面用例(dispatch/失败/零回归 clicker 不 dispatch)⑥ 蒸馏 ai-generation-pipeline.md §⓪′ 派发面范式+2 红线。

零回归硬约束:AigcGenerateExecutorTest 20/0/0、AigcTaskServiceImplTest 9/0/0,clicker 仍进程内(dispatchSender 零交互)。主笔亲核 gating diff(:342-344 仅 generic)+肉眼复核 feed 真玩截图。🔴 安全红线(留 3b-B):/dify/callback-internal 跳 RBAC 仅恃内网兜底,真 worker/外部接入前必补 HMAC/mTLS 服务间签名。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 14:19:25 +00:00
zizi
d79f2c37d5 docs(wg1): L1 newer 蒸馏增补(reframe→knowledge / design-agent gatespec)+ AGENTS.md 补登记 + staging-ops 四机口径
① tech-decisions §4.1 生产质量三层 reframe(确定性门=地板/便宜player=主观层有天花板须人锚/创始人抽检不可替代;无Claude在生产环;上下文杠杆 -50%/-80%、player MAE 1.25→0.75)② cheap-model §7 design-agent 自产 gatespec(roles.DESIGN_SYSTEM 产机器可读 gatespec→studio._extract_gatespec 合入;ballPath .y→.x 坑+归一兜底)③ game-e2e-cdp-harness §7 gatespec 交叉链 ④ AGENTS.md §5 补登记 L1 漏注册的 cheap-model-game-generation.md ⑤ staging-ops 四机分工(创始人编辑)。出处 a205929/405394d/WG1 评估门 review §8。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 13:06:01 +00:00
zizi
7a3eb679b7 Merge wg1/gen-worker: L1 生成 worker 收口——HJ-GEN-001 成立(便宜模型产可玩轻游戏·九门 harness 兜底)+ 三层生产 reframe(创始人亲玩驱动) 2026-06-14 12:47:14 +00:00
zizi
e6dbc3bb5a feat(runner-v2): P3 L0 brick-2 后端 engineBundle 真值通路+gameConfig 占位+prompt registry 脚手架(additive·未点亮)
① DifyCallbackReqVO 加 engineBundle additive 字段(@Data 自动访问器)② DifyCallbackTxService.resolveEngineBundleText 真值切换(:398 return reqVO.getEngineBundle())③ validateSucceededPayload gameConfig 占位=逻辑零改(既有非空校验已满足 meta 占位{templateId,title,theme,engineDriven},仅补注释)④ prompt registry:generic-coder.md stub + generic.schema.json(合规落 contracts/templates)+ registry.yaml 条目 + eval 目录。未点亮 generic 路(SUPPORTED_TEMPLATE_IDS 仍 List.of()、TEMPLATE_RESOURCES 无 generic)→ 现状生成路径零变。本地验:yaml/json parse + Lombok 访问器确认;**full mvn 编译验留 L0 整合步(派发面)一起做**。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 12:47:14 +00:00
lili
405394d451 feat(wg1-gen): gate-H 推广 = design agent 自产 gate-spec + reframe 决策锁定
P1(gate-H 推广多游戏):确定性门从手写 brief 升级为 design agent 自产,适用任意游戏。
- roles.py:DESIGN_SYSTEM 末尾产机器可读 gatespec 块(exportState/driver/controlCheck/
  assertAfterPlay/expectLatch);ballPath 明确为水平 x。
- studio.py:_extract_gatespec 抽取(json_repair 兜)+ 合入 play_spec + 安全归一
  (paddle-intercept 的 ballPath .y→.x 兜底);结果记 gatespec。
- 实证:flash design agent 对 breakout 产出结构合法 gate-spec,studio 抽取合入成功
  (唯一内容误差 ball.y 已由 prompt + 归一双修)。

reframe 锁定(WG1 review §8,创始人亲玩校准后):确定性 gate-H = 可玩性真值/地板;
player = 主观层(消费 gate-H、判不出手感、须人锚校准);创始人/人锚不可替代;
生产三层 = 确定性门 + 便宜 player + 创始人抽检(无 Claude)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 05:16:04 -07:00
lili
c5df28f2e2 Merge remote-tracking branch 'origin/dev/2.0.0' into wg1/gen-worker 2026-06-14 05:08:59 -07:00
lili
a205929f15 feat(wg1-gen): L1 对齐官方 latch 壳 + 确定性手感门 + player 校准(founder 锚揭天花板)
W-G1 生成主线 L1 worker 本轮收口(lane wg1/gen-worker;便宜模型 + harness 门兜底,HJ-GEN-001):

机制/契约
- 可测性红线 + P0 latch 终态:生成工厂导出 _forensicsView().state().phase
  (booting|playing|gameover,进 gameover 恒驻留、禁自动重开),对齐官方 P3 契约;
  flash 实测能遵此契约(v4/v5 latch 驻留 ✓)。
- 套官方 generic 壳:worker 产 generated-factory.js → entry-bundle 用 buildGenericHostConfig
  装配(=官方 entry-generic.js 的取证超集,多透传 recHook 供 F 门)→ esbuild __GameBundle。

真玩门(七门→九门)
- 门 H 机制+latch:assertAfterPlay 进展断言(剩余↓ 等,证非空心) + expectLatch 真玩到
  gameover 且驻留。
- 门 I 控制手感:controlCheck 连点验控制体平滑逼近(逮"一格一跳"/卡死)。
- 适配性真玩 driver:读 state 实体位置自动接球,解"盲打固定坐标打不动技巧游戏"的
  H 假阴性(创始人亲玩 + v4/v5 regen 双重实证)。

质量评估(player 校准)
- studio(design/code/fix/player panel on AgentScope 2.0.1) + calibrate.py 校准 harness。
- 创始人亲玩锚揭结构性天花板:便宜 player(静态截图+数据)判不出物理/碰撞/控制手感
  (把碰撞有问题的 pro 高估为最佳);gate-H 盲打会假阴性;founder/人锚不可替代。
  "上下文是杠杆"实证:接地使成本 −50%、修复轮次 −80%;rubric 锚定使 player MAE 1.25→0.75。

含从 dev/2.0.0 @3108009 拉入的官方 P3 通用装载壳(_generic/ + generic-host-config.js + 双 spec)
作 L1 套壳靶(为 lane 自洽,内容与 dev/2.0.0 一致,后续 merge 自去重)。

未提交:AGENTS.md/.gitignore 的 localagents 改动(非本人);生成产物游戏目录(构建 artifact)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 04:58:25 -07:00
zizi
3108009500 feat(runner-v2): P3 L0 通用装载壳——L1 生成 worker 的产出靶载体(node 5 门验过)
P3 第一块基石:把 wanglanmei-ref/entry-bundle.js 的「studio-consumable 引擎包入口」泛化为「任意生成游戏」通用壳——L1 worker 只写 generated-factory.js(一个 GameHostFactory),套本壳 esbuild 打 __GameBundle bundle 即得 studio 可消费引擎包,避免 20 个 prompt 各造一遍 7 插件 wiring。

新增(零改既有契约):① src/host/generic-host-config.js=buildGenericHostConfig(标准 7 能力插件集+六锚偏序+390×844 视口+wiring,零wanglanmei专属);② games/_generic/entry-generic.js=通用入口壳(动态 import 引擎 Option C node-safe 与 entry-bundle 同款;调用形 {canvas,seed} 逐字对齐 inject.ts:248;暴露 window.__GameBundle.{GameHostFactory,bootGameHost,default});③ games/_generic/generated-factory.js=占位 stub(L1 出码替换靶)+ P0 latch 终态范本(到 TARGET 置 gameover 驻留不可逆,_forensicsView().state().phase 暴露给 watchGameEnd);④ test/generic-shell.test.mjs=node 侧守门零依赖。

5 门验过(6c6g node,主笔亲跑复核):①esbuild iife __GameBundle.bootGameHost=function ②import-safe(node-load window 零触)③回归 src 161/161+games 57/57 ④B1 raw 203.8KB/gz 69KB ✔ ⑤占位工厂经受控面 init→tap→latch gameover 驻留。dist/ 已 gitignore 不入库。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 10:40:35 +00:00
zizi
dd4d883bbe docs(runner-v2): P3/W-G1 生成主线双 spec 定稿——双 review 轮全过(工作流 opus 门 + opus 外审)
P3 = 便宜模型 agent 在插件库上写 GameHostFactory → __GameBundle bundle → buildGamePackage 入 feed 真玩(范式从 M-b「填参出 GameConfig JSON」切到「agent 写码出 bundle」,HJ-GEN-001 终裁)。

两轮独立对抗复审(codex 那轮卡死已弃,改 opus 外审):第一轮工作流 opus 门逮 3 shouldFix(worker↔Java 派发孤儿/体积门缺失/套壳复杂度低估)+3 nit;第二轮 opus 外审逮 3 shouldFix(game_end 主动 emit 半假门/§6.5 controller 误判/gameConfig required 冲突)+2 nit;全修,0 mustFix、无 redesign。主笔逐条对源码复证 + 亲验 P0 的 game_end 重写。

关键裁决:game_end 零改 game-host.d.ts(游戏无 emit 通道 GameInstance:42-48,改「生成约束=游戏 latch 终态(驻留)+宿主轮询桩保留」,否决 additive 扩契约);L0 派发面复用现存 /dify/callback(AdminAigcTaskController:52);buildGamePackage 真值切换 :387;bundle 路 gameConfig 填最小合法占位(GamePackage required);B1 体积门 gz≤350KB∧raw≤1.5MB。Open items O-P3-1~8 落默认(外审确认),L1 接缝(§6.1)冻结。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 10:24:11 +00:00
lili
6aed7b5e7f docs(wg1-gen): 便宜模型生成 + 七门真玩 harness 沉淀入 .agents/(W-G1)
- 新增 skills/cheap-model-game-generation.md:L1 worker 配方(链路/四模型与成本口径/L1 纪律/坑红线)
- skills/game-e2e-cdp-harness.md 追加 §7:生成游戏七门 + G 门假绿守卫 + CDP 触摸坑
- knowledge/tech-decisions.md 改两处过时事实:DeepSeek 经 new-api 实测可用(原“key 未激活”过时);生成主线回填 L1+3 款冒烟已成立 HJ-GEN-001
- README 索引同步新 skill
- 新增 docs/agent-specs/2026-06-14 bake-off 天花板 + Claude-free 评估门 review 版

注:AGENTS.md(§5 导航行)与 .gitignore 含他人未提交的 localagents 改动,未纳入本提交。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 00:35:01 -07:00
lili
6201f95146 feat(wg1-gen): 便宜模型生成可真玩轻游戏——L1 worker + 七门真玩 harness(HJ-GEN-001 成立)
W-G1 生成核心:brief→便宜模型写 GameHostFactory→esbuild __GameBundle iife→P1 bootGameHost
装载→本机 Chrome+CDP 七门真玩取证;失败回喂错因重试。只消费冻结契约,零改 P1/P2。

实测(deepseek-v4-flash 最便宜档):Pong/Simon/打地鼠 三款【七门全过真玩】,
单款 ¥0.01–0.03(远低于 ¥0.15 L1 闸门)。最优模型:flash 打底 + 难档升 deepseek-v4-pro(Simon 0 重试 ¥0.06)。

关键:实证「能生成代码 ≠ 能玩」——一处 prompt 输入坐标契约写错(误称 x/y∈[0,1],实为逻辑像素)
让生成游戏能编译/渲染/动但点击全失灵;Pong 因自走动画假绿混过、Simon 被正确判否。
为此加装 G 门(确定性 A/B 对照,隔离自走动画假绿)+ 修 prompt 后三款真过。

- harness:games/_wg1-gen/_shared/{entry-bundle 模板,index 模板,play.cdp.cjs 七门,serve-and-play.sh}(复用 ref buildRefHostConfig + browser-evidence.cjs)
- worker:wg1/gen-worker/worker/{_client(代理旁路),prompt(生成上下文包),validate(静态门+node --check),cost(¥折算),run(§3 编排+重试门)}
- golden-path 自检:ref 工厂 5/6(F=0 菜单态正确)+ probe 工厂 7/7 → harness 无假绿
- game-runtime/package.json:加 ws(CDP 驱动 devDep)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-13 22:50:24 -07:00
lili
2e5d0345df spike(agentscope-wg1): W-G1 三闸门验证——AgentScope 2.0.1 实测 verdict=继续
- 闸门①分布式 PASS(带 caveat):RedisMessageBus 跨 2 进程 3 agent 协作实测跑通;
  1.x RpcAgent/to_dist 已删,framework 原生多 worker serving 仍 Beta(#1722/#1868,取证未亲测)
- 闸门②持久化 PASS:AgentState→Redis,os._exit 与真 kill -9 两种硬崩后新进程恢复、记忆 3/3 无损
- 闸门③L1 开销 PASS:最小 Agent vs 裸 openai 本地+24.4ms/输入+11tok(几乎全 system_prompt),§5-⑤ 未被迫触发
- §5 无换轨触发器成立 → 继续 AgentScope,锁 2.0.1
- durable:VERDICT.md(含 §2 控制面↔worker 契约形状)+ artifacts 实测数据
- 关键坑:本机代理未旁路 Tailscale 网关致 SDK 全 502(_common 已修)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-13 20:37:03 -07:00
zizi
b4b84fef36 docs(runner-v2): P2 收口入账总账——引擎游戏真渲入 feed 真玩(真机 6 门)
进度总账增 Runner v2 P2 条目 + 表头:通用宿主泛化、引擎游戏真渲入 feed 真玩,mini-desktop
真机 6 门(对账 5d3f7a8),4 决策落实+对抗复审/真机门逮 4 缺陷全修;诚实 gap=game_end
到结算取证待人工补。P3/W-G1 待续。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-13 20:39:40 +00:00
zizi
5d3f7a87f0 feat(runner-v2): P2 通用宿主泛化落地——引擎游戏真渲入 feed 真玩(mini-desktop 真机门验)
P2 = 把 P1 装载契约从「装载王蓝莓一款」泛化为「装载任意 GamePackage」,经发布主链入 feed、
真人浏览器真玩。4 决策落实(O2(b)纳入 Phase C / DB-manifest 内嵌 / 灌库桩 / __GameBundle)。

三轨实现
- 后端:GamePackage schema 加 engineBundle additive 可选字段;buildGamePackage 加 engineBundle put
  (P3 生成路用,P2 恒 null→put 跳过→字节零变,单测 packageBytesReproducible 证);灌库桩
  p2_seed_engine_bundle.mjs + 四态脚手架 p2_scaffold_4state.sql(W-CLEAN 后重建已发布游戏)
- 运行时:P1 bootRef 泛化为 bootGameHost(opts)(引擎骨架照搬+参数化工厂来源/插件/视口),
  bootRef 退化薄包装;固化 build:ref-bundle 产 dist/ref-bundle.iife.js(--global-name=__GameBundle)
- studio:inject.ts 引擎包分支(pkg.engineBundle? → 内联 script 暴露 window.__GameBundle →
  bootGameHost 挂引擎真渲;否则旧 startRuntime 路保兼容);掏空壳改引擎分支(Phase C);CSP 不放外域

对抗代码复审逮 2 mustFix(主 agent 亲核亲修 + 6c6g 复验)
- 灌库桩读错产物(ref-bundle.js harness vs .iife.js)→ mini-desktop 灌库返工死循环
- 引擎分支漏发 game_start → 会话/play_count 静默吞、门②检不出 → 补发(DB session 行实证已修复)
+2 shouldFix(兜底可观测信号 / 灌库 SQL @pj 防撞 max_allowed_packet)
+ 真机门逮 2 环境缺陷已修(seed charset=utf8mb4 防双编码断 checksum 链 / 四态脚手架补 W-CLEAN 空库)

mini-desktop 真机门 6 门(逐门实数,主 agent 肉眼复核证据)
①build:ref-bundle 265374B/__GameBundle 真入包 ②Java 编译过+字节复现单测 ③studio staging 重建消 mock
④灌库 status=1∧checksum 64hex∧engineBundle 键齐∧manifest sha256 一致 ⑤真人 feed 点卡→引擎真渲
暖阳小卖部(warm=1246073px)非「重构中」+game_loaded+game_start+防 demo 三锚+console 零错+DB session 行
⑥回滚:无 engineBundle→demo 壳/错误态,向后兼容未破。证据 game-studio/evidence/p2-feed/

诚实 gap:game_end(到结算)未在自动化窗口内达成=ref gameover 需分钟级真玩+srcdoc 坐标盲点的取证局限,
非引擎/渲染能力缺陷(机制已通,留人工真玩到打烊补全)。受控面 6 项+game-host.d.ts 零改。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-13 20:36:32 +00:00
zizi
4caaea8aab docs(runner-v2): P2 双 spec 定稿——通用宿主泛化(对抗复审4 mustFix全纳+4阻断项拍定)
P2 = 把 P1 装载契约从「装载王蓝莓一款」泛化为「装载任意 GamePackage」入 feed 真玩。
4 路只读侦察→草拟→opus 文档级对抗复审→综合落 review(411行)+execution(303行)。

对抗门逮 4 mustFix 全纳入(主 agent grep 独立复核属实):
- 门②跨层命名:telemetry game_play_end→lifecycle game_end(completed===true)(母spec L66 早警告)
- 体积口径:540KB(开工前 inferred 误值)→实测 259KB raw/88KB gz(SIZES.md:33)
- O2 范围:Phase C 纳入标为扩张请求(待创始人追认)
- ref bundle 产线不在仓:固化补法落实

4 阻断项全拍定→P2 解锁:O2(b)=追认纳入 Phase C(创始人)/O-P2-2=① DB-manifest 内嵌
(创始人·安全红线,bundle 文本进 engineBundle 字段+iframe 内联 script,CSP 不放外域)/
O-P2-1=ref 脚本灌库过渡桩(真产线留 P3)/O-P2-3=globalName __GameBundle。

架构形状:manifest 端点是 application/json 吐不了 .js→bundle 内嵌 GamePackage JSON 的
engineBundle 字段(落既有 package_json LONGTEXT,sha256 照覆盖),后端唯一改动=buildGamePackage
加一行+契约#4 加一可选字段;掏空壳线上零可玩=替换零兼容包袱;受控面6项+game-host.d.ts 零改。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-13 19:14:06 +00:00
zizi
767eaf2e18 docs(runner-v2): P1 收口入账总账——王蓝莓上引擎/装载契约 spike(real 5门过)
进度总账(单一事实源)增 Runner v2 P1 条目 + 表头银行更新:装载契约 game-host.d.ts
spike 实、mini-desktop real 引擎 5 门全过、对账 99b6c82;P2 泛化宿主双 spec 构建中。
配套 W-G1 20 经典轻游戏基准入账(喂 P3)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-13 18:41:09 +00:00
zizi
99b6c82dec feat(runner-v2): P1 王蓝莓上引擎=游戏宿主装载契约 spike 实(mini-desktop real 引擎 5 门全过)
Runner v2 全弧第一相(HJ-RUNNER-ARC-001 / P1):用王蓝莓把"上层游戏宿主装载契约"
从零 spike 到"引擎真掌帧 + 游戏美术与引擎粒子同屏可玩",解锁 P2 泛化 / P3 生成。

契约与共享件
- 新增装载契约 game-runtime/src/core/game-host.d.ts(第9类 additive·暂名):
  GameHostBootContext / GameInstance / GameHostFactory;游戏=纯模块工厂,零引擎 import,
  能力经下层 ctx.getEngine()(受控面 6 项零改),绘制面 render(g) 的 g=引擎 mainContext
- makeEngineCaps 闭包提升为可 import 模块 host-dev/engine-caps.js(createEngineCaps):
  host-dev/ref/未来生成游戏共用;engineMode 短路 / __engineCalls 探针 / null-engine 语义逐行不变

王蓝莓 real 通道(games/wanglanmei-ref)
- 增 ?engine=real:主循环从浏览器 RAF 改挂 engineInit 五回调(掌帧唯一源=引擎);
  游戏美术绘制面从 #game 改引擎 mainContext(同屏合并);bundle 延后到 setupReal 内以
  mainContext 建(getContext2d 闭包快照修);保 ?engine=stub 逐像素确定性回滚
- game-shop.js 抽为独立 GameHostFactory(零引擎 import,P3 生成 agent 可复制范本)
- entry.js 动态 import('littlejsengine')=node-import-safe ∧ esbuild iife 入包两全
- 驱动 e2e-input.cdp.cjs real 改造:禁 stepFrames 手摇(防双掌帧),真触摸+轮询;
  门②同屏像素判据(暖色 warmHits ∧ 引擎粒子 brightHits 同张 #game-engine)

真机验收(mini-desktop real 引擎,5 门)
引擎掌帧 dFrame=31∈[20,45] / 同屏 warmHits=682∧brightHits=13028 同张 #game-engine /
particles.spawnEmitter+synthSfx call-ID 运行时真调引擎 / CDP 517 真触摸跑通整局
(第1天接待18·营收¥79.9·连击9) / console 零错;本机 88 单测全绿(含修复 4 红+补回归)
证据:games/wanglanmei-ref/evidence/p1-real/(e2e-evidence.json pass=true + 5 截图肉眼复核)

诚实 caveat:门② brightHits 在结算屏混入亮 UI,同屏合并由 warmHits(美术落引擎画布)+
call-ID(粒子真调引擎)+ 引擎架构(粒子渲同一 mainContext)三证成立,非阻断。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-13 18:32:50 +00:00
zizi
db9b7b623e docs(t1b-beta): Phase A 引擎真接线收口入账+harness §6 蒸馏
总账加 T1b-β Phase A 行(A0 掌帧+A1-A4 包装+A6 真引擎门 6/6,对账 11c8eaf→3e5cab4)+表头日期;
game-e2e-cdp-harness.md §6 增补门②(runtime call-ID)四坑:rec→__engineCalls 探针形制/引擎渲出色=spec 非旧 sim 青蓝口径(像素门换 maxCh)/音频合成需 unlockAudio/scratch 部署禁裸 ./rsync 吞 monorepo。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-13 13:46:24 +00:00