ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Vibe Coding+SDD:Cursor与Claude Code全栈开发实战

Vibe Coding+SDD:Cursor与Claude Code全栈开发实战 做全栈开发这些年我越来越觉得真正拉开差距的不再是“会不会写代码”而是“能不能驾驭AI替你写代码”。Vibe Coding这个说法去年开始火起来核心就一句话你给AI一个“氛围”AI给你一段代码双方像搭伙干活一样在节奏里把项目推着走。但很多人在这一步卡住了——AI生成的东西要么跑不起来要么改几轮后项目结构彻底失控。真正让我把Vibe Coding从“玩具”变成“生产力”的是把Cursor、Claude Code和SDD规格驱动开发串成一条完整的工程流水线。这篇文章就围绕这个实战组合把从项目拆解到落地部署的完整套路讲透。这套内容适合谁如果你是独立开发者想用AI把一个全栈项目从零到一落地或者你在团队里负责技术选型想给组里引入AI辅助开发但不希望代码库变废墟再或者你刚接触Cursor和Claude Code想知道这两个工具到底该怎么分工——这篇都值得读完。我会把SDD怎么落地、多Agent怎么编排、项目怎么从需求走到部署掰开揉碎地讲。1. Vibe Coding不是玄学是新的协作范式1.1 什么是Vibe Coding它到底在解决什么问题Vibe Coding这个词最早用来描述一种“跟着感觉写代码”的状态——开发者不再是逐行敲击键盘而是用自然语言描述意图让AI模型实时生成代码人负责判断方向、审查结果、纠正偏差。我自己的理解更直白写代码的重点从“怎么实现”转移到了“要什么效果”。以前我们开发一个功能先查文档、设计接口、写实现、跑测试每一步都要亲力亲为。Vibe Coding改变的是这个链条的前半段——你只需要把“我想要一个用户登录页面包含邮箱密码验证、记住我、忘记密码跳转”扔给AI几秒钟后页面骨架就出来了。但这并不意味着开发者失业恰恰相反你的审查能力、架构判断力、需求拆解能力变得前所未有的重要。注意Vibe Coding不是“不写代码”而是“用对话的方式驱动代码生成”。你需要懂代码才能判断AI写的对不对这一点永远不会变。1.2 从“自己写”到“AI写人审”的思维转变我见过太多人第一次用Cursor直接输入“帮我写个电商网站”然后满怀期待地等待奇迹。结果AI吐出来的是一堆互相矛盾的半成品文件连运行入口都没有。问题出在哪里出在你没有给AI一个明确的“氛围”——你说得太模糊AI只能靠猜。真正高效的Vibe Coding要求你具备三种能力第一精确描述需求的能力。不是“写个电商”而是“用Next.js 14的App Router搭一个商品列表页数据从Strapi的REST接口获取需要展示商品名、价格、库存状态并支持按分类筛选”。第二拆解任务的能力。一个大型需求不能一脑门子扎进去让AI全做而是拆成十几个小任务每个任务对应一个明确产出然后逐个击破。第三审查代码的能力。AI生成代码后你要会看关键逻辑对不对、有没有安全隐患、数据流是否合理。这不是说要逐行读但核心路径必须搞清楚。这三种能力组合起来其实就是一种新的工程素养。而要把这种素养固化下来就需要一套方法论——这就是SDD登场的时机。1.3 为什么需要SDD给Vibe Coding兜底纯vibe coding最大的坑在于项目做着做着就失控了。没有需求文档、没有接口定义、没有统一的数据模型AI生成的新代码不断和旧代码打架改一个功能带崩三个模块。我早期吃了很大的亏后来才意识到Vibe Coding的“随性”必须建立在“严谨”的底座上。SDD全称是Specification-Driven Development规格驱动开发。它的核心思想很简单写代码之前先写规格。写清楚系统要做什么、每个功能模块的输入输出是什么、边界条件是什么、验收标准是什么。规格文档就是你和AI之间的“合同”AI按规格实现你按规格验收。这样做的好处极其明显需求明确AI生成的代码目标清晰不会再出现“自由发挥”任务可拆解每个Agent拿到的是具体的、可执行的规格切片验收有标准功能做没做对跑一遍验收用例就有结论团队协作顺畅多人加上多AI同时开工因为有同一份规格对齐所以我的结论是Vibe Coding决定了开发的上限SDD决定了开发的下限。想要项目落地就必须把两者结合。2. 工程化SDD用规格文档给AI“立规矩”2.1 SDD核心流程需求、规格、任务、实现、验证很多人一听到“写规格文档”就头大觉得这是重流程、慢动作。实际上SDD完全可以轻量化我个人的实践是五个步骤第一步需求梳理。把业务需求翻译成用户故事格式统一用“作为XX角色我希望XX以便XX”。比如“作为访客我希望看到热门商品推荐以便快速找到想买的东西”。第二步规格编写。针对每条用户故事写出具体的功能规格包括输入、输出、处理逻辑、异常情况、验收标准。这一步是核心规格越好AI实现越准。第三步任务拆解。把规格拆成可执行的开发任务每个任务都要对应到具体的文件、模块、接口。任务之间如果有依赖关系要明确先后顺序。第四步Agent实现。把任务分配给Cursor或Claude Code的各个Agent让它们按规格实现代码实现过程中自动补单元测试。第五步规格验证。跑测试、做评审对照验收标准逐条检查不通过的重做。用一个小表格总结一下阶段核心动作产出物需求梳理用户故事编写需求清单规格编写功能规格定义规格文档任务拆解任务拆分排期任务看板Agent实现编码与测试功能代码规格验证评审与验收验收报告2.2 规格文档怎么写用户故事、验收标准、边界条件规格文档的质量直接决定AI生成代码的质量。我见过很多人写规格就写一句“实现用户登录”这等于没写。一份合格的规格必须包含以下要素功能概述这个功能是干什么的服务对象是谁在什么场景下使用。输入定义接口的入参、类型、格式、是否必填。比如登录接口需要email字符串邮箱格式、password字符串至少8位。处理逻辑核心流程是什么有哪些分支。比如登录时先校验格式再查询用户是否存在再比对密码哈希最后生成JWT返回。输出定义成功时的返回数据结构失败时的错误码和错误信息。这个尤其重要因为前端依赖这些结构做交互。边界条件为空、超长、重复提交、并发请求、非法字符都要有明确的处理方式。验收标准可执行、可验证的结果描述。比如“用户输入正确凭证时应返回200和有效Token”“用户输入错误密码时应返回401和错误提示”。我写规格时通常用Markdown一个功能一个文件文件放在/specs目录下并用命名区分模块比如specs/auth-login.md、specs/product-list.md。这样结构清晰AI也容易根据文件路径检索上下文。2.3 任务拆解与依赖管理规格写好了接下来就是拆任务。我常用的拆法是“按提交拆”——每一个任务做完都能形成一次有意义的git提交。比如登录功能可以拆成创建用户表与基础Model实现注册接口实现登录接口实现刷新Token接口实现获取当前用户信息接口每一个任务都足够小Agent实现时不易出错代码审查也轻松。任务之间的依赖关系需要提前搞清楚用户表没建好注册接口就无从谈起注册和登录都依赖密码哈希工具那这个工具要排在前面。依赖管理上我用简单的任务看板维护状态分为“待开始”“进行中”“待验证”“已完成”。加上AI Agent协作时这个看板保证每个Agent拿到手的不重复、不冲突。注意任务拆得越小AI的成功率越高但也不能拆得过细否则上下文切换和提交频率反而拖慢整体进度。一个任务控制在100-200行代码改动是比较理想的。3. Cursor与Claude Code的分工协作3.1 Cursor的优势交互式、上下文感知、直观Cursor目前是我日常编码的主阵地。它本质上是一个AI原生的代码编辑器把GPT级别的代码补全和Chat对话深度集成到IDE里。我选中一段代码按快捷键就能让AI解释、重构、修bug光标停在函数中间AI能根据上文自动补全实现整个项目文件树都在它的上下文里改一个接口相关调用处它也知道。用Cursor特别顺手的场景是那些需要“人机频繁互动”的任务。比如我调一个样式布局直接让它“把左侧栏宽度改成280px响应式断点放在768px”看清楚效果后不满意再来一轮这个反馈速度是传统开发完全比不了的。但Cursor也有边界——它更擅长“当下这个文件的局部修改”而在“跨十几个文件、按流程自动执行一串任务”这件事上它的交互式模式效率不够高。你要反复粘贴、确认、触发工作量不小。3.2 Claude Code的优势多Agent自动化、批量执行、无人值守Claude Code是Anthropic出品的命令行AI编程工具运行在终端里通过自然语言指令驱动。它最惊艳的是Agent能力——你可以让它“看一遍项目结构找到所有未使用的依赖并清理”或者“在src目录下扫描所有API调用生成一份接口清单”。它会自己读文件、自己搜索、自己修改然后把结果汇报给你。更关键的是多Agent并发。Claude Code配合任务拆分可以在多个终端会话中同时跑多个Agent一个在写后端接口一个在前端调样式一个在写测试一个在跑代码审查。只要规格明确它们互不干扰整个项目的开发速度是几何级数提升。我一开始也怀疑这玩意儿会不会把项目搞乱真正试过才发现只要给它清晰的规格文档和边界约束它的可靠程度远超预期。3.3 统一工作流Cursor编写、Claude Code执行、SDD贯穿最好的工具组合不是某一个碾压其他而是各取所长。我目前的推荐工作流是第一步用Cursor辅助撰写规格文档。你负责业务逻辑的判断Cursor负责把你的碎片化想法整理成结构清晰的规格文本。这一步算是人机共创。第二步把规格文档作为Claude Code的输入。在终端里启动Claude Code让它先读规格再按任务清单逐个实现。你可以让多个Claude Code Agent分别认领任务并行推进。第三步回到Cursor做代码审查和修正。Claude Code把代码写完我切回Cursor逐文件看看重点检查核心逻辑、边界处理、数据流。发现问题就直接在编辑器里改或者让Cursor生成修改建议。第四步持续用SDD标准做验收。每个功能完成后回到规格文档对照验收标准打勾。漏掉的标准补充测试继续验。整个过程SDD贯穿始终保证不偏航。这个流程我已经跑了多个项目最直观的感受是Cursor负责“精修”Claude Code负责“铺量”SDD负责“兜底”。三者缺一不可。4. 多Agent实战从项目初始到落地部署4.1 Agent角色设计架构师、后端、前端、测试要让多Agent协作不打架先要给每个Agent定义清晰的职责边界。我在实践中习惯按四种角色划分架构师Agent负责项目初始化、目录结构设计、依赖选型、配置文件生成。它还会审查其他Agent的产出是否符合整体架构规范。后端Agent负责数据库设计、接口实现、业务逻辑处理、Token鉴权等。它拿到的是后端规格文档和API定义。前端Agent负责页面实现、组件封装、状态管理、API调用对接。它拿到的是前端规格文档和接口文档。测试Agent负责编写单元测试、集成测试、端到端测试用例并执行测试、汇报失败项。它会对照规格里的验收标准确保覆盖率达标。角色分清楚之后再配合一个简单原则同一时间同一个文件只能有一个Agent在改。文件级别锁冲突从根上避免互相覆盖。4.2 提示词与上下文管理给Agent喂对东西多Agent协作最大的难点在于上下文管理。一个Agent能记住的信息量有限如果让它自己满项目翻找资料效率极低不说还容易抓住过时的实现。我的做法是在启动每个Agent前给它一个任务卡片包含以下要素角色定位“你是后端开发专家负责实现用户认证模块”项目背景“这是一个基于Next.js 14 Prisma PostgreSQL的电商系统”参考文档“先阅读/specs/auth-login.md与/prisma/schema.prisma再开始编码”任务清单“按照规格实现登录接口、注册接口并补充API测试”边界约束“不要修改src/app/layout.tsx不要改动数据库schema如需变更先提出方案”完成标准“所有测试通过并输出本次改动的文件列表”把任务卡片作为提示词发给Agent后它的行为会收敛得多。不要吝啬这些上下文也不要一次性塞几百页文档进去选关键的几份即可。另外强烈建议启用Claude Code的“查看文件”机制它能让Agent在动手前先确认自己理解正确。比如它先输出“我计划做如下修改1. 新建X文件……”你确认后再让它继续能避免很多方向性错误。4.3 项目落地一个典型全栈项目的Agent执行流水线拿一个典型的SaaS项目举例——在线表单工具包含前端表单构建器、后端表单数据API、数据库存储、用户登录注册。用我的流程走一遍项目启动架构师Agent先梳理规格初始化Next.js项目配置TypeScript、Tailwind、ESLint安装Prisma和PostgreSQL依赖生成目录骨架。这一阶段人只需要给它一份技术选型清单比如框架版本、数据库类型、鉴权方式。后端开发后端Agent认领数据模型和API任务。先读规格文档然后写Schema、生成Migration、实现表单的CRUD接口、实现用户注册登录JWT鉴权。测试Agent同步编写接口测试跑通后汇报。前端开发前端Agent实现页面路由、表单编辑器画布、组件拖拽面板、表单发布预览。它依赖后端Agent提供的接口文档所以任务顺序上后端先启动。集成联调前后端都完成后启动联调Agent让它搭建本地环境跑通完整的注册-登录-创建表单-发布表单-提交数据-后台查看数据的主流程。有报错就定位修复。部署上线部署Agent读取Docker配置和运维文档构建镜像、推送仓库、更新服务器、执行数据库迁移、配置反代和HTTPS证书最后跑一遍生产环境冒烟测试。这样一个四层的Agent流水线配合SDD规格能把项目的开发周期从“数周”压缩到“几天”。当然前提是前期的规格梳理和交流足够扎实。4.4 代码质量保障审查机制、测试覆盖、重构策略AI生成的代码跑通了不代表合格。代码质量是项目长期维护的生命线我的做法是多层把关第一层自测。每个Agent完成任务时必须说明它做了什么、改了哪些文件、测试结果如何。说不清楚的直接返回补充。第二层交叉审查。测试Agent会对每个功能模块执行规格中的验收用例发现不达标就记录并交给对应Agent修复。这个环节相当于机器版的Code Review。第三层人工抽查。我自己会抽最核心的几个文件看看——数据库Schema、鉴权逻辑、支付回调——这些部分是项目的要害AI出问题影响面太大。第四层重构策略。AI生成的代码经常有重复逻辑我会定期组织一个重构Agent让它扫描代码库重复片段、不合理命名、过长函数并生成重构建议。人工确认后让它在分支上执行重构不改行为只改结构回归测试通过再合并。质量保障不是一次性的而是贯穿整个项目周期的循环。宁可前期多花一小时设计规格和验收用例也不要后期花一个通宵排查莫名其妙的线上故障。5. 常见问题与排查技巧实录5.1 Agent“伪造完成”怎么办这是我在多Agent协作里遇到最多的坑。Agent在输出里写“已完成登录功能”实际上一跑全是错或者干脆文件都没创建。原因通常是任务描述太模糊、上下文里没有验收标准或者任务太大超出它的承载能力。解决办法也很简单给每个Agent任务加上“完成定义”。明确写成“代码通过npm test登录接口返回200且Token有效”并且要求Agent在结束时贴出测试运行结果截图或日志。凡是给不出证据的“完成”一律视为没完成。5.2 上下文太长Agent迷失方向Claude Code在处理超大项目时会遇到上下文限制表现为回答越来越短、逻辑越来越乱、频繁遗漏需求。排查思路是先看Agent是不是在疯狂重读同一个大文件如果是给它提供更精简的上下文。我的优化手法是规格文档单独建目录每个规格文件不超过200行常用的工具函数、组件、数据库模型单独摘出来作为“参考片段”启动Agent时不让它扫描全项目只给它指定文件路径。上下文精简之后Agent的稳定性能提升一大截。5.3 多个Agent同时改同一个文件冲突不断文件冲突是多Agent并行的最大敌人。我刚开始让两个Agent同时开工一个改后端接口一个改前端页面结果它们都动了公共的类型定义文件一会儿你覆盖我的一会儿我覆盖你的git冲突多到崩溃。彻底解决的办法是文件职责隔离。在任务卡上看板里明确标注每个Agent允许修改的文件路径范围跨范围修改必须提交申请由人批准后再动。整个团队在文件层面“划地盘”协作就顺畅了。5.4 依赖版本冲突和莫名其妙的构建失败AI生成代码时经常会安装最新版本的依赖而项目原本用的可能是旧版本一混合就出幺蛾子。比如某次Agent装了一个新版的UI库结果破坏了现有的主题样式构建报错一堆。现在我会在项目根目录放一份package.json锁定版本并在规格里写明“不要升级现有依赖如需新增依赖请列出理由由人工确认后添加”。这个约束能消除大量低级问题。5.5 提示词被AI“过度解读”有时候你只让Agent加一个按钮它能顺手重构你的组件、改接口、加一堆无关的样式。这种“过度发挥”在Vibe Coding里相当常见。遇到这种情况先不要发火回到提示词本身——是不是没写明边界在提示词里加一句“只修改XX文件其他文件除非必要否则不要改动”或者在规格里写“本次任务的变更范围限定为XX模块”Agent的行为就会收敛很多。养成写边界条件的习惯能省掉后面一大半整理代码的时间。6. 一些亲测有效的收尾心得我在多个项目里实际用这套“Cursor Claude Code SDD多Agent”组合之后最深的体会是AI编程真正改变的不是写代码的速度而是整条工程链路的组织方式。以前我们要花大量时间在“写”上现在写已经不是瓶颈把需求拆清楚、把规格写明白、把Agent协调好才是项目的关键路径。最后再分享一个我最近养成的小习惯一个功能做完我会让测试Agent顺手把规格文档里的验收标准更新一遍把实际实现和文档的偏差同步回来。这样项目做完了规格文档本身也成了活文档后续维护、交接、扩展都有了依据。这个习惯看着不起眼却帮我省掉了无数“这代码当时是怎么想的”的纠结时间。工具会一直迭代AI的能力会越来越强但这个“先定规格、再让AI铺量、人机协同兜底”的底层逻辑我觉得会长期适用。希望这套打法对你也有用。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进