Jean's Blog

一个专注软件测试开发技术的个人博客

0%

Vibe Coding:概念、场景与工具

什么是 Vibe Coding

“Vibe Coding”一词由 Andrej Karpathy 在 2025 年 2 月提出(原始帖子)。它最初描述一种高度依赖大模型、弱化逐行阅读代码的编程方式:开发者主要用自然语言提出需求,接受并运行 AI 生成的改动,再根据结果继续反馈。

需要区分两个概念:

  • AI 辅助编程:开发者仍理解、审查并负责代码,只是借助 AI 提高效率;
  • Vibe Coding:更强调“描述意图—运行结果—继续调整”,甚至暂时忽略实现细节。

因此,Vibe Coding 很适合原型、个人工具和探索性项目;对于生产系统,更稳妥的做法是把它与需求评审、代码审查、测试、安全检查和运维流程结合,而不是把提示词当作全部工程工作。

flowchart LR
    subgraph Vibe Coding AI 全栈开发新范式
        direction LR
        %% 左栏
        subgraph 传统开发
            L1["语法难度"]
            L2["手工实现"]
            L3["代码驱动"]
            L4["实现细节优先"]
        end

        %% 中间箭头
        ARROW["AI 赋能"]

        %% 右栏
        subgraph Vibe Coding新模式
            R1["直达产品价值"]
            R2["产品主理人"]
            R3["意图驱动"]
            R4["用户体验优先"]
        end

        L1 & L2 & L3 & L4 --> ARROW --> R1 & R2 & R3 & R4
    end

    %% 底部标语
    Note1["降低实现门槛,更快验证产品价值"]
    Note2[["AI 生成代码仍需审查、测试与维护"]]

    %% 样式
    classDef darkBox fill:#1a1a1a,stroke:#ddd,color:#f8f8f8
    class L1,L2,L3,L4,R1,R2,R3,R4 darkBox
  • 核心转变:
    • 从”代码驱动”转向”意图驱动”
    • 从”实现细节优先”转向”用户体验优先”
    • 从“如何实现”扩展到“要达成什么目标”
  • 技术特征:
    • 基于智能体(Agent)架构,集成多种开发工具
    • 典型工具包括Cursor、Claude Code等AI编程助手
    • 开发者通过对话交互实现需求迭代

典型应用

flowchart LR
    subgraph 适用场景
        S1["快速原型设计"]
        S2["内部工具/小App开发"]
        S3["创新性实验代码"]
        S4["非工程人员参与开发"]
    end
    Note["Vibe Coding 不替代传统软件工程,而是简化流程、加速创新、提升协作"]
    subgraph 三大价值
        V1["简化流程"]
        V2["加速创新"]
        V3["提升协作"]
    end
    S1 & S2 & S3 & S4 --- Note --- V1 & V2 & V3
  • 快速原型设计:用自然语言描述即可生成可演示原型
  • 内部工具开发:非技术人员可自主创建小型应用
  • 创新性实验:降低技术验证门槛,加速idea落地
  • 效率提升:
    • 实际收益取决于任务类型、代码库质量、模型、工具权限和验收标准
    • 应通过团队自己的交付周期、缺陷率和返工次数衡量,不宜直接套用固定的“10 倍提效”数字
  • 核心价值:
    • 简化流程:自动处理代码细节,开发者专注业务目标
    • 加速创新:分钟级实现想法验证,缩短试错周期
    • 提升协作:降低技术沟通成本,促进跨职能合作
  • 与传统开发关系:
    • 不是替代软件工程,而是优化开发流程
    • 保留需求分析→架构设计→测试部署完整生命周期

核心特性

