← 返回Vibe Coding 做 App:用 4 个文件让 AI 自己跑完开发闭环
1 / 9
Vibe Coding·9 步

Vibe Coding 做 App:用 4 个文件让 AI 自己跑完开发闭环

以 CATALK 为例,拆解 AGENTS.md、README、PRD、TODO 四个文件各记什么、AI 按什么顺序读写,以及回写规则怎样让每次新对话都接上最新进度;附一段可直接使用的搭建提示词。

TL;DR · 一句话结论

入口文件 AGENTS.md 只定规矩和指路,README 只写现在,想法先进 TODO,决定要做先写进 PRD 等你拍板;做完按收尾规则回写 PRD、README、TODO。靠自动加载、唯一信息源和共用编号三个机制,AI 每次新对话都能从最新全局接着干。

1
Step 1

你一直在给 AI 当项目经理

视频封面:Vibecoding 做开发,4 个文件搞定开发闭环
视频封面:Vibecoding 做开发,4 个文件搞定开发闭环

用 AI 做 App,做到后面会发现,最费脑子的往往不是提出想法,而是管理项目:

  • 每开一个新对话,都要先交代一遍:项目是干嘛的、现在做到哪了、上次改了什么;
  • 丢给 AI 一个想法,它二话不说就开始写代码,需求还没想清楚,做出来不对又得返工;
  • 做完以后还得自己测试,零碎的问题一个个反馈;
  • 项目越做越大,哪些做了、哪些改了规则、哪些只是想法,全局只在你一个人脑子里。
四格漫画:每开新对话重新交代、想法刚提出 AI 就开写、做出来不对又得返工、测试找问题还得自己来;底部结论是 AI 已经很会写代码,缺的是掌控全局、自己跑完开发闭环
四格漫画:每开新对话重新交代、想法刚提出 AI 就开写、做出来不对又得返工、测试找问题还得自己来;底部结论是 AI 已经很会写代码,缺的是掌控全局、自己跑完开发闭环

说白了,你一直在给 AI 当项目经理。AI 写一个功能已经很轻松,它真正缺的是掌控项目全局、自己跑完一个开发闭环的能力。

这篇拆解作者在自己的 App CATALK(一个记录猫咪叫声的 iOS 应用,2.0 版已提交 App Store 审核)里用的做法:项目里只靠四个文件,作者基本只做两件事——提出想法和在关键决定上拍板,其余的由 AI 按规矩跑完,项目也没有失控。

想法经过 AGENTS.md、README.md、PRD_v2.0.md、TODO.md 四个文件,让 AI 接住整个项目,完成实现想法、测试验证、更新进度
想法经过 AGENTS.md、README.md、PRD_v2.0.md、TODO.md 四个文件,让 AI 接住整个项目,完成实现想法、测试验证、更新进度
文件在 CATALK 里的位置记什么
AGENTS.md(入口)项目根目录;CLAUDE.md 只有一行 @AGENTS.md项目规矩、各类信息去哪找
README(进度看板)docs/v2.0/README.md现在做到哪、未发布的改动、风险、下一步
PRD(需求规则)docs/v2.0/PRD_v2.0.md功能规则、改动编号、为什么这么改、变更记录
TODO(想法池)TODO.md还没决定做的事、长期事项、新想法

下文展示的都是 CATALK 录制时(2026 年 9 月下旬)已经写好的真实文件,不是现场演示。

2
Step 2

全貌:一个想法进来,AI 按什么顺序工作

四个文件不是四份零散的文档,而是一条流水线:每一站读什么、写什么都规定好了。一个想法进来之后,AI 依次经过这几站:

一个想法怎么做到收尾:①你提出想法 → ②读入口规则 AGENTS.md → ③读 README 了解当前状态 → ④写进 PRD 等你确认(暂时不做的进 TODO)→ ⑤改代码、跑测试 → ⑥回写 PRD、README、TODO;下次新对话接着最新进度继续
一个想法怎么做到收尾:①你提出想法 → ②读入口规则 AGENTS.md → ③读 README 了解当前状态 → ④写进 PRD 等你确认(暂时不做的进 TODO)→ ⑤改代码、跑测试 → ⑥回写 PRD、README、TODO;下次新对话接着最新进度继续
站做什么用到的文件
第一站 · 加载规矩知道这个项目该怎么干活、东西在哪CLAUDE.md → AGENTS.md
第二站 · 读当前状态知道现在做到哪了、有什么风险README
第三站 · 分流只是想法就记进 TODO;决定要做就先写进 PRD,等你拍板TODO / PRD
开发照着 PRD 的规则改代码、跑测试代码 + 测试
第四站 · 回写把结果写回 PRD、README 和 TODOPRD / README / TODO

