"吾生也有涯,而知也无涯"

"AI 的全知或许能让人安于无知,但唯有不甘于无知的人,才有资格在新时代立足。"

"Stay hungry. Stay foolish."

—— 谨以此作为开篇。

近期阅读了几位行业前辈关于 Vibe Coding 领域最佳实践的分享,收获颇丰,遂整理成此文作为学习记录。

在我看来,Vibe Coding 是以 AI 为核心编码主力的工作流程:这种模式下,人类的精力会聚焦在需求定义、规范沉淀、代码评审与项目管理等关键环节,本质是人类、项目与 Coding Agent 三者动态交互、协同推进的过程。

Vibe Coding 的实践离不开具体工具支持,像 Claude Code、CodeX 等都是常用选择,下面就来分享使用这类开发工具时的最佳实践。

Best Practice

与 AI 协同的终极目标,不是让 AI 做所有事情,而是逐步建设一个可靠的系统的协同机制

  1. Planing before coding:与其直接写prompt让AI开始干活,不如先和AI讨论清楚项目的规划,同时让它对代码仓库进行一定的理解,再进行开始编码。

    1. 文档的沉淀

      1. e.g. 数据库设计、API设计、页面设计。例如在Magpie项目中,作者制定了详细的DEVELOPMENT.md,包含:项目概述(功能、目标)、技术栈(前端、后端、部署、浏览器扩展)、系统架构、用户流程(标准流程、自动化流程)、页面路由端点、Api设计、环境配置(env基础配置、Docker Compose配置)、项目目录结构、开发规范、Git工作流、测试策略、性能优化、安全考虑(双重认证、权限设计)、参考资源

    2. 投入足够多的经历,让Prompt更加清晰具体,减少犯错的可能性空间。

    3. 分阶段交付,让 AI 逐步产出可沉淀、有价值的内容,而不是一次性产出所有代码。包括:需求文档(包含清晰的业务逻辑)、方案设计(包含技术选型、架构设计、数据库设计)、任务拆分(清晰的任务分解,可交付可验收)、验收标准

  2. 永远优先使用确定性的方法,而不是依赖“智能”:对不同项目做针对性地设计,在特定场合提供合适的工具,尽最大可能可靠地完成某些工作,从而让AI专注于需要思考和判断的部分。

    1. 确定性固化,解放双手。每次识别一个可重复+可确定的环节,然后让AI帮忙生成相关脚本或者配置文件,并手工验证和完善。整个流程固定下来后,以后都可以解放双手了。随着这样的确定性组件越来越多,整个系统的可靠性会越来越高。

      1. e.g. 与其直接让AI帮忙打包,不如用脚本固化构建流程。把构建、测试、部署的完整流程写成脚本,如 build.sh(可以让 AI 帮忙优化这个脚本,但是我们需要投入精力去review保证它可靠),然后在prompt里告诉AI执行这个脚本进行构建。

      2. e.g. 用工具固化检查规则:让 AI 帮忙配置.golangci.yml,在配置文件里声明各种检查点,然后使用golangci-lint这样的扫描工具去静态检查。

  3. 小步迭代而非直接放飞:AI 生成代码的能力很强,但它对整体架构的把握和长期维护的考虑还是有限的。一次性生成太多代码,就像是在黑暗中狂奔——你可能跑得很快,但也可能一头撞上墙[1]。相比之下,小步迭代可控性高,方便开发者进行Code Review,也能观察AI的实现方式以学到新东西。

  4. 放飞方式:必须有完善的测试用例(采用TDD)、做好版本控制、分模块完成、用另一个AI做交叉评审。

  5. 手动Context管理

    1. 多轮对话可以手动执/compact

    2. 对于相对独立的任务可以新开一个对话,不过前提是沉淀好文档(相当于长期记忆)。

    3. 配置Command:王巍大佬认为“凡是重复了两次以上的类似 prompt 都应该用命令来表述!”例如:

      1. /test-and-fix:运行测试,如果有失败自动尝试修复

      2. /review:对当前修改进行代码审查,给出改进建议

      3. /commit-smart:分析改动,生成合适的 commit message 并提交

  6. 推荐工作流

    1. 在 CLAUDE.md 中详细列出项目的编译命令、测试命令、linter 配置

    2. 每完成一个小功能,立即编译

    3. 测试通过后,运行 linter 和 formatter

Beyond Code: AI时代下的元技能

  1. 表达精准,结构化表达能力:用清晰明确无歧义的文字描述复杂的业务逻辑

  2. 快速验证的能力:快速审核验证代码的能力;什么叫“做完了”?如何验证正确性?

  3. 掌握复合型知识:能够跨越多个技术领域,理解它们之间的协同效应。

    1. e.g. 知道前端性能优化如何影响后端架构;数据库设计如何影响应用层代码;安全考虑如何贯穿整个技术栈。

  4. 深度理解业务知识与需求:业务、技术和设计相结合的能力;理解业务的边界和本质。

  5. 系统思维与架构思维:考虑到未来的扩展性、性能瓶颈或者团队协作成本。如何拆解任务、定义接口、设计架构。

  6. Context Engineering:如何在有限的上下文中提供最有效的信息

工程师不会结构性失业,反而会更忙。但“忙”的内容变了:从忙着写代码 变成 忙着设计系统、拆解任务、验收成果、沉淀 Prompt。[3]

相关阅读

[1] 王巍. (2025, October 14). 一个半月高强度 Claude Code 使用后感受. Onevcat. https://onevcat.com/2025/08/claude-code/

[2] 王巍. (2025, October 14). Magpie 和 「AI 贼船」- 再谈 Vibe Coding,当代码变得廉价时... Onevcat. https://onevcat.com/2025/10/magpie-and-ai-ship/

[3] 刘德恩. (2025, October 15). 万字详解AI悖论,戳破AI时代最大的谎言. 腾讯云开发者. https://mp.weixin.qq.com/s/ONybtOkDDlADBpj5OTMfaQ

[4] Xu, R., Chen, J., Yin, Z., Kong, C., & Zhang, X. (2025). Large Language Models Are Effective Code Watermarkers. arXiv preprint arXiv:2510.11251.

[5] 杰一. (2025). Claude Code 用法全面拆解!26 项核心功能 + 实战技巧. Zhihu. https://zhuanlan.zhihu.com/p/1928918331810886674