公司开始全面 vibe coding 之后感觉更累了 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
wxiao333
V2EX    程序员

公司开始全面 vibe coding 之后感觉更累了

  wxiao333 8 小时 14 分钟前 3758 次点击
最近 15 人小组实践 vibe coding 遇到了一系列问题。整的我们连续加班了 1 个月。

项目背景:
公司里的核心项目。涉及资金流企业级复杂架构,对系统的稳定性和高可用性要求极其严苛。
这个项目是专门为大促(比如双 11 )这种极端高并发流量设计的,里面充满复杂的业务逻辑,比如多层级的数据核对、消息补偿机制和各种应急预案。技术路线上使用公司自研框架上从 0 到 1 开发。
而且压力大的是,它是个倒排期项目,上线时间给定死了,一秒都不能拖。

准备阶段:
这次开始前我们内部讨论了很久,决定采用 SDD (规范驱动开发) 模式,即由规范和文档驱动 AI 进行架构设计、系统开发以及单测和集测的编写。
出于数据安全的考虑,团队申请了一个全新的项目仓库。明确要求 AI 不能读取公司既有的私有代码库,以规避潜在的合规风险。
由于 AI 缺乏对公司内部定制或自研框架的了解,我们手动编写了大量示例代码和 Todo 供 AI 学习。
团队预先定义了多个 Agent (智能体),并设计了详细的 Workflow (工作流),试图通过流程化来约束 AI 的发散行为。

惊喜的开始:

详尽且专业的架构文档:AI 产出的架构设计文档看起来非常完善,甚至比人类写的还要好得多。人类写文档时往往会基于“常识”而忽略一些细节或内部约定,但 AI 会写得非常详尽,不遗漏细节。
惊人的开发速度: 在纯开发阶段,AI 展示了极高的效率。内部估算,如果是由人类工程师完成该项目的纯开发工作,大约需要 15 到 20 人日,而 AI 仅用了 3 天时间 就完成了所有的代码编写。
高质量的代码注释与异常处理: 我们平时为了追求开发速度,有可能对注释和异常处理的相对简单,但 AI 编写的代码在注释质量和异常处理机制方面比人类工程师开发出来的要好很多。
清晰的设计与逻辑分层:AI 在接收到相关知识后,能够定义出非常清晰的类图、方法、依赖关系和分层结构。它会先进行详细的设计,明确每个类的职责,初步看过去代码质量非常不错。
代码初期的易读性:AI 初步生成的代码逻辑相对直接(偏“面条式”代码),没有过度使用复杂的架构模式或抽象,这使得人类在第一眼看过去时觉得逻辑非常清晰且好理解。

不过这样的蜜月期,并没有维持多久,很快我们开始遇到各类问题,加班也多了起来。

遇到的问题:

1. 技术与代码质量问题
逻辑伪造与“将错就错”:AI 在面对缺失的知识、错误的接口文档或注释时,会伪造逻辑或猜测( Mock )返回格式。遵循“垃圾进,垃圾出”( GIGO )原则,如果输入信息有误,AI 的产出必然也是错误的。
错误传播与测试盲区: 如果 AI 基于错误的架构分析生成代码,它也会基于同样的错误逻辑设计测试用例,导致单测和集测无法发现逻辑漏洞。
产生“屎山代码”: 虽然 AI 初步生成的代码看似整洁,但在经过人工点对点的调试修复问题后,代码会逐渐演变成难以维护的屎山代码,。
缺乏企业内部知识: 由于数据安全限制,AI 无法读取既有的私有代码库,且对企业内部定制或自研的框架缺乏了解,导致其难以写出符合要求的代码。
不符合开发规范:AI 编写的代码往往不符合团队内部的开发规范或习惯(如事务处理方式),导致人类工程师在 CR (代码评审)或维护时感到非常困难。

2. 架构与设计层面的局限
输出不稳定与概率推断: 基于 Transformer 架构的 AI 本质上是概率推断模型,同样的输入和提示词产生的输出是不稳定的。我们为了研究针对本项目最佳的 AI 沟通方式,不断的测试修改各种提示词,花费了不少时间。
上下文限制与“遗忘”:AI 的上下文处理能力有限,在解决具体问题时可能会忘记之前的全局设计,导致代码复用性差,甚至在同一项目中针对相同问题重复编写不同的代码。
“只见树木不见森林”:AI 容易陷入局部逻辑,忽略全局影响,例如在修改代码逻辑后忘记更新注释或相关的单元测试。
文档过度冗长:AI 喜欢编写极其详尽、甚至带有重复内容的长文档,这增加了人类阅读和理解的成本,往往 AI 5 分钟输出的内容,我们要花 1 个小时去理解。

