09-不要只让 AI 进入 Plan 模式,要先给 AI 一套工程制度

作者:颜进强日期:2026/6/1

上篇:不要只让 AI 进入 Plan 模式,要先给 AI 一套工程制度

这两篇文章的核心目的只有一个:通过业务决策和技术决策,让我们向 AI 提需求时,AI 在 Plan/决策阶段就能更精准。

AI 写代码并不难,难的是让 AI 在一开始做方案时,就知道项目的业务边界、技术边界和执行流程。

这篇是上篇,主要讲为什么要把业务决策和技术决策沉淀下来,以及它们如何帮助 AI 更准确地做方案。

下篇会继续讲:技术决策、rules 和 skills 到底怎么分工,避免文档越写越多,AI 反而越容易混乱。


一、为什么有了 Plan 模式,还是会反复返工?

很多团队刚开始用 Claude Code 时,已经不会直接让 AI 上来就写代码了。

更常见的流程是这样的:

1我说需求
2  
3AI 进入 Plan 模式,先分析方案
4  
5我确认方案
6  
7AI 开始实现
8  
9 Review 发现:方案本身不符合项目规范
10  
11重新调整方案
12  
13再次确认
14  
15再实现
16

这比“直接让 AI 写代码”已经好很多。

但问题并没有完全解决。

因为 Plan 模式只能保证:

1AI 会先想一想。
2AI 会先给一个方案。
3AI 会等你确认后再动手。
4

它不能天然保证:

1这个方案一定符合你的业务边界。
2这个方案一定符合你的技术决策。
3这个方案一定符合你的目录结构。
4这个方案一定不会越过已有架构红线。
5

比如一个真实前后端项目里,AI 在 Plan 阶段就可能问错方向:

  • 新接口应该放 auth-service,还是 backend
  • 公共日志能力应该放 services/log-service,还是 packages/shared-logging
  • 前端页面应该放 apps/web,还是新建一个应用?
  • 服务间能不能直接共享数据库?
  • Controller 能不能直接操作 Prisma?
  • 请求参数校验应该写在 Controller 里,还是 DTO 里?
  • 新增模块需要同步 API 契约审查吗?

如果这些判断只存在团队成员脑子里,AI 在 Plan 模式里也不知道。

于是就会出现另一种更隐蔽的返工:

1AI 不是代码写错了。
2而是方案一开始就偏了。
3
4AI 不是不会执行。
5而是不知道项目真正的边界。
6

所以真正要解决的问题不是:

要不要让 AI 先进入 Plan 模式?

而是:

AI 进入 Plan 模式之前,能不能先加载一套项目制度,让它从一开始就在正确边界里规划。


二、我的做法:把 Claude Code 分成四层治理

我把 Claude Code 的项目配置理解成四层:

1决策层:说明为什么这么做
2  
3规则层:说明具体必须怎么做
4  
5角色层:说明谁来做
6  
7流程层:说明按什么步骤做
8

对应到项目文件,大致是:

1DECISIONS / BUSINESS-DECISIONS  决策层
2rules/                          规则层
3agents/                         角色层
4skills/                         流程层
5

如果用一个更通俗的比喻:

1决策文件像公司战略和技术方案
2rules 像团队制度
3agents 像不同岗位的人
4skills 像办事流程手册
5

这四层组合起来,AI 就不再是“自由发挥”,而是在一套项目制度里工作。


三、为什么第一层必须是“决策”?

很多人一开始会直接写 rules 或 skills。

比如:

1禁止页面直接调用 axios。
2创建页面时必须创建 index、store、constant、style。
3Controller 不允许直接操作数据库。
4

这些规则当然有用。

但如果只有规则,没有决策,AI 只知道“必须这样做”,却不知道“为什么必须这样做”。

这会带来两个问题。

1. 遇到新场景时 AI 不知道怎么判断

比如 rules 里写:

1页面请求必须走 service。
2

但遇到一个非常简单的静态页面,AI 可能会问:

1这个页面没有接口,还要不要建 service?
2

如果决策层写清楚了:

1API 分层封装是为了统一处理认证、错误、缓存和接口契约。
2没有接口请求的页面不需要创建 service。
3

AI 就知道怎么判断边界。

2. 规则变化时没有依据

比如团队以后想把某个状态管理方案换掉。

如果只有 skill 里写了具体步骤,改起来就会很乱:

1这个 skill 里写了旧方案。
2那个模板里也写了旧方案。
3某个 Agent 说明里还写了一遍旧方案。
4

