这是本系列的第4篇,本篇的目标,是把 Claude Code 从“能用”提升到“适合团队长期协作”。
如果说基础用法解决的是“怎么让 AI 开始干活”,那么进阶配置解决的就是:
怎么让它稳定遵守项目规范
怎么让它在不同目录下理解不同职责
怎么让它和 Git 工作流配合得更顺手
怎么让它尽量少问废话,直接产出可用结果
本篇内容较长,如果你认真读完,并应用到开发工作中,一定会大有裨益。

01
CLAUDE.md:项目的“永久系统提示”
CLAUDE.md是放在项目根目录的 Markdown 文件。每次启动 Claude Code,它都会自动读取这个文件,把它当成项目上下文的一部分。你可以把它理解为:
一个“不会忘记的项目说明书”
一份“团队统一口径”
一套“写代码前必须先读的项目规则”
它的价值不在于写得多,而在于写得准、稳、可执行。
写得好的CLAUDE.md,会显著减少来回追问,让 AI 直接按你的项目风格干活。
1.1 为什么要写 CLAUDE.md?
很多人第一次用 AI 写代码,最大的问题不是“不会生成代码”,而是“生成的代码不符合项目习惯”。
例如:
组件命名风格不一致
API 返回格式和现有项目不统一
数据库操作写在了不该写的地方
测试、错误处理、日志风格和项目现状冲突
AI 每次都重新猜测项目结构,浪费时间
有了CLAUDE.md之后,Claude Code 会优先遵循你写进去的约定,比如:
项目用什么框架
组件怎么拆
接口怎么返回
业务逻辑放哪里
什么文件不能动
什么命令是标准操作
这样一来,AI 不再“凭感觉写代码”,而是“按你的项目规则写代码”。

