Vibe Coding开发学习记录(1):提问到协作

成元 2026-07-06 { 教程, 笔记 } [ Vibe Coding ]

前言

唉,今天澡卡弄丢了,很烦。

大约在 2023 年,也就是所谓的 AI 元年,我就开始接触 AI 编程了。当时和大多数人一样,我觉得它没什么用。事实上,那时的 AI 对编程来说确实帮不上什么忙,只能在 ChatGPT 这类网页聊天框里,你说一句,它回一句,编程能力也比较有限。后来之所以觉得好用,我感觉除了 AI 模型本身越来越强之外,更关键的是出现了 AI 编程代理(AI Coding Agent)这类工具。

说这么多,其实作为一个初级码农,我自己也并不太会用。最近结合实际使用和别人的经验,写下这篇文章记录一下:

Vibe Coding 的概念

一切都要得从 2025 年初说起。那个搞 nanoGPT 的 Andrej Karpathy 发了条推文:

There's a new kind of coding I call ‘vibe coding’, where you fully give in to the vibes, embrace exponentials, and forget that the code even exists.

Andrej Karpathy 原文

于是 Vibe Coding 这个概念便诞生了。简而言之, Vibe Coding 就是:你描述意图,AI 写代码,你自己沉浸在 「Vibe」 里,甚至不用去关心代码长啥样。

不过每个人有每个人的用法,为什么有的人就是比某些人用的好了?我之前就一直用不好,于是就到处查方法,发现这与你会不会用 AI 关系不大,跟你走到了哪个阶段关系很大。

在我看来,用 AI 编程这件事,是有三个层层递进的阶段的:

  1. Prompt Engineering —— 你会提问
  2. Context Engineering —— 你会喂料
  3. Agentic Engineering —— 你会协作

下面基于 Codex 进行说明。

阶段一:Prompt Engineering

Prompt Engineering,提示词工程。

它的本质一句话就能说清:你说什么,AI 就干什么。AI 干得好不好,取决于你说的请不清楚,如果你说的模糊不清,它就还你一坨含含糊糊的东西;你把角色、要干啥、要啥格式、有啥限制讲明白,它就给你一份能直接用的代码。说白了就是把话说清楚这点事,没啥玄学。

不过我得先泼盆冷水:这一招放到今天,其实已经有点过时了。早年间(好吧也没多早)人们会对着 ChatGPT、Claude 一句句告诉项目里应该干什么,不该干什么,遇到 xxx 情况怎么干,然后再开始要求生成具体的业务需求。

为什么说这样过时了?这种 AI 网页聊天框或者 CLI 工具都有个治不好的毛病:它每开一轮新对话都是失忆的。你上个对话或者说其它机器上和他说这个项目基于 xxx ,不能干 xxx 等等,他根本就不记得。你总不能每次提问都把这一长串规矩重新抄一遍吧?抄到第三回我自己都嫌烦。

所以 Prompt 这关,学会说很重要,但是他不是终点。真正让 AI 从网页玩具变成生产力的,是下一步:你得想办法,给 AI 喂对、而且让它能记住上下文。也就是你每次新开一个对话,或者换一台设备,他能记住你之前规定的一些内容。

阶段二:Context Engineering

Context Engineering,上下文工程。

核心就一句话:AI 压根不了解你的项目,你得系统性地、一次性地告诉它。

注意,重点不是把代码一股脑全甩给它,那叫信息过载,上下文窗口分分钟给你撑爆。重点是精心地组织信息,让 AI 摸清你项目的全貌:架构长啥样、规范是啥、有哪些约束、现成的写法是怎样的。

一份好的「项目上下文」,我觉得至少得讲清这几件事:

要素 作用 举个栗子
项目架构 项目的骨架 前后端分离,Spring Boot + Vue 3
目录结构 代码该放哪 controller/ 放接口,service/ 放业务
命名规范 东西怎么命名 DTO 用 XxxRequest,VO 用 XxxVO
技术栈约束 用啥不用啥 MyBatis(不是 JPA),JWT(不是 Session)
已有模式 照着现成的抄 统一 Result 包装响应

那么到底应该用什么样的形式告诉它?接着看

用 AGENTS.md 做规范

我们主要使用 AGENTS.md (在 Claude 中叫 CLAUDE.md) 来解决 AI 记不住的问题。可以先阅读 Codex AGENTS.md 进行了解。

一般而言,处理一个新项目时,在项目根目录创建 AGENTS.md,把它当成 AI 的「项目说明书」。妙就妙在——这玩意儿你只用写一次,AI 每开一轮新对话都会自动读一遍。

