AI 时代,一个项目到底需要哪些文档?
最近我一直在想一个问题:
在 AI Coding Tools 已经越来越成熟的今天,一个项目到底还需要哪些文档?
以前我们聊项目文档,通常会想到 README、需求文档、架构文档、接口文档、部署文档、测试文档等等。
这些当然都有价值,但在真实项目里,文档一多,很容易变成另一种负担:没人维护、没人看、和代码脱节,最后变成“历史资料”。
但 AI 时代又不一样。
因为现在的文档不只是给人看的,也是给 AI 看的。
Claude Code、Codex 这类 AI Coding Tools 进入项目之后,最需要的不是一堆散乱的说明,而是稳定、清晰、可引用的上下文。它需要知道:
-
这个项目为什么存在 -
当前最重要的方向是什么 -
代码应该怎么组织 -
哪些地方不能乱改 -
遇到不确定需求时该怎么处理 -
修改完之后应该怎么验证
所以我现在越来越觉得,AI 时代的项目文档不一定要多,但一定要有清晰分工。
如果压缩到最小集合,我认为一个项目至少需要三个核心文档:
README 当索引,PRODUCT 当北极星,CLAUDE 当工程圣经。
这三个文档的职责不能重叠。
1. README:项目索引
README 不应该承担所有事情。
很多项目的问题是,README 一开始很清爽,后来什么都往里面塞:项目介绍、启动方式、产品规划、架构说明、接口说明、部署步骤、历史决策……最后 README 变得越来越长,真正重要的信息反而找不到。
在 AI 时代,README 更适合做“索引”。
它只需要回答几个最基本的问题:
-
这个项目是什么 -
适合谁使用 -
如何快速启动 -
常用命令是什么 -
关键文档在哪里 -
新人或 AI Agent 应该先读什么
也就是说,README 是入口,不是全部。
它的价值不是解释所有细节,而是让人和 AI 都能快速找到正确的上下文。
一个好的 README.md 应该像项目地图的首页:
# Project Name## What is this?一句话说明项目。## Quick start如何安装、启动、运行测试。## Key documents- PRODUCT.md: 产品目标、用户、范围- CLAUDE.md: 工程约定、代码规范、AI Coding Agent 工作规则- docs/architecture.md: 架构说明- docs/adr/: 重要技术决策记录
README 越清楚,AI 越不容易一进项目就迷路。
2. PRODUCT:北极星
如果 README 是入口,那么 PRODUCT 就是方向。
AI Coding Tools 很擅长执行,但它们不天然理解“为什么要做”。如果没有产品层面的约束,AI 很容易把事情做“完整”,但不一定做“正确”。
比如你让 AI 加一个功能,它可能会顺手加很多扩展能力、配置项、抽象层,看起来很勤奋,但其实已经偏离了产品当前阶段真正需要的东西。
所以项目需要一个 PRODUCT 文档,作为北极星。
它应该说明:
-
项目为什么存在 -
目标用户是谁 -
用户的核心问题是什么 -
当前阶段最重要的目标是什么 -
什么是明确不做的 -
什么算做完 -
产品体验上有哪些原则
PRODUCT 不需要写成很重的 PRD。它更像一个持续维护的产品判断基准。
比如:
# PRODUCT.md## Why this project exists这个项目解决什么问题。## Target users主要用户是谁,不是谁。## Core use cases最核心的 3-5 个使用场景。## Current focus当前阶段最重要的方向。## Non-goals明确不做什么。## Product principles体验和取舍原则。
这个文档最大的价值,是避免项目在快速迭代中发散。
尤其是有 AI 参与之后,开发速度会变快,代码生成成本会降低,但也更容易产生“功能膨胀”和“方向漂移”。
PRODUCT 的作用就是提醒团队和 AI:
我们不是为了写更多代码,而是为了持续逼近正确的问题。
3. CLAUDE:工程圣经
第三个文档,是给 AI Coding Agent 和开发者共同使用的工程约定。
这里我用 CLAUDE 来代表这类文档。它可以叫CLAUDE.md,也可以叫 AGENTS.md、CODEX.md,名字不重要,关键是它承担的职责。
它不是产品文档,也不是项目介绍。它是工程层面的“行为协议”。
它应该告诉 AI Coding Tools:
-
项目目录结构怎么理解 -
核心模块分别负责什么 -
常用开发命令是什么 -
测试怎么跑 -
代码风格是什么 -
哪些文件不要随便改 -
修改 API 时需要同步更新什么 -
遇到不确定需求时要先问,不要猜 -
每次改动应该尽量小而聚焦 -
完成后如何验证
比如:
# CLAUDE.md## Project structure- `src/`: core application code- `tests/`: test cases- `docs/`: documentation- `scripts/`: development scripts## Commands- Run tests: `pytest`- Start dev server: `python -m app`## Engineering rules- Prefer small, focused changes.- Do not change public APIs without updating related docs.- Add or update tests for behavior changes.- Do not edit migration files unless explicitly asked.- If requirements are ambiguous, ask before implementing.## ValidationBefore finishing:1. Run relevant tests.2. Check formatting.3. Summarize changed files and reasoning.
这个文档在 AI 时代非常关键。
因为 AI Coding Tools 的问题往往不是“不会写代码”,而是:
-
不知道项目边界 -
不知道历史约定 -
不知道哪些地方不能动 -
不知道改完怎么验证 -
不知道什么时候应该停下来问人
CLAUDE 的价值,就是把这些隐性工程经验显性化。
它像一本工程圣经,让 AI 在项目里工作时有规矩可循。
三者职责不能重叠
我觉得这里最重要的不是具体文件名,而是职责分离。
这三个文档最好不要互相混。
README 不应该越来越胖。 它只做索引和入口,不要把所有细节都塞进去。
PRODUCT 不应该混入工程细节。 它负责方向、用户、边界和取舍,不负责告诉你某个函数怎么写。
CLAUDE 不应该替产品做决定。 它负责工程约定和执行规则,不应该决定产品目标和功能优先级。
可以简单理解成:
-
README 回答:我该从哪里开始? -
PRODUCT 回答:我们为什么做、往哪里走? -
CLAUDE 回答:代码应该怎么改、怎么验证?
三者合在一起,才构成一个适合人和 AI 协作的最小文档系统。
文档的目标不是“完整”,而是“可协作”
很多团队一提到文档,就会陷入两个极端: 一种是完全不写,觉得代码就是最好的文档。另一种是写很多,试图把所有细节都记录下来。
但在 AI 时代,我觉得文档的目标不是追求完整,而是提高协作效率。
尤其是 AI Coding Tools 出现后,文档的价值会更偏向这几个方向:
-
帮 AI 快速恢复上下文 -
减少 AI 猜错方向 -
限制不必要的发散 -
让人类判断和 AI 执行更好衔接 -
让项目在快速迭代中保持收敛
换句话说,文档不是为了证明项目很规范,而是为了让项目在混乱中持续收敛。
这也是我最近很喜欢的一个表达:
好文档不是让项目看起来更正式,而是让人和 AI 在同一个上下文里工作。
最后
AI 时代,代码生成会越来越快。但项目真正的难点,可能会从“怎么写代码”,转移到“如何保持方向、边界和一致性”。
所以我认为,一个项目最少需要三个核心文档:
README 当索引,PRODUCT 当北极星,CLAUDE 当工程圣经。
README 让人和 AI 找到入口。
PRODUCT 保证项目不偏航。
CLAUDE 约束工程执行,让 AI Coding Tools 更可靠地工作。
文档不需要很多,但要各司其职。
越是 AI 能快速写代码的时代,越需要少量高质量的文档来帮助项目持续收敛。
夜雨聆风