但如果技术决策里明确记录:

1当前状态管理方案是什么?
2为什么选它?
3哪些场景必须用?
4哪些场景不需要用?
5

后续演进时,就能先改决策,再同步 rules 和 skills。


四、决策层应该怎么拆?

我更推荐把决策文件拆清楚,而不是只写一个很大的“项目规范”。

一个通用前后端项目,可以拆成 5 类决策文件:

1BUSINESS-DECISIONS.md
2FRONTEND-BUSINESS-DECISIONS.md
3BACKEND-BUSINESS-DECISIONS.md
4FRONTEND-DECISIONS.md
5DECISIONS.md
6

它们分别解决不同问题。

文件解决的问题典型内容
BUSINESS-DECISIONS全局业务边界系统定位、业务事实源、前后端职责
FRONTEND-BUSINESS-DECISIONS前端业务职责页面边界、展示缓存、交互校准
BACKEND-BUSINESS-DECISIONS后端业务职责服务边界、数据归属、一致性规则
FRONTEND-DECISIONS前端技术方案技术栈、页面拆分、状态管理、API 封装
BACKEND-DECISIONS后端技术方案服务拆分、认证、数据库、异常、缓存

拆开之后,AI 在处理任务时能更精准地加载上下文。

比如:

1改前端页面  重点看 FRONTEND-DECISIONS + FRONTEND-BUSINESS-DECISIONS
2改后端接口  重点看 DECISIONS + BACKEND-BUSINESS-DECISIONS
3改跨端流程  重点看 BUSINESS-DECISIONS + 前后端业务决策
4做安全审查  重点看认证、Token、权限、日志相关决策
5

这比一个几千行的“大规范文档”更容易维护,也更容易让 AI 执行。


五、决策文件推荐写法

决策文件不要只写结论。

更推荐使用下面这种结构:

1### 编号: 决策标题
2
3**状态**: 已采纳 / 待治理 / 待实现
4
5**决策**:
6- 做什么
7- 采用什么方案
8- 哪些边界已经明确
9
10**为什么**:
11- 为什么选这个方案
12- 为什么不选其他方案
13- 这个方案解决什么问题
14
15**边界约束**:
16- 禁止什么
17- 必须什么
18- 哪些情况需要后续补充决策
19

这种格式有三个好处:

  1. 人能快速看懂背景;
  2. AI 能知道哪些是硬约束;
  3. 后续架构变化时有依据可查。

六、一个完整决策案例就够了

文章里不需要把所有决策都展开。

读者真正需要先理解的是:决策文件长什么样,以及它为什么能约束 AI。

所以完整案例保留一个就够了。

🏗️ 架构与系统边界决策

ADR-001: 采用 Monorepo 多微服务架构

状态: ✅ 已采纳

决策:

  • Monorepo 单仓库管理多个独立微服务。
  • apps/web/: 前端应用。
  • services/auth-service/: 认证授权服务。
  • services/backend/: 主业务服务。
  • services/log-service/: 日志服务。
  • packages/shared-logging/: 跨系统共享日志 SDK。

为什么:

  • 微服务可以独立部署、独立扩展。
  • 共享代码通过 packages/ 目录统一管理。
  • 每个服务有明确职责边界,符合单一职责原则。

边界约束:

  • 新增系统必须放入对应目录:apps/services/packages/
  • 服务间通过 HTTP API 调用,不直接共享数据库。
  • 共享包只能放通用能力,不能反向依赖具体业务服务。

这个案例看起来只是目录和服务拆分,但它会影响很多后续执行:

1创建前端页面时:应该放到 apps/web。
2创建认证接口时:应该放到 services/auth-service。
3创建主业务接口时:应该放到 services/backend。
4创建日志 SDK 时:应该放到 packages/shared-logging。
5服务通信时:应该通过 HTTP API,而不是直接共享数据库。
6

这就是决策层的价值。

它不是为了把文档写厚,而是为了让 AI 知道边界。


七、技术决策不需要全部展开,抓重点即可

技术决策很容易写得很细,比如技术栈、目录结构、接口封装、异常处理、缓存策略等。

但在文章里没必要全部展开。

可以用清单说明:

方向决策重点
前端页面页面怎么拆、状态放哪、请求放哪
前端组件什么是通用组件,什么是页面私有组件
前端 API是否允许页面直接请求接口,错误在哪里统一处理
后端分层Controller、Service、DTO 各自负责什么
后端数据能不能直接返回数据库实体,敏感字段怎么过滤
安全认证Token 放哪、权限谁校验、日志不能打印什么

