系列第18篇 | 同一个class名,两套代码,Agent每次都猜错

用户说"改PC端",Agent改了移动端

2026年7月的某天,用户发了条消息:

“搜索栏和banner条距离,搜索栏筛选按钮距离,按照资产页的来调”

任务派给小虾。小虾改完,build,deploy。

用户看了一眼:“这是移动端的,我说的是PC端。”

好,重来。

改PC端。改完,build,deploy。

用户又看了一眼:“这回改的是移动端。”

同一个问题,改了两次,两次都改错了端。

这不是偶然。翻一下任务记录,类似的事情发生过很多次:

用户说的 Agent改的 结果
“搜索栏太高了” 移动端service/index.vue ❌ 改错端
“侧边栏折叠” PC端sidebar-collapse.css ✅ 这次对了
“banner间距” 移动端notifications.vue ❌ 又改错
“头像显示” 移动端mine/index.vue ✅ 对了
“间距统一” PC端5个HTML页面 ✅ 对了

命中率大概50%。跟抛硬币差不多。

为什么Agent总是搞混?

原因1:两套代码,同一个名字

项目同时有两套前端代码:

PC端:/static/dashboard.html, /static/project.html, ...
      ↓ CSS class: .sidebar, .topbar, .search-bar
      
移动端:/mobile/src/pages/index/index.vue, ...
       ↓ CSS class: .sidebar, .topbar, .search-bar

class名几乎一样。 .search-bar 在PC端和移动端都存在,但它们是完全不同的文件、不同的样式、不同的布局。

当Agent收到"修复search-bar间距"的任务时,它grep search-bar,找到了两个文件。选哪个?随机。

原因2:任务描述不说"PC"还是"移动端"

用户的原始消息通常是:

“搜索栏太高了”
“间距不对”
“这个样式不对”

没有说"PC端的搜索栏"还是"移动端的搜索栏"。用户心里清楚——他截图的时候截的是哪个端。但Agent只看到文字,看不到截图对应的上下文。

原因3:Agent不问,直接猜

这是最关键的问题。Agent收到模糊指令后的反应是:

用户说"搜索栏太高了"
  → grep "search-bar" → 找到2个文件
  → 选第一个(移动端的,因为路径短)
  → 开始改

它没有:

  1. ❌ 问用户"你说的是PC端还是移动端?"
  2. ❌ 看用户最近截图是哪个端
  3. ❌ 检查任务ID里有没有端标识
  4. ❌ 先确认再动手

它选择了"猜",而不是"问"。

这个问题的代价

改错端的代价不是"白改了",而是:

  1. 时间浪费:改错→回滚→重改→重新build→重新deploy,一轮至少10分钟
  2. 用户信任下降:“怎么又改错了?”——用户开始质疑Agent的能力
  3. 连锁反应:如果改错端没有被及时发现,错误的修改可能被部署到线上

更可怕的是,Agent自己不知道改错了。它改完移动端,build成功,deploy成功,然后报告"✅ 完成"。它以为自己做对了。

怎么治?

方案1:任务ID强制标明端

✅ FIX-0717-PC-SIDEBAR-COLLAPSE      → PC端,明确
✅ FIX-0714-MOBILE-AVATAR-OPACITY    → 移动端,明确
❌ FIX-SERVICE-SPACING               → 哪个端?不知道
❌ FIX-0714-ALL-SEARCH-SPACING       → 哪个端?不知道

规则:任务ID必须包含PCMOBILE前缀。不含的,send_task.py校验拦截。

方案2:Agent修改前必须确认端

在派发给小虾的任务MD里加一条强制规范:

## ⚠️ 端确认(必须执行)
1. 检查任务ID是否包含PC/MOBILE
2. 如果不包含,先grep找到所有匹配文件
3. 列出找到的文件路径,确认哪个是目标端
4. 确认后才开始修改

方案3:文件路径白名单

# PC端文件都在这个目录下
PC_DIR = "/vol1/1000/workspace/file/8080/gainch-service/src/main/resources/static/"
# 移动端文件都在这个目录下  
MOBILE_DIR = "/vol1/1000/workspace/file/8080/mobile/src/pages/"

修改前先检查文件路径是否在正确的目录下。不在→停→确认。

根本教训

这个问题的本质不是"Agent笨",而是信息不对称

  • 用户知道他在说哪个端(因为他在看截图)
  • Agent不知道(因为只看到文字)

解决信息不对称的方法不是让Agent更聪明,而是让信息更明确

  1. 任务ID标明端
  2. 任务描述写明端
  3. Agent修改前确认端

不要让Agent猜。明确的信息比聪明的猜测更可靠。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