Jean's Blog

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

0%

Vibe Coding介绍

Vibe Coding氛围编程

通过自然语言指导AI自动完成代码开发的新范式,开发者只需编写提示词,大模型即可生成、修改和迭代代码。

一种新兴的软件开发范式和风格

  • 不是传统意义上手写代码
  • 通过自然语言对AI进行指导
  • 让AI自动生成、修改和迭代代码
  • 由Andrej Karpathy于2025年提出
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[["不写一行代码,交付工业级产品"]]

    %% 样式
    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人日工作量可压缩至1人日完成
    • 开发周期:传统10天任务可缩短至1天交付
  • 核心价值:
    • 简化流程:自动处理代码细节,开发者专注业务目标
    • 加速创新:分钟级实现想法验证,缩短试错周期
    • 提升协作:降低技术沟通成本,促进跨职能合作
  • 与传统开发关系:
    • 不是替代软件工程,而是优化开发流程
    • 保留需求分析→架构设计→测试部署完整生命周期

核心特性

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
  • 效率对比: 传统开发需要1-2小时完成的任务,使用AI工具可大幅缩短时间

AI作为主要编码者

  • 角色转变:
    • 开发者:从”写代码”转变为”定义意图→确认结果→调整输出”
    • AI:从”自动补全”升级为”核心代码生成者”
  • 工作关系: 开发者如同”主人”或”管理者”,AI如同”员工”执行具体编码任务
  • 实现过程: AI工具会自动匹配最适合的模型来完成代码生成任务

交互性与快速迭代

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

使我们的编程是难还是简单

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完成
    • 效率提升:50人工作可由5人完成
  • 不变点:
    • 仍需遵循传统软件工程生命周期
    • 生产级软件仍需处理安全性、可维护性等
    • 复杂业务逻辑仍需人工验证

AI工具

工具有很多,我使用过的主流工具Cursor、Windsurf、Claude Code、CodeX、OpenCode,对比说明下

工具 产品形态 核心特点 定价模式 适合人群
Cursor AI原生IDE (基于VS Code) 功能最全面的AI IDE,上下文控制精准,插件生态丰富 $20/月 (Pro) 全栈开发者,追求在图形界面下精确控制AI
Windsurf AI原生IDE (基于VS Code) “Cascade”引擎驱动,自动化程度高,擅长全局感知和长期项目记忆 $20/月 (Pro) 希望AI主动规划任务、管理大型项目的开发者
Claude Code 终端CLI代理 基于最强编程模型Claude Opus,工程能力强,适合复杂任务 $20/月 (Pro) 后端、DevOps工程师,习惯命令行,处理复杂逻辑和自动化任务
CodeX 终端CLI/桌面应用 OpenAI官方出品,与GPT-5.5深度绑定,支持并行多代理 $20/月 (ChatGPT Plus) 已深度使用OpenAI/ChatGPT生态,需要云端强大算力的团队
OpenCode 开源CLI/桌面应用 极高灵活性,支持70+种模型,可完全自托管,代码开源可审计 免费 (需自备模型API) 追求开源、可控、灵活,愿意自行配置和折腾的开发者或团队