WIP: 重构 Direct 交付合同与租约机制 #608

Draft
lhk229 wants to merge 1 commits from contract-lease-refactor into master
Member

当前 Direct 把交付合同作为操作准入条件,并在任意付费/执行失败后进入全局 Draining;一条无关的挂起命令可因此阻断后续代码编辑。本 PR 用于推进 #518、#529 的合同与租约机制重构。

当前仅提交草稿里程碑,运行时代码尚未修改,问题尚未修复。

  • 已确认:普通操作成功或失败后返回真实结果,由 Agent 决定下一步;宿主保留回合活动状态、时间与并发控制,取消全局失败排空及返修批次门禁。
  • 保留既有权限、旧回合写入归属,以及资源操作自身的幂等和不确定结果核对。
  • 待细化:交付合同是否及在哪些产品场景保留、工具与提示词调整、已有配置与账本兼容;实现前同步主规范和单里程碑实现计划。

工作范围:docs/project-memory/plans/【里程碑】Direct合同与租约机制重构-2026-10-03.md。

验证:npm run check:doc-index、npm run check:encoding、git diff --cached --check 通过。本次未运行运行时测试。

关联 #518、#529;当前不关闭问题。

当前 Direct 把交付合同作为操作准入条件,并在任意付费/执行失败后进入全局 Draining;一条无关的挂起命令可因此阻断后续代码编辑。本 PR 用于推进 #518、#529 的合同与租约机制重构。 当前仅提交草稿里程碑,运行时代码尚未修改,问题尚未修复。 - 已确认:普通操作成功或失败后返回真实结果,由 Agent 决定下一步;宿主保留回合活动状态、时间与并发控制,取消全局失败排空及返修批次门禁。 - 保留既有权限、旧回合写入归属,以及资源操作自身的幂等和不确定结果核对。 - 待细化:交付合同是否及在哪些产品场景保留、工具与提示词调整、已有配置与账本兼容;实现前同步主规范和单里程碑实现计划。 工作范围:`docs/project-memory/plans/【里程碑】Direct合同与租约机制重构-2026-10-03.md`。 验证:`npm run check:doc-index`、`npm run check:encoding`、`git diff --cached --check` 通过。本次未运行运行时测试。 关联 #518、#529;当前不关闭问题。
lhk229 added 1 commit 2026-10-03 21:20:59 +08:00
记录 Direct 合同与租约重构方向
Project CI / Native shell tests (pull_request) Has been cancelled
Project CI / Frontend tests (pull_request) Has been cancelled
Project CI / Repository checks (pull_request) Has been cancelled
Project CI / AI game creator shell web tests (pull_request) Has been cancelled
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Has been cancelled
Project CI / AI game creator shell Rust crates (pull_request) Has been cancelled
Project CI / Backend tests (pull_request) Has been cancelled
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Has been cancelled
bee7ffcc07
新增合同与租约重构草稿里程碑,关联 #518 与 #529
明确操作失败不触发全局排空,保留回合生命周期、时间和并发控制
记录合同方案、持久化兼容与后续验收的待定边界
Author
Member

本次讨论关于租约机制的结论,作为后续实现方向:

  1. 操作跟踪不需要同时承担“持久化租约 + 全局排空 + 交付准入”。Agent 发起操作,收到成功或失败结果,然后继续决定下一步;普通工具失败本身不应让整个回合停止工作。
  2. 宿主在开始调用前检查:回合仍活动、时间预算未耗尽、并发槽可用。保留各工具已有的权限及资源约束;不再以交付合同存在性或返修批次作为普通操作准入条件。
  3. 成功、失败或取消后正确释放并发槽,把真实结果交给 Agent。图片生成失败不应因另一条长命令仍在运行而阻断无关代码编辑;不进入全局 Draining,也不因普通失败消耗宿主定义的返修批次。
  4. 回合结束或时间耗尽后拒绝新调用,取消宿主拥有的在途工作并正确回收本地进程。不能仅删除记录就宣称进程退出;旧回合迟到结果不能取得新回合权限继续写入。
  5. 远端付费操作继续使用各自的 operation ID、幂等和结果核对。客户端停止不证明远端任务取消;不确定请求不能因重试或新回合自动重复提交。这是资源操作自身的生命周期约束,不是阻断整轮无关工作的理由。
  6. 不通过增加租约超时、阻塞诊断或“释放租约”工具保留现有全局门禁模型;改造重点是简化运行时控制。

合同方面:已识别 artifact/command 强制验收与 Agent 自身读取文件、判断命令结果的重叠。可选合同曾作为方向讨论,但是否保留新游戏等产品场景的强制交付检查、触发时机和工具形态尚未最终确定,需继续细化,不能把当前草稿视为已完成方案。

以上是已确认方向和明确的未决项;当前 PR 只有范围文档,尚未修改运行时实现。