flowchart TD
    %% 样式定义
    classDef card fill:#181818,color:#ffffff,stroke-width:3px
    classDef box1 stroke:#4298f5
    classDef box2 stroke:#4fc068
    classDef box3 stroke:#f29037
    classDef box4 stroke:#b168e0
    classDef box5 stroke:#38c2c2
    classDef noteBox fill:#121212,color:#fff,stroke:#ddd,stroke-dasharray:8 4

    %% 第一行横向三模块
    subgraph TopRow
        direction LR
        F01["01 自然语言驱动\n用自然语言描述需求,AI 自动生成代码\n帮我写一个 TODO List 的 Web 应用\n→ AI 生成 HTML、CSS、JavaScript"]
        F02["02 AI 作为主要编码者\nAI 不只是自动补全,而是核心代码生成者\n开发者角色转变:定义意图 → 确认结果\n→ 调整输出,而非逐行编写代码"]
        F03["03 交互性与快速迭代\n对话式、循环式的开发过程\n提需求 → AI 输出 → 检查测试 → 反馈调整\n快速循环,敏捷实验想法"]
    end

    %% 第二行横向两模块
    subgraph BottomRow
        direction LR
        F04["04 降低技术门槛\nAI 负责繁琐技术细节\n无传统编程经验也能构建应用\n软件开发民主化,更贴近产品想法"]
        F05["05 目标与结果导向\n不关注代码怎么写,关注能否实现功能\n意图驱动、结果导向的思维转变\n不纠结实现细节,聚焦最终效果"]
    end

    Core["核心理念\nVibe Coding 让开发者从写代码转变为指导 AI,专注于创意和产品价值,\n而非技术实现细节。这是编程方式的根本性变革。"]

    %% 层级关系
    TopRow
    TopRow --> BottomRow
    BottomRow --> Core

    %% 统一附加样式(后置批量赋值,规避多类叠加报错)
    class F01 card,box1
    class F02 card,box2
    class F03 card,box3
    class F04 card,box4
    class F05 card,box5
    class Core noteBox

自然语言驱动

  • 工作方式: 开发者用自然语言描述需求,AI自动生成代码
  • 典型案例: “帮我写一个TODO List的Web应用”→AI生成HTML、CSS、JavaScript
  • 效率判断:简单、边界清晰的任务通常更容易提速;复杂任务仍需验证和调试

AI作为主要编码者

  • 角色转变:
    • 开发者:从”写代码”转变为”定义意图→确认结果→调整输出”
    • AI:从”自动补全”升级为”核心代码生成者”
  • 工作关系: 开发者如同”主人”或”管理者”,AI如同”员工”执行具体编码任务
  • 实现过程:部分工具支持自动选模,但具体策略取决于产品与套餐,并非所有工具都会自动匹配模型

交互性与快速迭代

  • 开发流程: 提需求→AI输出→检查测试→反馈调整的循环过程
  • 修改示例: 页面颜色从白色改为绿色只需简单自然语言指令
  • 敏捷特性: 支持快速循环调整,符合敏捷开发理念

Vibe Coding 是更简单,还是更难

