事故一:两个 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 的配置。
根因
- 多 Agent 无并发控制,像两个线程写同一个集合,没有锁。
- AI 写文件默认”整文件写”而非”追加/局部改”,它以空白为底稿,不知道也不检查已有内容。
教训
- 多 Agent 并行只用于独立文件或探索性任务,共享文件回归单 Agent。
- 动已有文件:先 read 再 replace,绝不让 AI 整文件 write 覆盖。
.env这类敏感文件尤其,改完 diff 核对。- 让 AI 加同类型新配置时,明确说”追加到已有文件,不要覆盖现有内容”。
游客评论无需登录,昵称和邮箱为选填项(邮箱仅用于回复通知)。什么是 Waline?