vibe coding 的最佳实践到底是什么? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
sillydaddy
5.53D
4.92D
V2EX    Joe's Talk

vibe coding 的最佳实践到底是什么?

  •  
  •   sillydaddy 1 月 22 日 2832 次点击

    最近烦恼

    一个小项目,把项目说明 PROJECT . md、用户故事 PLAN . md、原型图 prototype ,都给到了 AI ( opus 4.5 ),希望 AI 能一次性长时间编码。

    AI 倒是吭哧吭哧编码了 20 分钟,我满怀期待,结果一看,4 个前端 tab 页对应的 4 个功能,基本不能用。感觉就像一个不负责任的人,连自测都没有测过!

    编程的最佳实践是什么

    AI 编程出现的问题,并不是不能理解需求。第一次给它原型图,它从中抽取的功能点非常准。但实现时,有几个问题:

    1 是有些要求它直接忽略了。比如我希望渲染一个节点网络,用户可以点击某节点,展开和收起它的相邻节点。这个功能描述,在原型中和 PLAN 中都是有的,但 AI 做的时候似乎直接忽略了。也许它做了,但功能没有用,看过程,它也是有自测的。

    2 是prompt 不能描述所有的信息,没描述的 AI 可能就考虑不到。比如给每个节点添加了一个+号按钮,用来表示收起和展开,但拖拽节点时,这个+号按钮并不会跟随移动。

    总结一下就是,长程编码任务,AI 不能很好的完成,总有挂一漏万的感觉,虽然都说要小步快跑,但是毕竟麻烦啊;而隐含的常识,AI 有欠缺,感觉必须非常详细的说明。

    第一性原理的思考

    我现在对 AI 的感觉是,AI 修 bug ,编码单个功能,感觉是不在话下的。但涉及到长程的、意图推测的,就不太行。

    回归到第一性原理,我尝试把 AI 编码过程,看作是一个在巨大的空间中,寻找解的过程。一个编程任务,就是要在这个巨大的多维空间中,寻找到一个解。

    一旦从这个视角看,很多问题就容易理解了:

    约束

    解的空间是巨大的,要想办法快速找到解。

    约束是在给定的空间内求解,剪枝,缩小搜索范围。

    如果约束越多,解空间越小,理论上应该更容易找到解。但实践中:

    约束太少 --> 解空间太大,AI 乱跑,找到的解不符合要求;

    约束太多 --> 可能根本没有解(约束互相矛盾);

    架构

    因为一个任务,可能有非常多的解。

    不同的架构其实对应了不同的区域的解。架构其实是将解的求解范围,约束在了一个范围区域。

    所以架构很重要,要早确定。一旦确定了架构,后续的求解过程,就都在这个范围区域内进行了,除非用户手动要求调整架构,求解才会「经由用户指定的路径」跳转到另一块区域。

    验证

    验证和反馈,是一种修正的信息,让现有的解结合修正的信息,往正确的解集上靠。让不符合的解,走向正确的解。

    全局和局部

    代码的各个部分之间存在耦合,一些修改,可能会影响到很多地方。问了 AI ,说在修改一个"全局相关"的东西(效率、架构)时,实际上是在高维度上移动,这会同时影响很多低维度的投影。

    而局部的 bug 修复,或单个功能的实现,是在低维度上移动,也就是在局部范围内寻找解,它的影响范围有限。

    vibe coding 实践的对应物

    Rules = 显式的全局约束,定义解空间的边界;

    Skills = 预定义的子空间/模式,是已知的"好解区域";

    Examples = 锚点,直接在解空间中标记"这里有解";

    隐性知识

    人类的隐性知识,其实也是对解的一种筛选或者约束。AI 没有这些隐性知识,或者没有实际用到它们,那就意味着求得的解不符合这些隐性约束。

    启发

    不过,抽象的思考总是很容易,实践起来困难重重。

    从上面的分析,得到的都是些 trivial 的东西,我感觉「架构要早行」这个印象比较深刻。但总的来说,仍然没有得到一个最佳实践。

    最佳实践到底是什么啊?!

    Solana
    V2EX 支持通过 Solana 网络向内容作者打赏
    JoeJoeJoe 打赏了 2 次,总共 520 $V2EX
    28 条回复    2026-01-23 11:32:09 +08:00
    cat9life
        1
    cat9life  
       1 月 22 日
    从一开始你就错了。
    目前还做不到很长时间的自主编码,不要在这方面浪费你的精力除非你就是 ai 行业大佬在探索边界。真能够“自主”Manus 就卖不到 20 亿刀乐。
    chtcrack
        2
    chtcrack  
       1 月 22 日
    目前最佳途径是增加你自己的认知,知道大模型的上下文是有限的..记住这点..
    RotkPPP
        3
    RotkPPP  
       1 月 22 日
    现在这个话题算是 v 站日经了
    jmliang
        4
    jmliang  
       1 月 22 日
    让 AI 先指定计划,分阶段完成,每个阶段自己验收一下,有问题就让 Ai 改,没问题继续执行后续计划
    hi2hi
        5
    hi2hi  
       1 月 22 日
    创建 project.md ,AI 推到 plan.md ,人工预审 plan.md ,提出调整意见;根据项目复杂程度,决定是否拆分更细化的 plan-*.md ;
    开始 ai coding
    先让 AI 检测本次 coding 是否符合 plan ;
    人工查看本次 coding 重要模块;

    担当测试工程师,开测,开始和 AI 掰头
    yrom
        6
    yrom  
       1 月 22 日   1
    哪有什么「最佳实践」这种银弹。比如 Cursor 的开发团队,他们研究 Agentic Coding 可以算顶尖吧?最近拿出来吹的让 GPT-5.2 连续运行 7 天写出来的几百万行代码的浏览器,不说很多大佬扒它裤子看本质就是个「调包侠」,烧这么久 Token 出来的玩具,开源放出来工程质量一塌糊涂,编都编不起来
    sillydaddy
        7
    sillydaddy  
    OP
       1 月 22 日
    @yrom 感谢分享,这个新闻我得看看去。
    sillydaddy
        8
    sillydaddy  
    OP
       1 月 22 日
    @hi2hi #5 前期基本是按照你说的,plan 做好了,大概的用户故事都是有的,但就像主题里说的,没有做到特别细,但就是很多没有明确的,AI 就会掉链子了。我想尝试的还是希望减少人工介入。
    hi2hi
        9
    hi2hi &nbs;
       1 月 22 日
    @sillydaddy 这一方面还是差了点,或者说,还是预期太高了;
    超长的上下文整理的,整个项目不断产生的记忆自动化向量处理等等。。。。还是很难,目前
    再等两年,你现在往前看看,已经算是翻天覆地的变化了(
    doraemonki
        10
    doraemonki  
       1 月 22 日 via Android
    基础原理:
    一次任务占用的上下文越少,AI 越聪明!!!
    一次任务占用的上下文越少,AI 越聪明!!!

    编码之前做写好分阶段计划,写计划的时间占至少占了 60% ,code review 修 bug 时间占 30%,实现代码是很快的。

    最初版的计划必须不断改,起码让 AI 改 10 轮吧,不断质问 AI 这计划合理吗,这计划有问题吗,不考虑兼容性这计划最佳设计应该是怎么样的(不同方式提问很有不同角度的惊喜)

    另外跟人一样,设计代码应该追求语义清晰,代码可读性与良好的项目结构能帮助 AI 快速定位修改位置。

    请直接使用 opus4.5 等最聪明的模型,搭配严格的项目规范+测试,保证你 vibe coding 直接起飞。
    参考 vibe coding 最佳实践之约束带来自由 t/1182388
    Cyron
        11
    Cyron  
       1 月 22 日 via iPhone   1
    不清楚你有没有在一开始把架子搭好,还是完全空白的项目开始
    我一般会预估这个任务的 context 用量,如果超过了 50%容易导致上下文腐坏,agent 会迫于压力敷衍了事
    cursor 之前发了个博客说各家都在做上下文工程,这个问题会逐渐得到改善
    建议就是,先搭好架子,让 agent 专注实现;再就是别指望一次生成,先拆 task ,然后分 session 逐个完成;另外可以引入 playwright mcp ,让 agent 获得反馈
    我们团队是这样做的,可以看看我之前的分享
    t/1183407
    JoeJoeJoe
        12
    JoeJoeJoe  
    PRO
       1 月 22 日
    现在的变化太快了, 今天的最佳实践, 到明天说不定就不是最佳了.

    就是每天学一点点小技巧, 能用上, 觉得好用就算赚了

    如果在未来和年轻人回忆现在, 我们也可能只是说一句: 你们赶上了好时候, 我们当时的 AI 辅助可复杂了!
    y1y1
        13
    y1y1  
       1 月 22 日
    写点小函数差不多得了
    wszzh
        14
    wszzh  
       1 月 22 日
    最佳实践就是实践
    dnfQzjPBXtWmML
        15
    dnfQzjPBXtWmML  
       1 月 22 日
    没有

    不过每次只生成一个模块可以提高成功率,改乱了进了死胡同也可以直接要求 LLM 全部删掉重写,重写的代码往往是没问题的
    Sylphiette
        16
    Sylphiette  
       1 月 22 日
    模型技术和 Agent 生态都还在发展,而且发展的还很快
    现阶段可以了解下 https://github.com/github/spec-kit
    sillydaddy
        17
    sillydaddy  
    OP
       1 月 22 日
    @doraemonki #10 测试 driven 这个马上安排上,即使是 UI 界面这种,也搞一个文字版的测试用例,看看效果怎么样。
    @Cyron #11 感谢分享,现在正弄 Cursor 的 rules ,正用的上。
    @JoeJoeJoe #12 是啊,我太想一口吃个胖子了。
    @Sylphiette #16 好的,spec 也给安排上。
    AEDaydreamer
        18
    AEDaydreamer  
       1 月 22 日
    现在的 coding agent 还是每次让它 plan1-3 个模块好一点. 整个系统就是丢三落四.
    meeop
        19
    meeop  
       1 月 22 日
    当然是像自动驾驶一样,全自动完成全部工作,作为人只需要提出需求,监督过程,审查结果,而且通常情况,这部分也不必须做,你只是发布命令和想法即可

    目前的技术还做不到,小项目勉强能做到,不过目测非常快,很可能今年或者近几年就能无限接近上述目标

    所以,长远看,这个问题也没必要问,等 agent 进化即可,反正你现在做的所有改进,最多几个月内 agent 就能追平,几乎是纯无用功
    myluke
        20
    myluke  
       1 月 22 日   1
    我很认同这个哥们说的和比喻。

    AI 是能力的放大器,更是建筑师的包工头

    怎么说?

    Vibe Coding 软件真的要走得远,本质是你要理解什么是 Vibe Coding

    Vibe Coding 和建筑师很像

    你终于有一天是建筑师了,只用坐在办公室了,不用亲自打地基、了解材料热力学特性、走网络、做软装和外墙造型了,你只用坐在办公室规划图纸就好了

    Vibe Coding 的最后就是建筑师职业

    但是一个优秀的建筑师,以前肯定知道怎么造楼的方方面面,跑过无数次工地,被各种大的小的事情坑过无数遍,无数遍经验造就了设计师的能力

    编程也是一样的,你只有趟过无数个坑,你才不会被 AI 坑到,你才会在 AI 走入死胡同的时候拉它出来,给它新的方向,你才会虽然不看代码,但是看表现就能知道它代码结果哪里没设计好

    而这一切都源于你做过,你擅长,你知道怎么收尾

    AI 本质就是在你知道的认知领域,按照你的指挥,帮你干体力活,如果你已经做过很多模块,新的软件只是把过去的模块重新组合创造,那么 AI 很合适,因为它像一个任劳任怨的同事再给你干苦活累活

    如果你没有干过建筑师,你才盖了一个毛坯房,你就觉得自己牛逼,但是你会发现,你盖到 2 楼你就盖不下去了,你不知道怎么通过合适的提示词控制 “AI 这棵树怎么精确生长”, 你的业余的话只会给 AI 增加过多的冗余代码,直到有一天,上下文超过 AI 的脑容量,你再说什么它都是糊涂的

    本质 Vibe Coding 到商业化的方法途径就是三个:
    1. 自己曾经是商业化落地的程序员,过无数坑

    2. 新的软件本质是新的架构,大脉络一定要清晰,脉络不清晰,楼盖不高

    3. 骨架改好了,其实剩下的事情很简单,在某一个维度(约束上下文),人类做测试,AI 微调,知道水电、软装和外墙装好
    rick13
        21
    rick13  
       1 月 22 日
    现在没有最佳实践
    cskeleton
        22
    cskeleton  
       1 月 22 日
    还能继续,我让 AI 写一个开发计划,然后拆分成 n 个步骤,每个步骤写一个 workflow ,然后让 AgentA 写一个,写完让 B 来 review ,但是这样人工介入比较多了,拆太细 AI 写得也快,还达不到一口气写 20 分钟这种。倒是很后期要修改或者 debug ,cursor 能一口气跑几 M tokens 。
    notwaste
        23
    notwaste  
       1 月 22 日 via iPhone
    @cskeleton 这么弄不一定有自己写效率高了
    cskeleton
        24
    cskeleton  
       1 月 22 日
    @notwaste #23 写的时候可以让多个 agent 一起写,还是快的
    sillydaddy
        25
    sillydaddy  
    OP
       1 月 22 日
    @cskeleton #24 我看到 cursor 有 subagent ,是不是这个呢? subagent 一般怎么用啊,比较困惑这一点。如果是为了减少单个对话的上下文,是不是每个子任务都让 subagent 去做呢?
    nijux
        26
    nijux  
       1 月 23 日   1
    cskeleton
        27
    cskeleton  
       1 月 23 日
    @sillydaddy #25 思路上有些类似,上下文也是隔离的。subagent 刚更新的吧,可以看看官方文档。
    goodboy95
        28
    goodboy95  
       1 月 23 日 via Android
    说个跑题的事情:我主程让我在开发复杂的功能时,一定要先写开发文档,在这个过程梳理思路,写完之后让他确认一下,没有明显问题再开发。
    如果写开发文档的过程中,发现描述模棱两可的功能,务必及时与需求方沟通,让需求方把需求明确一下。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2539 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 11:08 PVG 19:08 LAX 03:08 JFK 06:08
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86