Skip to content

endearqb/ReadmeFirst

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 

Repository files navigation

README First

面向所有 AI Agent 的项目上下文协作原则

本文件解释本项目为何采用 README First,以及它如何与 AGENTS.md 协同。README First.md 回答“为什么”,AGENTS.md 规定“怎么做”——任何 Agent 执行任务前应先读 AGENTS.md 中的可执行规则。


一句话定义

先读上下文,再执行操作;先收敛不确定性,再修改文件;先验证影响,再记录变化。

README First 适用于本项目中协作的所有 AI Agent,包括但不限于 Claude Code、Cursor、Codex、GitHub Copilot、Devin,以及任何能读写仓库的自动化工具。它不绑定任何特定厂商。


为什么需要它

当 AI Agent 进入真实工程流程,瓶颈已从“代码生成能力”转向“上下文治理能力”。缺少上下文时,即使语法正确的代码也可能破坏项目整体质量。常见风险包括:

  1. 上下文缺失:Agent 不知道某目录为何存在、哪些是核心入口、哪些约定不能破坏。
  2. 隐性知识不可见:架构选择、命名规范、模块边界、历史妥协藏在开发者脑中或零散聊天里。
  3. 重复造轮子:没先理解现有结构,新建重复模块、工具函数、抽象层。
  4. 局部修改破坏整体:只看目标文件,不理解上游调用方与下游依赖。
  5. 文档与代码漂移:文档过时,Agent 读到过时信息反而放大错误。
  6. 多 Agent 协作不可控:不同会话之间没有统一项目记忆,每次从零开始。
  7. 变更不可追踪:改完只留 diff,没记录原因、影响范围和后续注意事项。

README First 把这些问题转化为工程制度:让每次工作都沿稳定的上下文路径理解项目,并把新的长期知识沉淀回项目。


系统组成

推荐的最小系统:

project/
├── AGENTS.md                 # AI 全局行为规则(Agent 每次执行前必读)
├── README First.md           # 本文件:协作原则说明
├── README.md                 # 项目总览与入口
├── .ai/
│   ├── changes/              # AI 变更记录
│   │   └── YYYY-MM-DD.md
│   └── decisions/            # 架构决策记录
│       └── 0001-example.md
├── src/
│   └── README.md             # 目录级上下文说明
└── tests/
    └── README.md             # 测试目录上下文说明

成熟项目可扩展 .ai/plans/(复杂任务计划)、.ai/prompts/(可复用 Prompt)、.ai/reviews/(Review 记录)、.ai/audits/(文档漂移检查)。

各层职责:

  • AGENTS.md:行为协议层。规定读取顺序、不确定性压缩、增删改查检查项、记录规则、禁止行为、验收标准。
  • README.md:项目地图层。项目是什么、技术栈、安装/启动/测试/构建、顶层目录职责、应从哪里读起。
  • 目录级 README.md:局部上下文契约层。每个关键目录的职责、核心文件、维护约定、依赖边界、验证方式。
  • .ai/changes/:修改记录层。补足 git diff 不表达的内容——为什么改、如何验证、对未来维护的影响。
  • .ai/decisions/:架构决策层。为什么选某方案、为什么废弃旧结构、哪些边界需长期遵守。

核心设计原则

1. 先读后改

执行任何查询、新增、修改、删除前,先按 AGENTS.md 规定的顺序读取相关 README 与上下文。某级目录缺 README 时,向上读取上级 README 并谨慎推断,关键目录则先补建。

2. 局部契约优先

规则具有层级:AGENTS.md(全局)→ 根 README(整体)→ 上级目录 README(通用)→ 当前目录 README(局部)→ 代码与测试(事实来源)。目录级冲突时,以更靠近目标文件的 README 为准;README 与代码冲突时,必须指出并判断是文档过时还是代码偏离,不得静默选择。

3. 文档只记录长期知识

README 记录:目录职责、模块边界、公共接口、文件组织方式、命名与依赖规则、测试与验证方式、未来维护者需知道的长期约定。README 记录:普通 bug 修复、临时调试信息、无长期价值的改动、可从 git diff 看出的细节、与目录职责无关的备忘。具体修改记入 .ai/changes/,架构决策记入 .ai/decisions/

4. 记录原因,而不仅是结果

diff 只说明“改了什么”,不稳定说明“为什么”。因此每次变更应记录目标、涉及目录、内容、原因、影响范围、验证方式、是否更新 README、后续注意事项,让后续 Agent 或人类理解修改意图。

