2分钟干完40分钟的活,然后我把数据库跑崩了
上周我用Cursor 0.5.2的Agent模式重构了一个3000行的支付模块,结果它自己写了个无限循环把本地数据库干崩了。PostgreSQL直接OOM,docker容器都起不来了。
这就是今天想聊的东西——那个让你又爱又恨的“自动编程机器人”。
先说结论:这玩意儿到底是什么?
Cursor 0.5的Agent模式,简单说就是给AI装了一双手。它不只是补全代码,而是能自己创建文件、运行终端命令、安装依赖、甚至git commit。
听起来像科幻片?实际上更像喜剧片——偶尔带点恐怖元素。
我管它叫“实习生模式”:干活贼快,但你必须盯着,不然分分钟给你埋雷。
嗯...这个比喻可能不太准确。实习生至少知道自己不会,会问。这货不会。
三个让我震惊的瞬间
案例1:它自己写了个CLI工具
上周三下午,我随口说了句:“帮我写个脚本,批量压缩public目录下的图片。”
正常情况下我得:装sharp、读文档、写递归遍历、处理错误、加进度条。大概40分钟的活。
Agent模式干了啥?
它自己:
- `npm install sharp`(没问我)
- 创建了`scripts/compress-images.js`
- 写了完整的异步处理逻辑
- 运行后发现有权限问题,自己加了`chmod`
- 压缩完还给我生成了个report.json
全程2分17秒。我就在旁边喝咖啡看着终端狂闪。
但问题来了——它默认把图片质量设成了60%,我产品图全糊了。这货没问我压缩参数,直接用了“它认为合理”的配置。后来我查了它的逻辑,发现它参考的是某个博客的WebP转换教程,那个教程是2019年的。
等等,这里我要更正一下——不是2019年,我看了历史记录,是2020年3月的一篇Medium文章。它引用的sharp配置项quality: 60就是从那儿来的。
这就是Agent模式的核心矛盾:它越自主,你越需要明确约束。
案例2:重构React组件时的骚操作
我让它把项目里的class组件改成函数组件。
常规操作对吧?但Agent模式做了这些:
1. 自动扫描了所有extends Component的文件
2. 识别出哪些用了生命周期方法
3. 把componentDidMount转成useEffect(依赖数组写对了)
4. 发现有个组件用了shouldComponentUpdate,自动包了React.memo
5. 然后自己运行了测试套件,发现3个case挂了,又回去改
看到第5步的时候,我承认我慌了。这不像工具,像个人。像那种不说话闷头干活的同事。
但翻车也翻在这里——它把一个依赖this.forceUpdate的组件改崩了,因为没理解那个组件在用MobX的observable状态。AI看到forceUpdate以为是性能优化,直接删了。然后整个页面的响应式更新全挂了,我debug了俩小时。
教训:Agent模式对隐式依赖的代码是灾难。那些没写在注释里、藏在运行时行为里的逻辑,它完全抓瞎。
案例3:数据库迁移的惊魂30秒
最刺激的一次。晚上11点,我犯困的时候说了句:“把user表的password字段改成password_hash,然后更新所有相关查询。”
Agent模式:
- 创建了迁移文件(sequelize格式,对的)
- 扫描了所有SQL查询(包括拼接字符串的)
- 改了17个文件里的字段名
- **然后自动运行了迁移**
等等,我没让你运行啊!
30秒后我才反应过来——它默认开启了auto-execute。还好我本地数据库是docker的,而且它没删旧字段(只是重命名)。但我后背还是凉了。
我立刻关了那个选项。永远不要让AI自动执行数据库操作,这是我的底线。不,这是铁律。
踩坑实录:这些坑我都替你踩过了
坑1:上下文窗口是硬伤
Agent模式在处理超过2000行的文件时,会开始“遗忘”。它改着改着就忘了文件开头还有个import,然后自己又加了一遍。
结果:同一个依赖被import了3次,React还被重复引入,打包直接炸了。Vite在终端里红了整整一屏。
解法:大文件先拆,再交给Agent。别指望它自己重构。我觉得1500行是个安全线,超过这个数它就开始丢上下文了。
坑2:它不会说“”
这是最阴险的。你让它集成一个冷门库(比如某个只有50星的GitHub项目),它不会告诉你“我不了解这个库”。
它会编造API。
我就遇到过——它用了个pinyin-engine库,然后调用了根本不存在的engine.searchByTone()方法。代码写得像模像样,还加了JSDoc注释,全是幻觉。我跑了三遍测试都在这个方法上报undefined is not a function,它还在那改参数顺序,死活不承认这个方法不存在。
解法:对不熟悉的库,先让它写测试,跑不过就说明在编。这招百试百灵。
坑3:终端命令的蜜汁自信
Agent模式喜欢用rm -rf。特别喜欢。
有次它想清理构建缓存,直接来了个:
rm -rf ./dist/*问题是我dist目录是软链接,指向的是另一个项目的构建产物。差点把我另一个项目删了。那个项目我写了三个月。
解法:在.cursorrules里明确禁止危险命令,或者关掉auto-execute。我两个都做了。
和Copilot、Cline的对比(说人话版)
| 工具 | 像什么 | 适合谁 |
|------|--------|--------|
| GitHub Copilot | 高级自动补全 | 写新功能、不想动脑子的时候 |
| Cline (VS Code) | 话痨版Agent | 喜欢看AI一步步解释的人 |
| Cursor Agent | 沉默的实干家 | 敢放手让AI改项目的人 |
Copilot是副驾驶,Cursor Agent是直接抢方向盘。Cline是抢完还给你解释为什么这么开。
我个人体感:Agent模式在处理重复性任务时碾压Copilot,但在需要深度理解业务逻辑时,还不如手动写。尤其是那些业务里藏着无数个if-else的特殊情况,AI根本理不清。
什么人适合用Agent模式?
经过两周深度使用,我的判断:
✅ 适合:
- 全栈独立开发者(一个人干一个团队的活)
- 需要快速出原型的产品经理
- 维护屎山代码的倒霉蛋(重构神器)
- 写脚本、配置、迁移这类机械性工作
❌ 不适合:
- 新手程序员(你会学不到东西)
- 金融/医疗等高风险领域(幻觉成本太高)
- 复杂的算法实现(AI的逻辑推理还是弱)
- 需要精细性能优化的场景
我的使用姿势(血泪总结)
1. 关掉auto-execute。让Agent生成命令,你审核后再跑。
2. 写好.cursorrules。明确项目规范、禁止的操作、代码风格。我花了一整天写这个文件,值。
3. 小步提交。Agent改完一个模块就commit,出问题方便回滚。
4. 先写测试。让Agent根据测试用例改代码,而不是直接改。
5. 大文件先拆分。超过1500行的文件,Agent会失忆。
说点得罪人的话
Cursor这波Agent模式,本质上是在试探开发者对AI的信任边界。
它故意把自主权开得很大,让你体验“全自动编程”的快感。但实际生产环境中,这种自主权是危险的。
我认识的一些开发者已经开始“过度依赖”了——离开Agent模式就不会重构代码,不知道webpack配置怎么写,出了问题第一反应是让AI修。群里有个哥们,用Agent模式写了三个月代码,连useEffect的依赖数组原理都说不清楚了。
工具越强,你的基础能力越重要。这话很爹味,但Agent模式用了一周后,我深刻理解了。
你知道什么时候该用Agent吗?当你明确知道“这件事怎么做”,只是懒得动手的时候。如果你自己都不知道怎么做,Agent大概率会把你带沟里。
就这么简单。
最后
Cursor 0.5的Agent模式,我给7.5分。扣掉的2.5分是:
- 幻觉问题(1分)
- 上下文窗口限制(0.5分)
- 让我产生了“可以不用动脑子”的错觉(1分)
但它确实提高了我的效率。以前重构一个中型项目要3天,现在1天半——剩下1天半在修Agent留下的bug。
值不值?看你怎么用了。
你用过Agent模式吗?有没有被它坑过?评论区说说你的故事,我想看看是不是只有我这么惨。 上次在V2EX看到有人被Agent删了整整一个微服务,我觉得我算幸运的。
相关阅读:
- [Cursor vs Copilot:2024年AI编程工具终极对比](https://hackernoon.com)
- [为什么你的AI助手总在编造API](https://hackernoon.com)
- [从Vim到Cursor:一个老派开发者的妥协之路](https://hackernoon.com)
#Cursor #AI编程 #Agent模式 #深度评测 #前端开发 #程序员工具
读者评论 4