在花了不知道多少小时和 AI 一起编程之后,我学到的:

先学会编程

如果想让 AI 真正帮助你编程,首先需要掌握编程本身。AI 更像是一个“乘数”,它会放大你已经具备的知识和能力。如果自己没有足够的编程基础,就很难判断 AI 给出的代码是否合理,也无法真正把自己的思考交给 AI 执行。

尽可能具体地表达需求

很多人使用 AI 时不够具体,这可能是得到糟糕结果的重要原因。AI 的表现很大程度上取决于你提供给它的上下文。单纯告诉 AI“构建一个 Docs”几乎没有提供任何有价值的信息,而加入具体的技术栈、功能需求、工作方式、终端命令、文档、截图和参考链接之后,AI 才能够更准确地理解任务。

把大问题拆成小任务

即使提供了足够详细的信息,AI 仍然可能犯错,因为一次性处理过于复杂的任务本身就很困难。AI 通常更擅长完成较小的任务,因此面对大型任务时,应该把它拆解成多个更小的部分。

这其实并不是什么 AI 技巧,而是最基本的工程实践。解决问题时,本来就应该先规划解决方案,再将问题拆分成更小的部分,然后进行实现。如果一个问题无法被拆解,很可能说明自己还没有真正理解这个问题。

告诉 AI 不要做什么

减少 AI 生成“垃圾代码”的另一种方式,是明确告诉它哪些事情不能做。一个比较实用的 Prompt 结构可以分成三个部分:第一部分是任务本身,尽可能详细地描述需要完成什么;第二部分是背景信息,包括相关文件、文档和图片;第三部分则是“Do Not”,明确哪些内容不能修改、哪些地方不能触碰,以及 AI 唯一应该修改的范围。

对于编程工具来说,可以通过 Markdown 文件保存项目的重要信息,例如项目用途、技术栈、重要命令、工作流程以及项目特有的信息。这样 AI 在处理项目时就能够持续参考这些内容,而不需要每一次都重新解释。这些文件可以由开发者自己编写,也可以让 AI 分析代码库后生成。对于特定技术,还可以建立单独的规则文件。如果相关工具或公司已经提供了规则模板,也可以直接将这些模板加入项目。

使用 MCP 扩展 AI 的能力

MCP,即 Model Context Protocol,可以通过工具扩展 AI 能够完成的事情。包括 Context7、Next.js Developer Tools MCP 和 Chrome Developer Tools MCP。

Context7 可以帮助 AI 自动获取文档,因此不需要反复复制粘贴相同的资料。Next.js Developer Tools MCP 可以让 AI 获取 Next.js 项目的构建错误、项目状态、页面元数据和开发日志。

Chrome Developer Tools MCP 则可以让 AI 访问浏览器开发工具,从而查看布局变化、性能、控制台错误和网络请求。

永远给 AI 提供验证机制

AI 不应该只是负责写代码,还应该有办法验证自己写出的代码。测试、浏览器运行、CLI 命令以及 CI/CD Pipeline 都可以作为验证代码是否正常工作的手段。

这些测试和验证机制可以自己创建,也可以让 AI 来生成。但即使验证机制是 AI 创建的,也需要进一步确认验证本身是否有效。尤其是在前端和设计相关任务中,更需要有可靠的验证方式。

AI 会放大你的工程习惯

经过长时间使用 AI 编程工具之后,真正从 AI 中受益最多的程序员,往往已经具备良好的工程习惯。具体、拆分任务、明确禁止事项、记录项目规则,以及验证工作结果,这些本身就是良好工程实践和领导能力的一部分。

AI 并不会取代这些能力,而是会放大它们。如果一个人有良好的习惯,AI 会让这些优势更加明显;反过来,如果一个人不写测试、不记录文档,也不考虑边界情况,那么 AI 同样会放大这些问题。

因此,AI 编程并不意味着完全不需要思考。至少在当前阶段,更合理的方式是让人负责理解问题、规划解决方案和做出判断,让 AI 负责大量具体的代码实现,同时始终由人对最终结果进行验证。