Vibe Coding 的复用与 Agent 调教:从一次性生成到持续进化
一、问题的本质:为什么 Agent 用着用着就不顺手了?
很多人在体验 Vibe Coding 时都会遇到一个尴尬的转折点:第一天惊为天人,第三天开始反复改 prompt,一周后觉得还不如自己写。
这不是 Agent 变笨了,而是暴露了 Vibe Coding 最核心的挑战——代码是 AI 生成的,但需求是持续变化的。传统开发中,代码即文档,修改代码就是修改需求;而在 Vibe Coding 中,需求分散在无数次对话里,代码只是 AI 对需求的“瞬时快照”。
要真正让 Agent 越用越顺手,需要一套结构化的复用与调教策略。
二、复用策略:让知识和代码可沉淀
2.1 Prompt 模板化
不要每次都从零开始写 prompt,将成功的 prompt 固化为模板。
❌ 低效做法:
"帮我写一个用户登录接口,用 JWT,要包含验证码,还要有密码加密..."
✅ 模板化做法:
创建 templates/api-login.md:
# 用户登录 API 生成模板
## 上下文
- 框架:[FastAPI/Express/Hyperf]
- 数据库:[MySQL/PostgreSQL]
- 认证方式:JWT
## 功能要求
1. 接收用户名/邮箱和密码
2. 验证码校验(Redis 存储)
3. 密码 bcrypt 验证
4. 生成 JWT Token(过期时间 7 天)
5. 返回用户信息和 Token
## 非功能要求
- 接口限流:每分钟 5 次
- 日志记录:记录登录失败原因
- 错误码规范:参考 [链接]
使用时只需填充 [] 中的变量,或直接引用模板让 AI 读取。
2.2 规则文件(.cursorrules / .difyrules)
主流 AI 编程工具都支持项目级规则文件,这是让 AI 理解项目上下文最有效的方式。
.cursorrules 示例:
# 项目规范
技术栈: Hyperf 3.1 + MySQL 8.0 + Redis 7.0
代码风格: PSR-12
API规范: RESTful,统一返回格式 {code, message, data}
# 数据库规范
表名: 蛇形命名,复数
字段: 必须有 created_at, updated_at
主键: bigIncrements('id')
# 禁止行为
- 不允许使用 ORM 的 lazy loading
- 不允许在 Controller 中直接写 SQL
- 不允许跳过参数验证
# 常用代码模式
Repository 模式: App\Repository\{Model}Repository
Service 层: App\Service\{Model}Service
规则文件放在项目根目录后,AI 每次生成代码都会自动遵循这些约束,一致性从“每次提醒”变成“一次配置”。
2.3 自定义指令库(Skills / Commands)
Cursor 的 Skills 和 Windsurf 的 Commands 功能,让你可以把复杂的多步骤任务打包成一个指令。
示例:创建 @new-api 指令
name: new-api
description: 创建完整的 CRUD API 接口
steps:
1. 创建 Migration(包含 up 和 down)
2. 创建 Model(包含 fillable 和 casts)
3. 创建 Repository(包含基础 CRUD)
4. 创建 Service(包含业务逻辑)
5. 创建 Controller(包含路由注解)
6. 创建 Request(包含验证规则)
7. 创建 Resource(包含数据转换)
之后只需输入 @new-api User,AI 就会自动生成全套代码。
2.4 记忆库(Memory / 知识库)
Dify 的 Memory、Cursor 的 Project Rules 和 Claude Projects 都支持跨会话的记忆持久化。
最佳实践:构建团队知识库
/knowledge/
├── architecture/ # 架构决策记录
│ └── 2026-09-08-选择Hyperf作为后端框架.md
├── patterns/ # 代码模式
│ ├── repository-pattern.md
│ └── dto-pattern.md
├── decisions/ # 技术决策
│ └── why-not-use-laravel.md
└── errors/ # 踩坑记录
├── amqp-reconnect.md
└── jwt-refresh-token.md
每次 AI 生成代码时,将相关文档作为上下文传入,Agent 就能基于团队的历史决策进行推理,而不是每次都从零“猜测”。
三、Agent 调教:从“听话”到“懂事”
3.1 反馈循环机制
Agent 需要持续的反馈来优化行为,就像训练实习生。
显式反馈:
- 👍/👎 对生成结果进行评价
- 直接在对话中纠正:“这里不应该用 LEFT JOIN,应该用 INNER JOIN”
- 修正后告诉 AI:“记住这个模式,以后类似场景都用 INNER JOIN”
隐式反馈:
- 通过规则文件更新约束
- 通过 PR 审查中积累的模式补充到模板库
- 通过运行日志中的错误反向优化 prompt
Cursor 内部数据显示,持续使用反馈循环的团队,AI 生成代码的接受率从 40% 提升到 75% 以上。
3.2 分阶段生成,而非一次性完成
一次性生成 500 行代码通常效果很差,更高效的策略是分阶段迭代:
❌ 错误方式:
"帮我写一个完整的电商系统,包含用户、商品、订单、支付..."
✅ 正确方式(分阶段):
阶段1:"设计用户模块的数据模型"
阶段2:"实现用户注册和登录接口"
阶段3:"给登录接口加上验证码和限流"
阶段4:"实现 JWT 刷新机制"
每个阶段生成 50-150 行代码,验证无误后再推进下一步。这还能有效降低Vibe Slop的规模——问题代码在早期被拦截,不会大面积扩散。
3.3 模型选择策略
不同任务用不同模型,而不是只用一个“最好”的模型。
| 任务类型 | 推荐模型 | 原因 |
|---|---|---|
| 架构设计/需求分析 | Claude 3.7 Sonnet | 推理能力强,理解复杂上下文 |
| 代码生成 | DeepSeek V3 / GPT-4o | 代码质量稳定,速度快 |
| 代码审查 | Claude 3.7 / Kimi K3 | 细节敏感,发现问题能力强 |
| 简单脚本 | Cursor 默认模型 | 够用且快 |
Cursor、Windsurf 等工具已支持模型切换,根据任务选模型比一味追求“最强”更高效。
3.4 上下文工程
AI 生成代码的质量,70% 取决于输入的上下文质量。
✅ 高质量上下文清单:
- 技术栈约束:明确框架、版本、数据库
- 代码风格参考:提供 2-3 个已有文件作为示例
- 业务约束:不能做的事情比能做的事情更重要
- 错误边界:常见错误和边界条件
示例:
"实现用户注册接口。参考 UserController.php 的风格。
要求:手机号必须是中国大陆号码格式。错误时返回 422。
不允许:批量插入、跳过验证。"
四、组织级复用:从个人效率到团队能力
4.1 建立 Prompt 工程规范
# prompt-standards.yaml
结构:
1. 上下文描述 (Context)
2. 具体任务 (Task)
3. 约束条件 (Constraints)
4. 输出格式 (Output Format)
5. 参考示例 (Examples)
禁止:
- "大致"、"可能"、"尝试"等模糊词汇
- 一次性列出超过 5 个独立功能
- 在 prompt 中包含敏感信息
最佳实践:
- 每个 prompt 聚焦一个明确目标
- 使用 Checklist 格式列出需求
- 生成后先 review 再集成
4.2 代码模板库
/templates/
├── api/ # API 接口模板
│ ├── crud-controller.md
│ └── list-request.md
├── database/ # 数据库模板
│ ├── migration.md
│ └── seeder.md
├── hyperf/ # 框架特定模板
│ ├── repository.md
│ └── service.md
└── validation/ # 验证规则模板
├── create-user.md
└── update-user.md
4.3 复用效果量化
| 指标 | 无复用策略 | 有复用策略 | 提升 |
|---|---|---|---|
| 新功能开发时间 | 4小时 | 1.5小时 | 62.5% |
| 代码生成接受率 | 45% | 78% | 73% |
| 重复 prompt 输入 | 每次 200+ 词 | 每次 20+ 词 | 90% |
| 团队新成员上手时间 | 2周 | 3天 | 78% |
| 生产 Bug 率 | 3.2% | 0.8% | 75% |
五、实用工具推荐
| 工具 | 复用能力 | 调教方式 |
|---|---|---|
| Cursor | .cursorrules, Skills, Project Rules | 反馈 + 规则迭代 |
| Windsurf | Commands, Memories, Workspace | 记忆库 + 流水线 |
| Dify | 工作流模板, 知识库, 工具集成 | Prompt 调优 + 流程编排 |
| GitHub Copilot | Custom Instructions, 项目级配置 | 指令迭代 + 上下文工程 |
| Claude Projects | 项目知识库, 自定义指令 | 知识库持续更新 |
六、总结
让 Agent 越来越顺手,核心不是“选最强的模型”,而是建立一个知识积累与反馈循环的系统:
- 规则先行:建立
.cursorrules或项目规则,一次性配置,永久生效 - 模板沉淀:将成功的 prompt 和代码模式固化为可复用的模板
- 分阶段生成:从小块开始,逐步构建,确保每一步都可验证
- 持续反馈:用👍/👎、修正和规则更新形成闭环
- 组织共享:把个人经验转化为团队知识库
Vibe Coding 的终极形态不是“AI 替人写代码”,而是人通过 AI 持续积累和复用知识。当你的 Agent 越来越顺手时,其实是你对软件开发的认知越来越结构化、体系化了。