清理已合入的GameAgent时间上限临时文档
Project CI / AI game creator shell Rust crates (pull_request) Successful in 5m51s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Successful in 6m48s
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Successful in 7m28s
Project CI / Backend tests (pull_request) Successful in 9m21s
Project CI / Frontend tests (pull_request) Successful in 3m41s
Project CI / AI game creator shell web tests (pull_request) Successful in 3m28s
Project CI / Repository checks (pull_request) Successful in 7m2s
Project CI / Native shell tests (pull_request) Successful in 8m45s
Project CI / AI game creator shell Rust lane 1/2 (push) Successful in 7m15s
Project CI / AI game creator shell Rust crates (push) Successful in 4m34s
Project CI / AI game creator shell Rust lane 2/2 (push) Successful in 6m15s
Project CI / Backend tests (push) Successful in 8m36s
Project CI / AI game creator shell web tests (push) Successful in 3m48s
Project CI / Native shell tests (push) Successful in 9m30s
Project CI / Repository checks (push) Successful in 7m41s
Project CI / Frontend tests (push) Successful in 2m57s
Project CI / AI game creator shell Rust crates (pull_request) Successful in 5m51s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Successful in 6m48s
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Successful in 7m28s
Project CI / Backend tests (pull_request) Successful in 9m21s
Project CI / Frontend tests (pull_request) Successful in 3m41s
Project CI / AI game creator shell web tests (pull_request) Successful in 3m28s
Project CI / Repository checks (pull_request) Successful in 7m2s
Project CI / Native shell tests (pull_request) Successful in 8m45s
Project CI / AI game creator shell Rust lane 1/2 (push) Successful in 7m15s
Project CI / AI game creator shell Rust crates (push) Successful in 4m34s
Project CI / AI game creator shell Rust lane 2/2 (push) Successful in 6m15s
Project CI / Backend tests (push) Successful in 8m36s
Project CI / AI game creator shell web tests (push) Successful in 3m48s
Project CI / Native shell tests (push) Successful in 9m30s
Project CI / Repository checks (push) Successful in 7m41s
Project CI / Frontend tests (push) Successful in 2m57s
删除已完成的里程碑规范与实施计划 移除主规范中的临时文档链接,保留现行合同与验证边界
This commit was merged in pull request #657.
This commit is contained in:
@@ -1,107 +0,0 @@
|
||||
# 【实施计划】移除GameAgent宿主运行时间上限
|
||||
|
||||
| 字段 | 值 |
|
||||
| --- | --- |
|
||||
| Milestone | [移除GameAgent宿主运行时间上限](./【里程碑】移除GameAgent宿主运行时间上限-2026-10-06.md) |
|
||||
| Status | implemented,自动化通过,待运行时验收 |
|
||||
| Owner | 当前任务 Agent |
|
||||
| Date | 2026-10-06 |
|
||||
|
||||
## 交付与优先级
|
||||
|
||||
一句话交付:删除 Direct 宿主的累计执行与墙钟限制,完整处理旧配置和账本,证明独立超时与生命周期控制仍有效。
|
||||
|
||||
- 必须项:时间停止逻辑、配置与账本迁移、工具状态投影、定向回归和权威文档同步。
|
||||
- 风险项:计时检查与取消/提交锁耦合、旧终态误恢复、删除 watchdog 时丢失其它收尾职责。
|
||||
- 可选项:无;不借机重构工具调度、Provider 或整套账本。
|
||||
- 时间盒:调研与计划 20 分钟;实现按配置迁移、生命周期、定向验证三个检查点推进,每段约 45 分钟重新核对范围。时间盒仅用于任务管理,不改变产品行为。新增发现只有影响验收标准才扩围。
|
||||
|
||||
## 修改边界与现有依据
|
||||
|
||||
路径除特别注明外均相对 `apps/ai-game-creator-shell/`。
|
||||
|
||||
| 位置 | 计划修改 |
|
||||
| --- | --- |
|
||||
| `src-tauri/src/agent/direct_validation.rs` | 删除两个秒数配置及默认值/正整数检查;保留 maxRuns 校验和用时统计,移除验证回执的 maxExecutionMs |
|
||||
| `src-tauri/src/config.rs`、`src/app/types.ts` | 加载边界迁移并落盘清除旧字段;正式类型和序列化完全删除两个字段,同步配置测试 |
|
||||
| `src-tauri/src/agent/direct_execution.rs` | 删除累计执行/墙钟超限转换与专属周期检查;清理仅为期限存在的判断,保留用时统计、锁、归属、取消和退出证明 |
|
||||
| `src-tauri/src/agent/direct_delivery.rs` | 删除状态回执上限;保留复核次数耗尽、合同封口和已有终态报告优先规则 |
|
||||
| `src-tauri/src/agent/codex_app_server/execution.rs` | 清理宿主预算 tick 调用与失效文案,保留连接死亡、取消、Sealing 及终态收束 watchdog |
|
||||
| `src-tauri/src/agent/claude_code_cli.rs` | 删除“maxTurnSeconds 先兜底”的过期注释,独立超时代码不变 |
|
||||
| `src-tauri/src/agent/direct_execution/tests.rs` 及相关模块现有测试 | 旧越界中断测试改为越界继续;保留真实生命周期、迁移与退出证明回归 |
|
||||
| AGC 主规范、相关提示/工具描述与共享记忆 | 搜索并更新现役时间预算表述,保留其它次数、资源额度与独立超时语义 |
|
||||
|
||||
不修改 Codex timeout 选值函数、Claude 独立超时、单工具/RPC/网络清理期限、Provider maxRetries、外部 API 或数据库。
|
||||
|
||||
## 实现顺序
|
||||
|
||||
1. 先列出所有 tick、期限检查、Exhausted 生产者与消费者。区分时间耗尽、交付复核次数耗尽和历史终态,不能整体删除 Exhausted。核对计时字段在统计/日志中的读取者,保留有现役用途的用时。
|
||||
2. 收敛配置:正式结构只保留 maxRuns;桌面启动与普通读取共用纯数据归一化,在任何严格反序列化前移除退役字段,启动入口通过自身原子写回路径保存,不依赖运行配置目录注册顺序。仅在现有持久化加载边界识别并删除 maxExecutionSeconds/maxTurnSeconds,校验后在 App 管理的配置目录安全写回当前格式,之后正常加载无需转换;仓库旁的共享只读配置仅在加载边界转换,不自动改写源文件。不保留 deprecated 字段、serde 别名、默认值或关闭开关,不开放任意未知字段兼容;写回失败报告真实错误,不标记迁移成功或覆盖其它配置。
|
||||
3. 执行账本升为 `agc-direct-execution.v4`:对已发布 v1/v2/v3 在加载边界白名单移除 maxExecutionMs/maxTurnMs,延续原有必要的旧合同迁移,保留用时与归属事实;校验与取得归属后安全持久化 v4。新 v4 类型无这两个字段且拒绝未知字段;历史终态及报告不改,旧活动操作继续执行原恢复检查。更新早期项目侧账本的提示原因,不将缺少可信归属的历史记录提升为执行权限。迁移只做数据转换,不调用旧预算逻辑;不再支持这些旧升级来源时删除转换与专属测试。
|
||||
4. 删除宿主时间超限终态与仅服务该上限的周期任务/时钟回退期限检查;删除失去职责的 tick 方法及全部调用,不保留返回成功的空壳。逐调用点保留阶段、取消、操作身份与锁内检查,尤其是 begin_paid_dispatch、写入取得锁后和 begin_sealing;不删除整个执行适配器 watchdog。移除仅供预算使用且已无统计消费方的时钟状态与辅助方法。
|
||||
5. 同步验证/交付回执、配置类型和文案;保留 usedExecutionMs 等已用时事实。缓存与历史回执若含旧上限,只作为历史字段读取,不据此重新启用限制或改写证据哈希。
|
||||
6. 完成下列定向验证与生产入口 smoke;记录主规范/里程碑每条证据。实施验收后融合主规范旧时间预算段和相关共享记忆,删除已完成临时计划。
|
||||
|
||||
## 验证设计
|
||||
|
||||
- 使用测试内部受控时钟或宿主账本/操作开始时刻夹具,分别使累计执行超过 900 秒、整轮超过 1800 秒,不实际睡眠 30 分钟、不新增产品测试开关。检查仍为 Working、后续合法 Write/Execute/Paid 准入有效,统计继续累计。
|
||||
- 同时覆盖无合同/有合同、并发操作、内部重试与旧账本恢复。已用时超限本身不阻止运行;带未结算操作的恢复仍按原规则中断。
|
||||
- 对同一长任务注入取消、断连或 Codex 静默超时,验证停止、零新增副作用、进程退出以及真实失败原因;真实付费服务用现有幂等夹具替代,不产生付费调用。
|
||||
- 旧配置及 v1/v2/v3 数据迁移保留原身份、合同、用时与历史失败报告;未知字段、损坏文件、错误回合身份仍失败关闭。Completed/Interrupted/Exhausted 不因升级重开。
|
||||
- 验证迁移安全落盘、重复加载不再转换、写回失败不丢数据;检查旧字段名只留在必要迁移与测试,产品运行时没有旧限制分支、无效开关或空壳方法。删除失效的旧限制专属测试,而非保留跳过的测试。
|
||||
- Codex 15/110/120 分钟选值及事件重置回归、Claude 独立超时回归保持通过;复核次数耗尽及缺少退出证明仍不能交付。
|
||||
|
||||
## 验证命令
|
||||
|
||||
仓库根目录执行,Rust 定向测试统一串行,避免共享运行时夹具冲突:
|
||||
|
||||
```bash
|
||||
cargo test --locked --manifest-path apps/ai-game-creator-shell/src-tauri/Cargo.toml direct_execution -- --test-threads=1
|
||||
cargo test --locked --manifest-path apps/ai-game-creator-shell/src-tauri/Cargo.toml direct_delivery -- --test-threads=1
|
||||
cargo test --locked --manifest-path apps/ai-game-creator-shell/src-tauri/Cargo.toml direct_validation -- --test-threads=1
|
||||
cargo test --locked --manifest-path apps/ai-game-creator-shell/src-tauri/Cargo.toml config:: -- --test-threads=1
|
||||
cargo test --locked --manifest-path apps/ai-game-creator-shell/src-tauri/Cargo.toml codex_app_server -- --test-threads=1
|
||||
cargo test --locked --manifest-path apps/ai-game-creator-shell/src-tauri/Cargo.toml claude_code_cli -- --test-threads=1
|
||||
npm run agc:typecheck
|
||||
npm run check:doc-index
|
||||
npm run check:encoding
|
||||
git diff --check
|
||||
```
|
||||
|
||||
实现时核对每个过滤器实际运行非零测试。GUI/CLI smoke 使用现有协议夹具与可用本地环境,记录平台、入口和终态;Linux 证据不能替代 Windows Job 退出证明。确实缺失的环境列为未验证,不反复扩大测试范围。
|
||||
|
||||
## 风险与回滚点
|
||||
|
||||
- 移除预算后,长任务由用户停止、Provider/工具独立超时及现有交付控制收束;不承诺模型一定在固定总时长内完成。
|
||||
- 迁移不得在旧执行器仍持有归属锁时写入;不允许删除旧账本来消除状态或复核限制。
|
||||
- v4 写入后旧程序不能假定可直接读取。回滚必须先停止活动执行器并保留完整宿主状态;采用向前修复,或在核对身份与操作状态后恢复升级前备份,不能简单降级包体或重开失败回合。
|
||||
- 已实施运行时与数据加载迁移,验证使用隔离临时配置和项目,未迁移真实用户数据。真实模型、手动 GUI 与 Windows 专项结果不由本地协议夹具代替。
|
||||
|
||||
## 实施结果与验收证据(2026-10-06)
|
||||
|
||||
已删除两个正式配置字段、账本上限字段、宿主 250ms 期限 watchdog、tick/tick_locked 及调用、专属墙钟状态和超限报告;执行适配器的取消/断连/交付收束 watchdog 保留。用时统计、交付复核、原回合写入/付费许可和退出证明继续有效。旧字段名仅出现在必要迁移及迁移测试中。
|
||||
|
||||
| 条款 | 验证 | 结果 |
|
||||
| --- | --- | --- |
|
||||
| 超过旧上限仍可执行与正常结束 | `direct_execution` 定向组:无合同完成、并发执行统计、长时间写入/付费后取消、同回合恢复 | 37 passed |
|
||||
| 合同复核与真实证据 | `direct_delivery` 定向组 | 12 passed |
|
||||
| 验证缓存与回执 | `direct_validation` 定向组 | 9 passed |
|
||||
| 配置迁移与恢复 | `config::` 定向组:启动前归一化、迁移落盘、重复读取、只读源、备份恢复、未知字段及写入失败 | 19 passed |
|
||||
| 独立 Codex 超时、关闭与进程退出 | `codex_app_server` 定向组;包括一小时旧回合及累计执行 2000 秒的协议夹具,分别正常回复及合同交付 | 144 passed,4 个既有 ignored |
|
||||
| Claude 独立执行行为 | `claude_code_cli` 定向组 | 13 passed |
|
||||
| 提示词边界与编译 | `--test prompt_source_boundaries --test runtime_prompt_bundle_build` | 6 + 18 passed |
|
||||
| 前端配置类型 | `npm run agc:typecheck` | PASS |
|
||||
| 文档、编码与空白 | `npm run check:doc-index`、`npm run check:encoding`、`git diff --check` | PASS |
|
||||
| 格式 | `cargo fmt --manifest-path apps/ai-game-creator-shell/src-tauri/Cargo.toml -- --check` | PASS |
|
||||
|
||||
Rust 定向命令在上述 manifest 下加 `--bin genarrative-ai-game-creator-shell`,均使用 `--locked` 和 `--test-threads=1`。配置与 Codex 的网络夹具先因沙箱禁止 loopback bind 失败,开放本地网络后通过。首次配置迁移测试对既有原子写入器的备份保留行为作了错误假设,修正为重复读取不写回和实际恢复来源保留检查后通过。
|
||||
|
||||
未验证:真实付费/模型请求、手动 GUI/CLI 操作、Windows Job 专项及真实连续运行超过 30 分钟。长时间边界通过修改测试私有账本与操作开始时刻验证,无产品测试开关。Codex 的 4 个既有 ignored 涉及真实捆绑目录、OAuth、子进程辅助夹具与需要认证的模型 smoke;不算新增通过证据。旧记录迁移由数据加载触发,本次只操作临时测试数据。
|
||||
|
||||
主规范与共享决策已同步;当前只有这一个里程碑,不推进其它工作。运行时验收后删除临时里程碑与实施计划,持久验证边界保留在主规范。
|
||||
|
||||
## 评审修复:桌面启动配置迁移顺序
|
||||
|
||||
- 启动的 agent-mode 迁移原先直接严格解析旧配置,先于普通读取的字段移除,导致 AppData 中仍有时间字段时启动失败。启动与普通读取现共用纯归一化函数;启动将字段移除计入自身 changed,沿原安全写回路径保存,无须提前注册全局目录。
|
||||
- 新回归在配置测试锁下清空运行配置目录,覆盖主配置与本地覆盖、单项与双项退役字段、重复启动及非法字段拒绝不覆盖。修复前实测出现 `unknown field maxExecutionSeconds`;修复后配置组 19 项通过。
|
||||
- 浏览器试玩描述改为共享操作归属,旧 attempt 只描述客户端执行序号;共享决策与 Claude 超时排障说明同步到已移除宿主时间上限的现状。
|
||||
@@ -1,43 +0,0 @@
|
||||
# 【里程碑】移除GameAgent宿主运行时间上限
|
||||
|
||||
| 字段 | 值 |
|
||||
| --- | --- |
|
||||
| Version | 1.1 |
|
||||
| Status | implemented,自动化通过,待运行时验收 |
|
||||
| Date | 2026-10-06 |
|
||||
| Parent Spec | [AGC 实施计划:宿主运行时间上限移除](../../technical/【技术方案】AI游戏创作智能体App实施计划-2026-06-24.md#direct-宿主运行时间上限移除2026-10-06) |
|
||||
|
||||
## 目标与范围
|
||||
|
||||
移除 GameAgent Direct 回合的累计执行和整轮墙钟上限,使长任务不因这两项宿主预算中断;配置、持久化、状态回执与恢复语义保持一致。
|
||||
|
||||
采用一个里程碑完整交付,避免仅删除计时判断却遗留生效配置、旧账本恢复阻断或误导回执。
|
||||
|
||||
## 不在范围内
|
||||
|
||||
Codex 15/110 分钟静默与 120 分钟硬上限、Claude 静默与 45 分钟硬上限、单工具及清理超时、交付复核次数、视觉/玩法验收规则、权限、并发和资源幂等均保持现状。不实现无限重试或已结束回合自动恢复。
|
||||
|
||||
## 依赖与前置条件
|
||||
|
||||
- 主规范及本里程碑完成范围、失败语义、兼容与验收评审后才进入代码实现。
|
||||
- 旧配置与宿主账本只通过加载边界的最小数据迁移进入当前格式,不保留旧运行时或永久兼容层;必须提供迁移证据与退役条件。
|
||||
- 不依赖外部服务或数据库迁移;Provider 与目标平台可用性影响 smoke 证据,缺失时明确记录。
|
||||
|
||||
## 验收标准
|
||||
|
||||
- [x] 无合同及有合同回合越过旧累计 900 秒、墙钟 1800 秒后,均不因时间进入终态;仍可开始合法操作与正常收尾。
|
||||
- [x] 内部重试、交付返修和重启读取旧状态不会恢复旧时间上限;旧终态不重开,遗留操作不自动重放。
|
||||
- [x] 新配置及状态响应无退役上限字段;旧配置可加载并清理退役字段,未知字段保持既有校验。
|
||||
- [x] 两项上限的字段、默认值、执行判断、专属定时任务、空壳方法与失效测试/说明全部删除;旧字段名只允许出现在必要的持久化迁移及其测试中,迁移后不再重复转换。
|
||||
- [x] 已用执行时间和回合耗时保持可观测,不虚构剩余预算。
|
||||
- [x] 用户取消、断连、Provider 超时、并发容量、回合归属、迟到写入和付费提交门禁仍有效,清理完成需要真实退出证明。
|
||||
- [x] 合同完成仍要求可信视觉/玩法证据,复核次数限制不变;无合同回复正常完成。
|
||||
- [x] Codex 与 Claude 的独立超时回归通过;Linux 共享执行适配器的协议夹具通过。
|
||||
- [ ] 真实模型 GUI/CLI smoke、停止按钮操作及 Windows Job 专项验证(当前未执行,不以 Linux 协议夹具替代)。
|
||||
|
||||
## 证据要求
|
||||
|
||||
- 自动化:模拟越界、取消/清理、合同与无合同收尾、旧配置及各受支持账本版本迁移、Provider 超时回归。
|
||||
- 运行时:至少一次本地协议夹具经生产入口完成长时间边界模拟,并验证停止按钮或 CLI 取消;真实模型 smoke 单独记录,不用夹具冒充。
|
||||
- 边界:旧失败报告保留、损坏状态拒绝、未知字段拒绝、未结算操作恢复与远端付费不确定性。
|
||||
- 当前状态:代码已实施;自动化与 Linux 协议夹具结果见实施计划的证据矩阵。保留本文件至运行时验收完成。
|
||||
@@ -173,7 +173,7 @@ UI 编辑器的“分析参考图”步骤、Rust 命令 `suggest_ui_design_sema
|
||||
|
||||
### Direct 宿主运行时间上限移除(2026-10-06)
|
||||
|
||||
本节是 Direct 宿主运行时间与独立 Provider 超时的现行合同。活动文件:[里程碑](../project-memory/plans/【里程碑】移除GameAgent宿主运行时间上限-2026-10-06.md)、[实施计划](../project-memory/plans/【实施计划】移除GameAgent宿主运行时间上限-2026-10-06.md)。
|
||||
本节是 Direct 宿主运行时间与独立 Provider 超时的现行合同。
|
||||
|
||||
- 目标:GameAgent 的 Direct 回合不再因累计工具执行达到 900 秒或回合墙钟达到 1800 秒而停止。删除这两项宿主限制及其可配置入口,不用零值、极大值或新开关模拟移除;无合同、已登记合同、内部返修与重试均遵循同一规则。
|
||||
- 保持独立超时:Codex 无活动 MCP 时的 15 分钟事件静默、存在活动 MCP 时的 110 分钟事件静默、单次模型调用的 120 分钟硬上限,以及它们与 requestTimeoutMs 的取大规则不变;Claude 静默与 45 分钟硬上限、单工具/RPC/网络/进程清理超时不变。完成回合后等待用户不适用这些运行中超时。
|
||||
|
||||
Reference in New Issue
Block a user