完善自主 Swarm 无干预可玩交付
固定首批程序实现与质量只读职责,并在计划执行前阻断质量 Agent 项目写入 要求非只读专业 Agent 完成本人修改和对应 revision 验证后再交付 补齐 Provider 瞬态重试、最终回复和 Swarm CLI 终态收敛 升级 Provider action batch v3 并兼容 v2/v1 持久恢复 扩展确定性与真实外部 Provider 塔防验收、前端状态和项目文档
This commit is contained in:
@@ -5275,3 +5275,10 @@
|
||||
- 决策:`autonomous-game-build` 只允许固定 auto-safe 白名单消除默认确认;其余任何本地或 MCP 动态确认结果统一失败关闭为 `Denied`。批次含拒绝成员时先完整预检并持久化 `aborted`,整批工具保持零执行,再把拒绝 observation 交回同一 Session/run 重新规划。标准 profile 和显式 deny 保持原合同。
|
||||
- 恢复:旧自主 `pending-confirmation` 必须在校验持久 Run Profile、Runtime、Session/run、action identity 和 batch member 后迁移。先原子写 `aborted` batch,再写 `observed-rejected` pending 镜像;两次写入之间退出时由 batch 重建 pending。恢复后的状态和审计使用 `runtime-policy-rejected`,不能误报自动动作已执行或开发者主动拒绝。
|
||||
- 验收:自主构建测试 `20/20`、确认测试 `18/18`、旧等待批次完整恢复、批次零副作用、`cargo check --tests`、Rust 串行全量 `1149 passed / 5 ignored / 0 failed` 均通过。确定性 Runner + Chrome E2E 为 `17/17` Provider lifecycle、revision `0 -> 2`、试玩 `37/37`;独立外部 Provider E2E 为 `62/62`、revision `0 -> 5`、`game/index.html=7816 bytes`、试玩 `37/37`,两轮人工输入、等待态、残留、重复与泄漏均为 `0`。
|
||||
|
||||
## 2026-07-22 自主构建首批职责和专业交付按 durable 合同收束
|
||||
|
||||
- 背景:此前首批只固定 `code-prototype / quality-review` 两个 Agent ID,没有固定两者职责。质量 Agent 可能先写验证脚本推进全局 revision,程序 Agent 的旧写动作随即过期;非只读专业 Agent 也可能在零 mutation 或未验证时仅返回文字完成。父 run 同时看到 repairRequired 与 ready/unobserved receipt 时还可能先发 repair,跳过权威交付收束。
|
||||
- 决策:`autonomous-game-build` initial wave 中,程序任务必须非只读且 `expectedArtifacts` 包含 `game/index.html`;质量任务必须显式只读、不得修改项目且 `expectedArtifacts=[]`。Provider 计划解析、batch prepare 与 durable batch 恢复均重验同一合同;Provider action batch 升级为 v3,仅 v3 应用新职责,升级前 v2 collaboration batch 与 v1 contractless batch 继续按原 fingerprint 和合同恢复。只读 specialist 的计划只允许纯读取与状态观察,任何文件、revision、命令、任务、记忆、黑板、资产或委派副作用都在执行前拒绝,格式修复只保留 `respond_to_user`。非只读 specialist 只有本人 run 已产生 mutation 且对应 revision 验证通过后才能回复;ready 未认领或 claim 未 observed 时只允许先执行 `agent.run_status`。
|
||||
- 语义边界:只读识别接受明确只读审查/验收和不得修改指令,不再把任意“只读”子串视为只读合同。`非只读 / 不要只读 / not read-only` 必须保持可修改;否则模型照抄修复提示中的“非只读实现任务”会永久触发同一格式修复错误。
|
||||
- 验收:阻塞终审修复前 Rust 串行全量为 `1163 passed / 5 ignored / 0 failed`;补入只读写入与 v3/v2/v1 恢复回归后共运行 1169 项并以退出码 `0` 完成,其中 5 项真实浏览器环境用例 ignored。Provider `148/148`、collaboration `142/142`、swarm CLI `37/37`、autonomous `24/24` 和 App Surface `294/294` 通过。当前树确定性 Runner + Chrome 为 `17/17` lifecycle、revision `0 -> 2`、试玩 `37/37`。最新独立真实外部轮次单次输入后立即 EOF,一个原始专业任务失败后由唯一 repair 恢复,父 Supervisor completed,revision `0 -> 6`、`game/index.html=8080 bytes`、真实 Chrome `37/37`、唯一 Supervisor assistant;`88` 个 lifecycle 全部 terminal,`75 completed / 13 failed` 和 `12` 条 durable retry audit 保留真实失败证据并自行恢复,终局人工输入、open lifecycle、sidecar、reconciliation、重复与泄漏均为 `0`,Runner、项目和隔离 AppData 自动清理。
|
||||
|
||||
@@ -3551,3 +3551,12 @@
|
||||
- 处理:最终合并后的本地/MCP policy block 必须再次经过持久 Run Profile gate;自主 profile 的所有剩余确认统一转为 deny,混合批次整体零执行并同 run 重规划。恢复迁移以 aborted batch 为提交点、pending 为镜像,并把自动策略拒绝显式审计为 `runtime-policy-rejected`。
|
||||
- 验证:同时覆盖 auto-safe 白名单、显式 deny、动态确认失败关闭、标准 profile 不变、完整恢复扫描、前缀副作用未发生、Session/run/profile identity 不变和 replacement planning 已发出;最后必须重新运行确定性与外部 Provider 的单输入可玩 E2E。
|
||||
- 关联:`apps/ai-game-creator-shell/src-tauri/src/agent/runtime_tools/policy.rs`、`apps/ai-game-creator-shell/src-tauri/src/agent/runtime_actions/provider_action_batch.rs`、`apps/ai-game-creator-shell/src-tauri/src/agent/runtime_driver/pending_recovery.rs`、`apps/ai-game-creator-shell/src-tauri/src/agent/runtime_driver/pending_execution.rs`。
|
||||
|
||||
## 只读职责不能用无边界关键词子串判定
|
||||
|
||||
- 现象:真实 Provider 已连续返回首批 `code-prototype / quality-review` 委派,但四次格式修复都报“code-prototype 必须是非只读实现任务”;Provider lifecycle 全部正常完成,首批 batch 却始终无法建立,父 run 在 revision 0 失败。
|
||||
- 原因:只读分类器用 `contains("只读")` 判断任务。模型按修复提示把程序任务写成“非只读实现任务”或“不要只读检查”,否定式文本仍命中“只读”子串,因此同一正确修复会被永久拒绝。
|
||||
- 处理:只接受明确的“只读审查 / 只读检查 / 只读验收 / 不得修改项目”等正向合同;判定前剥离 `非只读 / 不要只读 / 不是只读 / non-read-only / not read-only` 等否定式标签。首批角色事实继续以 durable delivery 的 target 与 expectedArtifacts 为准,不能只依赖易漂移的任务文案。文本合同还必须落实到 Provider 计划边界:只读 delivery 只允许纯读取和状态观察,写文件、启动命令、推进 revision、修改任务/记忆/黑板/资产或继续委派必须在任何执行前拒绝,并只允许修复成 `respond_to_user`。
|
||||
- 恢复:给既有持久 batch 增加新职责时必须升级 schema;新 v3 按新合同失败关闭,旧 v2 collaboration batch 与 v1 contractless batch 继续按原 fingerprint 和创建时语义恢复,不能在反序列化时用新规则误杀升级中的无人干预轮次。
|
||||
- 验证:正向只读与否定式可修改分别做定向回归,并额外让只读 quality Agent 尝试 `file.write`,证明目标文件和 revision 均不变且下一请求只广告 `respond_to_user`;同内容 v3 batch 必须失败关闭,v2 必须可恢复。真实外部 E2E 必须证明首批两份委派建立、程序 Agent 实际推进 `game/index.html` revision、质量 Agent mutation 为零、父 run 最终 settled,并保持人工输入和终局残留为零。
|
||||
- 关联:`apps/ai-game-creator-shell/src-tauri/src/agent/runtime_actions/autonomous_policy.rs`、`apps/ai-game-creator-shell/src-tauri/src/agent/runtime_actions/provider_tool_plan.rs`、`apps/ai-game-creator-shell/src-tauri/src/agent/runtime_actions/provider_action_batch.rs`。
|
||||
|
||||
Reference in New Issue
Block a user