首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >在 DDAD 里,CLAUDE.md 负责协议,Commands 负责复用,Hooks 负责约束

在 DDAD 里,CLAUDE.md 负责协议,Commands 负责复用,Hooks 负责约束

作者头像
白德鑫
发布2026-05-07 18:26:27
发布2026-05-07 18:26:27
200
举报
文章被收录于专栏:白话互联白话互联

今天是一个超长文,关于我最近对于文档驱动AI开发的思考,无论是vibecoding 还是agentic coding 大家目所能及的文章内容都是讲OPC,讲如何变成一个超级个体,很少人讲在10甚至是100+人的团队如何使用AI进行团队协作编程,今天这一篇从Claude Code项目内的第一个文档来看如何在团队里更好的使用AI CODING。好了废话说完了,下面是正文开始😊

很多团队开始使用 Claude Code 之后,第一反应都是先写一个 CLAUDE.md。

这一步没错。

错的是,后面很多人会不自觉地把它写成一个“万能文件”——既想让它承担提示词功能,又想让它装下全部项目背景,还想顺手把团队规范、操作流程、风险提醒、模块说明、排查经验统统塞进去。

结果就是:

文件越来越长

重点越来越散

AI 不一定更稳定

团队成员也越来越难维护

所以问题并不是“要不要写 CLAUDE.md”,而是:

在团队级 Agentic 开发里,CLAUDE.md 到底该承担什么,不该承担什么?

在 DDAD(Document-Driven AI Development,文档驱动 AI 开发)里,这个问题的答案其实很明确:

CLAUDE.md 负责协议层。

Commands / Skills 负责复用层。

Hooks 负责约束层。

Docs 负责事实层。

如果这一层分不清,团队最后得到的不是一个稳定的 AI 协作系统,而只是一个不断膨胀、越来越难维护的大 prompt。

一、为什么很多团队会把 CLAUDE.md 用错?

因为大多数人一开始接触 Claude Code,还是沿着“提示词工程”的惯性在思考。

他们会觉得:

AI 理解偏了,那就多补一点说明

AI 忘了规范,那就把规范加进去

AI 动错了目录,那就再加几条提醒

AI 这次没按流程来,那就补一段工作步骤

这样做短期看似有效,但长期一定会出问题。

因为你解决问题的方式,始终是:

往一个文件里继续加。

而团队协作真正需要的,从来不是一个越来越长的入口文件,而是一套清晰的知识分层。

这就是 DDAD 和普通 prompt engineering 的根本区别。

Prompt engineering 想解决的是:

这次怎么让模型表现更好?

DDAD 想解决的是:

这个团队怎样为 AI 构建一个长期稳定的协作环境?

这两个问题不是一个层级。

所以把 CLAUDE.md 当成一个“大一统入口”,本质上是把团队协作问题,降维成了单次提示问题。

这就是误区的根源。

二、在 DDAD 里,CLAUDE.md 应该是什么?

如果用一句话定义,我会这样说:

CLAUDE.md 不是 prompt file,而是仓库级协作协议入口。

也就是说,它不是用来装下一切的,而是用来告诉 Claude Code:

这个项目是什么

这个仓库怎么走

默认怎么协作

哪些流程要调用什么 command

哪些地方不能乱动

真正的知识和事实在哪里

这意味着,CLAUDE.md 应该保留的是高密度、低歧义、长期稳定的信息,而不是所有历史背景和所有细节说明。

按你这个 DDAD 口径,我认为一个团队项目中的 CLAUDE.md,至少应该包含下面这些内容。

1. 项目目的(Purpose)

Claude 进入仓库时,首先要知道的是:

这个系统是干什么的

解决什么问题

主要服务谁

哪些目标比局部优化更优先

因为一旦没有目的层,AI 很容易变成“局部最优主义者”:

代码也许改对了,但方向不一定对。

2. 仓库地图(Repo Map)

AI 不怕代码多,怕的是没有地图。

这里应该让它快速知道:

核心业务目录在哪

基础设施目录在哪

测试目录在哪

配置入口在哪

