简化 Direct 交付合同并延后自动验收
Project CI / AI game creator shell Rust crates (pull_request) Successful in 3m10s
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Failing after 4m34s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Successful in 5m11s
Project CI / Backend tests (pull_request) Successful in 7m18s
Project CI / Frontend tests (pull_request) Successful in 3m19s
Project CI / AI game creator shell web tests (pull_request) Successful in 3m11s
Project CI / Native shell tests (pull_request) Successful in 7m22s
Project CI / Repository checks (pull_request) Successful in 6m45s
Project CI / AI game creator shell Rust crates (pull_request) Successful in 3m10s
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Failing after 4m34s
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Successful in 5m11s
Project CI / Backend tests (pull_request) Successful in 7m18s
Project CI / Frontend tests (pull_request) Successful in 3m19s
Project CI / AI game creator shell web tests (pull_request) Successful in 3m11s
Project CI / Native shell tests (pull_request) Successful in 7m22s
Project CI / Repository checks (pull_request) Successful in 6m45s
移除操作结算与补丁成功后的合同检查,仅在正常响应结束后自动复核 按用户制作和交付游戏的意图提示登记,取消空项目强制合同义务 删除产物与命令验收要求,保留视觉和玩法现有判据及证据校验 升级合同与执行账本格式,保留旧预算和终态并安全处理未完成旧合同 同步运行提示、随包技能、回归测试、主规范与实施验收记录
This commit is contained in:
@@ -120,7 +120,7 @@ UI 编辑器的“分析参考图”步骤、Rust 命令 `suggest_ui_design_sema
|
||||
| 要求 | 必须成立的行为 | 完成证据 |
|
||||
| --- | --- | --- |
|
||||
| 自动预检 | 新建 Web 游戏由实际用户入口和宿主自动执行,不依赖模型主动调用;失败不得启动正式生成或付费素材 | 首页/后端正反用例、真实构建与双端截图 |
|
||||
| 验收与收尾 | 必需范围和验收项在宿主持久化;证据绑定当前输入;全部必需项通过后关闭本轮新的修改/执行/付费扩项并产生交付报告 | 真实工具链状态转移、重启/并发/新增扩项拒绝用例 |
|
||||
| 验收与收尾 | 必需范围和验收项在宿主持久化;证据绑定当前输入;模型正常响应结束后复核,通过后关闭本轮新的修改/执行/付费扩项并产生交付报告 | 真实工具链状态转移、重启/并发/新增扩项拒绝用例 |
|
||||
| 分层验证 | 视觉、定点玩法、项目测试和必要完整闭环按已登记标准执行;不混淆证明范围 | 双端正例与单端失败反例 |
|
||||
| 统一预算 | 内置验证、托管脚本和原生命令执行受同一宿主预算约束;不以命令文本猜测“是不是试玩”,不把每条普通开发命令单独计为一次返修 | 捆绑 app-server 的执行前控制、拒绝无副作用、跨入口/重启/耗尽/超时用例 |
|
||||
| 稳定基线 | 可复用的固定种子跑酷基线,真实短按/长按跳跃、单次收力、滑铲释放及公平越障窗口 | 物理单测、双端真实输入、原案例缺陷参数反例 |
|
||||
@@ -167,45 +167,30 @@ UI 编辑器的“分析参考图”步骤、Rust 命令 `suggest_ui_design_sema
|
||||
- 操作成功、失败或取消后结算占用与用时,返回真实结果,由 Agent 决定后续操作。没有全局 Draining、执行/返修批次计数及对应重试门禁;验证输入变化只使相关证据失效,不使无关工作停顿。不新增租约到期续租、Agent 释放租约或独立后台任务接口。
|
||||
- 保留原时间预算数值与累计口径、并发上限及回合身份。回合关闭、取消或时间耗尽后拒绝新操作,取消自有在途工作并核实本地进程退出;等待资源锁后的写入及每次新增付费提交仍核验原回合权限。操作记录清除不能代替执行结束证明。
|
||||
- 普通工具失败和资源级结果不确定不终止整个回合;资源自身的幂等、operation ID、恢复及对账继续有效,不能因客户端取消而推断远端取消,也不能盲目重复付费。宿主控制状态损坏或无法确认自有执行器退出仍按实际控制失败处理。
|
||||
- 交付复核与操作准入分离。本次仅解除合同存在性的操作门禁;合同何时创建、验收项及视觉/玩法判据在合同工作中另行处理。`validation.maxRuns` 暂保留现有交付复核次数用途,不再用于执行/返修批次;时间配置不变。
|
||||
- 交付复核与操作准入分离。合同由 Agent 按用户制作/交付游戏的意图登记,验收仅在正常响应结束后启动,当前只保留视觉/玩法要求。`validation.maxRuns` 暂保留现有交付复核次数用途,不再用于执行/返修批次;时间配置不变。
|
||||
- 同回合重试或进程重启不刷新预算;仅保留预算、回合归属、必要退出记录和资源自身恢复所需的持久状态,不恢复旧租约为可执行权限。旧版本未结束状态须先确认旧执行器退出,不能通过直接删除账本解除控制。
|
||||
|
||||
验收至少覆盖失败图片与长命令并存时无关写入成功、连续工具失败不触发返修次数限制、所有退出路径释放并发占用、关闭后零新增执行/付费提交、迟到写入被拒绝,以及远端不确定任务不重复提交。自动化证据与平台未验证项记录在关联实施计划中;Linux 进程组清理不冒充 Windows Job 的完整子树退出证明。
|
||||
|
||||
### Direct 合同简化目标(2026-10-04,待实现)
|
||||
|
||||
本节记录已确认的下一步行为,尚未替换下节所述现行实现。范围及验收见[合同简化里程碑](../project-memory/plans/【里程碑】Direct交付合同简化-2026-10-04.md);实现验收后将本节融合回现行合同,清理被替代规则。
|
||||
|
||||
- 合同由 Agent 根据用户要求制作、完成或交付游戏的意图登记。系统提示明确这一条件及同义表达,不把“空项目”“首次输入”“做游戏入口”或可信脚手架当成必须登记合同的依据;宿主不新增关键词匹配或 LLM 意图判定。
|
||||
- 无合同允许普通文件写入、命令、图片生成及验证,也允许正常结束回合;仍执行原权限、时间预算、并发、资源幂等和退出清理。Agent 漏登记不由宿主通过项目状态补成隐含合同或强制登记反馈。
|
||||
- 自动验收仅在模型正常结束本次响应后启动。普通操作结算和补丁成功不启动封口;状态查询只返回评估,不关闭回合。完成响应后的封口、退出证明、最终证据复核和有界返修继续复用现有流程。
|
||||
- 取消、时间耗尽、执行器断连或不可恢复错误仍独立终止;异常停止不能因为当时证据齐备而被改写成交付成功。最终复核只是正常收尾的一部分,不是新增的中途触发器。
|
||||
- 新登记合同只接受现有 visual/gameplay 要求;删除 artifact/command 类型、文件变化验收、命令返回值验收及自动追加的 host-entry/host-build。普通读写、命令、构建和 agc_run_validation 能力及真实错误回执继续保留,不把删除验收项解释为隐藏命令失败。
|
||||
- 本次不改变视觉/玩法判据、固定场景、双端要求、证据来源、指纹及报告/截图摘要校验。新 Web 合同已有的视觉/玩法补充规则仅在 Agent 主动登记后适用,不再产生无合同回合义务;登记返回完整有效要求。是否继续保留这些补充规则留待下一轮讨论。
|
||||
- 合同仍为单回合、非空、有界、冻结后同参幂等;不新增空合同成功、合同类型、后台任务或续约机制。新消息建立新回合,不继承上一轮合同义务。
|
||||
- 持久化格式变更采用白名单版本迁移,保留预算、旧终态和历史证据。含旧版合同的未结束回合保留为未完成并提示在新用户回合继续,不通过删去旧要求直接判为完成;未登记合同的旧账本移除强制登记标记后仍按原预算、活动操作与退出证明恢复规则处理。
|
||||
- 验收必须覆盖:证据齐备后仍能完成后续操作与最终响应、空项目只生图/不操作可结束、无合同操作、正常收尾与异常终止分离、退役类型拒绝、旧账本恢复及视觉/玩法原判据不变。
|
||||
|
||||
### 宿主验收与执行许可合同
|
||||
|
||||
- 正式 GUI 和 CLI 的共同 Direct 回合入口建立宿主控制状态,绑定 canonical 项目路径、稳定 clientTurnId 和原始用户输入摘要;宿主私有目录保存权威账本并独占该回合,项目 `.agent` 仅允许保存展示副本。配置或项目侧文件被改写、工具切换、Provider 重试和进程重启不得刷新同一回合的预算。
|
||||
- Direct 回合集成测试也按生产入口计算原始用户输入的 SHA-256 十六进制摘要(64 字符),不能用请求名称替代。用户回显过滤回归继续覆盖实时消息去重、回合起止身份关联及历史落盘过滤。
|
||||
- 直接启动 Direct 工具桥的图片生成通知测试,须复用真实宿主执行会话夹具,再发起工具请求;继续验证资源提交后发出 manifest 失效通知,以及空提示词被参数校验拒绝且不发通知,不绕过执行许可门禁。
|
||||
- 交付合同不参与普通工具准入。模型通过结构化工具登记本轮游戏交付的必需范围与验收项;合同非空、有界且只冻结一次。模型只能声明要求,不能提交“通过”作为证据。后续扩项留到新的用户回合。
|
||||
- 明确新 Web 创建由宿主可信脚手架凭证及尚未交付的宿主记录判定,CLI 同样据此判定,不从提示文本猜测;这种回合即使模型没有调用工具或没有登记合同,也不得按普通聊天宣布交付。已有项目未激活合同时可以正常结束用户回合;存在执行记录时仍须核对执行器清理,不生成游戏交付证明。合同触发方式与验收类型调整另行实施。
|
||||
- 验收项为明确类型的产物、构建/测试命令、双端视觉或指定固定场景的双端玩法。可信新 Web 游戏由宿主补充构建、双端视觉和玩法底线,不能由模型声明“已有项目”降低。已有项目按冻结的变更范围选择层级;平台美术只在用户目标要求时成为必需项。
|
||||
- 同一份双端玩法证据可同时满足视觉项,避免重复浏览器运行。构建证据分别绑定源码输入摘要与输出摘要,正常生成 dist 不算源码漂移;浏览器证据绑定构建后的实际运行输入。只有宿主验证完成产生的结构化结果和证据文件摘要能满足合同,项目内自行写出的验证 JSON 无效。
|
||||
- 产物项的初始摘要由宿主冻结,模型不能提供或在重放时重算。仅登记已经存在的文件不能立即交付:产物必须实际变化/新出现,或有当前指纹的宿主可信验证证据;原生修改和工具修改遵守相同判据。
|
||||
- 当用户要求制作、完成或交付游戏时,由 Agent 理解意图并登记合同。空项目、首次输入、创建入口和可信脚手架不产生宿主强制登记义务;宿主不做关键词或 LLM 意图分类。无合同回合可以正常写入、执行、生成和验证,也可在必要清理后结束,不触发缺合同返修或生成游戏交付证明。系统提示、工具描述及随包技能遵循同一条件。
|
||||
- 新合同格式为 `agc-direct-delivery.v2`,只接受非空、有界的 visual/gameplay 要求。artifact/command 类型、初始文件变化摘要及 host-entry/host-build 已删除;普通文件、命令、构建和 agc_run_validation 工具及真实失败回执保留。主动登记新 Web 合同时,宿主沿用首次交付事实补充既有双端视觉/玩法底线并返回完整要求;未登记不补合同。冻结后同参重放复用 newWebGame,不重算范围。视觉/玩法设计本次不改,后续另行讨论。
|
||||
- 同一份双端玩法证据可同时满足视觉项,避免重复浏览器运行。视觉/玩法仍校验双端、固定场景及版本、当前运行指纹、报告与截图摘要;只有宿主真实验证回执有效,项目内自行写出的验证 JSON 无效。删除 artifact 要求不删除浏览器证据文件的防篡改校验。
|
||||
- `validation.maxRuns` 保留已配置值,仅用于交付回复复核次数;普通执行成功、失败、取消和验证输入漂移均不消耗该次数。验证证据继续绑定输入,失败或漂移仅使相应证据不能证明交付;Agent 可以继续无关工作。
|
||||
- `validation.maxExecutionSeconds` 默认 900,必须为正整数,是整个 clientTurnId 的累计执行时间上限,同回合重试不清零。并行操作分别计时累加,内置工具不与 app-server 的外层 MCP 事件重复计费。时间耗尽立即拒绝新执行、写入和付费扩项,保留最近证据与未完成项;Provider 的重试次数保持独立。
|
||||
- `validation.maxTurnSeconds` 默认 1800,必须为正整数,是同一宿主回合从开始起的墙钟上限,重启不重置,用于约束模型空转和超出单个工具事件边界的后台会话。墙钟上限与累计执行时间分别记录,任一耗尽都收束自有执行器;不能把模型等待时间报告成工具执行时间。
|
||||
- 捆绑 app-server 的原生命令使用已验证的逐次审批能力;宿主只返回单次接受/拒绝,不允许会话授权或 exec policy 修订。第三方 MCP 必须显式启用逐调用询问,不能依赖不可信 readOnlyHint。询问缺少调用 ID 时,按服务器与回合中的并发组保守管理,不能解析展示文案猜测归属。
|
||||
- 原生、内置与第三方所有入口都经过同一宿主状态;独立工具继续并行,只有身份、回合关闭、收尾与必要资源冲突形成短临界区。能力检测失败不得退回无控制执行。
|
||||
- 上述回合控制适用于 DirectProject。独立客户端 HTTP MCP 显式使用 ExternalClient 来源,保持其原有权限、幂等和浏览器能力,不借用当前项目另一条 Direct 回合的预算或可信证据;新交付合同与托管验证命令工具要求 Direct 会话。服务端 external_mcp 不变。
|
||||
- 必需证据齐备后,宿主先进入封口状态,拒绝新副作用,再确认在途归零、收束模型执行器并取得进程退出证明,最后重新核对源码、产物和证据摘要;核验成功原子进入 completed 并产出宿主报告。不能先写 completed 再尝试停止后台进程。宿主主动结束模型回合属于交付终态,不触发普通错误反馈或重试。未达标不得用模型最终回复替代验收。
|
||||
- 自动交付验收只在模型正常结束本次响应后启动;操作结算、AGC 补丁成功、登记与状态查询都不触发封口。正常完成后证据齐备则进入 Sealing,拒绝新副作用,确认在途归零和执行器退出,再复核运行输入及证据,成功才进入 Completed 并返回宿主报告。未达标仍在原预算与复核次数内反馈修复;取消、耗尽、断连等异常终止保持其原因,不能因证据齐备改成成功。
|
||||
- Windows app-server 在任何模型工具执行前绑定不可脱离的自有 Job,超时/取消/断连时验证整个 Job 已退出。其它平台继续保留受控进程组;未取得完整子树退出证据时按不确定状态报告,不宣称全部后台执行已停止。已受理的远端付费任务保留原不确定围栏,断连不构成自动重放授权。
|
||||
- 付费许可始终绑定原回合和原操作,不能在容量或同动作锁排队结束后借用新回合。排队可取消,每次新 POST 前与封口共用宿主状态短锁,核对原许可、期限与阶段并持久化提交边界;封口、终止或耗尽后不得新增提交。已经越过提交边界的请求不丢弃,其 operation ID 和不确定状态继续持久化并允许原 GET 对账,多阶段生成的下一次 POST 仍须重新核验。ExternalClient 与手工资源操作保持既有语义。
|
||||
- 执行账本使用 `agc-direct-execution.v2`,保留回合预算、归属、活动操作、退出证明及合同证据,不再保存批次计数和整轮验证输入。读取 v1 时只白名单移除退役字段,未知字段仍拒绝;旧 Draining 转为 Interrupted,旧终态不重开,旧未结算操作不复活。更早的项目侧验证账本缺少可信用时/开始时间,仅保留为中断事实,不能授予同回合新预算。
|
||||
- 执行账本使用 `agc-direct-execution.v3`,删除 requiresContract,保留回合预算、归属、活动操作、退出证明及合同证据。读取 v1/v2 只白名单移除退役字段,未知字段仍拒绝;旧终态不重开,含旧合同的非终态保留要求并转为 Interrupted,提示新用户回合继续,不因删除要求宣告成功。旧无合同账本移除强制标记后仍按原预算与活动操作恢复规则处理;更早项目侧验证账本缺少可信时间,不能授予同回合新预算。旧合同终态可查询历史但不再按新标准评估。
|
||||
- 模型一次执行结束时先进入 Closing,关闭新操作和迟到提交,核实自有执行器退出及活动操作归零后才能回到 Working 接受交付反馈;整个用户回合结束后撤销旧许可。Closing 只用于实际关闭,不由普通工具失败触发。普通无合同回合完成不宣称游戏验收通过。
|
||||
- 本地写事务未结算或失败仍需核对时不得封口。与失败写入重叠的旧写入/旧验证不能清除该围栏;只有失败之后新准入的成功修复或可信验证可以恢复验收。普通文件写入与账户/本地资产导入显式携带原写入许可,取得项目锁后再与宿主状态锁共同核验期限并提交短本地事务;等待锁或下载期间终止的请求不得继续落盘,网络等待不持宿主状态锁。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user