以 CATALK 为例,讲清只靠对话做产品的三个问题、讨论结果怎么写成带前因后果的文档、怎样照着文档推动 AI 开发;附一段聊完方案后直接可用的提示词。
只靠对话做产品,会遇到上下文不够、注意力分散、不能跨窗口三个问题。把聊天当讨论,讨论结果让 AI 写成 Markdown 文档,并记清定了什么、为什么、哪些不做、为什么不做;开发时让 AI 照着定稿 HTML 和 PRD 写代码,再用 AGENTS.md、README、PRD 让文档在项目里流转。

很多新手做 Vibe Coding,用的还是和 AI 聊天的方式:打开一个窗口,想到一个点子,马上让 AI 开始写代码。做一个简单功能、一个 demo,这样没什么问题。
可一旦事情变复杂,或者换了个窗口,AI 就把之前说的前情提要全忘了,你又得重新交代一遍。时间一长,做出来的东西越跑越偏,和你当初在第一个窗口里讨论的完全对不上。
核心原因就一句话:
Vibe Coding 的时候,AI 的记忆不应该存在对话里,而应该落在文档里。

把讨论的结果落成文档,再让 AI 照着文档去干活,从「对话驱动」变成「文档驱动」。
这一篇以作者自己做的 App CATALK(一个记录猫咪叫声的软件,已上架 App Store)为例,讲清三件事:对话里聊出来的方案怎么变成文档;文档怎么推动 AI 开发;项目里还有哪些文档一直在配合工作。
AI 每次回答你,都要把整个窗口里的聊天记录和看过的文件全带上,这些内容叫做上下文。上下文是有限的,不是你聊多少它就能塞多少。
快装满的时候,Agent 工具会自动把前面的对话压缩成一段摘要。压缩完大方向可能还在,但聊过的那些细节就可能没了。

就算上下文还没装满,对话一长,AI 也容易抓不到重点。它往往更在意你最近说的那几句,前面早就定好的事,反而容易被忽略。聊得越多,忘得越多。

每一次新对话,对 AI 来说都是全新的。换一个窗口,你前面聊的东西它一点都不知道,只能从头再讲一遍。

所以作者非常不建议在 Vibe Coding 时做「聊天式开发」:过程随机、不可控,容易丢记录,还要花大量时间在解释和对齐信息上。
作者给 CATALK 做 2.1 版本时,在同一个窗口里从下午 3 点半一直聊到晚上:

这么长的一段对话,如果结果全留在聊天里,聊到后面别说 AI,作者自己都不知道最早定了什么,还得回去翻记录。
正确的做法很简单,就一个习惯:把聊天当成讨论,但讨论的结果一定要让 AI 写成文档。
这里的文档一般指 Markdown 文件(.md):一种带简单格式的纯文本,人能看懂,AI 读写最方便。
为什么文档能解决上面三个问题?因为文档存在你的电脑里,不在对话里:
| 问题 | 文档为什么能解决 |
|---|---|
| 上下文不够 | 对话再长,文件也不会被压缩 |
| 注意力分散 | 定好的事写在文件里,不会被最近几句话淹没 |
| 不能跨窗口 | 换多少个窗口,AI 读一下这个文件就知道前面确定了什么 |

文档不是记一个结论就完事了,还要把讨论的前因后果记清楚:
因为下一个读这份文档的 AI 并没有参与你上一轮的讨论。它只看到一个结论,不知道你当初是怎么想的,很可能重蹈覆辙,把你否掉的方案再做一遍。
例一:决定 + 理由。 PRD 里有一条决定:不论视频长短,用户的流程都一样。后面紧跟一句理由:用户的操作路径保持一致。

例二:不做 + 原因。 还有一条写的是「不做 App 快捷入口」,原因写在旁边:作者自己遇到猫的时候,第一反应是打开相机录像,而不是打开 App。

这样一份讨论文档,五项都有着落:

不要只记结论,推导出结论的理由也要记下来。
建议你每次 Vibe Coding 和 AI 聊出一个方案之后,都这样跟 AI 说:
把我们刚才定下来的内容写进文档:
1. 写清楚定了什么
2. 写清楚为什么这么定,哪些不做、为什么不做
3. 写完先给我看,先不要写代码

就这三句话,文档就能写好。注意最后一句:先不要写代码。先确认文档写对了,再进入开发。
下一步,就是用文档去推动 AI 开发。注意,是照着文档开发,而不是照着聊天记录开发。
CATALK 有这样一个功能:用户录完一声猫叫后,让用户补充一点信息,比如加一个封面、留一段视频、写一句当时的场景。
这个页面怎么设计最合适,作者拿不准,就在对话里让 AI 先出设计稿,做成一个 HTML 页面。前后一共调了 6 版:
| 版本 | 改了什么 |
|---|---|
| v1 | AI 给了好几套方案,挑一个 |
| v2 | 定了方向,让 AI 在这个方向上细化 |
| v3 | 删掉封面那一栏的解释文字,只留关键信息 |
| v4 | 把封面和场景调成同一级的小标题 |
| v5 | 定下最终的组合 |
| v6 | 弹框的三个选项字数不一样,改成一样,三个选项就对齐了 |

最后定下来的这一版,讨论结果和最终版都定在了这个 HTML 文件里,能直接预览;规则和理由,也写进了需求文档 PRD。
然后 AI 开始写代码。这时它是直接照着 HTML 和 PRD 去开发的,而不是回头去翻前面那一长串聊天记录、从里面找支离破碎的信息,开发效率和准确度都会高很多。

这时就算随便换一个新窗口,新的 AI 读一下这两个文件,马上也能接着写,不用再做太多解释,也不用复述背景。
总之就一句话:AI 的记忆应该放在文档里,而不是放在对话里。
前面讲的,都是从对话里整理出来、和某一个功能相关的文档。真正开发时,项目里还有几份文档一直在配合工作,大致是这样流转的:

所以不管开哪个窗口,AI 都知道从哪里看项目进度、照什么规则开发、做完要记录什么。这四个文件的具体写法,可以看 用 4 个文件让 AI 自己跑完开发闭环;PRD、设计规范这些文件怎么来的,可以看 从想法到验收的五步开发法。
Vibe Coding 和日常跟 AI 聊天最核心的区别是:Vibe Coding 靠的是有规划、有条理的本地文档驱动,而不是一时兴起的一句话,加上乱七八糟的聊天记录。
回顾整套做法:
AI 的记忆应该存在文档里,而不是存在对话里。
每一次新对话对 AI 来说都是全新的,它看不到别的窗口里的聊天记录。即使在同一个窗口,上下文快满时工具会把前面的对话压缩成摘要,细节也可能丢失。把讨论结果写进本地文档,新窗口读一下文件就能接上。
不只写结论,还要写前因后果:为什么开始讨论、定了什么、为什么这么定、哪些不做、为什么不做。否则下一个读文档的 AI 不知道你当初的考虑,可能把否掉的方案又做一遍。
可以直接说:把我们刚才定下来的内容写进文档,写清楚定了什么,写清楚为什么这么定、哪些不做、为什么不做,写完先给我看,先不要写代码。
让 AI 照着定稿的设计稿 HTML 和需求文档 PRD 去开发,而不是回头翻聊天记录。项目层面再用 AGENTS.md 规定规矩、README 记录进度,让每个新窗口都知道从哪里开始。