AI Coding兴起已经有一段时间了,像Trae、Cursor等,通过自然语言的形式进行交互,直接为我们按照需求生成代码。这种方式逻辑上能极大的减少我们的开发时间,提升我们的开发效率。但鉴于目前AI Coding还不是特别成熟,在使用过程中或多或少会遇到很多问题。这些问题的存在使得工具不仅不能增加效率,反而可能带给我们一些困扰。今天主要分享一下这段时间AI Coding中遇到的一些问题以及解决方法。
改掉已经修改正确的内容
如果你使用AI Coding,并且完全放任让代码全部由AI生成,那么你一定遇到过一个问题:在修复某个代码的时候,AI工具会将某个之前正确的功能给修改错掉。这就导致你又得花费大量的时间去修复这个错误。很多时候你就会陷入这样一个修改循环中,从而导致更低的效率。
在开始使用AI Coding的时候我也遇到过类似的问题,一开始的办法是回滚+重新生成 ,后来的策略是AI + 人工处理 (对于小的修改我尝试人工处理, 但我感觉这背离了我使用AI工具的目标),最后我使用的策略是:让它基于最小化修改原则进行修改。使用这种方式目标是减少系统中代码的修改范围和频率,从而使功能的修改范围得到控制。在提示词上加上这段内容之后,每次修改的范围都得到了控制。
单个函数越来越长,不易维护
AI Coding工具一般在初次生成的时候都会给你一个不错的代码框架,然后随着需求的增加,代码也越来越冗余。之前使用Curosr写一个工具的时候,随着时间变化修改不断增加,最终竟然有一个函数有400多行,而且这个函数经常需要修改。这一方面导致代码难以阅读和维护,另一方面给AI工具的修改带来了更高的成本,甚至有的时候直接修改失败。如果不及时遏制,这种屎山代码会越来越多,最终无法维护。
在软件工程中有重构一说,用于提升软件的扩展性和可维护性。因此我的解决方式是适时的让它进行重构:基于设计模式(单一职责原则、开闭原则、里氏替换原则、接口分离原则、迪米特法则)对现有代码进行重构,并且后续修改遵循这些原则。 如果你在编码开始就指定遵循这些原则,那么生成的代码架构会非常清晰。如果后续有遗忘,可以再重新输入一次让工具记住这些知识。
大面积修复,大面积回滚
使用AI Coding比较麻烦的一点就是遇上大面积的代码修改,然后你一键accept,发现不对,然后又大面积的回滚。这种是最头疼的。一般来说,我会先让它给我思路,不要直接修改,等我确认修改方案再进行修改。之后,我会基于修改思路来进行判断,如果合适,我才会让它进行真实的修改。

Agent切换,前置知识丢失
有时候Agent上下文太长,需要你切换一个Agent,而新Agent和当前Agent之间的前置知识并不互通。如何在新的Agent中传递前置知识是一个非常重要的问题。前段时间mem0推出了一个openmemory的mcp服务通过共享记忆来解决这个问题。但在此之前,我的处理方式是:在切换之前我让他总结一下当前项目中的架构、项目目录、数据流程、关键文件、你做的一些关键修改等,在切换到新的agent之后我将这些总结的内容重新喂给它,从而让他重新拥有这段记忆。

适当的时候加上日志
如果你将一个问题反馈给AI并且它修复多次都还存在的时候,你就需要让它加上更多的日志来定位问题了。有得时候你只传问题图片它其实并不能很好的解决问题,你可能让他修复很多次,但最终问题都没有得到解决。这个时候你可以让它加一些日志来辅助定位问题。在调试的时候将加上的日志内容反馈给它,从而让它更好的理解和处理问题。

最后
我觉得这些问题随着AI Coding工具的发展都会逐渐被解决掉,但是现阶段如果我们想高效的利用AI Coding工具,就需要一些技巧。无论是prompt还是Cursor rule,我们都需要通过一些方式来解决他们。这是我在使用AI Coding工具过程中遇到的一些问题以及个人的一些解决思路分享。你是否遇到过类似问题呢?你还遇到过哪些本文之外的问题呢?欢迎评论区交流。