flowchart TD
    %% 全局样式定义
    classDef greenBox fill:#181818,color:#fff,stroke:#48b860,stroke-width:3px
    classDef redBox fill:#181818,color:#fff,stroke:#e05555,stroke-width:3px
    classDef circleBox fill:#111,color:#fff,stroke:#aaa,stroke-dasharray:6 3
    classDef bottomWrap fill:#121212,color:#fff,stroke:#9966dd,stroke-width:3px
    classDef newBox fill:#223322,color:#fff,stroke:#70e070
    classDef devBox fill:#332222,color:#fff,stroke:#f07070
    classDef valBox fill:#333311,color:#fff,stroke:#f0d060

    %% 顶部标题
    title["Vibe Coding 到底是难还是简单?"]

    %% 左侧:看起来简单(绿色框)
    subgraph LeftSide [看起来简单]
        L1["不需要写代码语法\n用自然语言描述需求\nAI 自动生成代码"]:::greenBox
        L2["低门槛快速产出\n简单页面、小工具、原型\n几句话实现功能"]:::greenBox
        L3["√ 少受语法阻碍\n√ 快速看到成果"]:::greenBox
    end

    %% 中间迭代循环虚线椭圆区域
    subgraph CenterLoop [迭代循环本质]
        direction LR
        D[Describe]
        G[Generate]
        V[Validate]
        R[Refine]
        noteC["不是线性,而是迭代"]
        D --> G
        G --> V
        V --> R
        R --> D
    end
    class CenterLoop circleBox

    %% 右侧:实际很难(红色框)
    subgraph RightSide [实际很难]
        R1["自然语言有歧义\nPrompt 设计是一项技能"]:::redBox
        R2["AI 输出不稳定\n需要反复验证和调整"]:::redBox
        R3["需要理解并修正代码\n检查、调试甚至重写"]:::redBox
        R4["复杂系统需要工程能力"]:::redBox
    end

    %% 底部核心理解大框
    subgraph BottomCore [核心理解]
        direction LR
        B1["新手\n看起来很简单——模糊技术细节\n让人更快看到结果"]:::newBox
        B2["资深工程师\n并不简单——生产级软件需处理\n安全性、可维护性、架构设计"]:::devBox
        B3["现实价值定位\n快速原型、创意验证,提高生产率\n而非完全取代传统软件工程"]:::valBox
        footText["简单演示 → 复杂业务逻辑 → 可维护架构 → 高质量软件工程\n需要掌握:Prompt 设计、调试方法、底层编程、架构知识"]
    end
    class BottomCore bottomWrap

    %% 页面布局连线(控制排版层级)
    title --- LeftSide & CenterLoop & RightSide
    LeftSide -.-> CenterLoop
    CenterLoop -.-> RightSide
    LeftSide & CenterLoop & RightSide --- BottomCore
  • 开发方式变化:开发者可以先描述目标,让 AI 生成初版代码,再通过测试和反馈迭代
  • 角色转变: 开发者从”写代码”转变为”指导AI”,专注于创意和产品价值而非技术实现细节
  • 开发流程: 采用对话式、循环式的开发过程:提需求→AI输出→检查测试→反馈调整
  • 典型案例: 用自然语言描述”帮我写一个TODO List的Web应用”,AI可自动生成HTML、CSS、JavaScript代码
  • 价值定位: 实现软件开发民主化,让无编程经验者也能构建应用,更贴近产品想法

看起来简单实际很难

  • 自然语言歧义性:
    • 中文博大精深,同一提示词可能有不同理解角度
    • 大模型对提示词的理解存在不确定性,可能导致输出偏差
  • 输出不稳定性:
    • AI生成的代码可能部分满足需求(如10个需求点中7个正确,3个需要调整)
    • 需要反复验证和调整,开发流程呈迭代式而非线性
  • 工程能力要求:
    • 复杂系统仍需处理安全性、可维护性、架构设计等问题
    • 修改功能时可能产生连锁反应(如修改C功能影响A功能,新增D功能影响B功能)
  • 技能要求:
    • 需要掌握Prompt设计、调试方法、底层编程和架构知识
    • 需建立将不确定性转化为确定性的方法论
  • 适用场景:
    • 优势领域:快速原型开发、创意验证、小型工具/页面开发
    • 局限领域:生产级软件仍需传统软件工程能力
  • 用户群体影响:
    • 新手:可快速开发简单项目,模糊技术细节
    • 资深开发者:提高效率,但仍需处理复杂工程问题
    • 架构师:能快速实现高质量架构设计

Enterprise SDLC 软件开发生命周期

开发周期的七个阶段

