Vibe Coding的悖论以及AI的理解力

Posted by eagleboost on December 19, 2025

On a whim, I decided to try using the command-line interface of an AI for file-related operations, which is more convenient than web chat. I started with OpenAI’s Codex CLI, but it’s not available in free version, so I switched to the Google Gemini CLI.

After installation, I opened the command line in the directory containing my articles and entered Gemini CLI. I pointed the AI to my previously written article Vibe Coding would not work and asked if there were any logical fallacies in the article.

Gemini quickly concluded that the author of the article did not attack the core of Karpathy’s viewpoint but instead attacked a simplified and distorted straw man version that was easier to refute.

I decided to argue with it, asking, “But if a person doesn’t know how to program, how can they read code and guide the AI to modify it?” After a more detailed explanation, the AI finally understood and admitted that its analysis regarding the “straw man” was not comprehensive enough.

It’s evident that the AI’s comprehension is still quite mechanical. The meaning I ultimately conveyed in my input to the AI was actually present in the original article, but judging from the earlier conversation, the AI had either overlooked or downplayed it. I suspect that since its initial task was “find any logical fallacies in the article,” its focus shifted towards the “logical fallacies” aspect, causing it to neglect the article’s original intent: to deconstruct the concept of Vibe Coding and argue that it is misaligned for its two potential user groups.

This also illustrates, from one perspective, the importance of prompts and why AI doesn’t truly think. If a human were to read such a short essay, even with a specific task, they would be unlikely to ignore its central thesis.

So, are there any logical fallacies in the article? At least not the straw man fallacy. Let’s demonstrate this. First, ask two questions:

  • Does the true Vibe Coding actually exist?
  • Does Vibe Coding have any meaning?

The answer is yes. A real-world example: a client with no technical knowledge tells a contractor what kind of software to develop. However, for this model to work, several preconditions are necessary:

  • The contractor has experience.
  • The contractor has the ability to identify and communicate ambiguous requirements with the client.
  • The contractor has the ability to fix errors (which is inherently the contractor’s responsibility).

For current AI, the first point is arguably met, given the vast amount of data it’s been pre-trained on—its theoretical experience surpasses that of all humans combined. The second point is questionable. Probability-based AI cannot understand the real world through interaction, nor can it truly comprehend human needs. Furthermore, for various reasons, it cannot repeatedly ask humans for clarification, as that would make the AI vendor seem inadequate.

The third point pertains to the coding process, which usually occurs after the second point is clear. If there are issues with the second point, the third becomes a castle in the air. AI does not genuinely understand the code it generates, so its inability to fix errors is common, especially for code generated without clear constraints.

In reality, programmers often complain that clients themselves don’t know what they want. This requires the contractor to have an experienced project manager to lead the entire project, serving as a bridge between the client and the programmers. Thus, the actual subjects of Vibe Coding become the project manager, who deeply understands the client’s needs, and the programmers. Although it’s a bit of a stretch, one could argue that the client and the project manager together direct the programmers in Vibe Coding.

Karpathy likely derived the concept of Vibe Coding from the real world, but the chasm between its ideal and reality is quite evident: one subject in his envisioned Vibe Coding is a human who doesn’t know programming but provides requirements—essentially a client that programmers cannot communicate with; the other subject is an AI with abundant theoretical experience but no understanding of the real world and prone to severe hallucinations. If even human programmers struggle to communicate with such clients, how can a non-human AI?

In the real world, an excellent project manager is key to a project’s success, and their importance cannot be overstated. However, this role is absent in the Vibe Coding concept. This is why it’s possible for someone completely non-technical to direct an AI to create “toy projects” with entirely defined requirements like Snake or Tetris, but it’s utterly unfeasible for real projects.

For a considerable time to come, the only model likely to yield genuine productivity is probably this: an experienced project manager (or architect) who understands both technology and business communicates with the client to understand requirements, breaks them down into relatively independent small tasks, directs the AI to complete these tasks, and can intervene manually when necessary. The feasibility of this approach is unquestionable, so there’s no need to invent a term like Vibe Coding to define it specifically.

If we must use the term Vibe Coding, this is probably its only accurate definition.

On a side note, the power of AI is one reason why recent graduates are finding it difficult to get jobs: their business communication skills can’t match those of business analysts, their technical knowledge can’t match that of architects, and their grunt work capability can’t match that of AI. Thus, inexperienced newcomers unwittingly become a liability. Companies will favor mid-career professionals who understand both technology and business—precisely those over 35 whom internet memes say get laid off. The advantage of young people having good health and being able to work overtime is worthless compared to tireless AI. Who capitalists will choose is self-evident.

How young people can navigate this situation in the AI era is a question worth pondering deeply.

  心血来潮打算用用AI的命令行模式,对于涉及文件的操作比网页聊天来得方便。先用的是OpenAICodex CLI,可没想到免费版不给用,果断换成Google Gemini CLI

  安装完成后在存放自己文章的目录下打开命令行进入Gemini CLI,把之前写的那篇《Vibe Coding的悖论 》的文章指给AI,问它文章有没有逻辑谬误。

  Gemini很快给出结论,认为文章的作者没有攻击Karpathy观点的核心而是攻击了一个被简化和曲解后更容易被驳倒的稻草人版本。

  我决定跟它掰扯一下,问“但如果人不会编程又怎么看代码和指导AI改代码呢”,接下来又详细解释了一次,AI终于懂了,并承认自己关于“稻草人”的分析不够全面。

  可以看到AI的理解力还是挺机械的。我最后输入给AI的那段话表达的意思其实原文就有,但从先前的聊天来看AI把它忽略或淡化了。我猜测可能最初给它的任务是“找找文章有没有逻辑谬误”,所以它的关注点就往“逻辑谬误”这个方向去,反而忽略了文章的本意是解构Vibe Coding这个概念,论证它对于其两个潜在用户群体来说都是错位的。

  这也从一个侧面说明提示词的重要性,以及为什么AI并不是真的会思考,如果人来读这样的短文,即便带着任务,也不大可能忽略中心思想。

  文章有没有逻辑谬误呢?至少没有稻草人谬误。我们来论证一下。先问两个问题:

  • 真正的Vibe Coding到底存不存在?
  • Vibe Coding有没有意义?

  答案是肯定的。现实世界的例子:不懂技术的甲方告诉乙方要开发什么样的软件。只不过这种模式能成立需要几个前提条件:

  • 乙方有经验
  • 乙方有能力发现并与甲方沟通模糊的需求
  • 乙方有能力修补出错的地方(这本来就是乙方的责任)

  对现在的AI来说,第一点算是有了,毕竟被预训练了那么多数据,纸上谈兵的经验比地球上所有人加起来都强。第二点则要打个问号。基于概率的AI无法通过接触理解现实世界,也不能真正理解人类的需求,加上各种原因,还不能三番五次地问人类,那样会显得自己(AI厂商)不够强。

  第三点说的是写代码的过程,这通常是在第二点已经明确的情况下发生,如果第二点都有问题这一点也就成了空中楼阁。AI并不真正理解自己生成的代码,所以出了错修补不了是常事,对那些AI在没有明确的限制条件下生成的代码更是如此。

  现实中程序员常常骂甲方自己都不清楚自己想要什么,这就需要乙方有经验丰富的项目经理来领导整个项目,成为甲方和程序员之间的桥梁,于是Vibe Coding的主体实际上变成了深刻理解客户需求的项目经理和程序员,虽然有点牵强,但可以认为甲方与项目经理一起指挥程序员Vibe Coding

  Karpathy提出Vide Coding的概念想必是从现实世界引申而来,其理想与现实的鸿沟其实显而易见:他设想的Vide Coding的主体之一是不懂编程只提需求的人类——也就是程序员无法与之沟通的甲方;主体之二是拥有丰富的纸上经验但不理解现实世界,而且幻觉严重的AI。连人类程序员都没法与甲方沟通,遑论非人类的AI

  在现实世界中优秀的项目经理是项目成功的关键,其重要性无论怎么强调也不为过,而Vide Coding的设想中这个角色却是没有的,这也是为什么完全不懂技术的人指挥AI搞搞贪食蛇、俄罗斯方块这类“需求完全确定的玩具项目”没问题,做真实项目却根本不可行的原因。

  在相当长的时间内,能真正贡献产出的模式大概只有一种:经验丰富、既懂技术又懂业务的项目经理(架构师),与客户沟通并理解需求,把需求细化为一个个相对独立的小任务,再指挥AI完成这些任务,而且能在必要时进行人工干预。这种方式的可行性毫无疑问,所以也不需要发明一个类似Vide Coding的概念来专门定义它。

  如果非要用Vide Coding这个词的话,这恐怕是唯一准确的定义。

  题外话,AI的强大是导致现在的毕业生找工作难的原因之一:业务沟通比不上业务分析师,技术储备比不上架构师,做牛马又比不上AI,于是各方面经验都欠缺的新人不知不觉成了鸡肋。企业会更青睐懂技术又懂业务的职场中年,也就是互联网烂梗里说的那些35岁以上会被裁掉的人。年轻人身体好能加班的优势在不知疲倦的AI面前一文不值,资本家会选谁不言而喻。

  AI时代对年轻人来说如何破局是个值得深思的问题。