Files
ycode/docs/文件所有权租约移除记录-2026-10-20.md
T

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 仅作为旧实现记录保留,不代表当前行为。