3. 工作流程与效率悖论
工作强度反而增加: 使用 AI 后,程序员的工作时长变得更长、更累,甚至需要工作到凌晨,这与“AI 减负”的初衷相悖。
由于过度约束导致的“犯傻”: 为了约束 AI ,开发人员会定义越来越多的 Agent 和复杂的 Workflow ,但约束过多会导致 AI 出现“过敏”或变得笨拙,丧失了发散性思维的能力。
Token 消耗巨大: 复杂的 Workflow 和长指令会导致 Token 消耗量激增(每天消耗上亿 Token ),导致成本异常昂贵。
陷入“面多加水”的死循环: 当 AI 做不好时,人类倾向于增加更多 Agent 或约束,这使得系统越来越复杂,最终效果反而变差。

4. 心理压力与管理挑战
认知负荷与上下文切换: 领导层可能误认为 AI 能大幅提升生产力,从而给程序员安排更多并发项目,导致程序员需要在多个 AI 窗口和项目背景间频繁切换,造成脑力枯竭,。
巨大的“不安全感”:AI 的自评分往往虚高(比如 AI 设计的架构或算法,我们让 AI 给自己打分结果他给自己打 98 分),但人类很难一眼看出其逻辑中的隐患。由于不理解 AI 某些设计的意图,人类工程师会产生强烈的不安全感和心理压力,。
信息爆炸:AI 产出的海量文档和代码需要人工进行大量审查( Review ),这一过程极其消耗精力。


后续反思
1. 明确 AI 的适用场景:
推荐场景: 编写一次性脚本、处理数据报表、编写复杂的 SQL 、整理文档、画图、辅助理解不熟悉的既有代码、查 Bug 、以及编写基础的单元测试和集成测试代码。
限制场景: 涉及核心业务逻辑、复杂资金流、高可用架构设计时,必须由人类主导。
2. 坚持“人机协作”而非“全权委托”:
建议通过 Web Coding 的方式,让 AI 按照人类提供的模板类和示例代码进行学习和约束。
核心逻辑必须按照团队的开发规范和习惯进行重写,以确保代码的可维护性和安全性。
idealhs
    1
idealhs  
   8 小时 10 分钟前   6
感觉你这篇文章也是 AI 的
codingerj
    2
codingerj  
   8 小时 8 分钟前
能问下用的具体是哪个 AI 工具吗
wxiao333
    3
wxiao333  
OP
   8 小时 6 分钟前
@idealhs 兄台高见,本人语文不好,高考差点没及格,确实让 AI 帮润色了一下

@codingerj 不直接点名了,但是是市面上最强的之一
timespy
    4
timespy  
   8 小时 6 分钟前
@idealhs +1 ,这种排版的一眼 ai ,反而没有太大阅读欲望了
forbreak
    5
forbreak  
   8 小时 6 分钟前
你这个是 ai 润色过的吧。试过纯 ai 编写,一毛一样的问题, 所以一直不能理解他们说的零人工参与 ai 写一个项目。 而且后续还要继续长期更新维护的话,ai 的缺点还会放大。
digitv
    6
digitv  
   7 小时 47 分钟前
资金流这种复杂的系统也敢用 AI ,只能说你们牛逼,被各种 AI 忽悠瘸了吧。。。
anytk
    7
anytk  
   7 小时 42 分钟前
如果 AI 不能为代码的后果负责,为什么会相信 AI 能解决程序员的问题呢
m1nm13
    8
m1nm13  
   7 小时 37 分钟前
@wxiao333 不不不,只有最强 opus. 没有之一, 其他之一什么 codex 5.2high 之流在我这早被判定为弱智了
xujia1998
    9
xujia1998  
   7 小时 35 分钟前
不是 vibe coding 太累了,是你们公司领导层太傻逼了
billzhuang
    10
billzhuang  
   7 小时 28 分钟前 via iPhone
项目背景看下来,即使人做,也会是个屎山。
tomczhen
    11
tomczhen  
   7 小时 27 分钟前
假设代码是由人工完成的,但是生产力保持不变,其实还是会出这些问题,只是 ai 让这种假的实现了。
jimrok
    12
jimrok  
   7 小时 26 分钟前
模型还不够强,即使把全部底层代码都喂给模型,也没有足够的上下文理解全貌,至少国产模型现在还不够行。今年能达到什么程度不好说。我一般就是 ai 生成个架构,具体功能不对,我就问 ai ,这个功能控制点在哪里,告诉我代码行数,然后我去修复。
cyio
    13