5. 轻量、渐进、可维护

不必一开始全目录覆盖。优先覆盖:业务核心目录、高频修改目录、公共组件目录、API/service/store/types/hooks 等共享能力目录、tests/scripts/config 等影响全局的目录。不为 node_modules/dist/build/coverage/.cache/tmp/logs/ 等构建产物或缓存目录创建 README。

只给真正承担长期职责的目录建立上下文契约。


标准执行流程

每次执行项目任务,Agent 应遵循(详见 AGENTS.md):

1. 识别任务类型,把 prompt 转换为任务契约
2. 定位影响范围
3. 阅读 AGENTS.md → 根 README.md → 目标路径上各级目录 README.md
4. 先消除偶然不确定性,再压缩本质不确定性(按风险等级处理)
5. 检查 README 与实际代码是否一致
6. 执行查询、新增、修改或删除(最小、保守、可回滚)
7. 运行或说明验证方式
8. 按触发条件更新 README
9. 在 .ai/changes/ 中记录本次变更
10. 输出最终实施报告(含关键假设、剩余不确定性、验证结果)

好 README 的标准

  • 准确:基于当前代码,而非凭空设计。
  • 简短:只记录长期有用信息(建议 50–150 行)。
  • 可操作:能指导 Agent 做正确的增删改查。
  • 有边界:明确本目录负责什么、不负责什么。
  • 有入口:标出核心文件与对外接口。
  • 有验证:说明修改后应运行哪些测试或检查。
  • 可维护:不依赖个人记忆,不写难以长期维护的细节。

应避免:内容空泛(“这里放组件”)、与代码不一致、只写流水账、把每个文件解释成百科全书、不写依赖边界、不写验证方式、堆砌“应保持良好代码质量”这类不可执行句子。


与现有实践的关系

  • 与传统 README:不否定,而是扩展——传统 README 服务人类理解项目,README First 同时服务人类与 AI 的上下文获取、行为约束与后续维护。
  • 与 ADR.ai/decisions/ 类似轻量 ADR,更偏向 AI 协作语境,关注哪些决策会影响 Agent 后续操作、哪些边界需长期遵守。
  • 与 Git.ai/changes/ 不替代 commit;diff 记录改了什么,.ai/changes/ 记录原因、范围、验证和后续注意事项。
  • 与测试:README First 解决“Agent 是否理解上下文”,测试解决“修改是否破坏行为”。README 告诉 Agent 该运行哪些测试,测试验证修改是否正确,.ai/changes/ 记录验证结果。

落地路线(简版)

  1. 扫描与识别:扫描目录,排除构建产物/依赖/缓存目录,识别关键目录与已有文档。
  2. 建立全局规则:创建或合并 AGENTS.md
  3. 建立项目总览:补全根 README.md,加入 README First 说明并指向关键目录 README。
  4. 建立目录级上下文:按 P0(src/app/server/api/db/config/tests…)→ P1(hooks/utils/types/store/routes/scripts/docs)→ P2(examples/fixtures/mocks/tools)优先级补全目录 README。
  5. 建立记录机制:创建 .ai/changes/.ai/decisions/,写入模板并记录本次初始化。
  6. 验证与修正:检查 README 是否引用不存在的文件、目录职责是否与代码一致、是否误覆盖已有 README,输出实施报告与风险清单。

已有 README 或 AGENTS.md 时,必须合并补充,不得直接覆盖;所有内容必须基于当前代码和目录结构,不得凭空编造。


可选 Skill 包

本仓库包含 skills/readme-first-builder/,用于在其他项目中初始化或升级 README First 完整架构。该 skill 只负责引导创建或合并 AGENTS.md、根 README.md.ai/changes/.ai/decisions/ 与关键目录 README;初始化完成后,后续日常任务应直接遵循目标项目自己的 AGENTS.md


结论

README First 的本质不是“多写 README”,而是建立一套适合 AI 协作开发的项目上下文协议。它把分散在开发者脑中、聊天记录、PR 讨论和历史 commit 中的隐性知识,沉淀为项目内部可读取、可执行、可维护的上下文系统。

让 AI 先理解项目,再改变项目;让每一次改变,都反过来增强项目的可理解性。

About

README First: a lightweight context protocol for AI agent collaboration in software projects

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors