修复AGC无人值守游戏生成阻断
普通Web工作台默认使用单Supervisor自主生成链路 补齐安全默认返工、结构化诊断与同Run恢复 绑定当前revision、入口摘要和双视口试玩完成凭证 增强Runner跨boot单飞恢复与game-chat来源隔离 新增真实Provider验收入口及确定性回归 同步更新技术方案、开发流程和共享决策
This commit is contained in:
@@ -1074,3 +1074,13 @@ game-project/
|
||||
- 所有静态 delegate、ready child 和 isolated child 都只读继承根合同与当前 Acceptance Graph;isolated child 还必须实际收到自己的 `acceptanceCriteria / expectedArtifacts / writeScopes`。继承上下文不扩大工具、目录、写入权限或 expectedArtifacts。专业 Agent 只能报告局部结果、证据和剩余风险,不能修改根合同、根验收图或宣布用户总目标完成。
|
||||
- Acceptance Graph 节点由 Supervisor 针对当前任务动态生成,不来自玩法模板。节点记录 required/optional、依赖、状态、证据引用与摘要;只有同一可信根 Supervisor 能调用 `agent.acceptance_update`,且该动作必须独占一轮。failed 与 not-observed 节点形成下一轮定向返工集合,未提交的 passed 节点保持不变。
|
||||
- 完成门在普通收束、finalization 和 prepared 恢复中统一消费 Acceptance Graph。任一 required 节点为 failed、not-observed 或缺失都会阻止最终回复;工具成功、计划 completed、文件存在、smoke 或 preview 单独通过均不代表用户目标完成。项目 revision 改变后,整张图先进入待 Supervisor 确认状态;Supervisor 只更新它判断为受影响的节点并确认 current revision,未提交的 passed 节点及其证据保持不变。requiredEvidence 必须命中 Runtime 明确允许的持久证据工具集合,拼错、控制面、纯协调工具和依赖动态 catalog 的 MCP 调用不能形成不可完成合同。动作回执记录执行边界的 `projectRevisionBefore / projectRevisionAfter`:非 mutation evidence 的 before、after 都必须等于验收时 current revision;mutation evidence 的 after 必须等于 current revision。旧 revision、跨 revision 只读结果或执行后延迟落账的回执都不能重放为 passed。
|
||||
|
||||
## 2026-08-13 普通 Web 工作台无人值守生成可靠性收口
|
||||
|
||||
- **入口覆盖**:本节取代本文更早“普通 GUI autonomous 继续固定完整 DAG”的现行含义。项目首页进入的普通 Web 工作台必须显式使用 `single-supervisor` 编排,提交映射为 `project-supervisor-game-chat + autonomous-game-build`;持久化 Supervisor 决策前零 child,决策后只启动唯一 `code-prototype` 主 Run,美术仅在该 Run 完成 `asset.list` 并形成可证实缺口后一次委派一个受限 child。独立 game-chat 入口沿用相同规则。显式 `professional-dag` 与 CLI 专业 autonomous 验收继续使用 `project-supervisor-gui|cli + autonomous-game-build` 的原有完整 DAG;Supervisor 调试与 Godot 继续 `project-supervisor-gui + standard`,不得被普通入口默认值误改。
|
||||
- **普通界面**:`single-supervisor` 工作台不展示固定专业 DAG、子 Agent Dock 或“严格审批”,只显示总控对话、生成状态与“自动执行”。这只是产品投影收敛,不删除开发诊断入口,也不放宽权限;项目外写入、任意 shell、发布、凭据、系统设置和未知外部副作用继续失败关闭。
|
||||
- **无人介入语义**:可信 game-chat autonomous 根链路及其绑定 child 不得停在普通 `waiting-for-confirmation` 或 `waiting-for-user-input`。child 的信息不足交付在严格身份校验后转为同一父链可执行的安全默认返工,问题正文与公开问题指纹清除,内部只保留不公开的 SHA-256 幂等 marker;standard、GUI/CLI 调试和非可信绑定继续保留人工澄清。可恢复失败必须回到同一 `code-prototype` Run,不能要求用户发送“继续”。
|
||||
- **验证反馈与完成门**:`game.static_smoke` 先校验 `<script>` 闭合和全部可执行内联 JavaScript 语法,再检查 Canvas、输入、状态、胜负与重开合同。失败回执的公共投影只包含 `commandId/passed/failureCode/check/path=game/index.html`;同一 owner 可额外读取经脱敏、有界的 `diagnostic`,以执行“诊断 → mutation → 当前 revision static smoke → desktop/mobile preview.validate”循环。根 Run 只有在正式 artifact、manifest、当前 revision 静态凭证和双视口试玩一致时才能唯一 completed;同 revision 同失败且无新 mutation 必须命中停滞门,不能无限猜测。
|
||||
- **Runner 接管**:新 boot 取得跨 boot `execution-owner` 后必须在释放 owner-map 锁后幂等触发既有 durable recovery scan。纯 Provider、项目内文件和验证动作按 checkpoint 续跑;结果未知的进程、付费生成或其它外部副作用进入 `needs-reconciliation`,禁止盲目重放。重复 hydration/read 或同 boot claim 不得重复 child、消息、action 或付费请求。
|
||||
- **验收层级**:确定性 loopback E2E 必须覆盖普通入口路由、唯一 `code-prototype`、首次语法 smoke 失败、同 Run 取得结构化诊断并修改、当前 revision 静态与桌面/移动试玩通过、根 Run 唯一 completed、确认/追问为零。该结果只证明 Runtime 控制面;使用真实 Provider 的空项目单输入 smoke 全程无人介入成功后,才能宣称现场目标完成。
|
||||
- **真实 Provider 开发验收入口**:`--game-chat-smoke` 是受限 CLI 标记,只允许与默认 `project-supervisor` 的 `--swarm-chat --autonomous-game-build` 组合,将新根 Run 绑定为 `project-supervisor-game-chat`,不作为产品 UI、公开 API 或通用 source 覆盖能力。现有 playable harness 通过 `npm run ai-game-creator-shell:agent-runtime:supervisor-game-chat-single-main-playable-real-e2e` 显式启动该模式,启动前同时校验 `project-supervisor` 与 `code-prototype` 的 Provider 配置,并在隔离 AppData 中验收唯一单主 child、当前 revision 的 static smoke 及 desktop/mobile 试玩回执。只有显式执行这条真实 E2E 命令才会发起 Provider 请求;普通 self-test 不读取凭据、不调用 Provider。现场 smoke 若在配置门因缺少 API Key 阻断,必须报告 `providerUsed=false`,只能证明入口、验收逻辑与无 Provider 自测已落地,不能宣称真实现场验收完成。
|
||||
|
||||
Reference in New Issue
Block a user