AGC 素材导入与资源提交仍使用零等待项目锁,同进程对话写入可使操作失败 #551

Closed
opened 2026-09-30 15:53:41 +08:00 by lhk229 · 0 comments
Member

问题

素材提交入口对短暂的项目写锁竞争直接返回错误,没有复用已有的有界等待。正常对话历史落盘与素材操作并行时,Agent 收到失败并切换方案或重新调用。

现场证据

项目 情绪花灵安抚记-r17,2026-09-30 UTC:

  • 03:49:15,tool-calls.jsonl:55 的 agc_import_account_assets 使用 localPaths 导入四张本地切片,约 1ms 返回失败,imported=[]、revisionAdvanceCount=0;锁身份不可读,文案提示删除挂起/未写完。错误文件 error-1790740155236970300-6.json:4。
  • 04:15:16,:72 抠图请求的错误明确显示持锁方 commandId=conversation.write、ownerIsSelf=true。错误文件 error-1790741722732583300-8.json:4。
  • 04:15:43,:73 同参抠图请求约 1ms 成功,committedProjectRevision=27。只能证明后来恢复,不能据此认定重复付费。

当前代码与已有 Issue 的区别

这是已关闭 #318 的素材入口覆盖缺口:旧项聚焦 agc_write_file;当前新增证据明确落在本地素材导入/资源提交,不重新报告旧写文件症状。也不是 #529 的执行租约 Draining。

验收

  • 同进程 conversation.write 短暂持锁期间,本地导入、账户导入、资源提交可以有界等待后成功。
  • 等待超时给出真实持锁方和明确错误;权限拒绝不误当可等待争用。
  • 并行提交不丢 manifest/revision 更新,不放宽跨进程互斥或简单按相同 pid 豁免。
  • 远端已完成但本地提交争用时,恢复复用原 operation,不新增远端副作用。

核查范围

2026-09-30 对九份项目导出做只读审计,代码基线 3540c5660fd294b70e054810b5384a2855908df5。本 Issue 仅登记问题,尚未实施修复。未重放项目付费操作,不提交原始会话、凭据或本地私密绝对路径。已排除 #529、#525、#518;偶发 Provider/网络错误不作为新增缺陷。

## 问题 素材提交入口对短暂的项目写锁竞争直接返回错误,没有复用已有的有界等待。正常对话历史落盘与素材操作并行时,Agent 收到失败并切换方案或重新调用。 ## 现场证据 项目 `情绪花灵安抚记-r17`,2026-09-30 UTC: - 03:49:15,`tool-calls.jsonl:55` 的 `agc_import_account_assets` 使用 **localPaths** 导入四张本地切片,约 1ms 返回失败,imported=[]、revisionAdvanceCount=0;锁身份不可读,文案提示删除挂起/未写完。错误文件 `error-1790740155236970300-6.json:4`。 - 04:15:16,`:72` 抠图请求的错误明确显示持锁方 `commandId=conversation.write`、`ownerIsSelf=true`。错误文件 `error-1790741722732583300-8.json:4`。 - 04:15:43,`:73` 同参抠图请求约 1ms 成功,committedProjectRevision=27。只能证明后来恢复,不能据此认定重复付费。 ## 当前代码与已有 Issue 的区别 - [`commands.rs:4409`](https://git.genarrative.world/git/GenarrativeAI/Genarrative/src/commit/3540c5660fd294b70e054810b5384a2855908df5/apps/ai-game-creator-shell/src-tauri/src/commands.rs#L4409):现场 localPaths 对应的本地导入提交使用 `acquire_project_write_lock`。 - [`commands.rs:4618`](https://git.genarrative.world/git/GenarrativeAI/Genarrative/src/commit/3540c5660fd294b70e054810b5384a2855908df5/apps/ai-game-creator-shell/src-tauri/src/commands.rs#L4618):账户素材提交也使用同一零等待入口。 - [`project/resource_editor.rs:4305`](https://git.genarrative.world/git/GenarrativeAI/Genarrative/src/commit/3540c5660fd294b70e054810b5384a2855908df5/apps/ai-game-creator-shell/src-tauri/src/project/resource_editor.rs#L4305):资源编辑提交使用该入口。 - [`project/write_lock.rs:772`](https://git.genarrative.world/git/GenarrativeAI/Genarrative/src/commit/3540c5660fd294b70e054810b5384a2855908df5/apps/ai-game-creator-shell/src-tauri/src/project/write_lock.rs#L772) 及第 927–935 行:争用返回 Retryable;等待需要调用方处理。 - [`agent/runtime_actions/project_gates.rs:1618`](https://git.genarrative.world/git/GenarrativeAI/Genarrative/src/commit/3540c5660fd294b70e054810b5384a2855908df5/apps/ai-game-creator-shell/src-tauri/src/agent/runtime_actions/project_gates.rs#L1618):已有 5ms 间隔、2000 次上限的等待入口。 这是已关闭 #318 的**素材入口覆盖缺口**:旧项聚焦 agc_write_file;当前新增证据明确落在本地素材导入/资源提交,不重新报告旧写文件症状。也不是 #529 的执行租约 Draining。 ## 验收 - [ ] 同进程 conversation.write 短暂持锁期间,本地导入、账户导入、资源提交可以有界等待后成功。 - [ ] 等待超时给出真实持锁方和明确错误;权限拒绝不误当可等待争用。 - [ ] 并行提交不丢 manifest/revision 更新,不放宽跨进程互斥或简单按相同 pid 豁免。 - [ ] 远端已完成但本地提交争用时,恢复复用原 operation,不新增远端副作用。 ## 核查范围 2026-09-30 对九份项目导出做只读审计,代码基线 `3540c5660fd294b70e054810b5384a2855908df5`。本 Issue 仅登记问题,尚未实施修复。未重放项目付费操作,不提交原始会话、凭据或本地私密绝对路径。已排除 #529、#525、#518;偶发 Provider/网络错误不作为新增缺陷。
lhk229 added the
Priority
Medium
3
Kind/Bug
labels 2026-09-30 15:53:41 +08:00
lhk229 self-assigned this 2026-10-02 02:21:20 +08:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: GenarrativeAI/Genarrative#551