兄弟,如果你以为Vibe Coding就是让AI把代码“哗哗”写出来,然后自己在旁边喊“再快一点”,那企业级项目会教你做人。过去这半年,我有一大半时间在处理同事用Vibe Coding“共振”出来的代码——语法全对,架构全歪;单测绿了,安全扫描却炸了;PR过了,上线后性能崩了。最后我想明白了一件事:企业做Vibe Coding,先别急着追快,先把规则写进底座。
Vibe Coding这个概念,大家应该不陌生。你不用逐行敲代码,而是用自然语言描述意图,AI给你生成一版,你跑起来、看效果、再调整,整个过程像在“找感觉”。听起来很爽对吧?但我接触的企业团队,凡是“先爽起来再说”的,基本都在一个月后开始补课——补的是架构、规范、安全和可维护性的课。这一篇我想结合自己踩过的坑,把“为什么规则要先入底座”“底座到底是什么”“怎么把规则真正写进去”讲透。适合正在带团队尝试AI辅助开发的技术管理者、架构师,以及想在企业环境里认真用Vibe Coding而不只是玩一玩的工程师。
1. 搞懂Vibe Coding的本质:从写代码的人变成提需求的人
1.1 Vibe Coding不是“让AI随便写”
Vibe Coding这个词,最早是从Andrej Karpathy那儿火起来的。他描述的那种开发状态,是你把代码“交给”AI去生成,自己更像是评审者和反馈者,给AI描述感受和问题,让AI不断调整。听起来像在“带节奏”,所以叫Vibe。
但这里有个很容易被忽略的点:Vibe Coding的前提是你得懂什么是好的代码。个人项目里,代码写得乱一点,自己能记住,能修回来;可企业项目不是这样。企业代码是要让整个团队一起维护的,是有生命周期、有交接、有审计的。企业里用Vibe Coding,本质上是把“写代码的人”变成了“提需求的人”,但需求提得好不好、边界画得清不清楚,直接决定了AI产出的质量。
我见过不少团队,把Vibe Coding当成“有嘴就能写代码”。结果就是,同一个用户模块,三个人让AI生成了三种不同风格的代码,一个用Repository模式,一个直接在Controller里调ORM,还有一个把业务逻辑写在工具类里。这些代码单看都能跑,合在一起就变成了技术债的集散中心。
所以我的第一个观点是:Vibe Coding在企业里的核心,不是“敢让AI写”,而是“知道怎么让AI按规矩写”。节奏感必须建立在规则之上,不然就是群魔乱舞。
1.2 企业场景和个人开发的本质差异
个人开发的评价标准很单一,能跑、能出结果就行。企业开发不一样,代码有四个隐性指标:可维护性、可扩展性、安全合规、团队一致性。
举个例子。个人项目里,你在Service里直接new一个数据库连接,这没什么大不了的,能跑就行。但在企业里,这行代码可能意味着无法做连接池管理、无法做读写分离、无法做链路追踪,未来想优化就得把所有这样写的代码全部重写。AI不知道这些潜规则,它只会按照“最常见的写法”来生成。什么是“最常见的写法”?就是GitHub上开源项目最常见的写法,这往往不是你们团队约定的写法。
Vibe Coding的“快”,恰恰来自AI能高速生成大段代码。可企业里,代码一旦生成,接下来的六个月、十二个月,都是团队在维护它。如果生成的代码不符合团队的技术规范,那省下来的“生成时间”会加倍变成“维护时间”。
这也是为什么我反复跟团队讲一句话:在企业里,Vibe Coding的产出不是代码量,而是“符合规则且能落地的代码量”。快不快,不是看AI写得有多快,而是看代码过评审、过测试、过安全扫描能有多快。
1.3 为什么“先快起来”是最容易踩的坑
很多团队引入Vibe Coding的第一个目标就是“让需求走得快一点”。这个目标没问题,但容易走偏。
AI生成的代码有一个特点:流利但不确定。它能把语法写得非常正确,但它在架构上可能是平庸的,在安全上可能有漏洞,在业务语义上可能理解偏了。当团队没有统一的底座时,每个人都在用AI“自由发挥”,代码库就会快速熵增——重复的函数到处都是,边界不一致,错误处理五花八门,日志格式对不上,最后连排查线上问题都变得困难。
我说个真实场景。我们有个同事用Vibe Coding一口气生成了三个微服务的骨架代码,速度确实快,一个上午搞定。结果到了联调阶段,三个服务的错误码格式都不一样,有的返回{code, message},有的返回{status, error},还有的直接返回一个字符串。联调现场全在对接这些琐碎的差异,本来想省掉的时间,全部花在擦屁股上。
所以,先别急着追快,不是说不要快,而是说快必须建立在“规则已经就位”的前提下。底座没搭好,AI越强,反噬越狠。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. “底座”到底是什么:规则与基础设施的双层结构
2.1 底座不是单一文件,是一整套约束系统
聊到“底座”,很多人第一反应是AGENTS.md、CLAUDE.md、.cursorrules这类配置文件。这些确实是底座的一部分,但底座远不止如此。
我把企业里的Vibe Coding底座拆成五个层:
- 规则层:代码行为规范、架构约束、命名规范、安全红线、错误处理方式。这些以文档和配置文件的形式存在,AI可以直接读取。
- 模板层:脚手架、项目模板、目录结构、公共组件、基础配置。AI在这个基础上生成代码,天然带着团队约定。
- 校验层:CI流水线里的lint检查、静态扫描、复杂度阈值、重复代码检测、安全扫描、依赖审计。AI生成的代码必须过这些“闸门”才能合并。
- 契约层:接口定义、API Schema、Spec文件。AI在前端、后端、测试之间按契约代码通信。
- 反馈层:规则仓库、规则变更流程、踩坑复盘记录。底座不是一成不变的,要不断生长。
这五层合在一起,才是完整的底座。你可以把底座理解成一套“让AI只能在轨道上跑的机制”,而不是某一份提示词。
2.2 规则分三层:全局、项目、团队
既然谈规则,就得先把规则分类。很多团队失败的根源,是把所有规则塞进一个文件里,结果AI读不完,人也看不懂。我的做法是把规则分三层。
全局规则是组织级的,所有项目必须遵守。比如“禁止硬编码密钥”“禁止在生产代码里打印个人信息日志”“所有对外接口必须返回统一响应结构”。这类规则变动的频率很低,属于底线。
项目规则是某个项目特有的。比如“订单服务必须走事件驱动架构”“爬虫服务禁止使用ORM直连,必须走批量写入接口”。这些规则来自项目的架构决策,AI在生成代码前必须搞清楚。
团队规则是某个研发小组的约定。比如“前端组件统一使用函数式组件加Hooks”“错误边界必须覆盖异步请求”。这类规则偏风格,但直接影响团队协作效率。
把规则分层的意义在于,AI读取规则时有优先级。全局规则放在最前面,项目规则其次,团队规则作为补充。如果这三层混在一起,AI很容易被那些不重要的风格约束干扰,反而忽视了最核心的底线。
2.3 规则写进“底座”而不是“贴在墙上”
大多数团队的规则都存在Wiki里,或者写在某个Google Doc里。这种规则对AI来说等于不存在。AI不会主动翻你的Wiki,它只会在你给它的上下文中找依赖。
所以“写进底座”这几个字,核心意思是:把规则变成AI在生成代码时能看到的输入,同时把规则变成代码合并时能自动校验的闸门。前者靠指令文件,后者靠CI脚本和脚手架。
换句话说,规则必须“进入AI的工作界面”,而不是“停留在人的知识库”。如果你的团队已经开始用Vibe Coding,但规则还躺在Confluence里,那你等于在裸奔。
3. 把规则写进底座的实操方法论
3.1 第一步:先画“约束地图”,再碰代码
不要一上来就写配置文件,先画一张“约束地图”。把团队里所有项目、所有模块分类,明确三件事:
第一,哪些东西绝对不能让AI随便改。比如核心算法、支付逻辑、数据迁移脚本、权限控制这类代码,属于“禁改区”。AI可以在旁边辅助解读、生成测试,但核心逻辑必须走人工审查,甚至干脆不让AI生成。
第二,哪些东西AI可以做,但必须走固定模板。比如CRUD接口、DTO定义、基础单元测试、数据库访问层。AI负责生成,但生成的代码必须严格符合脚手架模板的格式和风格。
第三,哪些东西鼓励AI自由发挥。比如工具函数、UI组件拆分、格式化逻辑、简单脚本。AI在这类代码上效率最高,自由度也可以放大。
画完这张地图,你就知道规则应该重点约束哪里了。禁改区要写进“红线规则”,模板区要写进“强制规则”,自由区可以少管。没有这张地图,规则就会写得面面俱到,最后变成一锅粥。
3.2 第二步:脚手架和模板先行,让AI“出生”就带规矩
接下来要做的事是,把团队的技术规范固化成脚手架模板。模板不是给AI看的,是给AI用的。
举个例子。如果你的团队后端基于Spring Boot,那项目模板里就应该内置好统一返回结构、全局异常处理器、日志切面、traceId透传过滤器、统一错误码枚举、分页请求基类。AI在生成新的Controller时,不是从零写,而是基于这些已存在的模板类去扩展。这样产出的代码天然带有团队规范。
一个典型的模板目录长这样:
plaintext复制service-template/
├── src/main/java/com/acme/
│ ├── common/
│ │ ├── response/
│ │ │ ├── ApiResponse.java
│ │ │ └── PageResult.java
│ │ ├── exception/
│ │ │ ├── BusinessException.java
│ │ │ └── GlobalExceptionHandler.java
│ │ ├── log/
│ │ │ └── TraceIdFilter.java
│ │ └── constant/
│ │ └── ErrorCode.java
│ ├── config/
│ │ └── JacksonConfig.java
│ ├── module/
│ │ ├── controller/
│ │ ├── service/
│ │ └── repository/
│ └── Application.java
├── Dockerfile
├── .gitlab-ci.yml
└── pom.xml
有了这个模板,AI生成代码时的“上下文”里全是团队约定。即使AI不知道你的规则文件写了什么,它也会照着现有类的写法来模仿。这就是把规则“写进底座”的高级玩法——不用写提示词,用代码本身当规矩。
3.3 第三步:把规则写进AI能读的指令文件
规则文件是底座里最显眼的一部分。我平时会用AGENTS.md作为主入口,然后在特定工具目录里放对应的规则文件。
先给一个实际在用的规则文件骨架,方便你直接参考:
markdown复制# AGENTS.md — 项目全局AI规则
## 项目背景(必读)
- 这是一个微服务架构的SaaS系统,核心业务是订单、支付、库存。
- 所有服务必须遵循“控制器薄、服务厚、仓储独立”的分层原则。
## 技术栈(必读)
- 后端:Java 17 + Spring Boot 3.x + MyBatis-Plus
- 数据库:MySQL 8.x,所有SQL必须走预编译
- 缓存:Redis,禁止在分布式锁之外使用SETNX直接操作
## 架构约束(强制)
- 所有数据库操作必须通过Repository接口,禁止在Service中直接使用SQL或ORM查询。
- 对外API必须返回统一响应结构:{ code, message, data, traceId }。
- 禁止在Controller中编写业务逻辑,Controller只做参数校验和路由。
- 所有状态变更操作必须记录操作日志,日志必须包含traceId和userId。
- 禁止在业务代码中捕获Exception后吞掉异常,必须转成BusinessException抛出。
## 编码规范(推荐)
- 方法超过80行必须拆分,单一方法圈复杂度不超过15。
- 禁止使用魔法数字,常量必须定义在对应Constant类中。
- 命名使用驼峰,数据库字段使用下划线,前端接口参数使用驼峰。
## 测试要求(推荐)
- 新业务逻辑必须包含至少3个核心路径的单元测试。
- 对外接口必须提供集成测试用例,覆盖成功和失败场景。
## 红线(绝对禁止)
- 禁止硬编码密钥、Token、数据库连接串、云厂商凭证。
- 禁止在生产代码输出任何个人隐私日志。
- 禁止依赖未经安全审查的第三方库。
- 禁止在循环中调用远程服务,必须批量拉取后内存聚合。
这个文件的核心是“优先级清晰+可执行”。全局约束在前,项目约束其次,风格约束靠后。AI读这个文件时,先看到的是“强制”和“红线”,再看到“推荐”,这样它在有限上下文里也能抓住重点。
写规则文件有几个技巧:
- 用“必须”“禁止”这种明确的词,少用“尽量”“希望”。AI对模糊指令的理解不稳定。
- 每条规则只讲一件事。规则越短,AI越容易遵守。
- 规则文件开头放一段“最高优先级摘要”,用五到十条规则概括全文。AI多看几次摘要,比看完整文件效果好得多。
3.4 第四步:在CI里加“规则闸门”,兜底一切
即便规则文件写得再清楚,AI也有可能不遵守。所以CI里必须有硬性校验。我把这一层叫“规则闸门”,意思是不管AI生成得多爽,闸门不打开,代码就进不了主干。
实际跑下来的基础流水线至少包含四类检查:
- 静态检查和格式检查:ESLint、Checkstyle、Prettier、Spotless。这类工具把风格规范变成机器可判定的标准。
- 复杂度与重复代码检测:圈复杂度阈值、SonarQube重复率、Simian。防止AI生成大段重复逻辑。
- 安全扫描:Semgrep、CodeQL、Secrets扫描、依赖漏洞扫描。AI生成的代码经常在鉴权、输入校验、密钥管理上出问题,必须自动兜底。
- 敏感信息扫描:扫代码里有没有残留的AK/SK、连接串、明文密码。
一个检查脚本大致长这样:
bash复制#!/bin/bash
set -euo pipefail
# 1. 风格与静态检查
npx eslint src --max-warnings 0
mvn checkstyle:check
# 2. 架构守护:禁止Service层绕过Repository直连数据库
if grep -rEn "(baseMapper|sqlSessionTemplate|jdbcTemplate)\." src/main/java/**/service/; then
echo "❌ Service层禁止直接操作数据库,请走Repository封装"
exit 1
fi
# 3. 禁止吞异常
if grep -rEn "catch\s*\([^)]*\)\s*\{\s*//\s*ignore|catch\s*\([^)]*\)\s*\{\s*\}" src/main/java; then
echo "❌ 不允许存在空的catch块,必须处理或重新抛出"
exit 1
fi
# 4. 敏感信息扫描
if grep -rEn "(AKIA[0-9A-Z]{16}|BEGIN (RSA|EC) PRIVATE KEY|password\s*=\s*['\"][^'\"]+['\"])" src/; then
echo "❌ 检测到疑似敏感信息,阻断合并"
exit 1
fi
# 5. 依赖风险扫描
npx audit-ci --moderate
这些闸门的意义在于,即使AI写的代码“看起来很对”,只要它踩了规则,就会被自动拦下。规则从“人的提醒”变成“系统的约束”,这才是“写进底座”的真正含义。
3.5 第五步:从Vibe到Spec-Driven,给AI一个契约
关于Vibe Coding和Spec-Driven的区别,其实这两年讨论挺多的。一句话总结:Vibe Coding是“意图驱动”,你告诉AI要什么,它生成代码,你跑起来看结果;Spec-Driven是“契约驱动”,你先把需求、行为、边界、接口定义写清楚,AI在契约约束下补充实现。
两者不是对立的,成熟团队的做法是“先Spec,后Vibe”。先用规格文件把业务场景、输入输出、异常路径定义清楚,AI只需要在这些边界内“发挥”,产出的代码就不会跑偏。
一个典型的规格文件片段:
markdown复制# 用例:创建订单
## 输入契约
- userId: string(必填,UUID格式)
- items: Array<{ sku: string; quantity: number; }>(quantity必须大于0)
- couponId: string(可选)
## 输出契约
- 成功:返回 { orderId: string, totalAmount: number, status: "CREATED" }
- 失败:返回 BusinessException(code=40001, message="库存不足")
- 超时:返回 BusinessException(code=40002, message="下单超时,请稍后重试")
## 业务规则
- 同一用户同一秒内不能创建超过10个订单,需要幂等校验。
- 订单金额必须精确到分,浮点数运算必须使用BigDecimal。
- 创建订单成功后必须触发库存扣减事件,禁止在事务内同步调用库存服务。
有了这个Spec,AI生成Controller、Service、测试代码时,就不需要在“猜业务逻辑”上发挥太多。它只需要把契约翻译成实现。这时候Vibe Coding的“快”才能真正体现出来——因为AI的大部分工作变成了机械翻译,而不是自由创作。
4. 实战案例:一个企业Vibe Coding底座长什么样
4.1 案例背景与团队初始状态
我参与改造的一个SaaS团队,后端加前端一共三十来人,维护着三个核心产品和一堆内部工具。2024年底他们开始全面拥抱Vibe Coding,初期确实觉得“生产力爆炸”,一个接口从写代码到联调只要半小时。
但一个月后问题开始密集出现。代码评审会上,大家经常为一个模块的写法争论不休;线上排查问题时,日志格式不统一,traceId到处丢失;安全组扫描出好几个高危漏洞,都是因为在代码里写了硬编码的数据库连接串。最尴尬的是,新来的同事看代码库,第一反应是“这到底是不是一个团队写的”。
其实问题不在工具,在于这个团队把“用什么写代码”当成了核心,却忽略了“怎么约束写出来的代码”。
4.2 我们写进底座的核心规则
我们做改造的第一步,是从30条左右的规则清单开始,最终沉淀到AGENTS.md文件里的强制规则大概12条。我挑几条印象最深的放出来:
- 所有数据库访问必须走Repository接口,Service层禁止直接出现ORM调用。这条一开始争议很大,因为AI在Service里直接写ORM调用太“顺手”了,几乎每次生成都会出现。后来我们把这条写进CI里的grep检查,直接把这种写法挡在合并前。
- 所有对外接口的响应结构必须统一。这不是新规定,但以前靠人审,总有漏网之鱼。现在用API脚手架模板自动生成响应包装,AI根本没机会擅自改变。
- 所有跨服务的调用必须有超时和熔断配置。AI生成FeignClient或RestTemplate调用时,默认是不带超时设置的,这在联调环境没问题,上线后就是事故。我们直接在模板里内置了这些配置。
- 日志必须包含traceId,禁止在日志中打印任何个人信息。这在规则文件里是红线,CI里也有正则扫描。
这些规则看起来都不复杂,但它们解决的是Vibe Coding最容易失控的几个点:数据访问边界、接口契约、网络调用安全、日志可观测性。
4.3 规则写进底座前后的直观对比
改造完成到现在,我又跟踪了两个月,可以给一组真实的对比感受:
| 维度 | 规则写进底座前 | 规则写进底座后 |
|---|---|---|
| 交付速度 | 前期“爆快”,后期因返工和评审拉锯变慢 | 前期略有下降,但整体平稳,没有大返工 |
| 代码风格一致性 | 各写各的,三种登录逻辑并存 | 模板统一,新增代码风格与存量代码基本一致 |
| 缺陷率 | 单测覆盖率不低,但上线后仍频繁出问题 | 安全扫描和规范检查提前拦截了大部分隐患 |
| 评审成本 | 评审半小时起步,一半时间在争论风格 | 评审聚焦业务逻辑,十分钟内结束 |
| 新同事融入 | 看代码库像看考古现场 | 看模板和规则文件就能快速上手 |
最明显的一个变化是,规则底座建立之前,团队里每个人都在用“自己的AI”,产出的是各种风格的代码;底座建立之后,大家用的是“同一套AI”,因为AI的上下文里装载的是同一套规则和模板。这感觉就像同样一支笔,在有人手里是签字笔,在有人手里是涂鸦笔,但规则底座让所有人的笔尖粗细变成一样了。
5. 常见问题与排查技巧实录
5.1 模型就是不遵守规则,怎么办
这是问得最多的一个问题。我总结下来有三类原因。
第一,规则文件太长,AI压根没读完。解决办法是写一份“最高优先级摘要”放在最前面,把最重要的事浓缩成十条以内,AI通常只看这部分就开干了。
第二,规则表述模糊,AI理解不了。比如“注意性能”“代码要优雅”这种话,AI会按照自己的标准理解,等于没写。规则要写成可判定的陈述,比如“禁止在循环里查询数据库”“单一方法不超过80行”,AI才知道具体要做什么。
第三,规则没有被主动引用。有些模型在生成代码时,不一定读你给的项目规则文件。这时可以在每个新对话的开头,手动提示一句“请先阅读AGENTS.md并严格遵守其中的强制规则”,AI会把规则文件作为高优先级上下文。
如果这三步都做了,AI仍然不遵守,那就靠CI兜底。这也是我把“规则闸门”放在底座里的原因——规则文件管不住的地方,自动检查来管。
5.2 规则写得太细,开发反而变慢
确实会出现过度约束的问题。我们团队刚做底座时,规则文件写了四十多条,AI每生成一段代码都要反复确认是不是踩线了,结果生成速度慢了一半。
后来我做了两件事。
第一,把规则分级。强制规则控制在十条以内,必须严格校验;推荐规则可以有几十条,主要用于指导;可选规则不进底座,只放在团队文档里。强制规则用CI强校验,推荐规则用代码评审约束,可选规则靠自觉。
第二,把规则从“详细说明”改成“检查项”。比如“所有数据库操作必须走Repository”比“注意分层架构”这种表述有效得多,“禁止硬编码密钥”比“注意信息安全”有效得多。规则越机械,AI越容易对标。
规则底座的目的是减少决策成本,而不是增加决策负担。如果规则让AI每一步都要思考“我能不能这么做”,那说明规则又写失败了。
5.3 多工具之间规则不一致,怎么解决
团队里有人用Cursor,有人用GitHub Copilot,有人直接用Cline,还有人用Aider在终端里跑。每类工具对规则文件的识别方式不一样,很容易出现“在Cursor里正常、在Copilot里无视规则”的情况。
我的做法是搞一个“规则唯一数据源”。在仓库根目录维护一份AGENTS.md,然后写一个同步脚本,把里面的规则自动生成各工具需要的格式。
bash复制# scripts/sync-rules.sh
cp AGENTS.md .claude/rules/project.md
python3 scripts/convert_to_cursor_rules.py AGENTS.md .cursorrules
python3 scripts/convert_to_copilot_rules.py AGENTS.md .github/copilot-instructions.md
这样改规则时只改一处,所有工具同步生效。规则不统一的问题,必须在流程层面解决,靠每个人自觉去读不同工具的手册,基本不可行。
5.4 上下文窗口不够,底座内容塞不进去
很多AI工具的上下文窗口有限,如果把整个规则文件加项目模板加Spec全塞进去,生成的上下文就爆了。
我的经验是分层处理。强制规则压缩成摘要,详细规则单独放文件,AI需要时再读取。特别长的架构规范不应该放在AGENTS.md里,应该放在docs/rules/architecture.md,规则文件里写一句“涉及架构设计时必须参考docs/rules/architecture.md并遵循其中的约束”。
代码里也可以用“规范标记”来节省上下文。比如在Controller模板里写一行注释:
java复制// 规范:所有Controller返回统一ApiResponse
public ApiResponse<OrderVO> createOrder(@RequestBody CreateOrderRequest request) { ... }
AI看到这个模板时会自动模仿这种模式,不需要你额外用上下文解释。
5.5 规则文件变成“僵尸文档”,没人更新怎么办
底座建设最怕的是“建完即死”。一开始团队热情很高,规则文件写得很详细,但三周后没人再更新,规则和业务严重脱节。
我在团队里建了一个简单的迭代闭环,效果不错:
- 凡是代码评审中出现争议超过三次的写法,上升为一条规则。
- 凡是线上事故或安全事故中发现的坑,立刻补进红线规则。
- 每个迭代结束,花半小时过一遍规则库,删掉过时的,补充新学的。
规则文件应该像一个Lint规则集,随着团队对AI的认知提升而持续演进。如果它三个月没变化,那说明你们团队要么太顺了,要么已经放弃管理了。
6. 工具选型和团队落地的几点建议
6.1 工具选型:不是选最火的,而是选规则最好管控的
现在Vibe Coding工具非常多,有IDE插件型、有对话式IDE型、有自建管道型。我的建议是,企业选型不要只看谁的代码生成能力强,更关键的是看谁能满足三件事:支持规则文件注入、支持团队共享配置、可审计。
这三项能力不同工具的差别很大。
| 工具类型 | 工具举例 | 规则注入能力 | 团队管控能力 | 审计能力 | 适合场景 |
|---|---|---|---|---|---|
| IDE插件型 | GitHub Copilot、Continue、Cline | 弱到中 | 弱,依赖个人配置 | 弱 | 个人提效、轻量辅助 |
| 对话式IDE | Cursor、Windsurf | 中,支持规则文件 | 中,可团队共享 | 中 | 小团队快速迭代 |
| 自建管道型 | Aider + CLI + CI | 强,完全可控 | 强 | 强 | 中大型团队、强约束场景 |
如果你的团队刚接触Vibe Coding,建议先选对话式IDE,规则文件配齐后再扩展。如果已经踩过坑、对规范有强烈诉求,那就上自建管道,把AI完全纳入现有工具链和流程。
顺便说一句,现在Vibe Coding的入门学习资源很多,比如Google官方就有面向零基础的Vibe Coding课程,适合补概念。但企业落地时,重点不在学多少新工具,而在怎么用规则和底座约束好工具。
6.2 规则文件的组织方式和目录结构参考
最后给一个规则仓库的目录结构,适合放进项目根目录或者单独一个配置仓库:
plaintext复制.vibe/
├── rules/
│ ├── global.md # 全局规则,所有项目共享
│ ├── project.md # 当前项目特有规则
│ └── team.md # 团队编码约定
├── spec/
│ ├── order-service.spec.md
│ └── payment.spec.md
├── templates/
│ ├── controller-template.java
│ ├── service-impl-template.java
│ └── page-query.tsx
└── scripts/
├── check-rules.sh # CI规则校验
└── sync-rules.sh # 规则同步到各工具
实际使用中,AGENTS.md和global.md是AI必读的,templates是给AI模仿的,spec是给AI翻译业务时使用的。这四类内容各司其职,别混在一起。
6.3 团队习惯:从“人审AI”到“规则管AI”
最后想聊一个观念层面的转变。刚开始做Vibe Coding的团队,最典型的心态是“AI生成,人负责审查”,但AI产出的代码量太大,人审不过来,最后审查就变成了走过场。
真正的解法是抽身出来,把审查的标准沉淀成规则,让规则替人去盯AI。人只负责两件事:看规则有没有失效,看最终结果有没有跑偏。
我在实际跑下来之后最大的体会是,底座的建立不是一蹴而就的。第一个版本能覆盖多少规则不重要,重要的是从第一周就把它当成产品去迭代。我建议你下周就带着团队做一件最简单的事:挑一个正在用Vibe Coding开发的小模块,把它的架构约束、错误处理姿势、编码风格写成一个五十行的AGENTS.md,然后观察AI的产出变化。你一定会有惊喜——原来不是AI不守规矩,是你从来没告诉过它什么叫规矩。
最后再分享一个小技巧。如果你不知道规则该从哪儿开始写,别自己硬编,去翻你们团队最近一个月的代码评审记录。那些被Reviewer反复指出的问题,就是最值得写进底座的规则。把它们固化下来,比任何教科书都管用。
