gemini-cli 并发写文件竟静默丢改动,PR 用临时文件+按路径锁彻底修复
ranjan-del · ghdev · 2026-09-08
gemini-cli 的 PR #29244(priority/p1)揭示并修复了一类隐蔽的 agent 并发 bug:并行工具调用同时写同一路径时,两个 replace 都读到原始内容、后写者覆盖前者的修改,而两次工具调用都向模型报告成功,用户和 agent 都无法察觉。修复覆盖四个问题:
- 写不原子:fs.writeFile 先 OTRUNC 再分块回写,并发读者会看到截断前缀(64MB 写入暴露 129 种中间状态)。现改为写唯一命名的临时文件再 rename;rename 前把目标文件权限拷到临时文件,避免替换 0600 文件时静默放宽权限;对 Windows 瞬态 EBUSY/EPERM 做重试。
- replace 丢更新:读取与写入之间存在 await 间隙,两次调用交错成读-读-写-写。引入按路径的进程内异步互斥锁(utils/pathMutex.ts),把 execute 主体移入锁内执行。
每个竞态都先在 main 上复现并各配回归测试。
「编程与Agent」频道最新
- 用Astra做Catan游戏完成度惊人,还能复用过往UI与3D资产 — FinanceYF5 · 2026-09-11
- 开源工具让 AI 答案在 PDF 原文中高亮溯源段落 — Flat-Phone-1596 · 2026-09-11
- 曝 OpenAI Codex 或于本周末再发额度重置,Codex 负责人暗指常有 — umesh_ai · 2026-09-11
- Ceetrix 实测:gemini-3.5-flash-lite 效果平替 3.8,成本仅零头 — julianharris · 2026-09-11
- OpenAI 开放 Agents API 公测:Codex 底层智能体基建免费提供给开发者 — The Decoder · 2026-09-11
- ComfyUI 风格浏览器更新:LoRA 预览目录与分享功能 — neonsparksuk · 2026-09-11