阅读完本节后,你将会收获:
- 理解项目配置文件的作用和使用场景
- 掌握 CLAUDE.md 和 settings.json 的配置方法
- 学会团队协作/多机开发的配置共享方案
- 了解如何处理配置中的敏感信息
本节通常可以跳过。个人开发时,AI 能从对话和项目文档中理解项目,无需额外配置。
团队协作/多机开发:需要统一环境、规范、MCP、插件等配置时,本节内容非常有用。
在折腾配置文件之前,请先了解:
场景:AI 又忘了
你第 5 次提醒 AI:"不要用 npm,用 pnpm"。它还是用了 npm。
你意识到:口头提醒不靠谱,需要写成规则。
决策流程:
graph TB
A[开始使用 AI] --> B{个人/团队?}
B -->|个人| C[对话中说明偏好]
B -->|团队/多机| D[需要配置]
C --> E{AI 记住了?}
E -->|是| F[无需配置]
E -->|否| G[再次提醒]
G --> H{多次仍忘记?}
H -->|否| F
H -->|是| I[考虑配置文件]
D --> J[统一配置]
J --> K[提交到 Git]
K --> L[所有人拉取后自动生效]
style F fill:#c8e6c9
style I fill:#fff3e0
style D fill:#e3f2fd
style J fill:#e3f2fd
快速判断:
| 你的情况 | 需要配置? | 为什么 |
|---|---|---|
| 个人项目,AI 记得住 | ❌ 不需要 | 对话最省事 |
| 个人项目,AI 总忘 | ✅ 建议 | 写进 CLAUDE.md,一劳永逸 |
| 多台电脑开发 | ✅ 需要 | 配置同步,不用重复设置 |
| 团队协作 | ✅ 必须 | 统一规范,避免"你用的 AI 怎么和我的不一样" |
本节重点:团队协作/多机开发时,配置文件让所有人用同一套规则。
:::
场景:要写配置文件,但不知道格式
你打开文档,看到一堆配置项。头大。
直接让 AI 生成:
请根据《AI 调教指南》2.4 节的内容,为我的团队项目创建配置文件。
项目信息:
- Next.js 16 + TypeScript
- 使用 shadcn/ui 组件库
- 用 pnpm 包管理器
- 5人团队,需要统一规范
请生成:
1. CLAUDE.md 项目说明
2. .claude/settings.json 权限配置
30 秒后,AI 给你完整的配置文件,直接复制粘贴。
为什么比自己写快:
| 你自己写 | AI 生成 |
|---|---|
| 查文档 → 理解格式 → 手写 → 检查 | 描述需求 → 复制结果 |
| 15 分钟 | 30 秒 |
前提:给 AI 足够的项目信息(技术栈、团队规模、特殊需求)。
AI 知道如何写配置文件,你只需要提供项目信息即可。
:::
graph LR
A[配置文件] --> B[AI 读取]
B --> C[理解项目]
C --> D[生成符合规范的代码]
E[无配置] --> F[AI 猜测]
F --> G[风格不一致]
H[README] --> C
I[项目文档] --> C
style H fill:#e3f2fd
style I fill:#e3f2fd
核心原则:配置文件、README、项目文档——本质上都是让 AI 理解项目的方式。
| 方式 | 文件 | 作用 | 必要性 |
|---|---|---|---|
| 项目文档 | README、第三章的文档 | 完整的项目说明 | ✅ 推荐 |
| 配置文件 | CLAUDE.md、.cursorrules | 简洁的规范说明 | ⚠️ 个人可选,团队需要 |
| 对话沟通 | 直接告诉 AI | 快速表达偏好 | ✅ 最简单 |
项目配置文件(无论叫什么名字)本质相同:
| 工具 | 文件名 |
|---|---|
| Claude Code | CLAUDE.md |
| Cursor | .cursorrules |
| Qoder/Trae | .iderules |
如果确实需要配置文件,越简洁越好:
# 项目:[项目名称]
## 技术栈
Next.js 16 + TypeScript + Tailwind + shadcn/ui
## 规范
- 禁止 any,严格模式
- PascalCase 命名组件
- 用 pnpm
## 禁止
- 不装新依赖
- 不改 .env
创建方式:
CLAUDE.md# 项目说明
项目概述
[一句话说明项目做什么]
技术栈
框架: Next.js 16 (App Router)
语言: TypeScript (严格模式)
数据库: Drizzle ORM + PostgreSQL
样式: Tailwind CSS
组件: shadcn/ui
编码规范
禁止 any 类型
组件用 PascalCase,函数用 camelCase
使用 pnpm(不要用 npm/yarn)
禁止行为
❌ 不要安装新依赖除非明确要求
❌ 不要修改 .env 文件
❌ 不要删除测试文件
目录结构
app/ # 页面和 API
components/ # 组件
lib/ # 工具函数
掌握 CLAUDE.md 的高级特性,让项目配置更模块化、更易维护。
在对话中使用 # 前缀,Claude Code 会自动将内容写入 CLAUDE.md:
# 对话中输入:
"# 本项目使用 pnpm 作为包管理器,不要使用 npm"
"# 数据库用 PostgreSQL + Drizzle ORM"
"# 组件库用 shadcn/ui,不要安装其他 UI 库"
# Claude Code 会自动追加到 CLAUDE.md,无需手动编辑
记忆命令写入的内容会追加到 CLAUDE.md 末尾。如果积累太多,建议定期整理归类。
.claude/rules/ 目录当 CLAUDE.md 变得很长时,可以拆分到 .claude/rules/ 目录:
.claude/
├── CLAUDE.md # 项目概述和核心规则
└── rules/
├── coding-style.md # 代码风格规范
├── git-workflow.md # Git 工作流
├── testing.md # 测试要求
└── security.md # 安全规则
Claude Code 会自动加载 rules/ 目录下的所有 .md 文件,与 CLAUDE.md 合并生效。
何时用 rules/ 目录 vs 单个 CLAUDE.md:
| 场景 | 推荐方式 | 原因 |
|---|---|---|
| 小项目、规则少于 50 行 | 单个 CLAUDE.md | 简单直接 |
| 团队项目、多人协作 | rules/ 目录 |
不同人维护不同规则文件,减少冲突 |
| 规则超过 100 行 | rules/ 目录 |
按主题拆分,易于查找和维护 |
| 需要按条件启用规则 | rules/ 目录 |
可以通过 .gitignore 控制哪些规则生效 |
在 CLAUDE.md 中声明项目的构建命令,是避免 AI "猜错包管理器"的关键手段。
## 常用命令
- 安装依赖:`pnpm install`
- 开发服务器:`pnpm dev`
- 构建:`pnpm build`
- 测试:`pnpm test`
- Lint:`pnpm lint`
- 类型检查:`pnpm typecheck`
如果不声明,AI 可能会用 npm run build 或 yarn test——在 pnpm 项目中这会导致依赖解析错误。
团队协作/多机开发是配置文件最重要的使用场景。通过提交配置到 Git,确保所有成员的 AI 行为一致。
# ✅ 应该提交
.claude/settings.json # 项目级系统配置(不含敏感信息)
.mcp.json # MCP 服务器配置(不含敏感信息)
CLAUDE.md # 项目说明(Claude Code)
.cursorrules # 编码规范(Cursor)
.iderules # 编码规范(Qoder/Trae)
.claude/skills/ # 团队 Skills(见 2.3 节)
# ❌ 不应该提交
.env # 环境变量(包含密钥)
node_modules/ # 依赖包
~/.claude/settings.json # 用户级配置(个人密钥)
方法:分层配置
.claude/settings.json):提交到 Git,不含密钥~/.claude/settings.json):不提交,包含个人密钥用户级配置(~/.claude/settings.json,不提交):
{
"env": {
"GITHUB_TOKEN": "ghp_xxx",
"OPENAI_API_KEY": "sk_xxx"
}
}
项目级配置(.claude/settings.json,提交到 Git):
{
"permissions": {
"defaultMode": "plan"
}
}settings.json 是 Claude Code 的系统配置文件,控制权限模式、环境变量、Hooks、MCP 服务器等。
与 CLAUDE.md 的区别:
CLAUDE.md:写给 AI 看的项目说明书settings.json:控制工具行为的系统配置配置文件位置:
| 级别 | 位置 | 作用域 | 优先级 |
|---|---|---|---|
| 项目级 | .claude/settings.json |
当前项目 | 高 |
| 用户级 | ~/.claude/settings.json |
所有项目 | 低 |
| 本地级 | .claude/settings.local.json |
本地开发 | 最高 |
优先级规则:本地级 > 项目级 > 用户级。
{
"permissions": {
"defaultMode": "plan"
},
"hooks": {},
"env": {}
}
权限模式选择:
| 模式 | 说明 | 适用场景 |
|---|---|---|
plan |
计划模式,只读分析 | 代码审查、学习 |
acceptEdits |
自动接受编辑 | 快速开发 |
bypassPermissions |
绕过权限检查 | 完全信任 |
Hooks 在特定事件时自动执行脚本,详见 2.2 VibeCoding 工作流 - Hooks 自动化 (./02-vibecoding-workflow.md)。
基本结构:
{
"hooks": {
"PostToolUse": [
{
"matcher": "Write|Edit",
"hooks": [
{
"type": "command",
"command": "\"$CLAUDE_PROJECT_DIR\"/.claude/hooks/format.sh"
}
]
}
]
}
}
常用事件:
| 事件 | 触发时机 | 是否需要 matcher |
|---|---|---|
PreToolUse |
工具调用前 | ✅ 需要 |
PostToolUse |
工具调用后 | ✅ 需要 |
PostToolUseFailure |
工具执行失败后 | ✅ 需要 |
Notification |
发送通知时 | ❌ 不需要 |
UserPromptSubmit |
用户提交提示时 | ❌ 不需要 |
Stop |
主代理完成响应时 | ❌ 不需要 |
MCP 服务器配置让 AI 能够连接外部服务。
项目级配置(.mcp.json,推荐):
{
"mcpServers": {
"github": {
"type": "http",
"url": "https://api.githubcopilot.com/mcp/"
},
"postgres": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-postgres"],
"env": {
"DATABASE_URL": "${DATABASE_URL}"
}
}
}
}
settings.json 中的配置(旧方式,仍支持):
{
"mcpServers": {
"github": {
"type": "http",
"url": "https://api.githubcopilot.com/mcp/"
}
}
}
常用 MCP 服务器:
| MCP | 功能 | 需要配置 |
|---|---|---|
| GitHub | 仓库操作 | GitHub Token |
| PostgreSQL | 数据库查询 | 连接字符串 |
| Brave Search | 网络搜索 | API Key |
| Filesystem | 文件系统访问 | 允许的路径 |
// .claude/settings.json
{
"permissions": {
"defaultMode": "acceptEdits",
"disallowedTools": ["Bash(rm -rf:*)", "Bash(write .env:*)"]
},
"env": {
"PACKAGE_MANAGER": "pnpm"
},
"hooks": {
"PostToolUse": [
{
"matcher": "Write|Edit",
"hooks": [
{
"type": "command",
"command": "pnpm format --write \"$CLAUDE_PROJECT_DIR\"/@file_path"
}
]
}
]
}
}
// .mcp.json
{
"mcpServers": {
"filesystem": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "$CLAUDE_PROJECT_DIR"]
}
}
}// .claude/settings.json
{
"permissions": {
"defaultMode": "plan",
"disallowedTools": ["Bash(DROP TABLE:*)", "Bash(DELETE FROM:*)"]
}
}
// .mcp.json
{
"mcpServers": {
"postgres": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-postgres"],
"env": {
"DATABASE_URL": "${DATABASE_URL}",
"PG_READONLY": "true"
}
}
}
}flowchart TD
A[团队讨论规范] --> B[创建配置文件]
B --> C[提交到 Git]
C --> D[团队成员拉取]
D --> E[AI 自动读取配置]
E --> F[所有人行为一致]
G[新成员加入] --> D
style C fill:#e3f2fd
style E fill:#c8e6c9
style F fill:#c8e6c9
实际操作:
# 1. 团队负责人创建配置
vim CLAUDE.md
vim .claude/settings.json
vim .mcp.json
# 2. 提交到 Git
git add CLAUDE.md .claude/ .mcp.json
git commit -m "docs: 添加团队 AI 配置"
git push origin main
# 3. 团队成员拉取
git pull origin main
# 4. AI 自动读取,无需额外操作
配置是手段,不是目的
graph LR
A[目标: AI 理解项目] --> B[方式1: 对话]
A --> C[方式2: README]
A --> D[方式3: 配置文件]
A --> E[方式4: 项目文档]
B --> F[选择最简单的方式]
C --> F
D --> F
E --> F
G[团队协作] --> D
H[多机开发] --> D
style B fill:#c8e6c9
style C fill:#c8e6c9
style D fill:#e3f2fd
记住:
A: 本质一样,只是文件名不同。
| 工具 | 文件名 |
|---|---|
| Claude Code | CLAUDE.md |
| Cursor | .cursorrules |
| Qoder/Trae | .iderules |
核心内容都是:技术栈 + 编码规范 + 禁止行为
A: 检查以下几点:
A: 提交到 Git,所有人拉取后自动生效。
# 提交配置
git add CLAUDE.md .claude/settings.json .mcp.json
git commit -m "docs: 添加团队 AI 配置"
git push
# 成员拉取
git pull
A: 使用分层配置。
.claude/settings.json):提交到 Git,不含密钥~/.claude/settings.json):不提交,包含个人密钥${VAR_NAME} 引用环境变量