---
title: "什么是 Vibe Coding（凭感觉编程）？"
canonical: https://wavect.io/zh/glossary/vibe-coding/
language: zh
description: "通过给 AI 工具下提示词来构建软件（Lovable、Cursor、Claude Code、Replit、Bolt、v0），并不加阅读地接受它生成的东西。做出演示很快，上生产很危险，因为模型优化的是能跑起来的代码，不是能扛住真实用户的代码。"
image: "https://wavect.io/img/general/bak/open_graph_preview.jpg"
---

方法

# Vibe Coding（凭感觉编程）

通过给 AI 工具下提示词来构建软件（Lovable、Cursor、Claude Code、Replit、Bolt、v0），并不加阅读地接受它生成的东西。做出演示很快，上生产很危险，因为模型优化的是能跑起来的代码，不是能扛住真实用户的代码。

最近审阅: 2026-06-16 审阅人 [Christof Jori](/zh/team/christof-jori/) [wiki ↗](https://www.wikidata.org/wiki/Q139796367)

Vibe coding，就是向 AI 编程工具描述你想要什么，然后把它给回来的东西直接上线，而不逐行阅读代码。这个词在 2025 年初走红，但这套工作流比这个名字更早出现：下提示词、跑一下、看到能用、再下提示词。Lovable、Cursor、Claude Code、Replit、Bolt 和 v0 这类工具，让一个非工程师能在一个下午里从想法走到可点击的 App。这一部分是真实的，对于原型、内部工具，以及验证一个想法是否值得做，它确实有用。

麻烦从一个 vibe-coded 的 App 撞上真实用户、真实金钱或真实数据的那一刻开始。LLM 优化的是满足提示词、能在演示里跑起来的代码。它不会优化提示词里没人提到的那些东西：授权检查、输入校验、密钥管理、限流、错误处理、回归测试套件。而这恰恰是把演示和 [可上生产](/zh/glossary/production-ready/) 的软件区分开来的东西，也恰恰是模型会漏掉的东西，除非你知道要去要求它，而一个非工程师按定义就不知道。

举个例子。一位创始人用一个周末 vibe-code 出一个 SaaS 仪表盘。它有登录、有数据库、有干净的 UI，演示起来非常漂亮。它没有的，是一个服务端检查，确保用户 A 读不到用户 B 的记录。登录能用，所以感觉很安全。但任何已登录的用户都能改一下 URL 里的 ID，读到任意其他客户的数据。从没人要求模型强制按租户授权，所以它没做，演示里也没有任何东西暴露这个缺口。这是 [vibe-coded 软件](/zh/glossary/vibe-coded-software/) 里最常见的严重缺陷，而且在有人，或者某个监管机构，发现它之前，它始终是隐形的。

诚实的取舍：vibe coding 确实更快做出能跑的演示，假装不是这样就是不诚实。代价是，这份速度来自跳过了工程里那些在失败之前没有可见回报的部分。对一个用完即弃的原型来说这是好买卖，对任何存有客户数据的东西来说则是糟糕的买卖。错误不在于用这些工具。错误在于把演示当成产品，然后把它上线。 [AI 生成的代码](/zh/glossary/ai-generated-code/) 本身并不比手写代码差，但它会悄无声息地累积 [技术债](/zh/glossary/technical-debt/) ，并且每次都跳过同样的安全工作。

Wavect 的立场很简单：原型可以 vibe-code，然后在真实用户到来之前，做一遍结构化的生产就绪检查。这一遍不是凭感觉。它就是我们对任何代码都施加的同一套纪律：在重要的逻辑上做 [TDD](/zh/glossary/tdd/) 、每个端点都做授权、把密钥从客户端拿掉，以及一条在每次改动时都跑这些检查的 [CI/CD](/zh/glossary/ci-cd/) 流水线。我们在 [Software Quality Assurance](/zh/services/software-quality-assurance/) 下做这件事。工具是好的。它们只是不知道自己漏掉了什么，而在有人读它之前，你也不知道。

**在软件项目中何时最关键。** 在一个 vibe-coded 原型不再是用完即弃、开始走向真实用户、真实金钱或真实数据的那一刻。那正是模型略过的部分，变成会让你被泄露的部分。

**创始人通常会搞错什么。** 他们把演示当成产品并发布出去。Happy path 能跑，于是感觉安全，但提示词里没有任何东西要求授权、校验或密钥管理，所以这些一概没有。

**Wavect 如何处理。** 原型可以 vibe-code，然后在上线前跑一遍结构化的生产就绪检查：每个端点都授权、密钥移出客户端、一套回归套件、一道 CI/CD 闸门。 [从 vibe-coded 原型到生产](/zh/software-development-guide/vibe-coded-prototype-to-production/) 指南一步步讲了这种加固。

// FAQ

## 常见问题

### Vibe coding 是件坏事吗？

放对地方就不是。它是通往可用原型或内部工具最快的路，用来验证一个想法是否值得做也非常出色。它只有在演示被升级成生产、却没人读过安全关键路径时才成为问题。用它快速学习，然后在真实用户到来之前把它加固。

### vibe-coded 的 App 能上生产吗？

能，但不能原样上。生成的代码几乎总是跳过授权、输入校验、密钥管理和错误处理，因为提示词里没人要求这些。先做一遍生产就绪检查：读授权路径、校验每一个输入、把密钥从客户端拿掉、补上回归测试套件。然后它就能上线。

### 大家用哪些工具做 vibe coding？

2026 年常见的是 Lovable、Cursor、Claude Code、Replit、Bolt 和 v0。它们在打磨程度上有差异，但共享同一个盲点：它们生成的是能跑的代码，不是能抵御恶意或粗心用户的代码。这个缺口正是一遍 QA 要堵上的。

相关术语

- [Vibe-Coded 软件](/zh/glossary/vibe-coded-software/)
- [AI 生成的代码](/zh/glossary/ai-generated-code/)
- [可上生产（Production-Ready）](/zh/glossary/production-ready/)
- [TDD](/zh/glossary/tdd/)
- [Technical Debt](/zh/glossary/technical-debt/)
- [SDLC](/zh/glossary/sdlc/)
- [CI/CD](/zh/glossary/ci-cd/)

相关服务

- [Software Quality Assurance](/zh/services/software-quality-assurance/)

相关案例研究

- [Twinsoft AI](/zh/case-studies/twinsoft-ai/)

相关指南

- [软件开发流程：从首次通话到完整交接](/zh/software-development-guide/software-development-process/)

相关博客文章

- [为 AI 生成代码做 QA](/zh/blog/qa-for-ai-generated-code/)
- [Vibe-coded 软件审计](/zh/blog/vibe-coded-software-audit/)
- [从 Lovable/Cursor 原型到生产](/zh/blog/lovable-cursor-prototype-to-production/)

聊聊

## Structured Data

```json
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@id": "https://wavect.io/#organization",
      "@type": [
        "Organization",
        "ProfessionalService",
        "LocalBusiness"
      ],
      "employee": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "founder": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "legalRepresentative": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "name": "Wavect GmbH",
      "subjectOf": {
        "@id": "https://wavect.io/verified-claims.json#dataset",
        "@type": "Dataset",
        "creator": {
          "@id": "https://wavect.io/#organization",
          "@type": [
            "Organization",
            "ProfessionalService",
            "LocalBusiness"
          ]
        },
        "description": "A machine-readable registry of quantitative and qualitative claims published by Wavect, with review dates, localized page appearances and public third-party citations where available.",
        "inLanguage": "en",
        "isAccessibleForFree": true,
        "license": "https://creativecommons.org/licenses/by/4.0/",
        "name": "Wavect verified publication claims",
        "url": "https://wavect.io/verified-claims.json"
      },
      "url": "https://wavect.io/"
    },
    {
      "@id": "https://wavect.io/team/kevin-riedl/#person",
      "@type": "Person",
      "jobTitle": "Managing Director",
      "name": "Kevin Riedl",
      "sameAs": [
        "https://www.wikidata.org/wiki/Q139796365",
        "https://www.linkedin.com/in/wsdt",
        "https://github.com/wsdt"
      ],
      "url": "https://wavect.io/team/kevin-riedl/",
      "worksFor": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      }
    },
    {
      "@id": "https://wavect.io/team/christof-jori/#person",
      "@type": "Person",
      "jobTitle": "Managing Director",
      "name": "Christof Jori",
      "sameAs": [
        "https://www.wikidata.org/wiki/Q139796367",
        "https://www.linkedin.com/in/jocr77/",
        "https://github.com/jo-chris"
      ],
      "url": "https://wavect.io/team/christof-jori/",
      "worksFor": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      }
    },
    {
      "@id": "https://wavect.io/#website",
      "@type": "WebSite",
      "inLanguage": [
        "en",
        "de",
        "es",
        "zh"
      ],
      "name": "Wavect",
      "potentialAction": {
        "@type": "SearchAction",
        "query-input": "required name=search_term_string",
        "target": {
          "@type": "EntryPoint",
          "urlTemplate": "https://wavect.io/search/?q={search_term_string}"
        }
      },
      "publisher": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      },
      "url": "https://wavect.io/"
    }
  ]
}
```

```json
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@id": "https://wavect.io/zh/glossary/vibe-coding/#term",
      "@type": "DefinedTerm",
      "alternateName": [
        "Vibe Coded",
        "Vibe-Coded"
      ],
      "description": "通过给 AI 工具下提示词来构建软件（Lovable、Cursor、Claude Code、Replit、Bolt、v0），并不加阅读地接受它生成的东西。做出演示很快，上生产很危险，因为模型优化的是能跑起来的代码，不是能扛住真实用户的代码。",
      "inDefinedTermSet": "https://wavect.io/zh/glossary/#termset",
      "name": "Vibe Coding（凭感觉编程）",
      "termCode": "vibe-coding",
      "url": "https://wavect.io/zh/glossary/vibe-coding/"
    },
    {
      "@id": "https://wavect.io/zh/glossary/vibe-coding/#webpage",
      "@type": "WebPage",
      "about": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      },
      "author": {
        "@id": "https://wavect.io/team/kevin-riedl/#person",
        "@type": "Person",
        "name": "Kevin Riedl",
        "url": "https://wavect.io/team/kevin-riedl/"
      },
      "dateModified": "2026-06-16",
      "description": "通过给 AI 工具下提示词来构建软件（Lovable、Cursor、Claude Code、Replit、Bolt、v0），并不加阅读地接受它生成的东西。做出演示很快，上生产很危险，因为模型优化的是能跑起来的代码，不是能扛住真实用户的代码。",
      "headline": "Vibe Coding（凭感觉编程）",
      "inLanguage": "zh",
      "isPartOf": {
        "@id": "https://wavect.io/#website",
        "@type": "WebSite"
      },
      "lastReviewed": "2026-06-16",
      "mainEntity": {
        "@id": "https://wavect.io/zh/glossary/vibe-coding/#term"
      },
      "mentions": [
        {
          "@id": "https://wavect.io/#organization",
          "@type": [
            "Organization",
            "ProfessionalService",
            "LocalBusiness"
          ]
        },
        {
          "@type": "Service",
          "name": "Software Quality Assurance",
          "url": "https://wavect.io/zh/services/software-quality-assurance/"
        }
      ],
      "name": "Vibe Coding（凭感觉编程）",
      "reviewedBy": {
        "@id": "https://wavect.io/team/christof-jori/#person",
        "@type": "Person",
        "name": "Christof Jori",
        "url": "https://wavect.io/team/christof-jori/"
      },
      "speakable": {
        "@type": "SpeakableSpecification",
        "cssSelector": [
          ".gls-single__h1",
          ".gls-single__tldr"
        ]
      },
      "url": "https://wavect.io/zh/glossary/vibe-coding/"
    },
    {
      "@type": "BreadcrumbList",
      "itemListElement": [
        {
          "@type": "ListItem",
          "item": "https://wavect.io/zh/",
          "name": "首页",
          "position": 1
        },
        {
          "@type": "ListItem",
          "item": "https://wavect.io/zh/glossary/",
          "name": "技术、产品与合作模式术语表",
          "position": 2
        },
        {
          "@type": "ListItem",
          "item": "https://wavect.io/zh/glossary/vibe-coding/",
          "name": "Vibe Coding（凭感觉编程）",
          "position": 3
        }
      ]
    }
  ]
}
```

```json
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "放对地方就不是。它是通往可用原型或内部工具最快的路，用来验证一个想法是否值得做也非常出色。它只有在演示被升级成生产、却没人读过安全关键路径时才成为问题。用它快速学习，然后在真实用户到来之前把它加固。"
      },
      "name": "Vibe coding 是件坏事吗？"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "能，但不能原样上。生成的代码几乎总是跳过授权、输入校验、密钥管理和错误处理，因为提示词里没人要求这些。先做一遍生产就绪检查：读授权路径、校验每一个输入、把密钥从客户端拿掉、补上回归测试套件。然后它就能上线。"
      },
      "name": "vibe-coded 的 App 能上生产吗？"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "2026 年常见的是 Lovable、Cursor、Claude Code、Replit、Bolt 和 v0。它们在打磨程度上有差异，但共享同一个盲点：它们生成的是能跑的代码，不是能抵御恶意或粗心用户的代码。这个缺口正是一遍 QA 要堵上的。"
      },
      "name": "大家用哪些工具做 vibe coding？"
    }
  ],
  "speakable": {
    "@type": "SpeakableSpecification",
    "cssSelector": [
      ".faq-question",
      ".faq-answer"
    ]
  }
}
```
