docs(mvp)+chore(.agents): agent 闭环 v1 验收收口——总账/作战清单落账 + 红线与配方蒸馏

- 作战清单: B3/B4/C4 三项收口✅(feed 18款内容池/四链路清册+三修/batch-001 80.0%过线+双锚),
  新增 C5 M-b建设(spec已审定)+C6 prompt v1.0.1(解冻结); 鉴权评审版登记; 下一步刷新
- 总账: M2 两段式①口径达标✅(首次实测80.0%)②M-b待; 波次史新增 agent闭环波(9bf3d54→8cf5918)
- 红线蒸馏: feed/stream size≤30且nextCursor为桩 / manifest scene 显式拼参 /
  可开关组件禁组件扫描(@EnableScheduling全局已开) / ON DUPLICATE 过租户拦截器实证
- 配方蒸馏: ai-generation-pipeline 增⓪现实态节(模板驱动+agent闭环为生产路径,
  批跑前置铁律/回调唯一写入路径/Registry prompt 治理衔接)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
zizi 2026-06-10 01:26:28 +00:00
parent 8cf59188d3
commit c06a5e2ca8
4 changed files with 23 additions and 7 deletions

View File

@ -33,6 +33,10 @@
- 复杂查询走 MyBatis XML,简单 CRUD 用 MyBatis-Plus。
- **JSON 列写入**:映射 MySQL `json` 列的 DO 字段必须存**合法 JSON 文本**——用 `JsonUtils.toJsonString(obj)` 序列化,**严禁 `Map/对象.toString()`**(产出 `{k=v}` 非合法 JSON,MySQL 抛 `Invalid JSON text` 致整批事务回滚)。⚠️ 单测 mock mapper **测不到**此约束,须靠集成测试(Testcontainers)或 staging 实测兜底(B2 实测教训)。
- **CJK 写入连接字符集**:用 mysql 客户端 / `docker exec mysql` 灌含中文的 SQL(种子/修数据)必须带 `--default-character-set=utf8mb4`,否则 UTF-8 字节被按 latin1 解析→双重编码存入 utf8mb4 列→读出/接口返回乱码(HEX 表现为 `C3A5..` 而非 `E5B08F`=「小」)。前端/接口看似乱码 bug,实为灌数环节编码错(B2′ 实测,浏览器渲染才暴露)。
- **feed/stream 消费红线**:参数名是 `size`(单页上限 30,超出 400「单页条数不能超过 30」;传错参数名如 `count` **不报错只回默认 10 条**,极易误判卡数);`nextCursor` 当前为骨架占位(恒空串,FeedServiceImpl TODO),翻页续接未实现——程序化全量核对用 `size=30` 单页或自实现探测翻页(batch-001 postcheck 误熔断实测教训)。
- **runtime manifest 取包场景参数**:`/app-api/runtime/package/{vid}` 与 `.../manifest` 两端点 `scene` 缺省 `play`(仅放行 status=1 已发布包)——**预览未发布包必须显式 `?scene=preview`**,裸 GET 拿到的是错误 envelope(HTTP 200+code 1102001002),宿主/脚本对其算 sha256 必败误判 demo 兜底(部署窗口冒烟⑥实测;后端 manifestUrl 已按请求 scene 拼参 9517f4e)。
- **可开关组件禁组件扫描**:yudao 单体里 MQ 消费者自动配置自带全局 `@EnableScheduling`(无条件装配)——任何「配置开关控制启停」的 `@Scheduled` 组件**必须只经 `@Bean` 方法注册**(配置类上挂 `@ConditionalOnProperty`),类上禁 `@Component/@Service`,否则组件扫描使开关失效、回滚开关形同虚设(M-b spec 核验实证)。
- **ON DUPLICATE KEY UPDATE 与租户拦截器**:原生 `@Insert ... ON DUPLICATE KEY UPDATE 列=列+#{增量}` 经 MyBatis-Plus 租户拦截器(jsqlparser)运行期改写**实证兼容**(staging 断言通过 b87511b);注意 wrapper 式 CAS update 不触发 MP 字段自动填充,时间戳依赖列上 `ON UPDATE CURRENT_TIMESTAMP`。
### 1.3 错误码分配(每模块独占一段,禁止冲突)