本次讨论关于租约机制的结论,作为后续实现方向: 1. 操作跟踪不需要同时承担“持久化租约 + 全局排空 + 交付准入”。Agent 发起操作,收到成功或失败结果,然后继续决定下一步;普通工具失败本身不应让整个回合停止工作。 2. 宿主在开始调用前检查:回合仍活动、时间预算未耗尽、并发槽可用。保留各工具已有的权限及资源约束;不再以交付合同存在性或返修批次作为普通操作准入条件。 3. 成功、失败或取消后正确释放并发槽,把真实结果交给 Agent。图片生成失败不应因另一条长命令仍在运行而阻断无关代码编辑;不进入全局 Draining,也不因普通失败消耗宿主定义的返修批次。 4. 回合结束或时间耗尽后拒绝新调用,取消宿主拥有的在途工作并正确回收本地进程。不能仅删除记录就宣称进程退出;旧回合迟到结果不能取得新回合权限继续写入。 5. 远端付费操作继续使用各自的 operation ID、幂等和结果核对。客户端停止不证明远端任务取消;不确定请求不能因重试或新回合自动重复提交。这是资源操作自身的生命周期约束,不是阻断整轮无关工作的理由。 6. 不通过增加租约超时、阻塞诊断或“释放租约”工具保留现有全局门禁模型;改造重点是简化运行时控制。 合同方面:已识别 artifact/command 强制验收与 Agent 自身读取文件、判断命令结果的重叠。可选合同曾作为方向讨论,但是否保留新游戏等产品场景的强制交付检查、触发时机和工具形态尚未最终确定,需继续细化,不能把当前草稿视为已完成方案。 以上是已确认方向和明确的未决项;当前 PR 只有范围文档,尚未修改运行时实现。
Author
Member

This PR shall close #518 #529

This PR shall close #518 #529
Author
Member

合同机制的讨论结论更新:

  1. 移除回合一开始就无条件要求登记交付合同、完成游戏交付的提示与前置要求。不能因为当前目录是尚未交付的 Web 游戏脚手架,就自动要求本次用户消息交付游戏。
  2. 改为告诉 Agent:当用户实际要求“制作游戏 / 完整游戏 / 可运行游戏 / 交付游戏”等目标时,才创建交付合同。这里的例子表达用户意图,不是宿主侧固定关键词匹配表;由 Agent 结合当前用户请求和上下文判断。
  3. “什么也不要做”“只生成一张图片,不制作游戏”等请求不能触发游戏交付义务,也不能因缺少游戏合同或游戏验收结果而被迫继续制作游戏。普通文件编辑、命令和资源操作不再依赖无条件合同准入。
  4. 删除合同中的 artifact 文件验收项与 command 命令返回预期/验收项:Agent 已能读取文件、运行命令并判断结果,不再为这些信息设置额外的强制合同完成门禁。文件读取、构建、测试和命令结果等正常工具能力继续保留。
  5. visual 与 gameplay 两种要求的最终处理暂不决定,后续单独讨论;本条评论不授权按此前建议直接删除或重设计它们。

目标是让合同跟随用户真实的游戏制作/交付请求,而不是由项目初始状态强加任务。此评论记录已确认方向;当前 PR 仍为 WIP,运行时尚未实现这些变更。

合同机制的讨论结论更新: 1. 移除回合一开始就无条件要求登记交付合同、完成游戏交付的提示与前置要求。不能因为当前目录是尚未交付的 Web 游戏脚手架,就自动要求本次用户消息交付游戏。 2. 改为告诉 Agent:当用户实际要求“制作游戏 / 完整游戏 / 可运行游戏 / 交付游戏”等目标时,才创建交付合同。这里的例子表达用户意图,不是宿主侧固定关键词匹配表;由 Agent 结合当前用户请求和上下文判断。 3. “什么也不要做”“只生成一张图片,不制作游戏”等请求不能触发游戏交付义务,也不能因缺少游戏合同或游戏验收结果而被迫继续制作游戏。普通文件编辑、命令和资源操作不再依赖无条件合同准入。 4. 删除合同中的 artifact 文件验收项与 command 命令返回预期/验收项:Agent 已能读取文件、运行命令并判断结果,不再为这些信息设置额外的强制合同完成门禁。文件读取、构建、测试和命令结果等正常工具能力继续保留。 5. visual 与 gameplay 两种要求的最终处理暂不决定,后续单独讨论;本条评论不授权按此前建议直接删除或重设计它们。 目标是让合同跟随用户真实的游戏制作/交付请求,而不是由项目初始状态强加任务。此评论记录已确认方向;当前 PR 仍为 WIP,运行时尚未实现这些变更。
Some checks are pending
Project CI / Native shell tests (pull_request) Has been cancelled
Project CI / Frontend tests (pull_request) Has been cancelled
Project CI / Repository checks (pull_request) Has been cancelled
Project CI / AI game creator shell web tests (pull_request) Has been cancelled
Project CI / AI game creator shell Rust lane 1/2 (pull_request) Has been cancelled
Project CI / AI game creator shell Rust crates (pull_request) Has been cancelled
Project CI / Backend tests (pull_request) Has been cancelled
Project CI / AI game creator shell Rust lane 2/2 (pull_request) Has been cancelled
This pull request is marked as a work in progress.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin contract-lease-refactor:contract-lease-refactor
git checkout contract-lease-refactor
Sign in to join this conversation.