2.2 KiB
2.2 KiB
文件所有权租约移除记录(2026-10-20)
范围
按用户要求移除子智能体调度器中的文件所有权租约,包括:
- 模块级
leases:子智能体声明文件的独占归属 - 模块级
rootIntents:主智能体写入意图 - 模块级
rootLeases、rootWaiters与 10 分钟等待队列 acquire/release租约生命周期rootExecute中按路径或工作区根排队、拒绝冲突的逻辑- 子智能体工具执行时对
leases.get(path) === entry.view.id的归属检查
保留行为
spawn_agent的write模式仍要求声明 1 至 32 个明确文件路径。- 子智能体写文件时仍只能使用
write_file/edit_file,且路径必须属于自己声明的文件。 - 读工具、子智能体并发上限、取消、超时、结果汇总和权限模式门禁保持不变。
- 文件工具自身的路径边界、写前重读和原子写入逻辑保持不变。
行为变化
- 主智能体同一回合的多个工具调用直接执行,不再按文件足迹先到先得排队。
- 父智能体与子智能体可以同时声明或写入同一文件,不再返回“文件正由子智能体修改”或“文件已分配给另一个子智能体”。
- 多个子智能体可以声明同一文件;最终内容取决于各写入工具的实际执行顺序。
- 同一文件的并发写不再由调度器串行化,也不提供跨工具锁或自动合并。
验证
npm run typecheck:通过。npm run test:subagents:31 项通过,覆盖同文件声明、父写与子写、并发命令、写入范围拒绝、回退记录、取消和超时。npm run build:通过。src/main/subagents/scheduler.ts:未发现leases、rootIntents、rootLeases、rootWaiters或acquireRootLease。
限制
- 并发写同一文件时可能发生覆盖;需要互斥或合并的场景必须由调用方另行处理。
- 回退记录要求同一文件连续修改时前一次
newContent与后一次oldContent一致;并发交错写同一文件可能使回退校验失败。 - 历史文档
子智能体文件租约并发修复-2026-10-18.md仅作为旧实现记录保留,不代表当前行为。