1.2 一个好用的 CLAUDE.md 应该写什么?
建议至少包含下面这些内容。
1)项目概述
用一两句话说明项目是做什么的,面向谁,核心目标是什么。
项目概述这是一个面向中小企业的合同管理系统,主要用于合同录入、审批流转、到期提醒和归档查询。
这一段非常重要,因为它决定了 AI 对项目业务场景的理解。如果项目目标不清晰,AI 很容易把功能写成“通用版”,而不是“业务版”。
2)技术栈
写清楚前后端、数据库、测试、部署等关键技术。
技术栈前端:Next.js 14 (App Router), React 18, Tailwind CSS后端:Next.js API RoutesORM:Prisma数据库:PostgreSQL 15测试:Jest + React Testing Library + Playwright部署:Vercel + Railway
尽量不要只写“React + Node.js”这种过于笼统的描述。越具体,AI 越容易生成能直接落地的代码。
3)代码规范
这部分是CLAUDE.md的核心。建议写成“明确的硬规则”,不要写成模糊建议。
代码规范组件只允许使用函数式组件 + Hooks,禁止 Class Component所有新代码必须使用 TypeScript公共函数必须补充参数和返回值类型页面组件尽量保持轻量,业务逻辑下沉到 services/API 统一返回格式:{ success: boolean, data?: T, error?: string }所有异常统一通过 AppError 处理,禁止直接抛出裸字符串样式优先使用 Tailwind,少量场景可使用 CSS Module
建议把“不要做什么”也写进去。AI 对“禁止事项”非常敏感,能明显减少跑偏。
4)目录结构
这部分不是为了“好看”,而是为了让 AI 知道代码应该放哪里。
# 目录结构src/app/ # 页面路由、布局、页面级逻辑components/ # 可复用 UI 组件features/ # 按业务域划分的功能模块services/ # 业务逻辑与数据访问lib/ # 工具函数、通用封装types/ # TypeScript 类型定义hooks/ # 自定义 Hooksstyles/ # 全局样式
如果你的项目没有这么分,也没关系。关键是:写成真实结构,不要写理想结构。AI 会按照你写的目录去判断文件应该放哪。
5)命令清单
把常用命令写进去,能让 AI 更容易给出正确的操作建议。
## 常用命令- 启动开发:`npm run dev`- 运行单元测试:`npm test`- 运行 E2E:`npx playwright test`- 类型检查:`npx tsc --noEmit`- 数据库迁移:`npx prisma migrate dev`- 数据库初始化:`npx prisma db push`- 代码格式化:`npm run format`
这部分的价值很大。当 AI 需要执行命令、建议你怎么验证改动时,它会优先参考这里,避免“凭空捏造命令”。
6)边界约束与危险区域
这是很多人容易忽略的一块,但非常重要。
## 重要约定-禁止直接修改 src/generated/ 目录-禁止删除未确认用途的 migration 文件-新增 API 路由必须同步补充类型定义-涉及权限、支付、用户数据时,必须先说明修改思路再动手-任何破坏性操作(删除、清空、覆盖)都必须先确认
这部分能有效防止 AI 做出“看起来很聪明、实际很危险”的操作。尤其是团队项目、生产环境项目、带数据库迁移的项目,一定要写。
1.3 推荐的 CLAUDE.md 模板
下面是一个更完整、适合实际项目使用的版本。你可以直接作为模板,再按项目情况调整。
# 项目名称## 项目概述[一句话描述项目是什么、为谁服务、核心目标是什么]## 技术栈- 前端:- 后端:- 数据库:- 缓存:- 测试:- 部署:## 业务背景[简要说明这个项目解决什么问题,核心业务流程是什么]## 代码规范- [明确的命名规则]- [组件/模块拆分规则]- [类型定义规则]- [错误处理规则]- [日志规则]- [测试规则]## 目录结构[按真实项目结构列出关键目录,并解释每个目录的职责]## 常用命令- 启动开发:- 运行测试:- 类型检查:- 数据库迁移:- 构建发布:## 数据与接口规范- API 返回格式:- 分页规则:- 时间格式:- 错误码规范:- 鉴权方式:## 重要约定- 哪些目录不能修改- 哪些文件是生成的- 哪些操作必须先确认- 哪些流程必须做测试## 常见任务说明- 新增页面时要遵守什么规则- 新增接口时要遵守什么规则- 新增数据库字段时要注意什么- 发布前要检查什么
1.4 CLAUDE.md 的写法技巧
先写“硬规则”,再写“软建议”。所谓硬规则,就是不遵守会出问题的要求,比如:
接口必须统一返回格式
数据库访问必须放在 service 层
不允许直接修改自动生成文件
软建议则是偏风格类,比如:
组件尽量小而清晰
注释保持简洁
优先复用现有逻辑
AI 更容易执行硬规则。
所以CLAUDE.md应该优先写硬规则,风格建议放后面。
用“可执行语言”而不是“形容词”。不要只写:
“代码要优雅”
“结构要合理”
“风格要统一”
这些话 AI 很难具体落实,更好的写法是:
“页面级组件不超过 200 行,复杂逻辑拆到 hooks 或 services”
“所有接口必须返回 success/data/error 三段式结构”
“列表页必须支持分页,不允许一次性加载全部数据”
这类描述更容易被模型执行。
保持 CLAUDE.md 可维护,CLAUDE.md不是一次性文件,而是会随着项目演进不断更新的。建议每次发生以下情况时同步更新:
新增技术栈
调整目录结构
增加新的开发规范
更换测试方式
引入新的生成目录或脚手架工具
如果CLAUDE.md长期不更新,它会逐渐失去价值,甚至误导 AI。
1.5 多层级 CLAUDE.md:适合大型项目
对于 Monorepo 或复杂项目,可以在不同目录放多个CLAUDE.md。
project/CLAUDE.md ← 全局:项目概述、通用规范frontend/CLAUDE.md ← 前端专属:组件规范、样式约定backend/CLAUDE.md ← 后端专属:API 设计、数据库规范scripts/CLAUDE.md ← 脚本专属:执行环境、危险操作说明
这种方式的好处是:
全局规则统一
局部规则更精准
复杂项目里,AI 更容易理解不同目录的职责边界
1.6 一个实用判断标准
你可以用下面这几个问题来判断CLAUDE.md是否写得足够好:
新人进项目后,能不能只看它就知道大致结构?
AI 看完后,能不能少问 50% 以上的重复问题?
项目的关键约束有没有明确写出来?
代码应该放哪里、不能放哪里,是否一目了然?
出现常见任务时,AI 是否能直接按规范产出?
如果这些问题大多回答“是”,说明CLAUDE.md已经开始发挥作用了。
02
settings.json:把“能做什么”和“不能做什么”写死
.claude/settings.json用来控制 Claude Code 的行为。如果说CLAUDE.md更像“项目说明书”,那么settings.json更像“操作权限表”。它负责告诉 Claude Code:
哪些操作可以直接做
哪些操作要先询问
哪些操作永远禁止
默认使用哪个模型
2.1 为什么需要 settings.json?
很多项目里,AI 最容易出问题的不是写错逻辑,而是“做了不该做的事”,例如:
误删文件
改动生成目录
盲目执行危险命令
在没确认的情况下修改数据库迁移
频繁询问本来就很安全的操作,影响效率
settings.json的作用,就是把这些边界提前固定下来。这样可以减少人工反复确认,提高执行效率,也更安全。

