Vibe Coding实战:从Cursor到Claude Code的AI编程指南 最近在梳理开发工具链的时候我发现一个很明显的变化以前新同学上手一个项目要花大量时间学框架、记目录、背命名规范现在大家最常问的变成了“你用的哪个 AI 编程工具、提示词怎么写的、Agent 模式怎么开”。从 Cursor 到 Claude Code再到 OpenAI 的 CodexAI 编程已经不再是“自动补全代码”那么简单而是进入了一种更接近“带一个实习生写代码”的协作模式。你在旁边描述需求、给方向、做审查AI 负责把骨架和细节填出来。这个模式就是社区里非常火的 Vibe Coding。本文适合完全没有接触过 AI 编程工具的零基础读者也适合已经在用 Cursor、但想尝试命令行 Agent 和 SDD 工作流的开发者。读完你会掌握Vibe Coding 的核心概念Cursor / Claude Code / Codex 的安装与配置Agent 和 SDD 究竟是什么关系一套可以直接照抄的实战流程以及高频报错的排查方法。文章会尽量把每一个步骤的“为什么”也讲清楚避免你只是机械照做。1. 什么是 Vibe Coding先理解再上手1.1 从一个真实场景说起假设老板给了一个需求三天内做一个内部用的待办事项管理页面。传统流程是从建仓库、搭脚手架、写接口、写前端、联调、自测一路走下来光环境问题就能耗掉半天。但在 Vibe Coding 的工作方式下流程会变成这样先写一页简单的需求说明描述清楚“要做什么、给谁用、有哪些页面、数据怎么存”然后打开支持 Agent 模式的 AI 编程工具输入一句话“按项目里的 spec.md 实现一个 Todo Web 应用”AI 会自动读文件、写代码、安装依赖、跑测试。你不需要逐行敲代码而是像产品经理一样逐条验收发现问题就回复“这里再加一个标签筛选”AI 继续改。这种体验和传统的 AI 补全完全不同。传统 AI 编程工具更像是“高级输入法”你写一半它帮你补另一半而 Vibe Coding 让人从“代码生产者”变成“意图定义者”和“质量审查者”。开发者的核心能力从“怎么写”变成了“怎么描述清楚”“怎么判断 AI 写得对不对”。1.2 Vibe Coding 的定义与起源Vibe Coding 这个说法最早由 AI 领域的知名工程师 Andrej Karpathy 在 2025 年初提出本意是形容一种“完全顺着感觉走、接纳指数级发展、甚至忘记代码本身存在”的开发状态。通俗地说就是你不再逐字逐句地写代码而是用自然语言描述意图让 LLM 模型直接生成代码你只负责把握方向、审查关键逻辑和验收结果。专业一点的表述是Vibe Coding 是一种“以自然语言为主要交互方式通过大语言模型生成、修改、解释、重构代码”的开发范式。它强调人机协作的循环——你描述、AI 生成、你审查、AI 修正。这个循环跑得越快开发效率越高。需要强调的是Vibe Coding 不等于“完全不用懂编程”。恰恰相反能判断 AI 生成的代码是否正确、是否存在安全风险、是否值得合并这些能力全靠开发者的基本功。零基础的人可以借助它做出小工具但要在生产环境中写出可靠代码反而更考验工程能力。1.3 Vibe Coding 与传统编程、AI 辅助编程的边界为了不混淆这里把三种模式放在一起对比模式交互方式代码主要由谁写人的核心职责典型工具传统编程键盘手写人设计、实现、测试、排错IDE、编译器AI 辅助编程手写 补全人写主干AI 补局部实现逻辑局部修正Cursor Tab、CopilotVibe Coding自然语言描述AI 写主要代码定义需求、审查、迭代Claude Code、Codex、Cursor AgentVibe Coding 和 AI 辅助编程最大的区别在于“主导权”。AI 辅助编程里代码整体结构和关键逻辑还是人写AI 只是加速工具Vibe Coding 里AI 更像是独立执行的 Agent它自己读文件、自己改代码、自己运行命令人在旁边做检查和把关。理解了这个边界后面学 Agent 模式就不会犯迷糊。2. 主流 AI 编程工具全景AI 编程工具发展得非常快如果你现在打开搜索引擎会看到 Cursor、Claude Code、Codex、Trae、Windsurf、Coze、GitHub Copilot 等一大堆名字。对于零基础入门不需要全部掌握先把三类工具的定位搞清楚就行AI 原生编辑器、终端 CLI Agent、Agent 应用平台。2.1 CursorAI 原生代码编辑器Cursor 是目前最流行的 AI 原生编辑器之一它基于 VS Code 的架构做了深度改造在编辑器层面把 AI 能力内置到各个交互位置。你可以在里面使用 Tab 补全、行内问答、Chat 对话、Composer/Agent 批量改写。对新手来说Cursor 的上手成本最低因为它保留了熟悉的编辑器界面不需要记命令行。Cursor 的 Agent 模式可以在一个对话里处理多个文件你告诉它“帮我实现登录页面后端用 Flask前端用原生 HTML”它会自动创建文件、写入代码甚至执行命令。免费版有请求额度限制重度使用需要订阅价格以官方页面为准。2.2 Claude Code终端里的 AI 编程 AgentClaude Code 是 Anthropic 官方推出的命令行编程代理。它运行在终端里Terminal不依赖特定的 IDE你可以在任意项目目录下启动它。Claude Code 的特点是“Agent 能力非常强”它能读取项目目录结构、浏览文件、编辑代码、运行终端命令、执行测试并且支持长上下文适合处理整个仓库级别的任务。它的交互方式非常像“给实习生派活”。你输入一句话它先自己探索项目再给出计划然后动手改代码。过程中它会询问你是否允许执行某些命令这种“确认机制”保证了安全性。Claude Code 支持 Claude 订阅账号或 API Key 两种认证方式也支持通过环境变量切换到其他兼容模型。2.3 CodexOpenAI 的命令行编程代理Codex 是 OpenAI 推出的命令行编程代理定位和 Claude Code 类似也是让你在终端里用自然语言驱动 AI 完成编码任务。Codex 的亮点之一是官方推广了“Spec Driven Development”工作流也就是规格驱动开发先写规格说明文档再让 Agent 按规格实现这和我们后面要讲的 SDD 直接相关。Codex 既可以通过codex命令在终端使用也有对应的 VS Code 扩展。很多人在使用扩展时报过“unable to locate the codex cli binary”的错误原因通常是系统里没有先安装好 Codex CLI或者扩展没有找到可执行文件的路径。这个坑在后面的排查章节会详细说。2.4 Coze 与更多平台Coze国内通常叫扣子是字节跳动推出的 AI Agent 应用开发平台主打低代码。你可以在上面通过拖拽和配置构建 Bot、工作流、插件发布到微信、飞书、抖音等渠道。它和 Cursor、Claude Code 的区别在于Coze 更偏向“应用级 Agent”和“自动化流程”而不是直接面向代码仓库的编程工具。除了上面几个还有字节的 Trae、云厂商自研的编程助手、以及一些面向特定场景的 AI 工具。对初学者来说不需要全学建议把精力集中在一条主线上先用 Cursor 建立对自然语言编程的体感再切换到 Claude Code 或 Codex 体验真正的 Agent 工作流最后用 Coze 这类平台做业务型智能体。这条路线覆盖了 Vibe Coding 从“个人工具”到“业务应用”的扩展路径。3. 环境准备与工具安装这一节是实操基础。我会按照 Cursor、Claude Code、Codex 三个工具的顺序给出一套最小可用的安装和配置流程。操作系统以 Windows / macOS / Linux 通用为例版本需要根据你的实际环境调整本文重点演示配置思路。3.1 安装 Cursor 并设置中文Cursor 的安装很简单直接去官网 cursor.com 下载对应系统的安装包即可。安装完成后打开建议先注册并登录账号登录后才能正常使用 AI 功能免费账号也有一定请求额度。很多国内用户希望把界面设置成中文。不同版本的 Cursor 语言设置入口略有差异常见有两种方式方式一打开设置界面Ctrl,在设置中搜索 “Language”把显示语言切换为“简体中文”然后重启 Cursor。方式二点击左侧扩展图标在扩展市场搜索 “Chinese” 或“中文语言包”安装后按提示重启。安装完成后你可以在设置里打开 “AI 功能” 相关选项确认可以正常对话。验证方式很简单新建一个文本文件在 Chat 面板里输入“用 Python 写一个快速排序函数”看看 AI 是否能正确生成代码。3.2 安装 Claude CodeClaude Code 是命令行工具安装前提是电脑上有 Node.js 环境。建议安装 Node.js 18 或更高版本具体以 Anthropic 官方文档为准。安装完成后打开终端执行node -v npm -v能正常输出版本号说明 Node.js 环境没问题。接着全局安装 Claude Codenpm install -g anthropic-ai/claude-code安装完成后在项目目录里执行claude启动。第一次启动会引导你登录如果你有 Claude 订阅账号可以直接选择登录方式如果你使用 API Key则设置环境变量ANTHROPIC_API_KEY后再启动。启动后进入交互终端输入/help可以看到可用命令。需要注意Claude Code 是在终端里运行的它会读取当前目录下的项目文件。建议只在你的项目目录里启动它不要直接在家目录或系统目录下随意运行避免它误改不相关的文件。3.3 安装 CodexCodex 的安装方式和 Claude Code 类似也需要 Node.js 环境。全局安装命令npm install -g openai/codex安装完成后在项目目录执行codex按照提示登录 OpenAI 账号。登录成功后你可以直接输入自然语言指令例如“检查当前目录的 README 是否完整”。Codex 也提供 VS Code 扩展方便在编辑器里使用。如果在扩展中看到类似下面的报错unable to locate the codex cli binary. set codex cli path or ensure the electron ...说明扩展找不到 Codex CLI 的可执行文件。解决方法通常是先确认命令行里codex是否可用然后在 VS Code 扩展设置中手动指定 codex CLI 的路径。路径位置可以用which codexmacOS/Linux或where codexWindows查询。修改完设置后重载窗口即可。3.4 切换模型把 Claude Code / Codex 接到自定义接口现在很多开发者不满足于官方模型想把 Claude Code 或 Codex 接到国产模型上比如 DeepSeek。这里先说清楚原理Claude Code 和 Codex 本质上都是“调用模型接口的客户端”只要能找到一个“协议兼容的模型服务”就可以通过配置切换。Claude Code 支持通过环境变量切换接口地址、密钥和模型名export ANTHROPIC_BASE_URLhttps://你的模型服务商兼容地址 export ANTHROPIC_AUTH_TOKEN你的 API Key export ANTHROPIC_MODEL模型名称 claude需要注意只有模型服务商官方声明兼容 Anthropic 接口或者提供 OpenAI 兼容接口并经过转换工具时才建议这样配置。否则请求格式不匹配会报各种解析错误。Codex 同样支持自定义模型服务核心是修改配置文件。Codex 的配置文件一般在~/.codex/config.toml。示例思路如下具体参数需要按实际服务商文档调整# ~/.codex/config.toml model your-provider/your-model model_provider your-provider [model_providers.your-provider] name Your Provider base_url https://服务商接口地址 env_key YOUR_PROVIDER_API_KEY配置完成后重启codex命令并设置对应的环境变量即可。注意不同版本的 Codex 配置格式可能有差异如果配置无效优先查阅当前版本的官方文档。3.5 密钥管理与安全提醒无论是 Claude Code、Cursor 还是 Codex都会涉及账号登录或 API Key。这里必须强调几条安全底线API Key 相当于你的账号密码不要写在代码里更不要提交到 Git 仓库。推荐把密钥放到本地的.env文件中并在.gitignore中排除.env。使用自己的个人 Key 做测试没问题但涉及公司项目时必须遵守公司的密钥管理和合规要求。在 Agent 模式下AI 可能会执行删除文件、安装依赖、修改配置等高风险操作执行前要仔细看确认提示不要一路回车。4. 核心概念Agent、SDD 与提示词安装好工具之后很多人会进入一个误区把 AI 当成搜索引擎问一句“怎么写排序算法”然后复制代码。这在 Vibe Coding 里只是最低级的用法。真正高效的工作流要理解 Agent、SDD 和提示词设计这三个核心概念。4.1 Agent 到底是什么Agent智能体在编程工具里的含义是指“能自主完成多步任务的 AI 程序”。它不只是回答你的问题而是像一个能使用工具的助手读取文件、修改代码、执行命令、检查结果。Cursor 的 Agent 模式、Claude Code、Codex本质上都是这种 Agent 形态的落地。举个例子你对 Claude Code 说“帮我看看 test 目录下哪些测试挂了并修复它们”。普通 AI 只会给你一段“应该这么改”的代码建议而 Agent 会先查看 test 目录运行测试命令拿到失败信息定位对应源码修改代码再重新跑测试确认是否通过。整个过程需要多次工具调用这就是 Agent 和普通问答的区别。搞清楚这一点之后你会明白为什么 Vibe Coding 强调“描述清楚意图”。Agent 能做的事情越多它“自由发挥”的空间也越大。如果需求描述得含糊它可能改错文件、删掉无关代码或者引入不必要的依赖。因此给 Agent 设定边界同样重要。4.2 SDD规格驱动开发SDD 全称是 Spec Driven Development也就是规格驱动开发。它是 Vibe Coding 走向工程化的关键方法论。核心思路非常简单在让 AI 写代码之前先写一份规格说明文档通常叫 spec.md把需求、接口、数据结构、验收标准全部写清楚然后让 AI 按规格实现。为什么要这样做因为自然语言对话是“容易遗忘的”。你在对话里说了 10 条需求AI 可能在生成第 3 个文件时就把前两条忘了。而规格说明文档是一个持久化、结构化的需求载体AI 每次动手前都可以重新读取它从而保证行为一致。一份标准的工程级 SDD 文档至少包含以下几部分项目目标、使用技术栈、核心功能拆解、接口定义或数据模型、验收标准、非功能需求性能、安全、兼容性。对于小项目规格文档可以很简短对于大项目它是 AI 能否稳定产出的关键。Codex 官方在推广 CLI 工具时也重点提了 SDD 工作流。社区的常见做法是先在项目里写一个spec.md然后对 Agent 说“请按 spec.md 实现”Agent 实现完后再按验收标准逐条检查。这个过程可以大幅降低 AI 生成的“跑偏概率”。4.3 高质量 AI 编程提示词的写法提示词Prompt是 Vibe Coding 的核心输入。很多初学者觉得“AI 写得不准”其实往往是提示词不够具体。一个高质量的编程提示词建议包含以下要素角色希望 AI 以什么身份工作例如“你是一名 Python 后端工程师”。背景当前项目的技术栈、目录结构、核心约束。任务要完成的具体功能尽量拆成可执行的小步骤。输入输出告诉 AI 需要创建或修改哪些文件输入输出格式是什么。约束禁止使用哪些依赖、不需要鉴权、不要改数据库等。验收标准怎样才算完成例如“所有测试必须通过”。下面是一个可复制的提示词模板你是一名 Python 后端工程师。请阅读项目根目录下的 spec.md 按以下要求实现功能 1. 只修改 spec.md 中提到的文件不要动其他模块。 2. 使用 Flask 实现 REST API不引入数据库。 3. 创建 requirements.txt 和 test_app.py。 4. 完成后运行 pytest确保所有测试通过。 约束代码保持简洁不加登录、不加 Redis、不修改现有接口兼容性。你会发现这段提示词里每一项都是“可执行”的不是空泛的“帮我写个接口”。这就是 AI 编程提示词和普通聊天提示词最大的区别指令越明确结果越可控。4.4 Vibe Coding 的典型工作流当 Agent 和 SDD 都理解之后一个完整 Vibe Coding 项目的工作流可以这样拆解需求整理用自然语言写下你要做什么包括页面、接口、数据、边界。规格化把需求整理成 spec.md写成 AI 能理解的结构化文档。搭建骨架使用 Claude Code 或 Codex按 spec.md 生成项目骨架和核心代码。交互式迭代在 Cursor 中打开项目用对话方式继续提需求、改样式、修 Bug。验证与审查运行测试、检查代码 diff必要时让 AI 自查。人工兜底关键逻辑、安全边界、数据库操作等内容必须人工确认后再合并。这个流程看起来简单但每一步都有技巧。规格化是其中最容易被跳过的但也是最能提升项目质量的环节。跳过它短期感觉很爽项目一大就会失控。5. 实战案例用一个 Vibe Coding 项目跑通全流程理论讲了不少下面用一个真实的“小项目”把整个流程串起来。假设我们要开发一个 Todo 待办事项 REST API技术栈用 Python Flask数据先存在内存里。这个项目足够简单适合零基础跑通同时它又有接口、有测试、有异常分支能让我们完整体验 Agent 和 SDD。5.1 需求拆解与文档先行按照 SDD 的思路我们不急着写代码先写一份规格说明文档。在项目目录下创建spec.md# Todo API 规格说明SPEC ## 项目目标 提供一个轻量级待办事项 REST API供前端页面或命令行工具调用。 ## 技术栈 - Python 3.11 - Flask 3.x - 数据仅存内存重启后清空本期不接数据库 ## 接口定义 - GET /todos 返回全部待办 - POST /todos 新建待办请求体为 {title: ...} - PUT /todos/{id} 更新待办支持 done / title 字段 - DELETE /todos/{id} 删除待办 ## 数据模型 { id: 1, title: 学习 Vibe Coding, done: false } ## 验收标准 - 创建任务时 title 为空返回 400 - 删除不存在的任务返回 404 - 更新不存在的任务返回 404 - 所有接口返回 JSON这份文档描述了“做什么”并且给出了可测试的验收标准。有了它AI 就不需要靠猜。5.2 用 Claude Code 生成项目骨架在项目目录启动 Claude Codeclaude然后输入提示词请阅读项目根目录下的 spec.md按规格说明实现 Todo REST API。 创建 app.py、requirements.txt、test_app.py 三个文件。 完成后运行 pytest确保测试全部通过。Claude Code 会先读取 spec.md然后生成代码文件。它生成的app.py大致长这样不同模型生成结果会有差异重点是思路# app.py from flask import Flask, request, jsonify app Flask(__name__) todos [] next_id 1 app.route(/todos, methods[GET]) def list_todos(): return jsonify(todos) app.route(/todos, methods[POST]) def create_todo(): global next_id data request.get_json(forceTrue) title data.get(title, ).strip() if not title: return jsonify({error: title is required}), 400 todo {id: next_id, title: title, done: False} todos.append(todo) next_id 1 return jsonify(todo), 201 app.route(/todos/int:todo_id, methods[PUT]) def update_todo(todo_id): data request.get_json(forceTrue) for todo in todos: if todo[id] todo_id: todo[done] data.get(done, todo[done]) todo[title] data.get(title, todo[title]) return jsonify(todo) return jsonify({error: todo not found}), 404 app.route(/todos/int:todo_id, methods[DELETE]) def delete_todo(todo_id): global todos before len(todos) todos [t for t in todos if t[id] ! todo_id] if len(todos) before: return jsonify({error: todo not found}), 404 return , 204 if __name__ __main__: app.run(host0.0.0.0, port5000, debugTrue)同时生成的还有测试文件# test_app.py import pytest from app import app, todos pytest.fixture() def client(): todos.clear() return app.test_client() def test_create_todo(client): resp client.post(/todos, json{title: 学习 Vibe Coding}) assert resp.status_code 201 assert resp.get_json()[title] 学习 Vibe Coding def test_create_todo_empty_title(client): resp client.post(/todos, json{title: }) assert resp.status_code 400 def test_delete_missing_todo(client): resp client.delete(/todos/999) assert resp.status_code 404以及依赖文件# requirements.txt flask3.0 pytest8.0到这里Claude Code 已经完成了“骨架 测试”的产出。你不需要逐行理解所有代码但至少要能看懂接口逻辑和测试用例对应哪些验收标准。5.3 用 Cursor 迭代功能项目骨架有了接下来用 Cursor 做交互式迭代。用 Cursor 打开刚才的项目目录在 Chat 面板选中 Agent 模式输入新的需求在现有 Todo 项目里增加一个“标签”功能 1. 创建任务时支持可选字段 tags类型是字符串数组。 2. GET /todos 支持按 tag 过滤/todos?tagwork。 3. PUT /todos/{id} 支持修改 tags 字段。 4. 补上对应的 pytest 用例并运行验证。Cursor 的 Agent 模式会自动读取当前文件定位需要修改的位置。重点观察它改动后的app.py核心变化应该在列表过滤逻辑上app.route(/todos, methods[GET]) def list_todos(): tag request.args.get(tag) result todos if tag: result [t for t in todos if tag in (t.get(tags) or [])] return jsonify(result)这里最关键的是t.get(tags) or []。为什么要加or []因为旧数据可能没有 tags 字段直接tag in t[tags]会抛 KeyError。这一行能体现 AI 是否考虑了兼容性也是你审查代码时应该重点关注的地方。5.4 用 Codex 做测试与代码审查迭代完功能后切换到 Codex 做独立审查。在项目目录执行codex然后输入请审查当前目录下的 Flask 项目代码重点检查 1. 接口异常分支是否完整空标题、不存在的 id。 2. 是否有安全风险如注入、敏感信息泄露。 3. 测试是否覆盖主要接口。 按“问题等级 问题描述 修改建议”的格式输出。 不要直接改代码先给我 review 报告。Codex 可能会给出类似这样的报告[P2] app.py: create_todo 未校验 tags 类型如果传入字符串 后续 /todos?tagwork 过滤时可能产生异常。 建议判断 tags 必须为 list否则返回 400。 [P3] test_app.py: 缺少 PUT 更新不存在任务的用例。 建议补充 status_code 404 的测试。 [P3] requirements.txt: 未锁定版本建议使用 固定版本。这份报告的价值在于它指出了你或 AI 第一次生成时容易忽略的边界条件。你可以继续对 Codex 说“按报告修改前两项”让它直接改掉这些问题。这里的流程体现了 Vibe Coding 的一个典型特征——AI 生成、AI 审查、人来做最终决策。5.5 运行与验证项目完成后的运行验证步骤如下。先创建虚拟环境并安装依赖