构建部署入口在哪

哪些目录是高风险区域

团队成员和 AI 一样,都需要这张地图。

3. 关键文档入口(Key Doc Entrypoints)

CLAUDE.md 不应该重复所有文档内容,但必须告诉 AI:

架构文档在哪

业务规则在哪

ADR 在哪

runbook 在哪

API 约定在哪

spec 模板在哪

这一步非常关键。

因为 DDAD 不是“把所有东西都喂给 AI”,而是让 AI 明确知道:

真相存放在哪里。

4. 上下游关联项目的路径和概要

这是很多文章不会写,但你这个方法论特别应该写进去的一层。

很多团队问题不是出在单仓库内部,而是出在:

它依赖哪个上游项目

它会影响哪个下游系统

本地有哪些 sibling repo / monorepo package / gateway service / shared sdk

哪些仓库之间有接口约束、数据契约或发布顺序

如果 AI 不知道这些上下游关系,它就只能在当前目录内做局部推理。

而团队级 Agentic 开发要的是:

它知道自己改的不是一块孤立代码,而是一个系统中的节点。

所以 CLAUDE.md 里应该有一节专门写:

相关仓库路径

每个关联项目的用途

调用方向

变更影响面

需要联动阅读的文档入口

5. 全局协作协议(Global Collaboration Protocol)

这部分定义的不是项目知识,而是协作原则。

例如:

默认先读文档,再动代码

重大改动先出方案

高风险模块最小改动优先

不擅自扩大任务边界

不在未确认时修改关键目录

这部分决定的是 Claude Code 在这个仓库里的“行为风格”。

6. 默认流程(Default Workflow)

也就是:如果没有额外说明,Claude 应该怎么推进工作。

比如:

读 CLAUDE.md

读相关 docs/spec

总结上下文和风险

输出计划

再实施

改完运行检查

输出变更说明

这部分是工作节奏,而不是知识说明。

7. Command 路由(Workflow Routing)

这是你刚才提得很准的一点,也是这版文章最重要的改动。

CLAUDE.md 不应该承担所有具体流程本身,而应该规定:

什么场景调用哪个 command

什么类型的任务必须先走哪个 skill

什么动作需要执行哪个检查流程

例如:

新功能开发先走 /write-spec

重构前先走 /impact-check

提交前必须执行 /review-pr

生产故障排查优先走 /incident-debug

这就是“协议层”该做的事:

规定路由,不承载所有执行细节。

8. 边界与禁区(Boundaries & No-go Zones)

最后是明确边界。

例如:

哪些目录不可直接改

哪些模块必须人工确认

哪些变更必须附带测试

哪些操作必须经过 hooks 或审查

这部分必须明确,不要写成模糊建议。

因为模糊建议在团队协作里等于没有约束。

三、既然 CLAUDE.md 要保留这些内容,那什么不该继续塞进去?

答案也很简单:

凡是会重复执行、可模板化、可复用的规范,不该继续堆在 CLAUDE.md 里。

这些东西更适合做成 commands / skills。

为什么?

因为这类内容的本质,不是“仓库记忆”,而是“执行流程”。

例如这些东西:

PR review 流程

重构流程

发布流程

调试流程

spec 编写流程

风险评估流程

模块接手流程

如果每次都靠 CLAUDE.md 中的一大段说明去重复触发,那它很快就会变成一个低效的大总表。

所以在 DDAD 里,我们更应该把它们做成:

.claude/commands/

.claude/skills/

也就是说:

协议层规范放在 CLAUDE.md。

执行层规范做成 Commands / Skills。

这就是团队知识复用的正确分层。

四、为什么 Commands / Skills 更适合承载团队规范复用?

因为 command / skill 天生具备几个 CLAUDE.md 不擅长的特点。

1. 它可显式调用

AI 不需要从一大段背景里猜“现在该走哪套流程”,而是可以直接进入特定模式。

比如:

/write-spec

/review-pr

/refactor-module

/release-check

这让协作更像“进入某种工作模式”,而不是“再读一遍总说明文件”。

2. 它适合复用

