AI写的代码为何金玉其外败絮其中

简介: 本文分析AI编码看着好看其实很烂的现象、原因,探索行之有效的的解决方案。并从理论上延伸到如何更好的与AI协作的方式上。

惊艳与惊吓

最近重度使用了一段时间的AI编码,基本上和AI创作,AI写ppt一样: 初一看,惊艳!仔细一看,错了,是惊吓!!

尤其是功能略微复杂一点点,需要多次迭代的时候,基本上就是一套石山嵌另一套石山,功能三分,垃圾五分,还有两分是莫名其妙的东东。

需求规格说明

当然,软件工程本身是个复杂的事情,开发质量不行,最终源头还是需求上,于是我们备足了需求规格说明。 有所改进,AI编码终于大致可用了。 但是也没能坚持多久,迭代次数一多,还是一堆垃圾。

从指令到协作

于是我们转为很礼貌的沟通方式。 每次不再是下指令,而是描述完需求后,补充一句:我说明白了么? 就跟我们平常讨论项目时一样,不在把你明白没,你知道么,听懂了么挂嘴边,而是常说不知道我介绍清楚没。

这是一个很有效的改进方式,AI现在会更全面的考虑我的需求了。 看起来 AI 似乎也有了几分人性。 跟人有效的沟通,放到AI上,也一样生效。

走向正循环

事实上,这种方式只是稍微有所改善,但因为有效,所以我们进一步推进了这个机制,形成了一个三步法:

  1. 第一步,首先明确的提醒,在没有足够确定的理解的情况下,不得开始改代码。
  2. 第二步,描述具体的要求。
  3. 第三步,询问我是否介绍清楚了,有任何不确定的地方,随时问我。

这个机制目前实践下来,是个非常有效的机制,能大幅度减少AI堆积石山的情况。(这点不点名批评下某些AI编码助手,每次都迫不及待的的开始改代码,才说一两句就开始改。有时甚至靠揣测就动手改,不得不频繁的手动中断他的动作)。

就绝大部分普通情况而言,上述的机制能基本有效的推动AI编码朝可用方向发展。大致上是能持续进行的。(如果不用这种方法,基本上堆积的石山迭代个几次就能让AI都卡壳)

但对于一些要求高,流程略复杂,且不是通用流行做法的地方,仍不足以彻底解决问题。这个机制还可以更深次的发展一下。

首先,询问我是否介绍清楚了这个基操必须时时坚持。

其次,再碰到AI有误的时候,要求更改时,还得进一步询问,对于我的介绍,你是否有存疑的地方,需要我澄清的列出来。

最最重要的一点,碰到莫名奇妙的代码,要询问AI,你的理解是什么,你做出这个设定是基于哪个需求规格。

这种方式帮我们解决了一个隐藏的大祸根:我们在需求规格上定义的很清晰,但是在另一份数据字典 [^shujuzidian]的文档上,借助了AI来维护文档,AI更新字段说明时,按照常规的理解给了字段跟需求规格上定义不一样的含义说明。这个就导致了代码里偶尔就会出现奇怪的名词和跟名词对应来的思路和方法。

如果不是追根溯源的话,我估计这个软件及时再高明的AI,再多迭代几十次,也解决不了四处混乱的逻辑。

之前我们总以为给AI下指令就行,但到了复杂任务这里,我们不得不谦虚的认AI是个朋友,伙伴。 时长问他:这个地方是不是我介绍的不够到位? 我的要求是否有遗漏或是不足之处? 针对刚才的BUG我的需求规格是不是要完善一下?

到这里,基本上AI编码就能走向正循环了:不停的迭代能改进功能和代码。 具备了实际的生产意义。

沟通理论

回过头来反思下,我们跟AI沟通的提升,与跟人沟通的提升是完全类似的。只不过我们跟人沟通的效率,当时是看不出来的。这也实际导致了很多主导型的领导喜欢四处讲话,讲完顶多问句明白没,实际上没任何效果。 真人的沟通会困难很多,即便是友好的沟通,很多人也不会再被问到明白没时说不大明白。而且由于效果需要很长的时间才能体现出来。因此很难让人觉察到实际上是沟通出了问题。
跟AI不一样了,你沟通的不好,他的效果是直接且立刻的。你能看到AI频繁的辛苦的分析和创建代码,你也能看到他产出的是不是你想要的,有效的代码。 这种快速的反馈实际上就对我们的沟通能力的要求也就更高。

理论上来说,我们描述的需求,有两个维度的问题。

第一个维度是沟通中的信息丢失问题:我知道的 => 我表达的 => 对方接收到的 =>对方理解的。 每一层信息都有丢失和失真。 再跟真人协作的过程中,这个丢失和失真其实更严重,只不过作为人,人能熟练的掌握了另一门哲学:甩锅。 造成的不良后果,强调我已经发出来就行,只要不承担责任,就无所谓。

再跟AI沟通过程中,说实话,人的甩锅天赋仍是时不时的发作的。我们用AI开发过程中,基本上没有不骂AI的。(这里真诚建议下,如果以后有出AI实体机器人的,记得要加上钢铁护罩,一定要抗砸)。
但是骂AI他也听不见,就算是敲字骂他,他也没脾气,但对效果也没任何帮助。

这个维度导致的必然结果就是发现骂AI也没效果后,还得自己反思下自己是不是哪儿没说清楚。 要么你从沟通理论上学习到你自己要如何更好的表达,要么就是你使劲的骂AI,累死也无果后不得不自己想想是不是自己没说清楚。

另一个维度就是知识界限的维度。
用AI工具,有一个很好比喻:就是你是一个十年经验大专毕业的老师傅,领导给你配了一个清华硕士的实习生。你问实习生这个事情怎么干,他能从孔孟讲到爱因斯坦,从微观经济讲到世界大局,问无不答面面俱到。然后你让他去干个小活操作下,他能立刻给你搞出生产事故来。

怎么办?还得继续咨询他,仰仗他,但不得不随时盯着他。每一步就要仔细的审核确认。 这里我们有个比较独门的心得,就是做架构设计时,优先考虑切面模型,这种模型能做很好的隔离,避免错误的蔓延。然后就是对AI提要求时,提前让他做好测试。

就跟盯着清华硕士实习生干活一样,做一点确认一点。 而且AI的好处就是他不怕麻烦,所以尽可以放心大胆的要求AI,每个函数都写一个单元测试以确保该函数正常工作。 基本上这种一步一个测试的做法,就能很好的保证代码质量了。

理论上来说,我们掌握着领域知识,我们清楚自己要做的事情的业务逻辑,但是在专业知识上是无法和AI比拼的。而AI掌握着通用类的知识,他不知道我们想要的东西是什么样的,可能对我们细分领域也不是很了解。

这实际上比较良好的知识互补的情形。但是AI他不仅仅是知识,他还有创作能力。因此在这个过程中,既要全面的向AI介绍我们了解的知识,还需要借助AI的知识领域和创作能力,反馈,提示我们所不了解的知识,有时甚至是全新的创意。

这就是一个很完整的跟人互动的过程。

从奴隶到将军

最末,问下AI怎么想这个问题的。AI的回复是:不要把和AI的关系视为"主仆"关系,指令性的交互效果有限,而是要将和AI的关系视为朋友,伙伴,同事,共创伙伴,才能更好的发挥效果。

这不是观点,这是事实。你可以继续以主仆的方法操作AI,直到你撞的头破血流的时候不得不回到伙伴这种一下子就能更好的解决问题的方式上来。

可能这里你已经注意到,AI已经确定无疑的从仆从身份升级到平等得伙伴身份了。由此带来的下一步趋势思考,目前AI能力有限得情况下,人类已经不得不平视了。后续AI继续快速演化, 人类马上是不是不得不仰视AI,才能活得更好?

::: {#author name=reddish}
本文同步发表在 软件需求探索https://srs.pub/thinking/vibe-coding-cooperation.html

作者: reddish@srs.pub
:::

[^shujuzidian]: 商业分析中的五十种分析方法和技巧之12-数据字典. https://srs.pub/babok/shuju-zidian.html

目录
相关文章
|
2月前
|
人工智能 IDE Java
AI Coding实践:CodeFuse + prompt 从系分到代码
在蚂蚁国际信贷业务系统建设过程中,技术团队始终面临双重考验:一方面需应对日益加速的需求迭代周期,满足严苛的代码质量规范与金融安全合规要求;另一方面,跨地域研发团队的协同效率与代码标准统一性,在传统开发模式下逐渐显现瓶颈。为突破效率制约、提升交付质量,我们积极探索人工智能辅助代码生成技术(AI Coding)的应用实践。本文基于蚂蚁国际信贷技术团队近期的实际项目经验,梳理AI辅助开发在金融级系统快速迭代场景中的实施要点并分享阶段性实践心得。
432 25
AI Coding实践:CodeFuse + prompt 从系分到代码
|
3月前
|
人工智能 自然语言处理 IDE
模型微调不再被代码难住!PAI和Qwen3-Coder加速AI开发新体验
通义千问 AI 编程大模型 Qwen3-Coder 正式开源,阿里云人工智能平台 PAI 支持云上一键部署 Qwen3-Coder 模型,并可在交互式建模环境中使用 Qwen3-Coder 模型。
712 109
|
3月前
|
数据采集 人工智能 监控
零代码改造!LoongSuite AI 采集套件观测实战
在 AI 时代,随着模型和应用侧的快速演化,对于推理过程,成本和性能显得尤为重要,而端到端的 AI 可观测是其中至关重要的一环。本文将介绍端到端 AI 可观测的基本概念与痛点,并通过阿里云可观测团队最新开源的 AI 采集套件 LoongSuite Agent 来对大模型应用进行全链路可观测以解决这些痛点。帮助客户无侵入,低成本地进行全链路的大模型可观测。
320 42
零代码改造!LoongSuite AI 采集套件观测实战
|
2月前
|
人工智能 自然语言处理 安全
氛围编程陷阱:为什么AI生成代码正在制造大量"伪开发者"
AI兴起催生“氛围编程”——用自然语言生成代码,看似高效实则陷阱。它让人跳过编程基本功,沦为只会提示、不懂原理的“中间商”。真实案例显示,此类项目易崩溃、难维护,安全漏洞频出。AI是技能倍增器,非替代品;真正强大的开发者,永远是那些基础扎实、能独立解决问题的人。
216 11
氛围编程陷阱:为什么AI生成代码正在制造大量"伪开发者"
|
3月前
|
人工智能 测试技术 开发工具
如何将 AI 代码采纳率从30%提升到80%?
AI编码采纳率低的根本原因在于人类期望其独立完成模糊需求,本文提出了解决之道,讲解如何通过结构化文档和任务拆解提高AI的基础可靠性。
1014 24
|
3月前
|
人工智能 数据可视化 定位技术
不会编程也能体验的 AI 魔法,外滩大会代码原生地等你解锁
不会编程也能体验的 AI 魔法,外滩大会代码原生地等你解锁
413 39
|
3月前
|
数据采集 人工智能 监控
零代码改造!LoongSuite AI 采集套件观测实战
本文介绍了AI应用生态的快速发展及可观测性的重要性,重点阐述了LLM(大语言模型)应用的复杂性对全链路监控的需求。LoongSuite作为开源的可观测性数据采集套件,提供无侵入式埋点、全栈观测与多语言支持,助力AI应用实现从端侧到模型层的端到端链路追踪,提升系统稳定性与运维效率。
214 1
|
2月前
|
人工智能 监控 Java
零代码改造 + 全链路追踪!Spring AI 最新可观测性详细解读
Spring AI Alibaba 通过集成 OpenTelemetry 实现可观测性,支持框架原生和无侵入探针两种方式。原生方案依赖 Micrometer 自动埋点,适用于快速接入;无侵入探针基于 LoongSuite 商业版,无需修改代码即可采集标准 OTLP 数据,解决了原生方案扩展性差、调用链易断链等问题。未来将开源无侵入探针方案,整合至 AgentScope Studio,并进一步增强多 Agent 场景下的观测能力。
1482 34
|
2月前
|
人工智能 安全 开发工具
C3仓库AI代码门禁通用实践:基于Qwen3-Coder+RAG的代码评审
本文介绍基于Qwen3-Coder、RAG与Iflow在C3级代码仓库落地LLM代码评审的实践,实现AI辅助人工评审。通过CI流水线自动触发,结合私域知识库与生产代码同仓管理,已成功拦截数十次高危缺陷,显著提升评审效率与质量,具备向各类代码门禁平台复用推广的价值。(239字)
452 24

热门文章

最新文章