<blockquote>
编者按: 在氛围编程日益普及的今天,开发者是否真的能够完全依赖 AI 编程助手来完成从设计到测试的全流程开发?我们今天为大家带来的文章,作者的观点是:AI 辅助编程是一种强大的效率工具,但开发者必须始终保持主导权,承担起代码质量、架构决策和测试验证的最终责任。
文章系统性地介绍了“氛围编程”(Vibe Coding)的核心组成与工作流程,强调了明确需求与设计先行的重要性,并详细阐述了如何通过提示词工程、上下文管理、测试验证和文档协作等方式,最大化 AI 编程助手的效能。同时,作者也指出了当前 AI 在单元测试生成、多工具协调和会话管理等方面的局限性,提醒开发者保持批判性思维,不可盲目信任 AI 输出。
作者 | Amazon Web Services – Labs
编译 | 岳扬
01 “氛围编程”
根据 wikipedia 介绍[1],氛围编程(vibe coding)是一种现代软件开发方式,用户通过使用自然语言撰写提示词来生成代码。
氛围编程包含以下几个协同工作的核心组件:
- Prompt(提示词):用于指导编码过程的初始指令与上下文信息
- Client(客户端):用户与编码系统交互的界面,例如 Amazon Q Developer[2] 或 Cline[3]
- Additional context(附加上下文):可通过提供额外的上下文(如 AWS MCP 服务器)增强智能体的能力
需要重点强调的是:虽然编程 AI 想要提升开发效率,但其目标并非取代开发者。开发者始终是产品架构与产品愿景的主导者。 作为开发者,你需要理解、审查并验证每一个技术决策 —— AI 只是增强能力的一种工具,不能替代你的批判性思维与专业判断。代码质量、架构选择和技术决策的责任始终由人类承担。请参阅这份指南[4]了解如何负责任地使用 AI。
⚠️ 警告:切忌盲目信任 AI 助手生成的代码。请务必:
1)全面审查并理解生成的代码
2)验证所有依赖项
3)执行必要的安全检查
4)在受控环境中测试代码
02 AI 编程客户端
- 选择标准:选择 AI 编程客户端时,需综合考虑组织需求(如合规性、安全策略和供应商白名单等),同时权衡定价机制与 IDE 集成度等技术因素。
- 善用客户端的功能特性:不同客户端具备的独特功能特性都可优化工作流程。以 Cline 为例,可先启用 Plan(规划) 模式讨论和细化完善实施方案,待全面评审后,再切换至 Act 模式生成符合预定方案的代码。建议定期查阅文档和版本说明,及时掌握所用客户端的新功能与更新动态。
- 功能兼容性:各客户端支持的 MCP 功能特性存在差异(如 Tools/Resources/Prompts – 详见 MCP 客户端说明[5])。例如若计划使用 CDK MCP 服务器,需确认所选客户端同时支持 Tools 与 Resources 功能。
- 多客户端策略:无需局限于单一客户端。不同客户端擅长的任务领域各异 —— 可搭配使用 Cline 进行后端 / CDK 开发,同时采用 Q CLI 处理 AWS 权限排查、网络连通性检查及安全组规则调试等运维场景。
- MCP 服务器选择:面对日益丰富的 MCP 服务器生态,只需关注符合实际需求的解决方案。建议通过文档研读和实测验证相结合的方式完成遴选。
03 项目需求与设计指南
在开始任何编码任务前,请先遵循以下这些要求:
1)明确界定项目需求与项目范围
2)建立全面的设计指南与编码规范
3)记录所有约束条件与限制因素
4)创建并维护包含已收集信息的 markdown 文件供客户端调用
5)完成上述步骤后方可启动编码流程
你可通过 AI 助手协助确定特定功能或特定项目的需求、架构、设计及任务划分。这一环节非常重要,在实施阶段能为 AI 助手提供关键信息。但请谨记:AI 是协作工具而非决策主体。
清晰的需求与明确的任务定义有助于 AI 助手生成更精准的代码,从而减少手动干预需求。但这绝不意味着你可以减少对生成代码的审查与验证责任。
需特别注意:绝不能仅依赖 AI 助手创建这些文档。作为项目负责人,你必须始终保持对每个技术细节的掌控与理解。你的领域专业知识、实践经验与判断力才是决策的核心依据。由于 AI 助手可能存在迎合用户而非提出批判性反馈的倾向,建议以提问形式而非断言的方式与 AI 交互。这种方式能引发更有价值的对话,并有助于发现潜在问题或替代方案。
04 提示词工程
有效的提示词设计对 AI 辅助开发(AI-assisted development)非常重要:
- 提供待完成工作的详细规范
- 必要时附上相关上下文和文件资料
- 针对特定任务策略性地运用提示词,便于后续审查和测试
- 将大型任务拆分为更为聚焦的子任务,以便获得更佳的输出结果
你可通过以下方式构建提示词:
- 使用 Amazon Bedrock Prompt Optimization[6] 等工具重写提示词,使其产生更符合应用场景的推理结果
- 采用元提示词策略(metaprompting)(译者注:可以把它理解为 “让 AI 生成提示词的提示词” 或 “提示词的生成框架”。),先与 AI 助手讨论功能特性,再将讨论内容总结为供智能体开发该功能的提示词
05 测试与验证
通过以下方式确保代码的质量与可靠性:
- 对每项代码变更进行增量测试
- 尽可能实现自动化测试
- 依据原始需求进行验证
- 维护完整的测试套件(CI/CD)
- 定期执行自动化的安全扫描与质量检测
实践中我们发现,完全依赖 AI 代码助手生成单元测试效果不佳。AI 助手只能创建浅层测试或无关断言,这些测试仅能验证现有代码,无法确保足够的测试覆盖率或有效的验证。
强烈建议自主创建测试用例并采用测试驱动开发(TDD)方法。虽然可以借助 AI 助手基于你提供的测试用例来实现测试,但测试用例的定义必须由你亲自完成。作为项目的负责人或监督者,你最了解业务逻辑、边界场景以及软件的预期行为。你的领域知识和对需求的理解对于设计能真正验证应用行为的测试场景至关重要。
开发人员必须亲自审查并确认每个测试用例能否:有效检验目标功能、妥善处理边界情况、保持测试套件的整体质量。请谨记,有效的测试需要同时对业务需求和技术实现具有深度理解——这是当前 AI 助手无法完全复制的能力。
06 文档管理
可通过以下方式维护高质量文档:
- 记录所有变更内容
- 确保客户端生成规范的代码文档(如 Python 代码中的 docstrings 和 README 中的书面文档)
- 保持文档与代码变更同步
6.1 使用 AI 辅助进行文档编写
可与 AI 共同创建多种文档,并在协同修改时实时更新。例如:规划阶段定义数据库架构后,可让 AI 生成 ER 图。审查时若需调整,同步更新文档与代码。这种协作模式可应用于 API 设计、网络架构等多方面。关键在于采用有逻辑的文档拆分方式,保持文档的实时性与简洁度,帮助您和 AI 共同维持对上下文的清晰认知(对项目背景、进展和细节的掌握)和控制(对项目方向和内容的管理能力)。
小提示:结构良好的文档有助于开发者和 AI 助手在整个项目周期中保持上下文连贯性。
07 局限与注意事项
7.1 MCP 服务器与工具数量
- 过多的 MCP 服务器/工具可能对客户端性能产生负面影响
- 请阅读客户端文档了解最佳实践与限制规范
7.2 会话管理
- 过长的对话会因上下文容量持续增长而降低客户端性能
- 建议为不同功能模块维护独立的对话线程
- 定期审查并清理对话历史记录
08 上下文管理
8.1 规则规范(Rules)与工具设置(Configuration)
为实现最佳效果:
- 明确定义代码生成与修改的规则
- 保持跨环境配置的一致性
- 记录特殊规则与例外情况
- 定期审查并更新配置设置
- 采用模块化的设计原则
规则规范示例:
- 若文件超过 300 行代码,应拆分为多个文件
- 为每个新增代码段添加文档说明
09 工具链
为充分发挥 AI 编程智能体的效能,请遵循软件开发最佳实践(需求明确、将代码模块化、文档完善等)并善用工具(静态代码分析工具、代码覆盖率计算工具、CI/CD 流水线、测试套件、格式化工具等)。
当我们向编码智能体分配任务时,它可通过运行测试用例和静态分析工具进行自主迭代,必要时进行自我修正。这种方式能最大限度减少人工干预,优化开发流程。
10 版本控制
请遵循以下版本控制最佳实践:
- 规范化的 Commits:高频率提交代码变更并提供清晰的描述性信息。可考虑使用 AI 辅助起草 Commit 说明,但务必人工审核确保其准确反映代码变更内容,并为潜在的回滚提供有效参考点。
- 分支策略:新功能开发使用 feature 分支(feature branches)。重大变更应创建独立分支以保持开发流程的灵活性。
- 仓库结构:维护清晰有序的代码仓库结构。提前明确结构规范要求(例如文件大小限制、单体仓库设置、前端框架选型),并将这些要求纳入给 AI 的提示词中,以确保代码组织方式的一致性。
END
本期互动内容 🍻
❓如果 AI 能完成 80% 的代码,你认为开发者最重要的核心能力是什么?是架构设计、提示词工程、测试验证,还是别的?
文中链接
[1]https://en.wikipedia.org/wiki/Vibe_coding
[2]https://aws.amazon.com/q/developer/
[5]https://modelcontextprotocol.io/clients
[6]https://docs.aws.amazon.com/bedrock/latest/userguide/prompt-management-optimize.html
原文链接:
https://github.com/awslabs/mcp/blob/main/VIBE_CODING_TIPS_TRICKS.md
</div>