以 CATALK 为例,拆解 AGENTS.md、README、PRD、TODO 四个文件各记什么、AI 按什么顺序读写,以及回写规则怎样让每次新对话都接上最新进度;附一段可直接使用的搭建提示词。
入口文件 AGENTS.md 只定规矩和指路,README 只写现在,想法先进 TODO,决定要做先写进 PRD 等你拍板;做完按收尾规则回写 PRD、README、TODO。靠自动加载、唯一信息源和共用编号三个机制,AI 每次新对话都能从最新全局接着干。

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

说白了,你一直在给 AI 当项目经理。AI 写一个功能已经很轻松,它真正缺的是掌控项目全局、自己跑完一个开发闭环的能力。
这篇拆解作者在自己的 App CATALK(一个记录猫咪叫声的 iOS 应用,2.0 版已提交 App Store 审核)里用的做法:项目里只靠四个文件,作者基本只做两件事——提出想法和在关键决定上拍板,其余的由 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 月下旬)已经写好的真实文件,不是现场演示。
四个文件不是四份零散的文档,而是一条流水线:每一站读什么、写什么都规定好了。一个想法进来之后,AI 依次经过这几站:

| 站 | 做什么 | 用到的文件 |
|---|---|---|
| 第一站 · 加载规矩 | 知道这个项目该怎么干活、东西在哪 | CLAUDE.md → AGENTS.md |
| 第二站 · 读当前状态 | 知道现在做到哪了、有什么风险 | README |
| 第三站 · 分流 | 只是想法就记进 TODO;决定要做就先写进 PRD,等你拍板 | TODO / PRD |
| 开发 | 照着 PRD 的规则改代码、跑测试 | 代码 + 测试 |
| 第四站 · 回写 | 把结果写回 PRD、README 和 TODO | PRD / README / TODO |
回写完,下一次开新对话,AI 又从第一站开始,读到的就是最新的全局——这就是一个完整的闭环。下面按这个顺序,一站一站看每个文件在做什么。
AGENTS.md 可以理解成项目的入职手册。它最重要的作用只有一个:指路。

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

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

除了这一节,其他开发相关的规矩也都指向具体文件,比如做界面之前先读设计规范,打包上架去看发布指南。
所以入口文件自己不记任何进度,只负责定规矩和指路。AI 读完它,就知道下一步该去读 README 了。
这里的 README 是项目的进度总览,相当于一块进度看板。CATALK 的 README 从上到下是:
main 上还有两条改动没有发布;
README 的原则只有一条:只写现在,不写过程。所以它很短,AI 一口气就能读完,读完就知道项目的全局。
以前每次开新窗口都要交代一遍背景,现在这件事由 README 替你完成。
一个想法进来,AI 先判断:这是马上要做的,还是只是一个想法?

CATALK 的 TODO 里有产品推广、付费模式、以后的迭代方向——都是还没决定要做、或者要跨好几个版本的事。想到什么先往这放,就不会散落在聊天记录里找不到。
PRD 是产品需求文档。CATALK 的 PRD 里,每一个改动都有一个编号:
| 前缀 | 含义 |
|---|---|
| F | 新功能 |
| I | 改进 |
| D | 待设计的问题 |
| O | 测试反馈的优化项 |
每一条都写清楚:问题是什么、规则是什么、现在是什么状态。
有了编号,你和 AI 之间就有了一个代号。比如想做 O4,直接说一句「把 O4 做了」,不用再描述一遍背景,AI 就知道是哪件事。
写进 PRD 之后,需求在写代码之前就定下来了,你只需要拍板确认。这是整个流程里你唯一需要介入的地方。
拍板之后,AI 照着 PRD 里的规则改代码、跑测试,这一步这里不展开。
重点是回写,这是整个闭环的最后一站。

CATALK 的 AGENTS.md 里专门有一节收尾规则,标题就叫「收尾(缺一项不算完成)」,原文如下:
- 代码和相关 UI 测试已改,测试已跑,结果写在回复里。
- PRD:规则小节和实际实现一致;迭代项标「已实现」;§10 变更记录补一行(日期 + 编号 + 改了什么)。
- README:更新当前状态、已知问题、下一步;还没发布的改动写进「未发布的改动」。
- TODO:来源条目勾掉,注明结论写在哪个文件。
- 回复结尾列出这次回写了哪些文件;某个文件不用改,写明原因。
这样一来,你就不用再提醒 AI「把某某文件也更新一下」,因为回写本身就是它干活的一部分。回写完成,下一次开新对话,AI 读到的全局就是最新的,流程又回到第一站。
靠的是三个机制,缺一个,闭环就会断。
Claude Code 每次开新对话,都会自动读取项目里的 CLAUDE.md;其他 Agent 工具(比如 Codex)默认加载的是 AGENTS.md。
CATALK 的 CLAUDE.md 整个文件只写了一行:
@AGENTS.md
意思是加载 CLAUDE.md 时,把 AGENTS.md 的内容一起引进来。所以规矩只写一份,放在 AGENTS.md 里,不同工具都能读到。

最关键的是,入口文件每次对话都会被读到,不靠你提醒,AI 一开工就知道流程。
状态在 README,规则在 PRD,想法在 TODO,规矩在入口文件。同一件事只记在一个地方,其他地方只放一个链接指过去。
这样 AI 知道该去哪读、该往哪写,也不会出现同一件事在两个文件里说法不一样。
PRD 给每个改动起的代号(比如 O4、O9),会同时出现在 TODO、PRD 和 README 里,互相链接。从任何一个文件进去,顺着编号都能找到这件事的全部信息。

拿一个真实的小改动把四站串起来。
O9 是什么:原来家里只有一只猫的时候,打标签会自动跳过「选择哪只猫」这一步。问题是这一步里有「新增猫咪」的入口——想给一只新猫录音时,跳过了就没法当场新建猫咪。现在改成只有一只猫也要选:可以选这只猫,也可以新建一只。
录制时这个改动已经做完,代码和测试都改好了,只是还没跟着新版本提交审核。看看它在文件里留下了什么:
1. 最早作为问题记在 TODO 里:现状、问题、建议都写清楚了。改完后这一条已经勾掉,下面写着「→ 已实现,未发布:PRD §11 O9,列在 README · 未发布的改动」。

2. 决定要做后进了 PRD,变成 O9:写了问题和规则,来源链接回 TODO。
3. 开发时改了 PRD 的规则:打标签页规则那一格改成「只有一只猫也不跳过、不预选,这一步同时是当场新增猫咪的入口(O9)」,末尾标上了 O9。
4. 做完回写:PRD 里 O9 的状态是「已实现,未发布」,变更记录多了一行;README 的「未发布的改动」里也有 O9。

一个非常小的改动,四站全部走完,四个文件全部回写。作者只提出了一个问题反馈,后面的闭环由 AI 按规矩跑完。
把下面这段提示词发给你的 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 每次做完开发,都会自己把结果写回这几个文件。

文件搭起来不难,难的是让它一直保持最新。闭环能不能转起来,全看最后回写这一步。
用这四个文件,你就能从「AI 的项目经理」,变成只负责提出想法、只负责拍板的人,把更多精力放在想清楚要做什么上。