阶段 核心目标与活动 关键产出
1. 规划 (Planning) 明确项目范围、目标和高层需求,进行初步的可行性分析。通过头脑风暴和 stakeholder 访谈,确定软件要解决的问题、目标用户等。 初始项目计划、软件需求规范(SRS)初稿
2. 分析 (Analysis) 深入收集、分析并细化详细需求。这可能包括市场调研、用户访谈、合规性及安全需求分析。 详细的需求文档
3. 设计 (Design) 将需求转化为具体的软件架构和技术蓝图。定义系统架构、数据库结构、API接口、安全模型等。 软件设计文档(SDD)
4. 实施/编码 (Implementation) 开发人员根据设计文档编写实际代码。此阶段需遵循编码规范和最佳实践。 功能性的软件原型或代码库
5. 测试 (Testing) 通过单元测试、集成测试、系统测试和用户验收测试(UAT)等多种方式,发现并修复缺陷。 经过验证、优化的高质量软件
6. 部署 (Deployment) 将测试通过的软件发布到生产环境,供最终用户使用。可能采用分阶段或灰度发布等策略。 可用的、正在运行的软件系统
7. 维护 (Maintenance) 软件上线后的持续监控、问题修复、性能优化和功能更新。 持续更新的软件版本
flowchart TD
    %% 样式统一后置,避免解析报错
    classDef center fill:#302030,stroke:#dd99bb,stroke-width:4px,color:#fff
    classDef p01 stroke:#4286e0,fill:#181818,color:#fff
    classDef p02 stroke:#48c068,fill:#181818,color:#fff
    classDef p03 stroke:#f29037,fill:#181818,color:#fff
    classDef p04 stroke:#a878e2,fill:#181818,color:#fff
    classDef p05 stroke:#e85454,fill:#181818,color:#fff
    classDef p06 stroke:#38bbbb,fill:#181818,color:#fff
    classDef p07 stroke:#38bbbb,fill:#181818,color:#fff
    classDef iter stroke:#f29037,fill:#181818,color:#fff
    classDef sideNote stroke:#666,fill:#101010,color:#eee,stroke-dasharray:5 3

    %% 中心核心圆
    Core((SDLC
持续循环
永不停止)):::center

    %% ========== 顶部 01 业务规划 ==========
    P01["01 业务规划与立项\nPlanning"]:::p01
    P01 --> Core
    %% 左侧虚线备注框 Planning
    subgraph SidePlan
        direction TB
        PlanTxt["Planning 阶段
· 是否值得做
· ROI 是否合理
· 资源是否匹配
产出:立项书 / Roadmap"]:::sideNote
    end
    PlanTxt -.-> P01

    %% ========== 右上 02 需求分析 ==========
    P02["02 需求分析与PRD\nRequirements"]:::p02
    P02 --> Core
    %% 右侧虚线备注 Requirements
    subgraph SideReq
        direction TB
        ReqTxt["Requirements
· 用户渠道
· 业务程序
· 功能边界
产出:PRD / SRS"]:::sideNote
    end
    ReqTxt -.-> P02

    %% ========== 右中 03 系统设计 ==========
    P03["03 系统设计\nSystem Design"]:::p03
    P03 --> Core
    %% 右侧虚线备注 System Design
    subgraph SideDesign
        direction TB
        DesignTxt["System Design
· 模式拆分
· 数据模型设计
· 服务调用
产出:HLD/LLD / API"]:::sideNote
    end
    DesignTxt -.-> P03

    %% ========== 右下 04 开发实现 ==========
    P04["04 开发实现\nImplementation"]:::p04
    P04 --> Core
    %% 右侧虚线备注 Implementation
    subgraph SideImpl
        direction TB
        ImplTxt["Implementation
· 前后端开发
· Code Review
· CI 构建
特点:Git Flow / MR"]:::sideNote
    end
    ImplTxt -.-> P04

    %% ========== 底部 05 测试验证 ==========
    P05["05 测试验证\nTesting"]:::p05
    P05 --> Core
    %% 右侧虚线备注 Testing
    subgraph SideTest
        direction TB
        TestTxt["Testing
· 单元测试
· 健康测试
· E2E测试
· UAT 验证
数据修复成本高"]:::sideNote
    end
    TestTxt -.-> P05

    %% ========== 左下 06 上线交付 ==========
    P06["06 上线交付\nDeployment"]:::p06
    P06 --> Core
    %% 左侧虚线备注 Deployment
    subgraph SideDeploy
        direction TB
        DeployTxt["Deployment
· 灰度发布
· 多环境隔离
· 管服流程
产出:Release Note"]:::sideNote
    end
    DeployTxt -.-> P06

    %% ========== 左中 07 运维迭代 ==========
    P07["07 运维与迭代\nMaintenance"]:::p07
    P07 --> Core
    %% 左侧虚线备注 Maintenance
    subgraph SideMain
        direction TB
        MainTxt["Maintenance
· Bug修复
· 效能优化
· 迭代补丁
属性:新需求进入下一轮"]:::sideNote
    end
    MainTxt -.-> P07

    %% 左上角回流迭代框:新需求进入下轮
    Iter["新需求进入下轮\nNext Iteration"]:::iter
    Core -.-> Iter
    Iter --> P01

    %% 底部全局说明文字
    BottomCaption["传统企业研发 = 强规划 + 强文档 + 强流程 + 强审批 -> 稳定但慢,适合高合规场景"]
    Core --- BottomCaption

传统开发 vs Vibe Coding开发

flowchart LR
    subgraph 传统SDLC七阶段
        direction TB
        s1["1.业务规划 ROI分析"]
        s2["2.需求分析 PRD"]
        s3["3.架构设计"]
        s4["4.编码 Implementation"]
        s5["5.测试 Testing"]
        s6["6.部署 Deployment"]
        s7["7.维护 Maintenance"]
    end

    subgraph 超级个体
        A["AI 助手"]
        C(("一个人"))
        B["自动化工具链"]
    end

    Formula["核心公式:Vibe Coding = 人 + 强大AI助手 + 自动化工具链"]
    Tip["从工具能力和实践可能性来看:7个阶段全部可由 AI 赋能完成"]

    %% 虚线发散连线
    s1 -.-> C
    s2 -.-> C
    s3 -.-> C
    s4 -.-> C
    s5 -.-> C
    s6 -.-> C
    s7 -.-> C
    %% 主箭头
    传统SDLC七阶段 ==Vibe Coding==> 超级个体

    传统SDLC七阶段 & 超级个体 --- Formula
    传统SDLC七阶段 --- Tip
  • 传统开发特点:
    • 强规划+强文档+强流程+强审批
    • 稳定但慢
    • 适合高合规场景(如金融系统)
    • 需要多人协作(产品经理、架构师、前后端开发、测试、运维等)
  • 变革点:
    • 从只关注实现细节,扩展到更直接地表达目标和验收标准
    • AI 可以参与七个阶段,但责任并不会自动消失
    • 团队规模与效率提升需要用实际项目数据验证
  • 不变点:
    • 仍需遵循传统软件工程生命周期
    • 生产级软件仍需处理安全性、可维护性等
    • 复杂业务逻辑仍需人工验证

常见 AI 编程工具

下面按产品形态做简要对比。价格、套餐和默认模型变化较快,本文不再写固定月费;选型时应以各产品官网在购买当日的信息为准。

工具 产品形态 主要特点 更适合的工作方式
Cursor AI 原生 IDE 编辑器内对话、补全、Agent 与 diff 审查 偏好图形界面和高频交互的开发者
Windsurf AI 原生 IDE 以 Cascade 为核心的编辑器内 Agent 工作流 希望在 IDE 内完成规划、修改和运行的人
Claude Code CLI / 桌面编码 Agent 可在授权范围内操作代码库、命令和开发工具 后端、DevOps、仓库级任务和命令行用户
Codex CLI / IDE 扩展 / 桌面与云端任务 OpenAI 的编码 Agent,支持本地协作和云端异步任务 使用 OpenAI 生态、需要并行或异步处理任务的团队
OpenCode 开源终端 / 桌面 Agent 可配置多种模型与提供商,便于自定义 重视开源、模型选择和可控性的开发者

选型时重点比较:仓库权限控制、模型可选范围、上下文管理、测试与终端能力、团队协作、数据合规,以及失败后是否容易回滚。