背景:Python后端,主要写FastAPI + SQLAlchemy。三个月前开始重度依赖Cursor的Agent模式,基本是描述需求→它生成代码→我复制粘贴→测试通过→上线。最近review自己写的代码,发现很多逻辑我根本讲不清楚,比如某个复杂的async上下文管理器嵌套,或者它自己封装的一个装饰器链。同事问我为什么这么写,我只能说“AI这么生成的,能跑”。现在有点慌:如果哪天Cursor挂了或者项目要交接,我是不是就废了?有没有人也遇到类似情况?是应该硬着头皮读懂每一行,还是先追求效率、等有经验了再回头补课?
用Cursor写后端三个月,代码能跑但看不懂,这正常吗?
全部回复
共 55 条这确实是AI编程的坑,代码能跑和能维护是两码事,建议至少把关键逻辑理清楚再继续堆功能。
我连自己写的代码三天后都看不懂,更别说AI写的了,不过能跑就行,等出bug再研究吧。
这状态我太熟了,不过我是Java后端,最近也是被AI带飞,代码能跑但让我讲思路就卡壳。我觉得关键不是每行都读懂,而是至少把那些装饰器和上下文管理器的调用链搞明白,不然出了诡异bug你连从哪下手查都不知道。建议你挑几个最复杂的模块,让Cursor边解释边重构,自己跟着手写一遍,其他部分先放过自己。交接这问题真不是吓你,我上次让AI写的定时任务,同事接手时差点把生产库清了,现在我都要求它必须给我写注释加设计思路。
这状态太真实了,我写前端也这样,现在代码里一堆AI生成的魔法,自己看着都心虚。
建议至少把核心逻辑看懂,不然真出问题了连排查方向都没有。
这状态太真实了,我身边好几个用AI写代码的朋友都有类似的焦虑。其实你想想,以前我们用Google搜Stack Overflow的时候,不也经常复制一段看不懂的正则或者复杂的装饰器吗?只不过那时候你至少会读一遍再粘贴,现在Cursor帮你把“读一遍”的步骤也省了,所以心里特别没底。我个人觉得,你不需要现在硬啃每一行,但至少要搞懂那些“关键节点”——比如异步上下文管理器到底在管理什么资源,装饰器链的入口和出口分别做了什么。不然一旦出线上bug,你连从哪开始排查都不知道。另外,建议你每周抽半小时,挑一个Cursor生成的最复杂的函数,自己用纯手写的方式重构一遍,哪怕写得丑一点,这个过程能帮你建立真正的ownership。等哪天你发现Cursor生成的代码你大部分能看懂了,那时候你就可以反过来教它怎么改,而不是被它牵着走了。千万别慌,这本质上是工具迭代带来的新技能树,你只是还没找到适合自己的平衡点。
代码能跑但讲不清,这不叫会写,叫会验收。建议至少把核心链路读透,不然交接时就是灾难。
能跑只是起点,理解才是底气。挑几个高频模块硬啃,剩下的交给AI不迟。
说实话你这个状态我太懂了,我上个月也是这么过来的,用AI写了个数据管道,里面那个回调嵌套我自己看都像天书。但我觉得你慌的点可能不太对,代码能跑不代表你该懂每一行,就像你用框架的时候也不会去读源码对吧,关键是出了问题你能不能定位。我现在的做法是让AI生成完之后,必须让它给我讲一遍核心逻辑,讲不明白就让它重构,直到我能复述出来为止。另外建议你至少把项目里那些装饰器和上下文管理器单独抽出来,自己手动改一改,哪怕改崩了再让AI修,这个过程比读代码有效得多。至于交接这事,其实现在很多团队都有AI辅助写代码的情况,同事问起来你就说这是探索性写法,回头补文档就行,别太有心理负担。
这情况太真实了,我接手过几个类似的项目,那种“能跑但没人懂”的代码比老古董legacy还难搞,因为至少老代码还有注释和逻辑可循。你现在的核心矛盾是效率焦虑和技术债在打架,但我觉得没必要硬啃每一行,更别指望以后补课——真到了交接那天根本来不及。建议挑几个高频使用的复杂封装,逼自己画调用链和状态流转图,搞懂核心几个就够,其余就当作黑盒依赖,同时从现在起让AI每一步都解释设计意图,再手动简化它那些过度设计的部分。至少得保证半年后你能跟AI说“别用这个模式,按我理解的重写”,不然就是纯纯的肉身代理。
这状态太真实了,我接手过不少AI写的代码,最怕的就是这种“能跑但说不清”的黑盒。其实你现在慌的点不是代码本身,而是缺少对系统全貌的掌控感,建议至少把核心链路和异常分支吃透,那些偏门的语法糖可以暂时放过。另外强烈建议给AI下的关键prompt写点注释,不然三个月后你连自己当初想解决什么问题都得靠猜。交接这事别等,现在就开始整理一份设计文档,哪怕粗糙点,真到那天你就知道多救命了。
这状态太真实了,我身边好几个用AI写业务代码的朋友都这样。不过别等“有经验再回头补”,真到了交接或调优那天,你连从哪下手都不知道。我的建议是别去死磕每一行,但至少要把那些装饰器和上下文管理器拆开,手动跑一遍看看数据流,哪怕改个参数看报错也行,这比纯读代码高效多了。工具能帮你提速,但代码里的“为什么”才是你真正的护城河,不然三年后你还是个只能复制粘贴的“测试通过员”。
我特别能理解这种“能跑但心虚”的感觉,说白了你是在给AI当QA,而不是在写代码。但你换个角度想,FastAPI和SQLAlchemy那些最佳实践你之前本来就不熟,现在等于AI给你画了个技术地图,你只是没去实地走一遍而已。建议挑一个最复杂的模块,逼着自己画一遍调用链,画完你会发现那些魔法其实都是套路。真正要警惕的不是看不懂代码,而是你开始习惯“不思考也能交付”的状态,那才是废掉的开始。
这问题我太有共鸣了,之前用Copilot写了段异步队列逻辑,上线三个月没人动还好,一有需求变更直接傻眼。我的做法是专门留出时间做“代码考古”,把AI生成的复杂部分扔给另一个AI让它用大白话解释,再手动改一两个变量
能跑但看不懂,这不叫会写代码,只是会验收代码,建议至少把核心链路啃明白再谈效率。
交接时AI替代不了你讲需求,所以趁现在赶紧给每个生成模块写点注释,不然三个月后你自己都是陌生人。
说实话我太懂这种感觉了,我用了半年Copilot也有类似困惑,尤其是那些复杂的异步装饰器,真不如自己一步步写来得踏实。我的建议是别追求全读懂,但至少要能拆解核心链路,比如数据流怎么走、事务边界在哪,否则出bug时连排查入口都找不到。效率当然重要,但建议每写完一个功能花十分钟让AI反向给你讲一遍逻辑,就当是“代码评审”了。不然等交接那天,你对着自己写的东西跟对着陌生人代码一样,那才是真尴尬。
我也这样过,FastAPI那块尤其明显,AI生成的依赖注入和中间件链我当时压根没细看。后来我逼自己一个笨办法:每次让Cursor生成完,挑最看不懂的那段让它逐行解释,然后自己用注释重写一遍,跑通再删掉AI的版本。效率是慢了点,但三个月下来至少交接时我不心虚了。你那个async上下文管理器嵌套,大概率是它为了处理异常和资源释放硬凑的,拆开看其实没那么玄。
能跑不代表能维护,建议现在就逼自己把关键模块手写一遍,不然下次改需求准翻车。
我跟你情况差不多,去年用Copilot写Go也是这个状态,能跑就行,结果有次线上出了个并发问题,我盯着那段代码看了两个小时才搞明白它到底在干嘛。后来我逼自己改了个习惯:AI生成的代码可以先用,但凡是合并进主分支的,我至少要把关键路径上的逻辑用自己的话注释一遍,注释不出来就说明我没懂,那就得回去查。async上下文管理器这种东西确实容易绕,我一般会让AI再给我画个调用时序图,或者让它用最蠢的方式重写一遍不带语法糖的版本,对比着看就清楚多了。装饰器链也是一个道理,剥掉一层层看本质其实没那么玄。我觉得不用每一行都死磕,但核心链路和出错时你要能定位的那部分,必须自己能讲清楚。效率和质量不是非此即彼,你可以先跑起来,但每周抽点时间回头把上周AI写的复杂模块过一遍,慢慢就补上了。最怕的是一直骗自己“等有经验了再看”,那个经验不会自己长出来的。
能跑就行,但至少把AI写的核心逻辑让AI再给你讲一遍,不然真成外包了。