/init 可用于让 AI 根据当前架构,在项目根目录自动创建一个 AGENTS.md 供 Codex 读取。不过生成后建议检查并追加相关信息,以免疏漏。

不过值得注意的时,Codex 启动时所在的工作目录会对 AGENTS.md 的读取有影响。如果如果 Codex 是在 ~/project/mp/ 下打开的,你不能默认期待它在修改 ~/project/real/ 时自动遵守 ~/project/eal/AGENTS.md,除非它显式读取了那个文件,或者当前工作区/上下文机制,或者当前工作区/上下文机制已经把它纳入了。

使用后 AGENTS.md ,妈妈再也不用担心我的 AI Coding Agent 不懂我的规矩了!

用 Plan Mode 做计划

在 Context 中讲清楚规范还不够!还需要强迫 AI 弄清楚我到底想干什么!

Codex 等 AI 编程代理一般支持 Plan Mode,专门用于用户告知 AI 自己想干什么。在 Plan Mode 下,客户列出需求后,AI 不会修改项目,而是先列出打算动哪些文件、分几步走、为啥这么改等内容。如果它不清楚细节,还会主动询问客户细节,客户可以补充 Note 给它。

Codex 中输入 /plan 即可进入 Plan Mode

总之在这个模式下 AI 只列计划,搞清楚客户的需求,以及为了完成这个需求它要干什么,不干实际工作。客户觉得可以后,它才会真正的开始工作!

上下文里具体该说些什么?

前面无论是 AGENTS.md 还是 Plan Mode ,都是给 Context 补充必要的信息。

很多人一听上下文就以为是多贴点代码,其实差远了!它还包括文档、代码规范、Git 约定、错误处理方式、安全红线这些软东西。这些单拎出来看好像都不那么重要,但恰恰是它们,决定了 AI 写出来的代码能不能真正长进你的项目里。

我有个特别顺手的类比:这跟给新员工写 onboarding 文档一模一样。你不会傻乎乎地把整个代码库甩他脸上让他自己悟,而是告诉他项目是怎么转的、代码搁哪、规矩是啥。把 AI 当成那个聪明但啥都不知道的新人,你就知道该喂它什么了。

阶段三:Agentic Engineering

Agentic Engineering,代理工程。

目前的最高阶玩法。在这个阶段,AI 不再是那个你问一句、它答一句的对话框了,而是一个能自己规划、自己执行、自己验证的 Agent

你扔给它一个需求,它会自顾自地把这一整套都走完:

  1. 分析需求范围
  2. 制定实施计划
  3. 吭哧吭哧写代码
  4. 跑测试
  5. 自己审查代码质量
  6. 顺手把文档也生成了
  7. 最后回过头来跟你汇报结果

是的,只需要你给需求,它能完成剩余的部分,这也是我们使用 AI 的理想状态,尽管大多数时候达不到这个状态。

关于这一块的使用过于复杂,我之后应该会单独出一个博客讲解 (又挖坑了)

使用 AI 的心智模型

AI 不是万能的,不要默认它知道所有事情

Agent 再能干,它也不知道哪些事绝对不能碰。这些红线,只能人来定。

比如不要 commit 密钥,或者不要随意 rm -rf 等等。

写好 AGENTS.md

它里面该有的东西:

基本就是把一个真团队的「入职大全」搬过来。如果不写清楚让 Agent 自由发挥,大概率会让人高血压。

有些活,永远是人的

这条我想专门强调,尤其是说给新生听!别一看 AI 这么猛就慌,觉得那我还学个啥。恰恰相反,下面这些事,AI 一样都替不了你:

总结

AI 编程的本质,从来不是让 AI 替你写代码,而是让你能驾驭得了更复杂的项目

在三个阶段中,你分别扮演者不同的角色,如下:

阶段 怎么交互 你是 AI 是
Prompt Engineering 你写一句,它写一句 代码作者 代码生成器
Context Engineering 你给背景,它写代码 架构师 高级开发
Agentic Engineering 你给需求,它自己干 项目经理 一整个开发团队

这三个阶段是相辅相成的,不是说处于阶段三,就不用在意阶段一的 Prompt 了!

哪怕你已经用上了 Agent 团队,写好每一个 prompt 依然是你最核心的基本功。因为说到底,你给 Agent 下的那个需求,本身就是一个 prompt——地基塌了,上面盖多高都是空中楼阁。

参考资料

Vibe Coding 技巧:

Codex 使用: