• 请不要在回答技术问题时复制粘贴 AI 生成的内容
jacketma
V2EX  ›  程序员

前期大量 AI coding 上线的项目,越来越改不动了,该重写吗?

  •  
  •   jacketma · 10h 47m ago · 4927 views
    部门去年接手的一个零配件供应商门店系统,赶工期上线,大量使用了 AI coding 后交付使用了

    上线后直到现在,大大小小的问题从来没有间断过,感觉越来越改不动了

    继续改的人力成本非常大(因为早前没有时间仔细 review 代码),用 AI 改烧 tokens 很厉害,而且经常改了这里,牵动别的地方。另外,AI 还有一个坏习惯,喜欢无端增加很多 corner cases 的预防设计,越改越复杂

    由于这个系统的实用价值越来越高,接下来要考虑是让 AI 重头重写一次吗(去年用的时候 AI 智能还不能和今天的能力相比,差比较大),还是继续屎山雕花?
    63 replies    2026-09-22 20:31:07 +08:00
    zishang520
        1
    zishang520  
       10h 46m ago
    让 AI 重写啊
    Ryanzlab
        2
    Ryanzlab  
       10h 45m ago
    直接重构
    koloonps
        3
    koloonps  
       10h 44m ago
    为什么不尝试人工写,非要 ai 写.你是确定这个系统不会长时间运行下去吗?to b 系统新增需求的时候实施产品开发不需要三方先商量下需求的吗,纯 ai 写到时候你完全不知道内部是怎么实现的怎么对接需求?
    106npo
        4
    106npo  
       10h 42m ago via Android
    抽出 api 定义和测试,直接 clean room 重构
    sn0wdr1am
        5
    sn0wdr1am  
       10h 40m ago   ❤️ 5
    这个时候,你就会遇到一个问题:

    1. 改好,重构好,是应该的。
    2. 改出问题了,还不如原来的,还得背锅。

    总结就是:改好了没功劳,没改好完犊子。
    lemonshuo
        6
    lemonshuo  
       10h 38m ago
    还的都是之前的技术债
    还是需要人工介入 review 代码 我现在游戏后端 一些大需求 ai 写完后没有仔细 review 后面 bug 逻辑问题 再让 ai 改 又会影响到其余的功能 之后只能自己再从头到尾 review
    现在代码还是黑盒 虽然能力强了不少 但自己不看一遍 还是有一些小问题的
    duanxianze
        7
    duanxianze  
       10h 37m ago
    继续 AI 啊,以前的 AI 太蠢了,让现在的 AI 重写
    gitlight
        8
    gitlight  
       10h 35m ago
    openai 的建议是 tick-tock 。4 天推进,1 天重构。保持定时重构的习惯,人为地给系统注入熵减
    evolighting
        9
    evolighting  
       10h 34m ago
    @koloonps 其实,真要说的话,所谓 AI 大模型当然可以对接需求,只是,为了所谓 AI 大模型的实现的 bug 买单的还是你自己。
    最后还是要人工介入,无论是人工审核还是手写关键逻辑。

    毕竟感觉对于公司来说, 雇佣一个人而不是外包给,无论是外包公司还是所谓的 AI 大模型编码代理,不就是为了让你来承当对应的责任,处理问题,和背锅的吗(
    firefox12
        10
    firefox12  
       10h 28m ago
    我以为只是我用不来, 比如一个功能 完成 90%了 最后那点 怎么改都不对,改了几次 发现过去对的已经被删除了。
    Timzzzzz
        11
    Timzzzzz  
       10h 26m ago
    重写你不还是用 AI 写 lol
    HongJay
        12
    HongJay  
       10h 21m ago
    是的,重写就能修复
    jacketma
        13
    jacketma  
    OP
       10h 18m ago
    楼上的兄弟说的没错,重写也会用 AI ,一方面是现在 AI oneshot 的能力比之前弱智时期强很多,让现在的 AI 改之前的弱智时期的 bug ,成本并不低;另一方面是这个项目的实用价值比较大,主管的意思要增加人对系统的掌控度。现在出了问题很大程度上是在猜可能是哪里有问题,猜对了能较快修复,猜错了定位问题都好久,修复时间都估不准,这么累积下去快要失控了
    antipro
        14
    antipro  
       10h 9m ago
    利用 AI 重新整理项目中的 feature ,然后人工审核,加入相关的规约要求,再重开一个项目新写吧。
    Reficul
        15
    Reficul  
       10h 6m ago
    有了 AI 之后,代码腐败的速度比之前快多了。重构?没有覆盖完整的 E2E 的情况下重构分分钟死给你看。
    WashFreshFresh
        16
    WashFreshFresh  
       9h 59m ago
    重构不过是新的屎山,维护一段时间后又失控,到时候模型更厉害,你难不成再重构吗?
    zuokanyunqishi
        17
    zuokanyunqishi  
       9h 51m ago
    你凭啥觉得,让 AI 重构不会又是一轮屎山堆呢,程序员本身的软件工程能力只会在 AI 放大下加强.不会无中生有....
    NizumaEiji
        18
    NizumaEiji  
       9h 49m ago
    多写单测 大范围重构+替换呗
    Gu0Qiang
        19
    Gu0Qiang  
       9h 47m ago
    定期让能力更强的新模型重扫上下文、推翻重写,本质上就是把重构成本打下来了。哪家科技公司不重构?过去不重构往往不是不想,而是技术债堆到改不动、没人愿意接盘。AI 如果能把推倒重来的边际成本降到足够低,重构就会变成常态。
    op351
        20
    op351  
       9h 40m ago   ❤️ 2
    项目中有维护对应的业务,架构,功能演进,开发坑的文档吗,类似 code wiki 的那种?
    实测中大型项目有 code wiki 的话,ai 改起来会顺很多,token 消耗也会减少
    koloonps
        21
    koloonps  
       9h 40m ago
    @evolighting 人工写的目的不是为了背锅,是为了有人能够知道这个系统到底有多少功能.不然到时候你还要搞个知识库来查询.
    icebay
        22
    icebay  
       9h 39m ago
    先整理出问题,想好方案再让 AI 改,该合并的合并,该重新实现的重新实现,按模块一个个来。

    当 AI 反复做不好某个点的时候,就表示你需要重新整理了。
    qiaobeier
        23
    qiaobeier  
       9h 36m ago
    不知道重构一个成熟的中小型项目要烧多少钱的 token ,1000 美元打得住吗?
    sumu
        24
    sumu  
       9h 36m ago   ❤️ 1
    这个太简单了
    把《重构》这本书看一遍,用书中的技巧即可。

    至于重写,呵呵,这么说吧,如果你没能力用重构把一个屎山清理干净,你重写,也不会有不同的结局,屎山也是一步步有序的堆起来的。
    waterfish88
        25
    waterfish88  
       9h 34m ago
    两条线同时进行吧,一组改 BUG 一组进行重构
    Bootis
        26
    Bootis  
       9h 33m ago   ❤️ 1
    只要不是超大体量的 repo,按照这个方法论进行 ai coding 基本都是可控的: https://openai.com/index/harness-engineering/?utm_source=chatgpt.com
    https://developers.openai.com/cookbook/articles/codex_exec_plans
    jacketma
        27
    jacketma  
    OP
       9h 30m ago
    @op351 只有最早期的需求文档,还是比粗颗粒的那种,code widi 想都别想了,主要是开始觉得这个项目是个辅助系统,零配件供应商可能不一定会大力使用,最后凉了就算了。开发也是交差的心态,结果领导觉得也能用,现在反而成了主力系统,体质不好跳重担就不行啊
    Felldeadbird
        28
    Felldeadbird  
       9h 22m ago
    数据库结构你已经定了,接下来 API 化,让 ai 写文档,构建规范。提升复用方法。
    jacketma
        29
    jacketma  
    OP
       9h 22m ago
    @qiaobeier 第一版应该差不多,如果没有或很少人工参与,后续出现过定位一个 bug 就能烧上百刀,而且修复时间还不可控
    jacketma
        30
    jacketma  
    OP
       9h 18m ago
    @Felldeadbird 这也是目前少有的不变量,开始建表的时候研讨了很久,数据库结构一直没怎么大改,才有改代码的想法
    ajaxfunction
        31
    ajaxfunction  
       9h 15m ago
    不可能了,ai 和手机一样,你没用过的时候也不觉得有什么。
    一但你用过了,就再也离不开了,手写几行代码就会觉得浑身痛苦
    molvqingtai
        32
    molvqingtai  
       9h 10m ago
    需要有 spec
    roundgis
        33
    roundgis  
       9h 7m ago via Android
    说白了 AI 的使用成本开始超过人工了
    Bunnyranch
        34
    Bunnyranch  
       8h 58m ago
    AI 重构完事了。
    >AI 还有一个坏习惯,喜欢无端增加很多 corner cases 的预防设计,越改越复杂”
    这个可以用指令预防呀
    op351
        35
    op351  
       8h 48m ago   ❤️ 1
    @jacketma 可以让 ai 先写 code wiki ,初期 token 消耗会比较大,因为所有的文件都要读一遍,但会有利于后面的开发
    code wiki 让 AI 写也很简单的,类似于一个结构化的树形 readme
    可以先有一个父入口的 readme ,然后按功能或者页面切分多个文件夹,文件夹内再写 md 格式的说明文件,文件之间通过相对路径做引用
    qing18
        36
    qing18  
       8h 46m ago
    @sn0wdr1am 哈哈确实,屎山就别动
    clemente
        37
    clemente  
       8h 26m ago
    搞好 用户层面的 ci/cd 全场景覆盖 再重构
    jacketma
        38
    jacketma  
    OP
       8h 14m ago
    @qing18 这是一座在蠕动的屎山
    evolighting
        39
    evolighting  
       8h 5m ago
    @koloonps 背锅其实就是负责这个意思的调侃了。就算完全丢给所谓 AI 大模型来做所有工作,我甚至觉得某种意义上其实和全都丢给外包一样,不过是可以实时沟通,实时调整需求,而且绝对不会拒绝(只需要加钱烧 token )的外包。

    最后,当然可以说, 项目设计,项目管理也交给所谓 AI 大模型,那就会回到最终的那几个问题上了,既然都可以视作外包,那经营模式其实就是另一套东西了。
    xubeiyou
        40
    xubeiyou  
       8h 3m ago
    用 ai 重构就行 其实也得看你们怎么用 ai
    THESDZ
        41
    THESDZ  
       7h 57m ago   ❤️ 1
    先按照穿透开发,给它建立好 约束,自动化测试,用例等。然后再考虑重构的问题。
    THESDZ
        42
    THESDZ  
       7h 56m ago
    @THESDZ #41 typo 穿透开发=> 传统开发
    freemoon
        43
    freemoon  
       7h 45m ago
    AI 是辅助编程,设计这方面还得你主导,你只给需求其他都不管,那肯定就变石山了。
    nicegoing
        44
    nicegoing  
       7h 35m ago
    数据结构还是得你来设计。我发现 ai 很喜欢加状态变量,提一句需求,就加一个变量。但是很多状态是互斥的,有些状态是可以由已经存在的状态组合的。ai 一直向上堆屎山,大力出奇迹,刚开始没事,堆多了最后 ai 自己都丢三落四了。人可以根据状态之间的联系,用枚举,排列组合做减法,直接就减少了一堆无用的兜底代码。
    layxy
        45
    layxy  
       7h 34m ago
    说白了现在的 AI 开发堆逻辑只能到一定阶段让他重构下,否则越堆越多,人是没办法维护的
    pony2335
        46
    pony2335  
       7h 29m ago
    @Bunnyranch 有这样的规则?
    LittleOrangeCat
        47
    LittleOrangeCat  
       7h 23m ago
    这不是 ai 问题,只是 ai 加速了这个进程。我之前那公司五年的 rn 代码,改一处测多处,你以为人写的就好了?
    dirstart
        48
    dirstart  
       7h 7m ago
    搞一个 skill ,然后基于这个 skill 重构
    egan0606
        49
    egan0606  
       6h 56m ago   ❤️ 1
    向上反馈,AI 时代,这是要付出的成本以及代价; 上头认可, 就重构,不认可,就继续堆; 遇到有问题就解决问题, 不好解决, 就一直解决; 年轻人, 不要既要又要, 也不要让自己去承担无谓成本 ;
    V2Try
        50
    V2Try  
       6h 54m ago via iPhone
    重构,一方面是 AI 更强了,另一方面是你对项目的理解也更深了,知道哪些痛点和教训。
    zlo309618100727
        51
    zlo309618100727  
       6h 53m ago
    反正业务需求确定,就重新用 AI 写,进度还快些。
    guguphoenix707
        52
    guguphoenix707  
       6h 38m ago
    重写吧。保留测试用例,AI 看 AB 版本差异
    aleimu
        53
    aleimu  
       6h 34m ago
    opencode2 重构时都说了,一件事要干三遍才算真的干明白了
    mengdodo
        54
    mengdodo  
       6h 33m ago
    自食苦果
    FishLotte
        55
    FishLotte  
       6h 28m ago via Android
    继续用 Ai 写吧,毕竟去年的 Ai 跟今年的 Ai 相比差的太远了。
    kinghly
        56
    kinghly  
       6h 27m ago via iPhone
    能力问题而已。水平低的用 AI 做的项目基本属于能用级别。
    zsyevan
        57
    zsyevan  
       6h 5m ago
    1. 如果有 PRD , 将 PRD 纳入 git 管理,没有就先重新梳理 PRD
    2. 集成测试按照 PRD 来一套
    3. claude code 的 simplify , review 按照模块挨个来 5 遍。
    4. 再基于 PRD 复核 代码实现是否一致, 来个几遍。
    5. 没事在用 astra ,fable review 下代码
    6. 阿里 出了 open code review , 也来个几遍。

    差不多可以了。
    ddhYr
        58
    ddhYr  
       6h 5m ago
    业务梳理清了吗,测试用例有了吗,你重构有人和你一块吗
    chitanda
        59
    chitanda  
       3h 13m ago
    你应该把用的哪个 ai ,什么时期去写的发出来。现在 AI 之间的差距比人还大,而且随着时间迭代更是夸张
    lozzow
        60
    lozzow  
       1h 54m ago
    5.2 的代码让 5.5 重构,5.5 的代码让 6 来重构,至于 6 的代码,你就等 7 来重构
    yidinghe
        61
    yidinghe  
    PRO
       1h 14m ago via Android
    想要赚钱就得继续投入,这个道理都不懂吗。先让 AI 分析问题,如果能不动数据库设计,就重构,否则考虑重写。
    akira
        62
    akira  
       51 mins ago
    先让 AI 梳理现在 系统的现状, 形成 相关 技术架构文档,技术详细设计文档, 数据库设计文档,需求文档 等等。 当然了,AI 时代了, 这些文档一定是 md 格式的, 并且最好用 llm wiki 之类的结构来存。

    然后就可以安排 AI 开始进行重构了, 先分析问题,形成重构需求, 再安排 AI 逐个进行重构 验证。

    其实就是把重构需求 视为 一个普通的开发任务,让他自己去折腾就是了
    nuo7mi7
        63
    nuo7mi7  
       41 mins ago via Android
    上线后直到现在,大大小小的问题从来没有间断过

    这个没有对应 qa 人员测试吗,虽说有 ai 但是该有的质量流程还是得有啊,既然没有那就不能要求没问题,所以公司省钱那都是有代价的
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   3164 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 196ms · UTC 13:12 · PVG 21:12 · LAX 06:12 · JFK 09:12
    ♥ Do have faith in what you're doing.