cyio  
   7 小时 23 分钟前
首次尝试,后面如果再做新项目,是不是会效率更高、更可控
wxiao333
    14
wxiao333  
OP
   7 小时 23 分钟前   2
@timespy 内容都是本人的工作笔记和团队的复盘会记录整理的,干货满满
由于本人语文不太好,文章确实是 AI 润色过的,但绝对不是什么垃圾文章,大家放心阅读。
gorvey
    15
gorvey  
   7 小时 21 分钟前
vibe coding 只适合个人开发学习使用,生产环境只能当副驾驶
PbCopy111
    16
PbCopy111  
   7 小时 21 分钟前   1
为啥不把 AI 当成辅助工具,人写代码,它负责找 bug 或者 else ,为啥要用它写呢。。。。不明白啊,不明白。。。
xwhxbg
    17
xwhxbg  
   7 小时 18 分钟前   18
看起来贵司是没有调研过 vibe coding 的 workflow 导致认为 vibe coding 就是跟 AI 聊天导致的问题

上下文这个是通过 beads 数据库解决的,所有的 commit 和 LLM 的 plan 都会存里面,这样即使上下文 compact 了也会自动取数据库里的东西,能明白某个函数当初为什么这样设计,现在我们改动会如何影响那个设计

人为调试,这点看起来是因为用 prompt 根 LLM 说不通所以懒得搞了直接人工上,实际上你应该把你调试的过程,用 LLM Prompt 一步一步实现,请 LLM 帮你去调试,例如加日志,启动测试环境等等,最终把这个过程萃取成 skills

幻觉问题,很显然你们没有任何 rules ,LLM 可以随便撒谎,不做 fact check

垃圾代码,你需要一个插件去让 LLM 精简代码,参考 https://github.com/anthropics/claude-plugins-official/blob/main/plugins/code-simplifier/agents/code-simplifier.md ,然后在 PR 阶段用 LLM review ,可以有效避免因为概率问题导致的 oneshot miss
npe
    18
npe  
   7 小时 13 分钟前
偷偷用就好了,闷声发大财
iOCZS
    19
iOCZS  
   7 小时 2 分钟前   1
edenzhang
    20
edenzhang  
   6 小时 58 分钟前
很有帮助
bigtear
    21
bigtear  
   6 小时 57 分钟前   1
好文,清晰的总结了现在 AI 的局限性,与我个人体验一样。看起来文章用 AI 润色过,但内容很有参考性。

我从 AI 刚出来的时候就在用,新旧项目都用 AI 处理过,从 Claude 3.5 时期用 Cursor 到现在 Claude 4.5 用 CC 、反重力、Cursor 、CodeX ,也算经验丰富吧。

尝试用 AI 从零开始、和修改现有的许多前后端分离的项目,越到后面 AI 越吃力,根本原因是 AI 现在的上下文窗口长度太小,记不住东西。在解决这个问题之前,只能作为副驾驶,替代人类还尚早。

楼上给出的解决方案是太理想化了,理论上可行,但在现代项目中,现在流行的各种 Skill 、Rules 都解决不了这个根本问题。必须要人类来主导操刀。越到后面人类介入的次数要越多,Token 消耗数量也是天价。

但是在 “做出一个像样的东西” 这方面,因为后端可验证,现在基本上是没什么问题了,前端如果解决了自动化测试的问题也只是时间问题。缺点就是代码质量很差劲,容易出现面条代码。

但是在可预知的未来,AI 迟早会进化出新的范式解决这个问题,编程这个行业已经彻底的要沦为夕阳产业了。各位早日寻找后路吧。
zhuwd
    22
zhuwd  
   6 小时 56 分钟前
写的挺好,有些问题也是我们所面临的,用着用着发现我们成 AI 的助手了,被 AI 牵着鼻子走,倒反天罡
bigtear
    23
bigtear  
   6 小时 51 分钟前
@xwhxbg 很不错的实践,学习了
54xavier
    24
54xavier  
   6 小时 41 分钟前
昨天 leader 给我看了他用 Qoder 开发的一个项目,通过 ai 实现全栈开发,并且可以自动测试代码。他感觉成就满满,ai 很好用,不过在我的眼里就感觉界面很粗糙,时不时点一点还有报错,不知道他为什么那么崇尚 ai 。
Clannad0708
    25
Clannad0708  
   6 小时 30 分钟前
