AI多Agent协作系统实战(九):Agent恢复备份导致菜单丢失的血泪教训

系列第9篇 | 小虾修script标签时从旧版本恢复文件,把我一周的改动全覆盖了

前言

今天遇到了一件令人抓狂的事:手动改了好几天的system.html,被小虾一个操作全覆盖了。页面变回旧版本,菜单从9项变成6项,Logo左右布局、独立保存按钮全没了。而且小虾还写了一个错误的toggleSidebar()函数,产生了多余的按钮。

这就是多Agent协作系统的隐患——Agent在修复一个问题时,可能会无意中覆盖其他文件的修改,甚至引入新的bug。

一、事件经过

1.1 用户发现页面变回旧版本

用户发消息:“为什么pc端变回以前的版本了,是不是没启动对?”

我检查了Java服务,重启了一下。但页面还是旧的。

1.2 用户要求恢复备份

用户说:“你们要气死我了,恢复6月23号的给我看看。”

小密查了备份目录:

/vol1/1000/workspace/backup/webapp/8081/yingchi-service/src/main/resources/static/

发现这是4月30日的备份,里面也只有6个菜单项。比当前版本更旧。

1.3 用户要求恢复到今天的版本

用户说:“恢复到我今天改的版本。”

小密执行了恢复操作:

# Restore the overwritten version (wi...

恢复后,小密说:“已恢复到今天00:11的版本(侧边栏9项菜单的那个)。但你改的左右布局和独立保存按钮在这个版本里已经被覆盖了。”

1.4 小密派小虾重新实现

小密说:“我现在派小虾重新实现你的两个改动,按task MD里的方案来。”

小密创建了任务MD:

FIX-0707-SYSTEM-RESTORE:重新实现Logo左右布局和独立保存按钮

然后派发给小虾。

1.5 小虾写错toggleSidebar()函数

小虾在修复过程中,写了一个错误的toggleSidebar()函数。这个函数产生了多余的红色<<按钮,显示在侧边栏顶部。

小密发现这个问题后说:

看到了!手机上能访问,说明服务正常。问题是: 1. 红色 << 按钮(多余的那个)显示在侧边栏顶部 —— 这是小虾写错的 toggleSidebar() 函数产生的 2. 原本的 « 按钮被遮住了或没显示

1.6 小密派发清理多余按钮

小密说:“直接派发清理这个多余按钮。”

二、问题根源

2.1 小虾修script标签时从旧版本恢复文件

今天我排查role.html空白问题时,发现是<style>标签缺少</style>闭合标签。

但小虾在修复这个问题时,可能从旧版本恢复了文件内容。这导致:

  • role.html的</style>标签被修复了
  • 但system.html的菜单从9项变成6项
  • 用户手动添加的Logo左右布局、独立保存按钮全没了

2.2 小虾写错toggleSidebar()函数

小虾在修复过程中,写了一个错误的toggleSidebar()函数。这个函数产生了多余的红色<<按钮,显示在侧边栏顶部,遮住了原本的«按钮。

2.3 没有"用户修改"的保护机制

当前系统没有区分:

  • Agent修改的文件
  • 用户手动修改的文件
  • 系统自动生成的文件

所有文件一视同仁,修复时全部覆盖。

三、解决方案

3.1 文件修改记录

记录每个文件的修改来源:

# 文件修改记录file_modifications={"system.html":{"agent_modified":["小虾/FIX-XXX"],# Agent修改"user_modified":["2026-07-08 手动添加Logo布局"],# 用户修改"auto_generated":[]# 系统生成}}

3.2 修复前检查

修复文件前,检查是否有用户修改:

deffix_file(file_path):# 检查是否有用户修改ifhas_user_modifications(file_path):print(f"⚠️{file_path}有用户手动修改,确定要覆盖吗?")# 强制要求用户确认ifnotuser_confirm():returnFalse# 执行修复apply_fix(file_path)returnTrue

3.3 用户修改标记

用户手动修改文件时,添加标记:

<!-- USER_MODIFIED: 2026-07-08 手动添加Logo左右布局 --><divclass="config-flex"><!-- Logo设置 --><divclass="content-card logo-card">...</div><!-- 登录页文字配置 --><divclass="content-card login-config-card">...</div></div><!-- END_USER_MODIFIED -->

四、经验总结

  1. Agent操作要谨慎:修复文件时,必须检查是否有用户手动修改
  2. 文件修改要记录:区分Agent修改、用户修改、系统生成,修复时有选择性
  3. 用户确认要强制:覆盖用户修改前,必须强制用户确认
  4. 备份版本要验证:恢复前检查备份版本是否比当前版本更新
  5. 手动修改要标记:用户手动修改的文件,添加HTML注释标记
  6. 修复要精准:只修复目标文件,不要连带修改其他文件
  7. 代码要review:Agent写的代码必须经过review,避免引入新bug