补齐Agent会话分叉能力

新增 Session 分叉命令与开发窗口交互
统一 Session 变更和 Runtime 入队线性化锁
补齐持久化、失败回滚、并发边界与前端隔离测试
同步 Runtime 技术方案和项目决策记录
This commit is contained in:
AIGameCreator App
2026-07-14 18:26:29 +08:00
parent fdbaf1be80
commit 55463e7b2b
10 changed files with 1235 additions and 142 deletions
@@ -4543,6 +4543,14 @@
- 接口:Tauri 使用 `steer_game_creator_agent_runtime_task`CLI 使用 `--agent-steer <project> <agentId> <sessionId> <runId> <steerId> --stdin`。开发窗口与项目内 Agent 面板使用同一默认 steer / 显式排队交互,并把 cancelling 显示为“正在取消”。
- 验收:确定性 Rust 已覆盖幂等、冲突、并发 sequence、限制、错误状态、conversation、context/applied 崩溃修复、Provider in-flight 中断、旧写入计划零执行、自动动作 cursor 门禁、确认延后和 finalization 竞态;Runner/CLI 与两个 App 入口定向测试通过。仓库外真实 Provider same-run 专项已 PASS:一次 Provider 中断、原 run 唯一、五阶段 ledger、2 条 user/1 条 assistant、追加正文和已加载密钥零公共泄漏,并实际完成 Runner v1 到 v2 的空闲升级。V1.13 Runner kill 仍需独立复验,不把本次专项结果外推到强杀恢复。
## 2026-07-14 AI 游戏创作 Agent Runtime V1.14 会话分叉
- 决策:开发 Agent 窗口新增 `codex fork` 风格的 Session 分叉。分叉从 active、archived 或 legacy Session 完整复制分叉瞬间已持久化的 conversation,保留 role、content、agentId、messageId 和时间,创建带 `forkedFromSessionId / forkedMessageCount` 的新 active Session;源会话和后续消息互不写入,不复制 task/event、Runtime state、pending action、process session、finalization、run history、私有长期记忆或项目黑板,也不推进项目 revision。
- 决策:Session 新建、切换、归档、分叉与 Runtime 入队 / 启动共用 per-Agent session lane gate。未显式传 `sessionId` 的 Runtime 只能在线性化点内解析 active SessionRuntime 先入队时分叉看到未结束任务并拒绝,分叉先提交时后续 Runtime 读取新 active,不能成功分叉后把任务或用户消息写回旧会话。
- 决策:task journal 对 Session 变更失败关闭,只把 `completed / failed / cancelled` 且 phase 非 `needs-reconciliation` 视为终态;未知、矛盾、损坏和不可读父/子任务日志均阻断。分叉文件先 `create_new` 完整写入,再原子更新 catalog;catalog 写失败删除未登记文件,Session list 获取 catalog lock,不能把提交中的文件提前暴露为恢复会话。
- 接口:Tauri 新增 `fork_game_creator_agent_session(projectPath, agentId, sourceSessionId, title)`;开发 Agent 窗口提供分叉按钮、来源与复制消息数显示,成功后按返回的 activeSessionId 加载历史。运行中或 reconciliation 禁用;归档 Session 保持只读,但 lane 空闲时仍可作为分叉源。
- 验收:Tauri 全量 639 项中 635 通过、4 项真实浏览器 opt-in 用例按设计忽略;分叉定向覆盖空会话、消息与 messageId 精确复制、active / archived / legacy、源与分支隔离、重复分叉、非 active 源任务、委派 child、损坏 journal、catalog 失败清理、Runtime 入队竞态和未提交文件不可见。客户端测试目录 268/268 通过,覆盖精确源 Session、复制历史、新 Session 后续写入、切回源会话隔离、归档源分叉和忙碌禁用;shell typecheck 通过。
## 2026-07-13 普通微信支付 V3 退款使用统一观察事务闭环
- 背景:普通微信支付 V3 的退款申请响应、退款结果回调、主动查单和商户平台手工退款发现可能重复、乱序或只出现其中一种;原充值订单只有单一终态,无法表达多次部分退款、权益回收欠款和会员人工处理。