事故一:两个 Agent 改同一个文件

我试过让多个 AI Agent 并行干活,结果互相打架。

Agent A 改 Header.astro 加菜单,Agent B 也改 Header 优化图片,合并时直接冲突。更隐蔽的是:A 写的数据结构是 {data: {items}},B 期望的是 {items},合并后代码不报错,运行时才错。

后端类比:这是典型的 Write-Write Conflict,需要乐观锁、悲观锁或分布式锁。但 Agent 之间没有通信机制,任务边界也划不清,锁根本没有落点。

最终回归单 Agent + Skill/CODEBUDDY.md + git diff 审查。结论:独立文件、有明确契约、探索性任务才适合多 Agent;共享文件并行就是给自己挖坑。

事故二:.env 被整文件覆盖

接 DeepSeek 做文章摘要,我让 AI 在项目里建一个 .env。摘要功能跑通了,但本地相册、R2、MongoDB 全部异常。

排查发现:.env 只剩一行 DEEPSEEK_API_KEY=sk-xxxx,原来 18 行的真实配置全没了;连 .env.example 的 32 行也被覆盖。

根因:AI 写文件有两类工具,局部改(replace)和整文件写(write)。建 .env 时它用了整文件写,以空白为底稿,只写了自己关心的那行,把原有 18 行覆盖了。

边界:.env 被 git 忽略,所以伤本地不伤线上(Netlify 读的是平台变量)。但本地 npm run dev 断了一半。最后找到配置文件撤回到上一步后才把旧配置 18 行恢复,再手动追加 DeepSeek 的配置。

根因

  1. 多 Agent 无并发控制,像两个线程写同一个集合,没有锁。
  2. AI 写文件默认”整文件写”而非”追加/局部改”,它以空白为底稿,不知道也不检查已有内容。

教训

  1. 多 Agent 并行只用于独立文件或探索性任务,共享文件回归单 Agent。
  2. 动已有文件:先 read 再 replace,绝不让 AI 整文件 write 覆盖。
  3. .env 这类敏感文件尤其,改完 diff 核对。
  4. 让 AI 加同类型新配置时,明确说”追加到已有文件,不要覆盖现有内容”。