@xwhxbg #17 老哥很细节啊,有没有那种最佳实践的方式,提到了你用到的所有的部分,最近想做 vibe coding 但是只会聊天......你提到的这些都没接触过。。
powerkai
    26
powerkai  
   6 小时 15 分钟前
很好的文章 很有启发
Erroad
    27
Erroad  
   6 小时 10 分钟前   1
@54xavier #23 因为 leader 不亲自做交付,不知道验收需要精细到什么程度。他的预期只是跑 demo
yangyaofei
    28
yangyaofei  
   5 小时 25 分钟前
问个问题, 这里面整个程序的框架的设计是人做的还是只是输入需求/测试/spec 让 agent 自己来?

如果没有框架设计的话, 直接将开发任务细分到 class/function 级别, 会不会得到不灾难的效果
ytmsdy
    29
ytmsdy  
   5 小时 19 分钟前
其实我觉得大项目,大公司,直接起手就是 vibe coding 是有问题的。因为里面的逻辑太复杂了,AI 无法全面理解,或者说是人无法和 AI 全部说清楚。所以会导致 AI 对问题了解不足。
我觉得目前比较好的方式是 cursor 的 plan 模式,把需求拆分成各个功能点,然后按照功能点生成实施 plan ,实施完毕以后对新增的代码进行 review 。
vibe coding 其实对于小项目真的很友好,聊聊天,把业务逻辑说清楚,功能就出来了。
prosgtsr
    30
prosgtsr  
   5 小时 18 分钟前
和我的感觉差不多,可能我也是不擅长驾驭 ai 工具吧

我现在觉得用 ai 最舒服的地方就是让他帮我 review 代码,这个确实省心省力,人类在很多变量之中写代码,很容易把一个变量当作另一个变量。
dcatfly
    31
dcatfly  
   4 小时 35 分钟前   1
AI 擅长做的事情是可以验证结果的事情。

这句话的意思是说,AI 不一定能够把事情一次性做对,但如果能给它明确的结果或问题反馈,它就可以不知疲惫地一直去修改,直到满足结果。

什么是易于验证的事情呢?
比如你让它设计一个模块,规定输入是 A ,得出的结果必须是 B ,那这个模块就是一个易于验证的任务。

什么是不能验证的事情呢?
比如你让它设计一个架构,设计出来的架构是好是坏,往往没有办法通过技术手段直接验证,主要还是靠人+agent 的 review ,由人来评估哪里有问题,再反馈给它进行修改。

所以当你遇到 AI 的行为不满足你的预期时,首先要想的应该是:这个问题能否通过自动化的方式,让 AI 知道他的成果的与你的预期差异在哪里?
1. 如果可以自动化地反馈结果:那这个问题大概率是可以被 AI 解决的。
2. 如果没办法通过自动化形式告知:你能做的就是给它一些好的示例进行参考。但最终结果仍需要你亲自检查,才能保证符合心意。
superJava
    32
superJava  
   4 小时 20 分钟前
我也刷到过 19 楼的视频,op 就是作者?还是把视频文案用 AI 润色了一下拿来发?
livib
    33
livib  
   3 小时 2 分钟前
AI 给企业减负
skylee6900
    34
skylee6900  
   2 小时 59 分钟前
又是 ai 文 ,什么鬼 不会写就别写啊
aoyi
    35
aoyi  
   2 小时 53 分钟前
是多少人天的项目?了解一下项目规模
aoyi
    36
aoyi  
   2 小时 52 分钟前
这篇 AI 实践写的有看头,不是那种领导想象出来的,很有帮助
SpiritQAQ
    37
SpiritQAQ  
   2 小时 37 分钟前
感谢分享
cohen121
    38
cohen121  
   2 小时 34 分钟前
“公司内部库不开放仅提供示例给 AI 参考”, 你把这些前提条件给人来写也写不出正确代码呀。
s5s5
    39
s5s5  
   2 小时 34 分钟前
感谢分享,我甚至感觉和 AI 交互不能超过 10 次,超过了他就不可信。
maclee
    40
maclee  
   1 小时 38 分钟前
感同身受,从评论中学到好多
shenxufei315
    41
shenxufei315  
   1 小时 3 分钟前
故事骨架如果不是 AI 编的那就太扯了,没有通过整体验证就交给 AI 做主力,出了问题人担责,当然难受。如果主题内容都是 AI 编的,这文章就有点浪费大家时间了
关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5334 人在线   最高记录 6679       Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 29ms UTC 09:06 PVG 17:06 LAX 01:06 JFK 04:06
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