View File

@ -4,6 +4,15 @@
> 适用:开发/调试 aigc 模块与其外部 AI 引擎(Dify / OpenGame / ComfyUI)。
> 配套:降级/可靠性红线见 [`../rules/security-and-reliability.md`](../rules/security-and-reliability.md);选型背景见 [`../knowledge/tech-decisions.md`](../knowledge/tech-decisions.md);模块全景见 [`../knowledge/product-and-architecture.md`](../knowledge/product-and-architecture.md);新模块流程见 [`./add-business-module.md`](./add-business-module.md);契约见 [`./contract-first-development.md`](./contract-first-development.md)。
## ⓪ 2026-06-10 现实态(agent 闭环 v1 已验收,本节优先于下文蓝图)
**生产路径已切换为「模板驱动生成 + agent 闭环 QA」**(Dify/OpenGame/ComfyUI 仍未部署,下文蓝图为远期参考):
- **真源与配方**:设计=`docs/agent-specs/2026-06-09-agent化生成QA闭环-{review,execution}.md`(含全部裁决账);M-b 生成下沉=`2026-06-10-Mb生成下沉-execution.md`;编排器/裁决/玩家取证代码=`docs/agent-specs/2026-06-09-agent-loop-v1/orchestrator/`(README 有批跑用法);验收实证=`runs/batch-001/`(accept 80.0%)。
- **LLM 通道**:new-api `http://100.64.0.8:3000` + MiniMax-M2.7 + `response_format=json_object`(key 走 `NEWAPI_KEY` 环境变量不入库;抽检模型走 `NEWAPI_AUDIT_MODEL`)。Prompt 全部走 `contracts/prompts/` Registry(改必升版过四道闸),4 模板 GameConfig schema 在 `contracts/templates/`(真源对齐 gen_spike.py)。
- **批跑前置铁律**:①浏览器侧 frontend 必须 `http://localhost:4173`(crypto.subtle 安全上下文,走 IP 真包也永 demo 兜底)②执行器与批跑互斥(批前关 `aigc.executor.enabled`)③首批前跑一次 `evalflow.py --seed-spike`(幂等)④抽检模型不可用按评审版 R8 降级(同模型异版本 prompt 重裁+告警),分歧>10% 冻结下一批发布开关。
- **回调写链**(真实,9bf3d54):唯一写入路径=`DifyCallbackService.handleCallback`(三表同事务:task/version/runtime_package;putManifest 未命中显式失败;checksum 两段序列化消解自指)——任何新生成来源(M-b 执行器/未来真 Dify)一律复用此语义,禁止旁路。
---
## 目标

View File