2.2 典型配置示例
{"model":"claude-sonnet-4-5","permissions":{"allow":["Read(*)","Bash(npm test)","Bash(npx prisma*)","Bash(npm run build)","Write(src/**)","Edit(src/**)"],"deny":["Bash(rm -rf*)","Bash(git push*)","Write(src/generated/**)","Write(dist/**)"]}}
2.3 allow、deny 分别怎么理解?
allow:预先批准的操作,写进allow的内容,Claude Code 执行时不需要再逐条确认。适合放这些类型:
只读操作
常规测试
常规构建
安全的局部代码修改
项目内受控路径的写入
例如:
Read(*)
Bash(npm test)
Bash(npx prisma*)
Write(src/**)
deny:永远禁止的操作,写进deny的内容,属于高风险行为,应该强约束。例如:
Bash(rm -rf*)
Bash(git push*)
Write(src/generated/**)
尤其是:
删除类命令
破坏性 Git 命令
覆盖生成目录
写入打包产物目录
这些最好直接禁掉。
2.4 配置时的实践建议
不要一上来就放太多权限。很多人喜欢一次性把所有 Bash 都放行,这样虽然省事,但风险很高。更好的做法是:
先放最常用、最安全的命令
运行一段时间后再逐步扩展
保留高风险操作的确认门槛
允许路径要尽量具体,例如:
Write(src/**)比Write(*)安全得多
Bash(npm test)比Bash(*)安全得多
路径和命令写得越具体,越不容易误伤。
将生成目录列入黑名单,很多项目都有自动生成目录,比如:
src/generated/
dist/
build/
coverage/
node_modules/
这些目录一般不应该由 AI 直接修改。
如果放开权限,容易出现“看似成功,实际下次构建又被覆盖”的问题。
2.5 settings.json 的常见使用场景
场景一:开发阶段
开发阶段可以适当放宽常用权限,例如:
读文件
改业务代码
跑测试
执行迁移命令
这样 Claude Code 能更顺畅地完成日常开发任务。
场景二:多人协作项目
多人协作项目里,建议增加保护:
禁止直接改自动生成目录
禁止危险删除命令
禁止无确认的数据库破坏操作
必要时限制某些目录写入权限
场景三:脚本和运维目录
对于scripts/、ops/之类目录,建议单独更严格地配置,因为里面经常涉及:
数据备份
清理脚本
部署脚本
运维命令
这些地方最容易出事故。
2.6 一个简单的判断原则
你可以这样衡量权限是否合适:
常规开发任务是否基本不用反复确认?
危险操作是否仍然会被拦住?
AI 是否能顺利完成“读、改、测”的日常流程?
是否把不该自动执行的命令锁住了?
如果“效率”和“安全”都还可以,说明权限配置比较平衡。
03
与 Git 工作流深度集成
Claude Code 的强项之一,是能够理解当前仓库的变更状态。
这意味着它不只是“写新代码”,还可以很好地参与:
提炼 commit message
生成 PR 描述
辅助 code review
帮你整理 merge conflict
生成 release note
也就是说,AI 不只在“编码阶段”有用,在“协作阶段”同样有用。

3.1 自动生成 Commit Message
当你写完功能后,可以让 Claude Code 根据git diff生成合适的 commit message。
示例提示词:
分析当前 git diff,生成符合 Conventional Commits 规范的 commit message。要求:1. 第一行简洁、准确2. 说明这次提交的核心变化3. 如果有副作用或注意事项,也一起写出来
可能生成的结果:
feat(auth): add refresh token rotation- Implement refresh token rotation to reduce replay risk- Invalidate old refresh tokens after successful use- Add token reuse detection logic
为什么这样做有价值?
好的 commit message 不是“好看”,而是能帮助以后维护。它至少能解决这几个问题:
回溯历史时快速知道改了什么
方便生成 release note
方便排查 bug 时定位可疑提交
方便团队协作时统一写法
Conventional Commits 的常见类型
你可以在CLAUDE.md或团队规范里顺便说明这些类型:
feat:新功能
fix:修复 bug
refactor:重构
docs:文档修改
test:测试相关
chore:杂项、构建、工具链
perf:性能优化
style:格式调整,不改逻辑
这样 AI 生成的提交信息会更稳定。
3.2 生成 PR 描述:把“改了什么”讲清楚
PR 描述的最大问题通常不是内容太少,而是结构不清楚。Claude Code 很适合把零散改动整理成可读的 PR 说明。
示例提示词:
根据这次的 git log 和 diff,生成一份详细的 PR 描述:- 改动摘要(3行以内)- 详细改动说明- 影响范围- 测试方式- 需要注意的风险点- 可能的回滚方式
一个比较完整的 PR 描述通常应该包含:
改动摘要,用很短的话告诉读者“这次 PR 是干什么的”。
详细改动说明,分模块说明,例如:
新增了什么
调整了什么
删除了什么
为什么要这样改
影响范围,说明改动会影响哪些模块、页面、接口、数据库、用户流程。
测试方式,明确写出:
本地怎么验证
跑了哪些测试
哪些边界情况覆盖了
风险点与回滚方式,如果这次 PR 有风险,最好提前说明:
是否涉及数据库变更
是否影响线上兼容
是否容易回滚
回滚时需要注意什么
这样不仅方便 reviewer,也能降低沟通成本。
3.3 Code Review 辅助:让 AI 先帮你找问题
Claude Code 很适合做“第一轮 review”,尤其适合在你提交 PR 前先快速扫一遍问题。
示例提示词:
请以 senior engineer 的视角 review 这次 PR,重点检查:1. 安全漏洞(SQL 注入、XSS、权限绕过)2. 性能问题(N+1 查询、大量循环、重复请求)3. 错误处理是否完善4. 是否有遗漏的边界情况5. 命名、结构、可读性是否合理下面是 diff:[粘贴 diff]
推荐的 review 维度
AI review 最有价值的地方,不是“挑语法错”,而是帮你发现这几类问题:
逻辑是否完整
是否遗漏边界条件
是否引入性能隐患
是否违反项目约定
是否存在安全风险
是否可以拆得更清晰
使用建议
AI review 适合做“前置筛查”,但不应该替代人工 review。最好的方式是:
先让 AI 看一遍
再让熟悉业务的人复核
对高风险模块再做更严格检查
这样效率和质量都更稳。
3.4 解决 Merge Conflict:先理解意图,再合并代码
当两个分支同时修改了同一文件时,Claude Code 可以帮你梳理冲突内容,先理解双方意图,再完成合并。
示例提示词:
帮我解决这个 merge conflict。请先理解 main 分支和 feature 分支各自想表达什么,再在保留两边意图的前提下进行合理合并。main 分支:重构了错误处理逻辑feature 分支:新增了字段校验逻辑[粘贴冲突内容]
很多冲突不是简单的“保留 A 或保留 B”,而是要判断:
两边是不是解决了不同层面的问题
是否可以组合成一个更完整的方案
是否存在重复逻辑
是否有一边已经过时
Claude Code 在这里的价值,是帮你先读懂上下文,减少“机械合并”。
合并完成后,建议至少检查:
编译是否通过
单测是否通过
逻辑是否重复
错误处理是否一致
是否破坏了原有接口
3.5 自动生成 Release Note
在发版前,你可以让 Claude Code 帮你从一段时间内的提交中整理 release note。
示例提示词:
读取从 v1.2.0 到 HEAD 的所有 git log,生成面向用户的 Release Notes,分类为:新功能、改进、Bug 修复、Breaking Changes,过滤掉 chore/docs/test 类型提交。
好的 release note 能帮助:
运营和产品理解版本变化
测试人员确认重点回归区域
用户知道这次版本有哪些新东西
运维和开发快速定位风险点
建议一般可以分成:
新功能
功能优化
问题修复
性能提升
兼容性变化
已知问题
如果有破坏性变更,一定要单独标出来。
- END -
如果你在使用工具过程中有独特的实践经验,欢迎在评论区分享!
欢迎点赞、红心、转发一键三连,关注本账号,以免错过后续内容更新。
夜雨聆风