这里想表达的核心观点是:

技术决策不是为了炫技术,而是为了告诉 AI:代码应该放在哪里,边界不能越到哪里。


八、有了决策之后,后面三层才有依据

决策层定方向之后,后面三层才有依据。

1决策层:为什么这么做
2rules:具体必须怎么做
3agents:谁来做
4skills:按什么步骤做
5

比如决策层写:

1采用 Monorepo 多微服务架构。
2前端放 apps/web。
3认证服务放 services/auth-service。
4主业务服务放 services/backend。
5日志能力放 services/log-service  packages/shared-logging。
6服务之间通过 HTTP API 通信,不直接共享数据库。
7

rules 可以翻译成:

1新增前端应用必须放在 apps/ 目录。
2新增后端服务必须放在 services/ 目录。
3跨系统共享能力必须放在 packages/ 目录。
4服务间不得直接访问彼此数据库。
5服务间通信必须通过明确的 API 契约。
6

agents 可以定义:

1frontend-developer 负责 apps/web 下的页面和组件。
2backend-architect 负责 services 下的服务边界、Controller、Service、DTO。
3api-contract-reviewer 负责检查服务间 API 契约是否清晰。
4security-auditor 负责检查认证、权限和跨服务调用风险。
5

skills 可以落成步骤:

1新增后端接口时:
21. 先判断接口属于 auth-service、backend 还是 log-service。
32. 在对应服务目录下创建 Module、Controller、Service、DTO。
43. 通过 DTO 定义请求和响应结构。
54. 如需跨服务调用,走 HTTP API,不直接访问对方数据库。
65. 最后执行后端检查清单和接口契约审查。
7

这样一条决策就能从“方向”一路传导到“执行”。


九、决策文件写好了,Claude 怎么加载?

决策文件拆好之后,还差最后一步:在 CLAUDE.md 里建立引用关系。

否则这些文件只是放在项目里的文档,AI 不一定每次都会主动读取。

更稳的做法是:

1CLAUDE.md
2  
3引用业务决策和技术决策文件
4  
5Claude 启动时先知道这些决策文件在哪里
6  
7Plan 阶段遇到相关问题时,先读取对应决策再做方案
8

比如可以在 CLAUDE.md 里加一段决策索引。

下面是一个简化后的写法示例。

1## 决策文档索引
2
3- 后端架构决策:`.claude/DECISIONS.md`
4  - 认证安全、数据库规范、微服务边界、异常处理等。
5
6- 前端架构决策:`.claude/FRONTEND-DECISIONS.md`
7  - 技术栈、状态管理、页面拆分、路由、API 封装、样式方案等。
8
9- 前端业务决策:`.claude/FRONTEND-BUSINESS-DECISIONS.md`
10  - 前端职责、页面边界、登录体验、缓存边界、交互规则等。
11
12- 后端业务决策:`.claude/BACKEND-BUSINESS-DECISIONS.md`
13  - 服务边界、认证规则、用户资料、内容规则、数据一致性等。
14

这样写的重点不是把所有决策内容都塞进 CLAUDE.md,而是让它成为一个清晰的入口。

举个例子,用户提需求时可能只说:

1帮我新增一个文章详情页,并支持点赞。
2

如果没有这个索引,AI 可能直接开始设计页面和接口。

但有了这个索引之后,AI 在 Plan 阶段就应该先判断:

1这是前端页面需求  先看 FRONTEND-DECISIONS。
2涉及文章展示和点赞  再看 FRONTEND-BUSINESS-DECISIONS。
3涉及点赞结果是否生效  还要看 BACKEND-BUSINESS-DECISIONS。
4

这样它就会知道:

1前端只负责展示和交互。
2点赞结果必须以后端返回为准。
3页面不能自己用本地状态裁决业务结果。
4

这才是决策索引的价值:不是替代决策文件,而是在关键任务开始前,提醒 AI 先找到正确的决策依据。


十、这套体系真正解决了什么?

1. 减少 AI 自由发挥

AI 最大的问题不是不会写,而是太会发挥。

它经常会自己补设计、自己选目录、自己改结构。

四层治理的作用,就是把发挥空间收住:

1该放哪,提前规定。
2该怎么写,提前规定。
3谁来做,提前规定。
4做几步,提前规定。
5

