AI 项目配置文件全景图:md 文件的作用与边界
在实践 SDD(语义驱动开发)的过程中,一个常见的困惑是:AGENTS.md、CLAUDE.md、rules/ 目录以及 openspec/ 目录中的各类 md 文件,各自承担什么职责?边界在哪里? 这些配置文件均为 AI 服务的项目级配置,但解决的问题截然不同。本文将系统性地梳理这些 md 文件的作用与边界,帮助读者构建清晰的 AI 项目配置体系。
这些文件并非递进的"高低层次",而是多个维度的配置:从宏观的多 Agent 协作框架(AGENTS.md),到单个 Agent 的个体行为规范(CLAUDE.md),再到细粒度的场景应对规则(rules/),以及语义驱动的规范体系(openspec/)。理解它们各自解决的问题,是正确使用 SDD 工具链的前提。
一、问题的由来:配置文件的"命名困惑"
在使用 AI 编程工具时,我们经常遇到以下问题:
“AGENTS.md 与 Claude Code 的 CLAUDE.md 有何区别?”
“项目级的 rules/ 目录承担什么职责?”
“openspec/ 目录下的 project.md、proposal.md、tasks.md 分别是什么?”
“这些文件是互斥关系还是互补关系?”
这些问题的核心在于:AI 编程工具的配置体系缺乏统一的标准,不同工具使用不同的配置文件,容易造成混淆。理解它们的区别,是正确使用 SDD 工具链的前提。
二、核心配置文件一览
首先,让我们用一个全景图来展示所有关键的 md 文件:
1 | |
三、三大基础配置:AGENTS.md、CLAUDE.md 与 rules/
用下表概括三者的关系:
| 配置文件 | 核心问题 | 类比 |
|---|---|---|
| AGENTS.md | “谁来做?怎么协作?” | 项目地图 + 协作协议 |
| CLAUDE.md | “我是谁?遵循什么规范?” | 单兵作战手册 |
| rules/ | “遇到 X 情况,执行 Y” | 场景应对卡片 |
1. AGENTS.md:多 Agent 编排的"总指挥"
定位:多 Agent 系统的项目级配置文件(通用规范,最早由 OpenAI Codex CLI 引入,现已被 OhMyOpenCode 等多个工具采用;OMO 的 /init 命令遵循此规范自动生成该文件)
核心职责:定义"谁来做"和"怎么协作"
1 | |
典型内容:
- 项目概述与技术栈
- 目录结构与模块划分
- 常用命令(构建、测试、运行)
- 编码规范与命名约定
- 服务接口清单(Providers & Consumers)
- 中间件配置(缓存、数据库、RPC、MQ)
- 关键依赖版本
- 反模式清单(已知技术债务)
关键特征:
- 支持嵌套(子模块可有独立 AGENTS.md)
- 包含动态元信息(生成时间、Git Commit、分支)
- 强调模块间的协作关系
2. CLAUDE.md:单 Agent 的"行为规范"
定位:Claude Code 的项目级指令文件
核心职责:定义单个 Claude 实例在项目内的行为规范
1 | |
典型内容:
- 编码规范(缩进、命名、注释语言)
- 行为准则(错误处理策略、用户交互时机)
- 工具使用规范(构建工具、测试框架)
- 项目特定的最佳实践
关键特征:
- 通常为项目级单一文件
- 聚焦单个 Agent 的行为规范
- 与 Claude Code 深度绑定
3. rules/:场景化的"规则片段"
定位:场景化规则存储目录
核心职责:特定场景下的行为指导
1 | |
典型内容:
- 特定任务的行为指导
- 条件触发的规则(“如果…那么…”)
- 细粒度的场景应对策略
关键特征:
四、openspec 目录:语义驱动开发的核心
OpenSpec 是一套语义驱动开发(SDD)的规范体系,通过结构化的 md 文件来管理项目知识、能力规范和变更提案。
1. project.md:项目知识库
定位:项目的语义知识库
核心职责:存储项目的人工维护知识,是 AI 生成 proposal 的上下文基础
1 | |
关键特征:
- 需要人工填充,无法自动生成
- 是 proposal 质量的"天花板"
- 越详细,AI 生成的提案越精准
2. specs/:能力规范集合
定位:已归档的能力规范集合
核心职责:定义系统的"当前事实"
1 | |
典型内容:
关键特征:
- 代表系统"当前是什么"
- 使用语义化约束语言
- 支持模块化管理
3. changes/:变更提案目录
定位:变更提案的存储目录
核心职责:管理从需求到实现的变更流程
1 | |
关键文件:
| 文件 | 作用 | 时态 |
|---|---|---|
| proposal.md | 定义"为什么改、改什么、验收标准" | 对齐态 |
| tasks.md | 定义"具体怎么做、分几步完成" | 迭代态 |
| specs/ | 本次变更涉及的规范片段(Delta) | 增量态 |
关键特征:
- 每个需求一个独立子目录
- 支持变更历史追溯(archive)
- 与 specs/ 目录形成"增量 + 基线"的关系
五、对比总结:一张表理清边界
| 维度 | AGENTS.md | CLAUDE.md | rules/ | openspec/ |
|---|---|---|---|---|
| 核心问题 | “谁来做?怎么协作?” | “我是谁?遵循什么规范?” | “遇到 X,执行 Y” | “系统是什么?要变成什么?” |
| 定位 | 多 Agent 编排配置 | 单 Agent 项目指令 | 场景化规则片段 | 语义驱动规范体系 |
| 内容侧重 | 项目结构、模块协作 | 编码规范、行为准则 | 特定场景指导 | 知识库、规范、变更提案 |
| 目标读者 | 多个协作的 Agent | 单个 Claude 实例 | 按需加载的规则引擎 | AI + 人类协作 |
| 生成方式 | /init 自动生成 |
手动创建 | 手动创建 | openspec init 自动生成骨架 |
| 维护方式 | 自动更新 | 手动维护 | 手动维护 | proposal 驱动增量更新 |
六、实际案例:一个 Java 项目的 AGENTS.md
以某隐私号码管理项目为例,其 AGENTS.md 结构如下:
1 | |
Conventions
Naming
| Type | Convention | Example |
|---|---|---|
| Class | PascalCase | SecretNoController |
| Method | camelCase | bindNumber() |
HSF Services
Providers
| Service | Interface | Methods |
|---|---|---|
leadsService |
LeadsService | callRecordQuery, queryLeads… |
Alibaba Middleware
| Service | Purpose | Key Config |
|---|---|---|
| Tair | Cache | CacheHandleService |
| Diamond | Config | service/.../diamond/ |
1 | |
┌─────────────────────────────────────────────────────────┐
│ Claude Code CLI 进程(单一 Agent) │
│ ├── 读取 ~/.claude/CLAUDE.md(全局配置) │
│ ├── 读取
│ └── 读取
└─────────────────────────────────────────────────────────┘
vs
┌─────────────────────────────────────────────────────────┐
│ OhMyOpenCode (OMO) 多 Agent 系统 │
│ ├── AGENTS.md(总指挥配置:谁来做、怎么协作) │
│ ├── Agent A(专门处理 PRD 分析) │
│ ├── Agent B(专门处理技术方案) │
│ └── Agent C(专门处理代码开发) │
└─────────────────────────────────────────────────────────┘
1 | |
项目根目录/
├── CLAUDE.md # 项目级指令
└── .claude/
└── rules/ # 场景化规则
├── review.md
├── test.md
└── doc.md
1 | |
项目根目录/
├── AGENTS.md # 多 Agent 编排配置
├── CLAUDE.md # (可选)补充单 Agent 规范
├── .claude/
│ └── rules/ # 场景化规则
└── openspec/ # SDD 规范目录
├── project.md
├── specs/
└── changes/
1 | |
项目根目录/
├── AGENTS.md # 多 Agent 编排配置
├── CLAUDE.md # 单 Agent 行为规范
├── .claude/
│ └── rules/ # 场景化规则
│ ├── review.md
│ ├── test.md
│ └── doc.md
└── openspec/ # SDD 规范目录
├── project.md # 项目知识库
├── specs/ # 能力规范集合
│ └──
│ ├── spec.md
│ └── design.md
└── changes/ # 变更提案目录
├──
│ ├── proposal.md
│ ├── tasks.md
│ └── specs/
└── archive/
1 | |
┌────────────────────────────────────────┐
│ AGENTS.md → “协作层面” │
│ 解决:谁来做?模块间如何协作? │
├────────────────────────────────────────┤
│ CLAUDE.md → “个体层面” │
│ 解决:单个 Agent 应该遵循什么规范? │
├────────────────────────────────────────┤
│ rules/ → “场景层面” │
│ 解决:特定场景下如何行为? │
├────────────────────────────────────────┤
│ openspec/ → “语义层面” │
│ 解决:系统是什么?要变成什么? │
└────────────────────────────────────────┘
**核心定位**:
- **AGENTS.md**:定义**多个** Agent 的职责划分与协作方式
- **CLAUDE.md**:定义**单个** Claude 实例的编码规范与行为准则
- **rules/**:定义特定场景的精细化行为指导
- **openspec/**:定义语义驱动的规范体系(知识库、能力规范、变更提案)
在 SDD 的实践中,这些配置文件不是互斥的,而是互补的。AGENTS.md 提供宏观的协作框架,CLAUDE.md 提供微观的个体规范,rules/ 提供灵活的场景应对,openspec/ 提供语义驱动的规范管理。理解它们的边界,才能构建高效的 AI 协作体系。
---
**参考阅读**:
- [SDD 与超级个体:AI 时代的人机协作范式](/2026/03/12/SDD与超级个体-AI时代的人机协作范式/)
- [OhMyOpenCode 官方文档](https://github.com/opensoft/oh-my-opencode)
- [Claude Code 官方文档](https://docs.anthropic.com/en/docs/claude-code)