一套 command 可以:

跨会话复用

跨成员复用

跨项目复用

团队共享维护

这才叫组织级能力,而不是个人 prompt 收藏夹。

3. 它更容易演进

流程经常会变。

如果所有流程都写死在 CLAUDE.md 里,每次修改都要碰全局入口;

但如果拆成 commands / skills,就可以局部演进、版本化维护。

4. 它更符合 DDAD 的“知识即代码”

在 DDAD 里,知识不是说明性的附件,而是可执行的团队记忆。

而 command / skill 正是这种“可执行知识”的最佳承载体之一。

所以真正的问题不是:

团队知识规范要不要写?

而是:

哪些该留在协议层,哪些该沉淀成可执行复用单元?

五、Hooks 为什么必须单独分层?

还有一层特别重要,不能混进 CLAUDE.md,也不能只交给 commands,那就是 Hooks。

因为有些规则不是“希望 AI 记住”,而是“必须保证发生”。

比如:

编辑后自动跑 formatter

改核心模块自动跑测试

修改高风险目录自动拦截

没通过检查禁止继续提交

这些事情如果只写在文档里,本质上仍然是软约束。

而软约束在高风险场景下是不够的。

所以在 DDAD 里:

文档负责表达

command 负责执行流程

hook 负责确定性约束

你可以把它理解成三层:

CLAUDE.md:告诉 AI 规则是什么

command / skill:告诉 AI 这类任务怎么做

hook:确保关键规则一定被执行

这才是完整系统,而不是单文件信仰。

六、Docs 的作用不是“补充阅读”,而是事实来源

最后再说一层容易被忽略的:docs/。

在很多团队里,docs 常常是最容易被边缘化的部分。

但在 DDAD 里,它恰恰是最重要的“事实层”。

docs/ 的作用不是为了让人“有空再看”,而是为了让 Claude Code 和团队成员都知道:

真实架构长什么样

历史决策是什么

业务规则怎么定义

运维流程怎么走

某些模块为什么不能那样改

所以 docs 不是补充材料,而是:

协作中的事实来源。

也正因为如此,CLAUDE.md 里才必须保留关键文档入口,而不是把所有文档内容复制粘贴进去。

入口层负责导航,事实层负责支撑。

七、DDAD 视角下的正确分层应该是什么?

如果把上面所有内容压缩成一套团队级结构,我会给出这样一个结论:

CLAUDE.md

负责:

项目目的

仓库地图

关键文档入口

上下游关联项目路径和概要

全局协作协议

默认流程

Command 路由

边界与禁区

.claude/commands/ / .claude/skills/

负责:

可复用工作流

标准化执行步骤

输出模板

团队共享的操作模式

.claude/hooks/

负责:

自动检查

风险拦截

强制约束

不依赖模型记忆的确定性行为

docs/

负责:

架构事实

ADR

runbook

业务规则

深层背景知识

这四层一分清,很多原本混乱的问题都会自动变简单:

入口文件不会无限膨胀

流程可以复用

风险可以约束

知识可以定位

团队协作可以稳定下来

这才是 DDAD 想要的东西。

八、结论:别再让 CLAUDE.md 承担一切

如果用一句话总结这篇文章,我会这样说:

在团队 Agentic 开发里,CLAUDE.md 不该承担一切。它应该只负责协议入口,而不是试图装下整个系统。

真正成熟的做法,不是继续往 CLAUDE.md 里塞更多内容,而是完成分层:

协议放在 CLAUDE.md

复用放在 Commands / Skills

约束放在 Hooks

事实放在 Docs

这样做的价值,不只是让 Claude Code 更稳定。

更重要的是,它让团队从“提示词试错”走向“协作系统设计”。

而这,正是 DDAD 的核心立场:

文档不是附属物,而是人机协作的接口。

知识不是背景材料,而是可执行的团队记忆。

协作不是临时互动,而是可编排、可约束、可复用的工程系统。

当你这样设计项目时,Claude Code 才更有可能不像一个偶尔聪明、偶尔失忆的聊天机器人

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-04-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 白话互联 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档