回写完,下一次开新对话,AI 又从第一站开始,读到的就是最新的全局——这就是一个完整的闭环。下面按这个顺序,一站一站看每个文件在做什么。

3
Step 3

第一站 · 加载规矩:AGENTS.md

AGENTS.md 可以理解成项目的入职手册。它最重要的作用只有一个:指路。

AGENTS.md 告诉 AI 去哪里:先读 README 了解当前状态,做功能先写 PRD 等你确认再开发,暂时不做的记入 TODO
AGENTS.md 告诉 AI 去哪里:先读 README 了解当前状态,做功能先写 PRD 等你确认再开发,暂时不做的记入 TODO

每类信息该去哪找

CATALK 的 AGENTS.md 第 3 节是「文档与进度工作流」。第一张表把每类信息的唯一位置写得清清楚楚:

CATALK AGENTS.md §3.1「每类信息只记一处」:项目规矩与文档在 AGENTS.md;做到哪、风险、下一步、未发布改动在 README;功能规则、编号、为什么这么改、变更记录在 PRD;没排进版本的事、长期事项、新想法在 TODO.md
CATALK AGENTS.md §3.1「每类信息只记一处」:项目规矩与文档在 AGENTS.md;做到哪、风险、下一步、未发布改动在 README;功能规则、编号、为什么这么改、变更记录在 PRD;没排进版本的事、长期事项、新想法在 TODO.md
  • 项目现在做到哪了、有什么风险、下一步干什么 → README
  • 功能怎么做、规则是什么、为什么这么改 → PRD
  • 还没决定要做的事、新冒出来的想法 → TODO

开工前的规矩

表格下面是开工前的规矩:先读 README;新功能先改 PRD,等你确认了再写代码;只是想法就记进 TODO。

CATALK AGENTS.md §3.2「开工前」:先读 README 的当前状态、未发布的改动和下一步;判断任务类型——新功能先改 PRD 确认后再写代码、不改规则的 bug 可直接修并补变更记录、只是想法写进 TODO;任务来自 TODO 时注明去向;对话里拍板的决定当场写进 PRD
CATALK AGENTS.md §3.2「开工前」:先读 README 的当前状态、未发布的改动和下一步;判断任务类型——新功能先改 PRD 确认后再写代码、不改规则的 bug 可直接修并补变更记录、只是想法写进 TODO;任务来自 TODO 时注明去向;对话里拍板的决定当场写进 PRD

除了这一节,其他开发相关的规矩也都指向具体文件,比如做界面之前先读设计规范,打包上架去看发布指南。

所以入口文件自己不记任何进度,只负责定规矩和指路。AI 读完它,就知道下一步该去读 README 了。

4
Step 4

第二站 · 读当前状态:README

这里的 README 是项目的进度总览,相当于一块进度看板。CATALK 的 README 从上到下是:

  1. 当前状态:2.0 已经提交审核,但主分支 main 上还有两条改动没有发布;
  2. 未发布的改动:列出这两条改动(O9、O10,后面会讲到 O9);
  3. 已知问题与风险:比如真机还没有验证过,iPad 目前只是手机的版式;
  4. 下一步:接下来要做什么。
新对话怎么接上项目进度:发起新对话「继续开发 CATALK」→ 读取 AGENTS.md 入口规则「开工前先读 README」→ 读取 README 了解当前状态:2.0 已提审、未发布改动 O9 和 O10、下一步真机验证
新对话怎么接上项目进度:发起新对话「继续开发 CATALK」→ 读取 AGENTS.md 入口规则「开工前先读 README」→ 读取 README 了解当前状态:2.0 已提审、未发布改动 O9 和 O10、下一步真机验证

README 的原则只有一条:只写现在,不写过程。所以它很短,AI 一口气就能读完,读完就知道项目的全局。

以前每次开新窗口都要交代一遍背景,现在这件事由 README 替你完成。

5
Step 5

第三站 · 分流:TODO 和 PRD

一个想法进来,AI 先判断:这是马上要做的,还是只是一个想法?

只是想到还是现在要做:「以后考虑付费功能」记进 TODO,先记下暂时不做;「现在解决单猫选猫问题」写进 PRD 的 O9 条目,状态待确认,你确认后 AI 再改代码
只是想到还是现在要做:「以后考虑付费功能」记进 TODO,先记下暂时不做;「现在解决单猫选猫问题」写进 PRD 的 O9 条目,状态待确认,你确认后 AI 再改代码