2. 把团队经验变成项目资产

过去很多经验都在资深同学脑子里:

1这个接口不能这么改。
2这个组件不能直接调接口。
3这个字段前后端都要同步。
4这个命令不能全局跑。
5这个逻辑应该放 Service。
6Token 不能放 localStorage。
7数据库异常不能直接返回前端。
8

现在这些经验可以沉淀到:

1BUSINESS-DECISIONS
2FRONTEND-BUSINESS-DECISIONS
3BACKEND-BUSINESS-DECISIONS
4FRONTEND-DECISIONS
5DECISIONS
6rules
7agents
8skills
9

这样新人能看,AI 也能执行。

3. 把 Review 前移

传统方式是:

1代码写完
2  
3Review 发现问题
4  
5返工
6

有了 Claude Code 治理体系后,更像是:

1写代码前先加载决策和规则
2  
3按角色和流程执行
4  
5生成时就尽量符合规范
6

它不能替代人工 Review,但可以减少很多低级返工。


十一、总结

Claude Code 真正有价值的地方,不只是“帮我写代码”。

更重要的是:

当我们向 AI 提需求时,它能带着业务决策和技术决策一起思考,从而在 Plan/决策阶段就更精准。

上篇主要讲了第一层:决策层。

1业务决策:告诉 AI 系统边界是什么。
2技术决策:告诉 AI 架构方向是什么。
3rules:把决策翻译成具体规则。
4agents:把任务交给合适角色。
5skills:把高频动作变成标准流程。
6

一句话总结:

不要只让 AI 进入 Plan 模式,要先让 AI 带着项目制度去规划。

不过,到这里会出现一个很常见的问题:

1技术决策里写了页面怎么拆。
2skill 里也写了页面怎么创建。
3
4技术决策里写了 API 要封装。
5skill 里也写了请求要走 service。
6
7那技术决策和 skill 到底是不是重复了?
8

这就是下篇要重点聊的问题:

技术决策定方向,rules 定红线,skills 定步骤。三者边界如果划不清,文档越写越多,AI 反而越容易混乱。


09-不要只让 AI 进入 Plan 模式,要先给 AI 一套工程制度》 是转载文章,点击查看原文


相关推荐


我为我的龙虾斩分身:OpenClaw 多智能体实操
飞哥数智谈2026/5/12

飞哥数智谈,全栈工程师,在济南这个二线城市做 AI 社群,AI·Spring 社群发起人,同时,担任 TRAE Friends 社区济南 Fellow,致力于 AI 提效与 AI 编程普及与落地。 很久没有写关于 OpenClaw 的文章了,但并不意味着我不再喜欢小龙虾,相反,我依然觉得 OpenClaw 是个具有深远意义的产品。 或者,准确地说,龙虾类产品意义重大,但此处的龙虾并不特指 OpenClaw,可以是 Hermes,可以是 QClaw,也可以是 XClaw。 它们实现了 AI 智能


OpenClaw 多模型配置与切换详解
七夜zippoe2026/5/2

目录 热门文章推荐摘要一、引言:为什么需要多模型支持1.1 AI 模型生态的多元化现状1.2 多模型支持的核心价值 二、支持的模型提供商2.1 OpenAI2.2 Anthropic(Claude)2.3 Qwen(通义千问)2.4 Ollama(本地模型) 三、模型配置详解3.1 基本配置结构3.2 模型选择配置3.3 自定义提供商配置3.4 模型参数配置 四、模型切换机制4.1 Default 默认模型4.2 Reasoning 推理模型4.3 Per-Session 会


树莓派4b + USRP B210 搭建反无人机(反无)系统( HTML + CDN )
MC数据局2026/4/23

brainstorming: 硬件能力分析 1. USRP B210 的能力边界 参数规格对反无系统的意义频率范围70 MHz – 6 GHz✅ 覆盖无人机主流频段(2.4G / 5.8G / 915M / 433M)瞬时带宽最大 56 MHz(USB 3.0)✅ 可一次看完整个 2.4G ISM 频段(83.5 MHz)虽勉强但可用通道数2×2 MIMO✅ 可做双天线测向(干涉/相位差)ADC12-bit灵敏度够用接口USB 3.0⚠️ 树莓派的瓶颈在这里 2. 树莓派的瓶颈(⚠️ 关


Flink技术实践-FlinkSQL Join技术全解
大大大大晴天️2026/4/15

一、背景介绍 在离线批处理场景中,编写一个 Join SQL 是再平常不过的操作——两张有限的数据集,在某个键上关联,输出结果。但当你把这套 SQL 语义移植到实时流处理场景时,一切都变了。 特性批处理 Join流处理 Join数据特征有限、静态、全量数据集无限、动态、无界数据流执行模式一次性全量匹配,结果固定持续计算,结果随新数据实时更新状态管理无需长期状态,计算完成即释放必须维护历史状态以匹配未来数据时间维度无时间概念,基于完整数据集强依赖事件时间 / 处理时间处理乱序与延迟计算成本可预


当代码不再为人而写:Claude Code 零注释背后的 Harness 逻辑
mCell2026/4/7

前几天 Claude Code 因为 sourcemap 没关,导致源码被公开。这件事在技术圈引起的讨论密度很高,因为这种真正跑在生产环境里的闭源通用 Agent 产品,它的内部实现本身就是一份高价值的学习材料。 我看了一些解析文章。有讲它设计模式的,有分析它安全边界的,也有拆解 Prompt 架构的。 但有一个细节我反复确认了一下: Claude Code 内部要求,不要写任何注释。 第一反应是反直觉。 注释难道不是为了理解代码吗?我从写代码以来接受的教育就是:复杂逻辑要写注释,接口参数要写注


C# 基于OpenCv的视觉工作流-章43-轮廓匹配
sali-tec2026/3/29

C# 基于OpenCv的视觉工作流-章43-轮廓匹配 本章目标: 一、匹配原理; 二、模板创建; 三、模板匹配; 本章与章41模板匹配基本相似,在章42基础上,先对图像进行边缘检测,提取轮廓,以轮廓制作模板,匹配时也先对原图进行边缘检测,提取轮廓,最后再进行匹配。整体不同处在于先对图像进行预处理,好处在于匹配适应性更高,对光线明暗不同的图像也能进行更好的匹配。 一、匹配原理 章41已介绍,不再详述; 二、模板创建 边缘检测、轮廓提取在前文章节已介绍,不再详述; 三、模板匹配 参考章42;


OpenCodeUI 让你随时随地 AI Coding
三金得鑫2026/3/21

Hi,大家好,我是三金~ 自从用了 OpenCode + OMO 之后,写起代码来如沐春风,特别得劲!(除了比较烧 token) 但是 TUI 用久了之后吧,又有了一点别的想法: 能不能远程链接?让我随时随地都能 AI Coding。 Web 界面要“看着顺眼、点起来顺手” 所以当我在 L 站看到有佬友开源 OpenCodeUI 的时候,第一反应就是:许愿许成功了? OpenCodeUI 是 OpenCode 的第三方 Web 前端界面。它和 OpenCode 的客户端有点像,整体风格偏简约


电商企微机器人:从自动欢迎语到订单转化,打造私域闭环
2501_941982052026/3/13

能力介绍 电商私域机器人不仅是客服工具,更是 24 小时在线的虚拟导购。通过 API 联动电商平台的商品库与促销引擎,机器人可以根据用户的咨询轨迹自动发送商品卡片、优惠券及限时秒杀信息。它支持精准的关键词触发与定时任务,帮助企业在不增加人工成本的前提下,提升私域社群的活跃度与复购率。 10分钟接入 Demo 首句自动响应:配置好友申请回调,用户通过后秒级发送包含“新人礼包”的欢迎语。 关键词转单:设置机器人监控特定关键词(如“怎么买”、“多少钱”),自动回复带参数的商品小程序路径。


redis stream用作消息队列极速入门
ChesterZhang2026/3/5

背景 最近做了几个需求都用了redis stream用作消息队列,感觉redis stream相当大轻量化,易于上手,且功能强大,为此特意实现了了一个极简但实用的 redis stream 的示例 redis stream 的三个概念 stream, consumer group , consumer 要想学会如何使用 redis stream, 最重要的就是理解 stream, consumer group , consumer 三者的关系。 简单来说: stream 为消息流, 类似于传


React Native 开发环境准备
zh_xuan2026/2/24

一、环境准备 我的环境: 二、建立独立RN工程 1、初始化创建工程 npx react-native init RNApp --version 0.73.4 --skip-install 这个命令提示: ��️ The `init` command is deprecated. E:\android\projects\RNDemo4>cd RNApp - Switch to npx @react-native-community/cli init f

首页编辑器站点地图

本站内容在 CC BY-SA 4.0 协议下发布

Copyright © 2026 聚合阅读