背景:Python后端,主要写FastAPI + SQLAlchemy。三个月前开始重度依赖Cursor的Agent模式,基本是描述需求→它生成代码→我复制粘贴→测试通过→上线。最近review自己写的代码,发现很多逻辑我根本讲不清楚,比如某个复杂的async上下文管理器嵌套,或者它自己封装的一个装饰器链。同事问我为什么这么写,我只能说“AI这么生成的,能跑”。现在有点慌:如果哪天Cursor挂了或者项目要交接,我是不是就废了?有没有人也遇到类似情况?是应该硬着头皮读懂每一行,还是先追求效率、等有经验了再回头补课?
用Cursor写后端三个月,代码能跑但看不懂,这正常吗?
全部回复
共 44 条正常,但得留个心眼,至少把核心链路搞懂,不然真出事你连从哪下手都不知道。
能跑只是下限,能讲清楚才是你的护城河,建议挑高频模块硬啃。
建议至少把核心链路啃明白,不然哪天它抽风你连修都不知道从哪下手。
能跑和懂是两码事,交接时别人一问三不知更尴尬。
这事儿我太有同感了,上个月我翻自己用Copilot写的Django信号处理,有个自定义中间件逻辑绕了三层,我盯着看了半小时才反应过来它是在模仿某个开源项目的写法,但那个项目我根本没读过。你说“能跑但看不懂”这个状态,其实特别危险,因为代码跑通只能说明当前输入输出对得上,但边界条件、并发场景、异常恢复这些,AI根本不会替你考虑,它只是概率上觉得这样写“像对的”。我现在的策略是,让AI生成完代码后,自己必须用自然语言把它的逻辑复述一遍,哪怕只是写个注释,能讲清楚就留着,讲不清楚就当场拆掉重写。另外你担心交接的问题,我建议你至少把那些装饰器链和async上下文管理器单独抽出来,画个调用关系图,哪怕丑点,也比脑子里一团浆糊强。效率当然要追,但咱得给自己留个“事后能赎罪”的余地,不然等代码量堆到五万行,再想回头补课就不是补课,是考古了。
代码能跑不代表你懂,但三个月全交给AI确实危险,至少把关键路径的装饰器和上下文管理器啃下来再谈效率。
交接不是看代码,是看你的脑子有没有跟着转,现在偷的懒以后都得加班补。
这状态太真实了,我也经历过类似阶段。不过你担心的点其实可以拆开看:能跑但读不懂,说明你缺的是“复盘”而不是“重读”,建议挑几个核心的装饰器和context manager,让AI给你逐行讲清楚设计意图,再自己改一版。交接这件事不用慌,真到那天,你带着AI一起走就行,但前提是你得能说出“为什么这么设计”的粗线条逻辑。效率和理解不冲突,关键是别让AI替你思考,而是把它当快速实现工具,逻辑主干还是得自己长出来。
我跟你情况差不多,用了仨月Copilot写Go,现在同事问我某段并发逻辑咋想的,我脑子一片空白。后来我给自己定了个规矩:AI生成的代码,哪怕再绕,必须自己重写一遍核心逻辑,不追求完美但得能讲明白。不然真等交接的时候,你连锅都甩不出去,那才叫尴尬。
我觉得这事的本质是“工具替你思考”和“你替工具背锅”之间的博弈。短期看效率确实上去了,但长期来看,代码的可维护性才是硬指标,你现在的“能跑”其实是在透支未来的理解成本。建议至少把那些装饰器和上下文管理器拆开,单步调试一遍,你会有种“原来如此”的快感。
正常,但别让这状态持续超过一个季度。我试过硬啃,发现AI写的某些抽象确实比你高,但你得能判断它为什么这么写,是为了性能还是为了绕坑。否则哪天它生成个带副作用的全局状态,你上线了才发现,那就不只是“看不懂”的问题了。
我倒是觉得你该慌的不是“看不懂”,而是“你竟然没问它为什么这么写”。Cursor有个功能是让AI解释代码,你每次生成后让它给你讲一遍思路,就当是免费的code review。我现在就这么干,三个月下来,至少能跟同事吹个大概了。
这状态太真实了,我写前端也这样,现在重构自己代码跟考古似的。
建议至少把核心链路搞懂,不然出bug时AI也救不了你。
这情况太常见了,我周围好几个同事都这样。但建议别全指望读懂每一行,先把核心链路搞明白,比如那些装饰器到底改了啥行为,异步上下文生命周期是啥,不然出问题你连从哪下手查都不知道。而且交接确实是大坑,建议至少给关键模块写点中文注释,哪怕是你自己看得懂的粗粒度逻辑,也算是给自己留条后路。效率当然要,但得有个底线,那种完全黑盒的部分至少得能画出调用图。
我也有段时间这样,后来发现关键不是读懂每行,而是至少得能解释核心模块的设计意图。建议你挑几个高频用的装饰器或上下文管理器,让AI给你逐行注释加画流程图,搞懂两三个典型的,其他的就能触类旁通。另外交接这事其实看团队,如果大家默认这种工作方式,那代码可读性差的问题会越来越普遍,别太焦虑。
说实话你这情况太常见了,我周围好几个用AI写代码的都这样。但我觉得“能跑”和“能维护”是两码事,尤其后端这种长期项目,你连自己代码都讲不清楚,后面出bug排查成本会翻倍。建议你别全盘硬啃,就挑那些自己写不出来的复杂逻辑,比如那个装饰器链,专门花时间拆解一下,搞懂设计意图。效率当然要追,但至少得保证核心模块你能hold住,不然哪天AI一升级,旧代码可能直接变黑盒。
能跑和能维护是两码事,建议挑几个核心逻辑硬啃,至少得能跟同事讲明白原理。
这挺正常的,但别全指望读懂每行,先把项目架构和关键设计吃透,交接时能说清楚就行。
这题我太有共鸣了,之前用Copilot写了个数据处理管道,半年后回头重构,发现里面有个自己都没见过的异常捕获逻辑,当时也是头皮发麻。我的建议是别硬啃每一行,但至少要把架构和关键节点的设计意图搞清楚,比如那些装饰器是干嘛的、上下文管理器解决了什么问题。等真出bug或者要加功能的时候,你会发现懂不懂AI写的代码,调试时间能差出三倍。你现在能跑就说明大方向没错,但建议每周抽点时间,挑一个“看不懂”的模块,用git blame和断点去反推它的输入输出,慢慢就能补上这个窟窿。
这太真实了,我现在也是Cursor重度用户,但我会让它把关键逻辑用注释解释清楚,或者直接让它画个流程图存wiki里。说到底AI生成的东西只是初稿,你得能跟它辩论为什么这么写,不然真成了人肉测试机。项目交接不是最可怕的,可怕的是你自己都记不住三个月前的决策依据,到时修个bug都得重新逆向工程。建议至少把核心链路的代码读懂,边角料可以先放着。
这状态太真实了,能跑和能懂完全是两码事,交接时AI可不会替你背锅。
建议至少把核心链路啃明白,边缘代码先放放,不然迟早要还技术债。
这状态太真实了,我身边好几个同事都这样。但说句实话,能跑和看懂之间差的不是代码量,是debug时那种两眼一抹黑的绝望。建议至少把那些装饰器和上下文管理器搞明白,不然哪天AI抽风改了个边角料,你连从哪下手查都不知道。
其实你担心的交接问题,本质上是知识没有沉淀到自己脑子里。我现在的做法是每次生成完代码,花十分钟让AI逐行解释一遍,顺便把关键逻辑写成注释,就当是白嫖了个私教。效率会降一点,但三个月下来,至少review时能跟同事吹两句了。
说实话你这个状态我太懂了,我前阵子用Copilot写了个数据处理管道,最后那个生成器嵌套我自己看了三天才勉强捋顺。我觉得这事儿得分两层看,第一层是你现在能跑通业务,说明你对系统的“输入输出”是有理解的,这本身也是一种能力;第二层才是真正的风险点,就是当你需要调性能或者修一个隐蔽bug的时候,光靠“能跑”是完全不够的。我的建议是别硬啃每一行,但一定要把那些你自己觉得“讲不清楚”的模块挑出来,用debugger一步步走一遍,或者让AI给你逐行注释,把核心逻辑变成你自己的话写进文档里。这其实花不了太多时间,但能让你从“司机”变成“车主”,至少知道引擎盖下面哪块是电池哪块是机油。至于交接或者Cursor挂了,我觉得更靠谱的做法是平时就留好AI对话记录和设计思路的草稿,别让代码成为唯一的知识载体。你现在的慌其实是好事,说明你还没被效率冲昏头,等哪天你开始觉得“看不懂也正常”了,那才是真危险。
这状态太真实了,我上一份工作接手过一个AI写的服务,那装饰器套了五层,线上出问题根本没法排查。我的建议是至少把核心链路和异常处理看懂,那些边角工具类可以先放着,不然哪天AI抽风或者需求一变,你连从哪下手改都不知道。另外交接的时候最好留点注释,不然同事背后肯定骂娘。
我倒觉得不用太慌,能跑就是生产力,但得给自己设个底线。我一般会让AI把逻辑拆成小块,每块生成后自己过一遍,搞不懂就让它解释,解释不清就重构。三个月纯当黑盒用确实有点悬,挑几个高频用的模块死磕一下,剩下随缘吧。
说句实话,这种“AI代笔”写出来的代码,最怕的不是看不懂,而是你习惯了不思考。我最近也这样,后来逼着自己把那些魔法代码反编译似的拆开看,虽然慢,但确实能学到不少骚操作。建议你从最头疼的那个async上下文入手,花半天搞懂,后面就有底气了。
这状态太真实了,我也这样,现在重构自己项目跟看天书似的,只能边跑边补注释。
能跑和能维护是两码事,建议至少把关键流程的上下文和装饰器逻辑啃下来,不然交接时真会崩溃。
这状态太真实了,我接手过几个AI写的项目,想重构都没法下手,建议至少把核心链路啃明白。
能跑和懂是两码事,欠的债迟早要还,等出bug就知道啥叫痛苦了。
这状态太真实了,我上个月接手了个AI写的爬虫,里面套了四层装饰器,我看了两天才敢动。我的建议是别全读,但关键路径必须搞懂,比如数据库会话和锁那块,不然出bug你连从哪下手都不知道。另外可以试试让AI给你逐行注释,或者直接问它“为什么这么写”,比自己硬啃效率高多了。