只是想法 → 记进 TODO

CATALK 的 TODO 里有产品推广、付费模式、以后的迭代方向——都是还没决定要做、或者要跨好几个版本的事。想到什么先往这放,就不会散落在聊天记录里找不到。

决定要做 → 先写进 PRD,等你拍板

PRD 是产品需求文档。CATALK 的 PRD 里,每一个改动都有一个编号:

前缀含义
F新功能
I改进
D待设计的问题
O测试反馈的优化项

每一条都写清楚:问题是什么、规则是什么、现在是什么状态。

有了编号,你和 AI 之间就有了一个代号。比如想做 O4,直接说一句「把 O4 做了」,不用再描述一遍背景,AI 就知道是哪件事。

写进 PRD 之后,需求在写代码之前就定下来了,你只需要拍板确认。这是整个流程里你唯一需要介入的地方。

6
Step 6

开发与第四站 · 回写

拍板之后,AI 照着 PRD 里的规则改代码、跑测试,这一步这里不展开。

重点是回写,这是整个闭环的最后一站。

代码改完还要更新进度:AI 回写 PRD(O9 已实现未发布、变更记录「实现 O9」)、README(未发布改动 O9)、TODO(单猫选猫问题勾掉 → PRD O9),回复里说明已更新 PRD、README、TODO
代码改完还要更新进度:AI 回写 PRD(O9 已实现未发布、变更记录「实现 O9」)、README(未发布改动 O9)、TODO(单猫选猫问题勾掉 → PRD O9),回复里说明已更新 PRD、README、TODO

CATALK 的 AGENTS.md 里专门有一节收尾规则,标题就叫「收尾(缺一项不算完成)」,原文如下:

  1. 代码和相关 UI 测试已改,测试已跑,结果写在回复里。
  2. PRD:规则小节和实际实现一致;迭代项标「已实现」;§10 变更记录补一行(日期 + 编号 + 改了什么)。
  3. README:更新当前状态、已知问题、下一步;还没发布的改动写进「未发布的改动」。
  4. TODO:来源条目勾掉,注明结论写在哪个文件。
  5. 回复结尾列出这次回写了哪些文件;某个文件不用改,写明原因。

这样一来,你就不用再提醒 AI「把某某文件也更新一下」,因为回写本身就是它干活的一部分。回写完成,下一次开新对话,AI 读到的全局就是最新的,流程又回到第一站。

7
Step 7

为什么这几个文件能自己配合起来

靠的是三个机制,缺一个,闭环就会断。

机制一:加载规则——入口文件每次都会被读到

Claude Code 每次开新对话,都会自动读取项目里的 CLAUDE.md;其他 Agent 工具(比如 Codex)默认加载的是 AGENTS.md。

CATALK 的 CLAUDE.md 整个文件只写了一行:

@AGENTS.md

意思是加载 CLAUDE.md 时,把 AGENTS.md 的内容一起引进来。所以规矩只写一份,放在 AGENTS.md 里,不同工具都能读到。

AI 开工时先读什么:Claude Code 读 CLAUDE.md,经 @AGENTS.md 引入 AGENTS.md;Codex 直接读 AGENTS.md;AI 再按规则打开 README,读到当前状态、未发布改动和下一步
AI 开工时先读什么:Claude Code 读 CLAUDE.md,经 @AGENTS.md 引入 AGENTS.md;Codex 直接读 AGENTS.md;AI 再按规则打开 README,读到当前状态、未发布改动和下一步

最关键的是,入口文件每次对话都会被读到,不靠你提醒,AI 一开工就知道流程。

机制二:每类信息只有唯一的信息源

状态在 README,规则在 PRD,想法在 TODO,规矩在入口文件。同一件事只记在一个地方,其他地方只放一个链接指过去。

这样 AI 知道该去哪读、该往哪写,也不会出现同一件事在两个文件里说法不一样。

机制三:改动有编号,文件之间共用同一套编号

PRD 给每个改动起的代号(比如 O4、O9),会同时出现在 TODO、PRD 和 README 里,互相链接。从任何一个文件进去,顺着编号都能找到这件事的全部信息。

同一个 O9 各文件记什么:TODO.md 记原始问题「单猫跳过选猫,无法当场加猫」并标已处理 → PRD O9;PRD_v2.0.md 记完整规则、状态已实现未发布、来源 → TODO;README.md 记当前进度「未发布改动 O9」,详情 → PRD O9
同一个 O9 各文件记什么:TODO.md 记原始问题「单猫跳过选猫,无法当场加猫」并标已处理 → PRD O9;PRD_v2.0.md 记完整规则、状态已实现未发布、来源 → TODO;README.md 记当前进度「未发布改动 O9」,详情 → PRD O9
8
Step 8

