Below you will find pages that utilize the taxonomy term “Vibe Coding”
拆解 Vibe Coding:一个信息论视角
从一句咒语开始
动念写这篇文章,是因为最近看到了一些具有神秘色彩的言论,比如说第一性原理咒语:一些人声称,如果在 Vibe Coding 的时候,让模型基于第一性原理思考,会获得更好的效果。听起来,“第一性原理”好像变成了一个魔法咒语,具有了点石成金的魔力。那么我今天也试着用第一性原理,从香农信息论的视角,去拆解所谓的 Vibe Coding 。
信息论视角下的软件
根据信息论的基本观点,信息被用于消除系统中的不确定性,可以把软件建模为“有效信息”的集合。这里的有效信息,并不是一个严格的信息论术语,而是一种便于讨论的定义:它指的是构成该软件核心语义、并使其区别于其他软件的那部分信息。
举例而言,对于一个 SaaS 产品,其架构与技术选型往往属于有效信息;而对于一个面向大众的消费级产品,用户更关心的是其交互体验与视觉设计,这些才构成其有效信息。换言之,“什么是有效信息”取决于使用者的视角。

克劳德·香农(Claude Shannon)。“Claude Code” 实际上就是致敬 Claude 香农。
Vibe Coding 的信息结构
如果回看编程语言的发展路径,会发现它一直在做同一件事:汇编语言对底层二进制进行抽象,高级语言又在汇编之上进一步屏蔽实现细节。按这个演进方向,AI 原本也应该继续抬高软件生产的抽象层级,帮助开发者屏蔽代码本身。
但实际情况并不是这样。AI 的介入是跨层的:它不仅替代部分底层实现,还参与、甚至替代部分高层决策。从这个角度来看,所谓的“有效信息”,其实就是使用者角度所关心的那一层信息;而 Code Agent 会侵入不同层级进行修改。
正因为 Code Agent 的这种特性,我们才可以进一步讨论:在这种协作方式里,究竟哪些信息该由人提供,哪些信息由 Agent 补全。
我们可以把 Vibe Coding 生产的软件拆解为两部分:一部分信息由人类通过 prompt 提供,另一部分由 Code Agent 补全。当人类提供的信息不足时,Code Agent 会选择概率最高的实现方式-这种概率偏好在模型训练结束后就固化了- 这会使软件更容易在架构、交互和实现细节上落入高频范式,进而导致软件的同质化。相反,如果人类提供的信息充足,那么 Code Agent 在很大程度上会退化为一个“翻译器”或“执行器”:它负责将已有的信息,从一种表达形式转换为另一种表达形式。
这就意味着,如果人类通过 prompt 提供的信息足够充足的话,它本质上也已经非常接近实现代码——只是它用自然语言表述。在这里可以引入 Edsger W. Dijkstra 在《EWD667》中的一个经典批评。他指出,“自然语言编程”之所以愚蠢,是因为它试图用歧义的、不确定的自然语言,去替代简洁的、确定的形式化语言。如果我们真能用自然语言描述一个软件,其篇幅往往会远远超过等价的形式化代码。今天的 Code Agent 当然有别于他所批评的传统“自然语言编程”想象,但他的提醒仍然成立:自然语言天然是歧义的,而歧义总要在后续环节中被消解。
因此,一个自然的问题是:基于上面的建模,Vibe Coding 的意义究竟何在?
五类场景
我认为,它的价值主要体现在以下几个场景中。
第一类场景是“有效信息的等价转换”
在这类场景下,有效信息的源头与终点在语义上是等价的,差别仅在表达形式。例如,将一个 TypeScript 编写的项目用 Rust 重写。至于 Rust 的忠实信众,他们的长期事业之一,似乎就是将一切软件都用 Rust 重写一遍。两者在功能与逻辑上可以保持完全一致,Code Agent 只是加速这一转换过程,而不引入新的有效信息。