@ -32,8 +32,8 @@
- [x] **B1 批次①契约/状态机校正** ✅ **2026-06-09 staging e2e 实证**(submit→人工 APPROVE→项目 PUBLISHED(4)+包 status=1+版本 status=3+feed_rank+feed/stream 读到它;三提交 e670eaf/1740d8c/a707687,mvn+5 模块单测+vue-tsc 全绿,两轮 Codex 评审)(含 6 个开工前置项:`VITE_API_BASE` / mock 门控 / token=test1+tenant-id / 本机 vite dev 连 staging / 契约裁决 / beacon 走 baseURL)。`done=前端真连 staging、发布能进 PUBLISHED、feed 读 rank`
- [x] **B2 批次②最小数据回路** ✅ **§0 验收门三条全过(2026-06-09 staging e2e)**:克隆 9001→9002 两款已发布游戏,A弱互动(q=28)/B强互动(q=88)→事件落库→quality_score→feed_rank.sort_score→**feed 重排(B超A)**→重放同 eventId 不重复计数(真 HTTP+真后端+真库)。**顺修 B1 潜伏 bug**:`props` 落 MySQL `json` 列原用 `Map.toString()` 致 `Invalid JSON text` 整批回滚,改 `JsonUtils.toJsonString`(+回归守卫单测,telemetry 13 测绿)。
- [x] **B2′ 真实可玩 runtime(人可演示半)** ✅ **2026-06-09 浏览器 e2e 实证**(staging + 真无头 Chrome 驱动):feed 真连后端出真标题 → 点卡进试玩 → 自研 Canvas clicker 真玩通关 → `game_play_start/end(completed:true)` 真遥测落 staging → quality 0→60 → **feed 翻转(玩过的 A-小卖部 从第 2 位窜登顶)**。`done=浏览器里玩→feed 真重排 ✓`。**逮修 4 个 curl/单测均未现形的真 bug**(① 标题双编码乱码=灌数 latin1 连接;② feed/play `min-height` 链断塌 0 高不可点;③ demo 兜底被父级误判致命隐藏宿主;④ game_end 漏 `completed` 致 quality 永不涨)——②③④ 已提交 `d279898`,① 为 staging 数据修复。
- [ ] **B3 批次③小卖部皮肤 + ≥10 参数化种子内容**(可降级)。`done=feed 有内容池,不是两款游戏赛马`(🔄 进行中:W2 六款 accepted configs 正种入 staging feed=9003-9008,种完 feed 8 款;后续内容由 C4 agent 闭环批产承接)
- [ ] **B4 其余 4 链路烟测登记**(广告/收益/分享/互动):HTTP 通 + code==0 + 结构符 yaml,标【真实/桩】。`done=缺口登记总账`
- [x] **B3 内容池** ✅ **2026-06-10:feed=18 款真内容池**(8 夹具 + batch-001 金丝雀 10 款,全走 agent 闭环裁决+真发布链;demo http://100.64.0.7:4173)。皮肤项随 M-b② 渲染面波承接。`done=feed 有内容池 ✓`
- [x] **B4 四链路烟测登记** ✅ **2026-06-09 清册落档**(`2026-06-09-B4四链路烟测报告.md`:广告/收益/分享/互动全「部分真实」,file:line 实证)。**顺带打掉数据回路三缺陷**(✅ 2026-06-10 部署实证 b87511b):曝光中性(game_impression 不再清零 quality)+ stat 原子累加(ON DUPLICATE,租户拦截器实证兼容)+ **下架编排**(decision=3 → 项目 4→5 + feed 全分区下线 + 状态机拒重复,金丝雀安全网就位)。遗留缺口(结算 Job 关闭/OG 空串/广告前端断链)登记总账随 M4 真实化。
---
@ -42,14 +42,16 @@
- [x] **C1 Spike 跑测** ✅ **2026-06-09**:直调 new-api(MiniMax-M2.7,未上 Dify) 4 模板×13 创意=52 次 → **结构层 52/52=100%**(JSON+逐字段 Schema 全过,含 2 个故意模糊创意)。产物 `docs/agent-specs/2026-06-09-generation-spike/`(gen_spike.py + spike-eval.csv + spike-summary.md)。**范围诚实**:测的是 prompt→GameConfig 参数层;可运行仅 clicker 真验、可接受待 A4。
- [x] **C2 闸门判定** ✅ **结构层 100%≥80% → 接真实生成可行**;且 LLM 出配置 100% 可靠 → **模板驱动生成(LLM 填参数+固定模板 runtime)= 最优路径**,绕开高风险 LLM 代码生成(OpenGame)。**完整生成成功率仍待**:① 补 dodge/runner/match 模板 runtime(可运行层,clicker 已有)② A4 创始人盲评 spike-eval.csv(可接受层)③ aigc 接 new-api 出 config。
- [x] **C3 agent 化生成 QA 闭环 · 设计+试点**(✅ 2026-06-09,替代 A4):W1 设计稿(三案×三评委 + CEO/Eng 双终审修订 Z1-Z5)+ 创始人四项拍板(机器口径 / staging 全自动 APPROVE / 先 M-b / M2 两段式);W2 clicker 试点 6/6 入池(对抗 pass5/fix1/kill0;MiniMax 实时 0/6 degraded=分类器故障非通道故障,已诚实声明)。产物:`agent化生成QA闭环-review.md` + `generation-spike/{pilot-results.md,accepted-configs.json}`。
- [ ] **C4 agent 闭环 v1 建设波(M-a)**:execution spec 在产(对抗核验中)→ 5 件交付(Registry 3 prompt / agent-loop+4 模板契约 schema / 编排器 / **回调实做内联 PackageFactory+runtime-api 扩落包**(Z1 三表同事务)/ 玩家 CDP 取证)→ 验收=staging 20 创意全自动流完 accept≥80% + 任一 accept 在 feed 真可玩。`done=§5.2 验收过线`;后续已拍板:M-b 生成下沉 > dodge runtime(M-c)。
- [x] **C4 agent 闭环 v1 建设波(M-a)** ✅ **2026-06-10 验收过线**:5 件交付全落(9bf3d54+208a36e+9517f4e)→ **batch-001:20 创意全自动 671s 流完,accept 率 80.0%(16/20,零 infra),双锚复核三锚全立**(9011 真玩→遥测→quality 0→60→feed 第3→第1)。**M2 ①口径达标首次实测达成**(两段式之①;M2 收口仍待 ②M-b)。批中逮修 2 个 P1(postcheck size=50 误熔断→cursor 翻页修复;网关二厂系全废→R8 同模型降级抽检,**分歧 2/4 触发冻结告警→下一批发布开关=冻结,解冻=对抗 prompt v1.0.1+Golden 回归**)。产物:`agent-loop-v1/runs/batch-001/`(报告/账本/补救/抽检全入库 8cf5918)。
- [ ] **C5 M-b 生成下沉**(已拍板第一优先;解 M2 两段式之②):execution spec **已审定**(HJ-AGENT-LOOP-EXEC-002,§16 五项已裁决:T6 模板列表最小实做纳入/存量清理/networknt 依赖/执行器与批跑互斥/classpath 快照)→ 建设波待开工。`done=真实用户 submitGenerate 不再停 queued`
- [ ] **C6 对抗 prompt v1.0.1 升版**(解批跑冻结阀):补「designIntent 禁承诺模板外机制」+「模糊创意题文判定规则」+稳定性提升(批-001 一致率仅 33.3%),走四道闸+Golden 回归。`done=冻结解除,下一批可发布`
---
## 后置(登记 backlog,明确不在本轮)
- community(5 P0) + biz(6 P0) 克隆黄金模板〔biz 若广告/支付卡住,改轻量 lead form 验 B 端现金流〕。
- 真实鉴权/多租户(OAuth2/SMS/RBAC、匿名玩家 token):本轮 mock,至少 1 条负路径,排期下一步。
- 真实鉴权/匿名玩家身份:**评审版已出**(`2026-06-10-真实鉴权与匿名玩家-review.md`,双镜头 12 条意见全修订;含 ~7 项待创始人拍板:登录方式/漏斗激活时机/准入语义/匿名票据机制等)——拍板后排建设(建议 M-b 之后)。**注意其行动项:短信签名报备需即刻进 A1 闸门看板。**
- M4 变现真实化(真实广告联盟 + pay 接线)、OSS 真实存取、MQ 聚合。
---
@ -60,5 +62,5 @@
## 下一步(立即)
- 🧑 **你**:**A1 闸门看板**(ICP/支付/广告/LLM 实名)——日历临界路径,仍未动,每晚一天上线晚一天。
- 🤖 **我**:①核验在飞三路(execution spec / 种子 9003-9008 / B4 烟测)→ ②C4 agent 闭环 v1 建设波(5 件交付)→ ③M-b 生成下沉(已拍板优先于 dodge)。
- 🧑 **你**(三件):① **A1 闸门看板**(ICP/支付/广告/LLM 实名 + **新增:短信签名报备**)——日历临界路径,仍未动;② **修 new-api 网关二厂系通道**(deepseek key 未激活、glm/qwen/kimi token 过期)——下批恢复真·换模型冻结阀;③ 抽空读鉴权评审版拍 7 项(不阻塞 M-b)。
- 🤖 **我**:①**C5 M-b 建设波**(spec 已审定,开工前全文终读)→ ②C6 对抗 prompt v1.0.1(解冻结)→ ③第二批 20 创意(验证冻结阀+稳定性)→ ④鉴权拍板后建设。

View File

@ -95,7 +95,7 @@
- [ ] **ip seam**:按 D5 寄宿 compliance,不独立建模块。
### P0-真实化(决定 M2-M5 能否达成,是 MVP 的真正大头)
- [ ] **aigc:真实生成(M2 攻坚点)**——2026-06-09 创始人拍板**两段式口径**:①成功率口径达标 = agent 闭环编排器代产批 accept 率≥80%(v1 即可测量)②生成链路贯通 = 真实用户 submitGenerate 不再停 queued(M-b 薄轮询执行器);**M2 收口 = ①∧②**。设计已拍板:`docs/agent-specs/2026-06-09-agent化生成QA闭环-review.md`(Dify 暂不部署,回调契约兼容、后接零改)
- [~] **aigc:真实生成(M2 攻坚点)**——两段式口径(创始人拍板):**①成功率口径达标 ✅ 2026-06-10 首次实测 80.0%**(batch-001:20 创意全自动,16 accept/零 infra,双锚复核立;产物 `agent-loop-v1/runs/batch-001/`)②生成链路贯通 = 真实用户 submitGenerate 不再停 queued(**M-b spec 已审定** HJ-AGENT-LOOP-EXEC-002,建设待开工);**M2 收口 = ①∧②,当前 ①成 ②待**。后端落包链已真实(9bf3d54 三表同事务,staging 实证);Dify 暂不部署,回调契约兼容
- [ ] **runtime:真实编译打包**(Canvas Runtime 产物 + GamePackage 真实产出)
- [ ] **OSS:MinIO bucket 级隔离 + 真实存取**(本波跳过,桩)
- [ ] **telemetry:MQ 消费聚合 + quality_score + feed 反哺**(M5 数据回路)
@ -120,6 +120,7 @@
| **Wave2 变现+admin 台** | ad/trade 后端 + game-admin 运营台脊柱 | `43fce85` | 编译+单测 |
| **admin 基线** | game-admin → 稳定 tag v2026.01(vite5) + gitignore 修复 | `fd373db`·`4ba6cbd`·`8901350` | build 绿(mini-desktop) |
| **Wave3** | 双 spec→PhaseA 收口→PhaseB(compliance/studio)→PhaseC 接入→staging 真启动→两预存缺陷修复 | `5be2251`→`8565fa2`(10 提交) | project15+compliance8 单测、单体真启动、admin/app-api 200 |
| **agent 闭环波(M-a)** | 双 spec(评审版拍板+execution 审定)→D1-D5 五件交付→两次部署窗口→**batch-001 验收 80.0% 过线+双锚**→补救(金丝雀10+R8 抽检冻结告警)→数据回路三修+鉴权评审版 | `9bf3d54`→`8cf5918`(5 提交) | mvn 多轮全绿+59 py 单测+§12.3 八连冒烟+批跑 671s 零 infra+三修部署断言 8/8 |
> 各波次详细 spec:`docs/agent-specs/`(review + execution 双 spec)。