实例:O9 这个小改动怎样走完闭环

拿一个真实的小改动把四站串起来。

O9 是什么:原来家里只有一只猫的时候,打标签会自动跳过「选择哪只猫」这一步。问题是这一步里有「新增猫咪」的入口——想给一只新猫录音时,跳过了就没法当场新建猫咪。现在改成只有一只猫也要选:可以选这只猫,也可以新建一只。

录制时这个改动已经做完,代码和测试都改好了,只是还没跟着新版本提交审核。看看它在文件里留下了什么:

1. 最早作为问题记在 TODO 里:现状、问题、建议都写清楚了。改完后这一条已经勾掉,下面写着「→ 已实现,未发布:PRD §11 O9,列在 README · 未发布的改动」。

CATALK TODO.md「6. 使用流程问题」:已勾选的「新建记录:只有一只猫时不再跳过选择猫咪这一步」,列出现状、问题、建议、改动时同步项,末行注明已实现未发布并链接到 PRD §11 O9 和 README 未发布的改动
CATALK TODO.md「6. 使用流程问题」:已勾选的「新建记录:只有一只猫时不再跳过选择猫咪这一步」,列出现状、问题、建议、改动时同步项,末行注明已实现未发布并链接到 PRD §11 O9 和 README 未发布的改动

2. 决定要做后进了 PRD,变成 O9:写了问题和规则,来源链接回 TODO。

3. 开发时改了 PRD 的规则:打标签页规则那一格改成「只有一只猫也不跳过、不预选,这一步同时是当场新增猫咪的入口(O9)」,末尾标上了 O9。

4. 做完回写:PRD 里 O9 的状态是「已实现,未发布」,变更记录多了一行;README 的「未发布的改动」里也有 O9。

CATALK README「未发布的改动」表:O9 打标签只有一只猫也从选猫开始、这一步可当场新增猫咪,O10 打标签进入场景时不自动弹出键盘,日期均为 2026-09-22
CATALK README「未发布的改动」表:O9 打标签只有一只猫也从选猫开始、这一步可当场新增猫咪,O10 打标签进入场景时不自动弹出键盘,日期均为 2026-09-22

一个非常小的改动,四站全部走完,四个文件全部回写。作者只提出了一个问题反馈,后面的闭环由 AI 按规矩跑完。

9
Step 9

在你的项目里搭起来

把下面这段提示词发给你的 AI 编程工具(Claude Code、Codex 等),让它把项目整理成这四个文件,并把规矩写进入口文件:

请帮我给当前项目建立一套开发文档,让 AI 在任何一个新对话里都能接着干活。

1. README 只写现在:当前状态、已知问题、下一步,要短;
2. PRD 里每个改动都有编号,写清问题、规则和状态,再加一份变更记录;
3. TODO 放暂时不做的事和新想法;
4. 在 AGENTS.md 里写清楚:每类信息记在哪个文件;新想法先进 TODO,决定要做先写进 PRD,等我确认再写代码。CLAUDE.md 只写一行 @AGENTS.md;
5. 在 AGENTS.md 里再写一条收尾规矩:每次做完开发,必须把 PRD 里的改动标成已实现、补一行变更记录,更新 README 的状态和下一步,来自 TODO 的就勾掉并注明结论写在哪,最后在回复里列出回写了哪些文件。缺一项不算完成。

同一件事只记一处,别处用链接。先读一遍项目现有的代码和文档,列出你打算怎么写,等我确认后再动手。

提示词最后要求 AI 先列计划、等你确认再动手,第一次搭建时认真看一遍它打算往每个文件里写什么。

其中第 5 条收尾规矩最重要。有了它,AI 每次做完开发,都会自己把结果写回这几个文件。

下一次对话从最新状态继续:上次做完把 O9 已实现未发布写进 PRD、README、TODO;新对话按规则先读 README,AI 知道 O9 已做好尚未发布,接着下一项工作
下一次对话从最新状态继续:上次做完把 O9 已实现未发布写进 PRD、README、TODO;新对话按规则先读 README,AI 知道 O9 已做好尚未发布,接着下一项工作

文件搭起来不难,难的是让它一直保持最新。闭环能不能转起来,全看最后回写这一步。

用这四个文件,你就能从「AI 的项目经理」,变成只负责提出想法、只负责拍板的人,把更多精力放在想清楚要做什么上。

1 / 9