Skip to content

Commit 8b07541

Browse files
lrliangleon
andauthored
docs(zh-cn): refine Epic3 story 3.1 and 3.2 explanations (#2098)
* docs(zh-cn-explanation): refine epic3 stories 3.1-3.2 我统一 solutioning、project context 与 established projects 的中文术语和叙述边界,避免 explanation 页面混入 how-to 语气导致误判。 我补齐中文优先跳转并更新关键 workflow 命名,使多智能体协作与既有项目 FAQ 的说明更可执行。 feishu: https://feishu.cn/wiki/TODO Made-with: Cursor * docs(zh-cn-explanation): normalize admonition syntax 我将 3 篇中文 explanation 文档中的提示块语法统一为仓库约定的 `:::...:::` 形式。 此前使用 `::::...::::` 会导致与现有文档规范不一致;现在统一后可减少渲染歧义与后续维护成本。 Feishu: <https://www.feishu.cn/> Made-with: Cursor --------- Co-authored-by: leon <leon.liang@hairobotics.com>
1 parent 90d9d88 commit 8b07541

4 files changed

Lines changed: 187 additions & 296 deletions

File tree

Lines changed: 38 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,60 +1,62 @@
11
---
22
title: "既有项目常见问题"
3-
description: 关于在既有项目上使用 BMad 方法的常见问题
3+
description: 关于在既有项目上使用 BMad Method 的常见问题
44
sidebar:
55
order: 8
66
---
7-
关于使用 BMad 方法(BMM)在既有项目上工作的常见问题的快速解答
7+
关于在 established projects(既有项目)中使用 BMad Method 的高频问题,快速说明如下
88

99
## 问题
1010

11-
- [我必须先运行 document-project 吗?](#我必须先运行-document-project-吗)
12-
- [如果我忘记运行 document-project 怎么办?](#如果我忘记运行-document-project-怎么办)
13-
- [我可以在既有项目上使用快速流程吗?](#我可以在既有项目上使用快速流程吗)
14-
- [如果我的现有代码不遵循最佳实践怎么办?](#如果我的现有代码不遵循最佳实践怎么办)
11+
- [我必须先运行文档梳理工作流吗?](#我必须先运行文档梳理工作流吗)
12+
- [如果我忘了运行文档梳理怎么办?](#如果我忘了运行文档梳理怎么办)
13+
- [既有项目可以直接用 Quick Flow 吗?](#既有项目可以直接用-quick-flow-吗)
14+
- [如果现有代码不符合最佳实践怎么办?](#如果现有代码不符合最佳实践怎么办)
15+
- [什么时候该从 Quick Flow 切到完整方法?](#什么时候该从-quick-flow-切到完整方法)
1516

16-
### 我必须先运行 document-project 吗
17+
### 我必须先运行文档梳理工作流吗
1718

18-
强烈推荐,特别是如果:
19+
不绝对必须,但通常强烈建议先运行 `bmad-document-project`,尤其当:
20+
- 项目文档缺失或明显过时
21+
- 新成员或智能体难以快速理解现有系统
22+
- 你希望后续 `workflow` 基于真实现状而不是猜测执行
1923

20-
- 没有现有文档
21-
- 文档已过时
22-
- AI 智能体需要关于现有代码的上下文
24+
如果你已有完整且最新的文档(包含 `docs/index.md`),并且能通过其他方式提供足够上下文,也可以跳过。
2325

24-
如果你拥有全面且最新的文档,包括 `docs/index.md`,或者将使用其他工具或技术来帮助智能体发现现有系统,则可以跳过此步骤。
26+
### 如果我忘了运行文档梳理怎么办?
2527

26-
### 如果我忘记运行 document-project 怎么办?
28+
可以随时补跑,不影响你继续推进当前任务。很多团队会在迭代中期或里程碑后再运行一次,用来把“代码现状”回写到文档里。
2729

28-
不用担心——你可以随时执行。你甚至可以在项目期间或项目之后执行,以帮助保持文档最新。
30+
### 既有项目可以直接用 Quick Flow 吗?
2931

30-
### 我可以在既有项目上使用快速流程吗?
32+
可以。Quick Flow(例如 `bmad-quick-dev`)在既有项目里通常很高效,尤其适合:
33+
- 小功能增量
34+
- 缺陷修复
35+
- 风险可控的局部改动
3136

32-
可以!快速流程在既有项目上效果很好。它将:
37+
它会尝试识别现有技术栈、代码模式和约定,并据此生成更贴近现状的实现方案。
3338

34-
- 自动检测你的现有技术栈
35-
- 分析现有代码模式
36-
- 检测约定并请求确认
37-
- 生成尊重现有代码的上下文丰富的技术规范
39+
### 如果现有代码不符合最佳实践怎么办?
3840

39-
非常适合现有代码库中的错误修复和小功能。
41+
工作流会优先问你:“是否沿用当前约定?”你可以主动选择:
42+
- **沿用**:优先保持一致性,降低短期改动风险
43+
- **升级**:建立新标准,并在 tech-spec 或架构中写明迁移理由与范围
4044

41-
### 如果我的现有代码不遵循最佳实践怎么办?
45+
BMad Method 不会强制“立即现代化”,而是把决策权交给你。
4246

43-
快速流程会检测你的约定并询问:"我应该遵循这些现有约定吗?"你决定:
47+
### 什么时候该从 Quick Flow 切到完整方法?
4448

45-
- **** → 与当前代码库保持一致
46-
- **** → 建立新标准(在技术规范中记录原因)
49+
当任务出现以下信号时,建议从 Quick Flow 升级到完整 BMad Method:
50+
- 改动跨多个 `epic` 或多个子系统
51+
- 需要明确 `architecture` 决策,否则容易冲突
52+
- 涉及较大协作面、较高回归风险或复杂验收要求
4753

48-
BMM 尊重你的选择——它不会强制现代化,但会提供现代化选项
54+
如果你不确定,先让 `bmad-help` 判断当前阶段更稳妥的 workflow
4955

50-
**有未在此处回答的问题吗** [提出问题](https://github.com/bmad-code-org/BMAD-METHOD/issues)或在 [Discord](https://discord.gg/gk8jAdXWmj) 中提问,以便我们添加它!
56+
**还有问题** 欢迎在 [GitHub Issues](https://github.com/bmad-code-org/BMAD-METHOD/issues)[Discord](https://discord.gg/gk8jAdXWmj) 提问。
5157

52-
---
53-
## 术语说明
54-
55-
- **agent**:智能体。在人工智能与编程文档中,指具备自主决策或执行能力的单元。
56-
- **Quick Flow**:快速流程。BMad 方法中的一种工作流程,用于快速处理既有项目。
57-
- **spec**:规范。描述技术实现细节和标准的文档。
58-
- **stack**:技术栈。项目所使用的技术组合,包括框架、库、工具等。
59-
- **conventions**:约定。代码库中遵循的编码风格、命名规则等规范。
60-
- **modernization**:现代化。将旧代码或系统更新为更现代的技术和最佳实践的过程。
58+
## 继续阅读
59+
60+
- [既有项目(How-to)](../how-to/established-projects.md)
61+
- [项目上下文(Explanation)](./project-context.md)
62+
- [管理项目上下文(How-to)](../how-to/project-context.md)

docs/zh-cn/explanation/preventing-agent-conflicts.md

Lines changed: 68 additions & 89 deletions
Original file line numberDiff line numberDiff line change
@@ -5,133 +5,112 @@ sidebar:
55
order: 4
66
---
77

8-
当多个 AI 智能体实现系统的不同部分时,它们可能会做出相互冲突的技术决策。架构文档通过建立共享标准来防止这种情况
8+
当多个 AI 智能体并行实现系统时,冲突并不罕见。`architecture` 的作用,就是在 `solutioning` 阶段先统一关键决策,避免到 `epic/story` 实施时才暴露分歧
99

10-
## 常见冲突类型
10+
## 冲突最常出现在哪些地方
1111

1212
### API 风格冲突
1313

14-
没有架构时
15-
- 智能体 A 使用 REST,路径为 `/users/{id}`
14+
没有架构约束时
15+
- 智能体 A 使用 REST,路径是 `/users/{id}`
1616
- 智能体 B 使用 GraphQL mutations
17-
- 结果:API 模式不一致,消费者困惑
17+
- 结果:接口模式不一致,调用方和集成层都变复杂
1818

19-
有架构时
20-
- ADR 指定:"所有客户端-服务器通信使用 GraphQL"
21-
- 所有智能体遵循相同的模式
19+
有架构约束时
20+
- ADR 明确规定:“客户端与服务端统一使用 GraphQL
21+
- 所有智能体遵循同一套 API 规则
2222

23-
### 数据库设计冲突
23+
### 数据库与命名冲突
2424

25-
没有架构时
26-
- 智能体 A 使用 snake_case 列名
27-
- 智能体 B 使用 camelCase 列名
28-
- 结果:模式不一致,查询混乱
25+
没有架构约束时
26+
- 智能体 A 使用 `snake_case` 列名
27+
- 智能体 B 使用 `camelCase` 列名
28+
- 结果:schema 不一致,查询与迁移成本上升
2929

30-
有架构时
31-
- 标准文档指定命名约定
32-
- 所有智能体遵循相同的模式
30+
有架构约束时
31+
- 标准文档统一命名约定和迁移策略
32+
- 所有智能体按同一模式实现
3333

3434
### 状态管理冲突
3535

36-
没有架构时
37-
- 智能体 A 使用 Redux 管理全局状态
36+
没有架构约束时
37+
- 智能体 A 使用 Redux
3838
- 智能体 B 使用 React Context
39-
- 结果:多种状态管理方法,复杂度增加
39+
- 结果:状态层碎片化,维护复杂度增加
4040

41-
有架构时
42-
- ADR 指定状态管理方法
43-
- 所有智能体一致实现
41+
有架构约束时
42+
- ADR 明确状态管理方案
43+
- 不同 `story` 的实现保持一致
4444

45-
## 架构如何防止冲突
45+
## architecture 如何前置消解冲突
4646

47-
### 1. 通过 ADR 明确决策
47+
### 1. ADR 固化关键决策
4848

49-
每个重要的技术选择都记录以下内容
50-
- 上下文(为什么这个决策很重要
51-
- 考虑的选项(有哪些替代方案
52-
- 决策(我们选择了什么
53-
- 理由(为什么选择它
54-
- 后果(接受的权衡
49+
每个关键技术选择都至少包含
50+
- 背景(为什么要做这个决策
51+
- 备选方案(有哪些选择
52+
- 最终决策(采用什么
53+
- 理由(为什么这样选
54+
- 后果(接受哪些权衡
5555

56-
### 2. FR/NFR 特定指导
56+
### 2. FR/NFR 映射到技术实现
5757

58-
架构将每个功能需求映射到技术方法
59-
- FR-001用户管理 → GraphQL mutations
60-
- FR-002:移动应用 → 优化查询
58+
`architecture` 不是抽象原则清单,而是把需求落到可执行方案
59+
- FR-001用户管理→ GraphQL mutations
60+
- FR-002(移动端性能)→ 查询裁剪与缓存策略
6161

62-
### 3. 标准和约定
62+
### 3. 统一基础约定
6363

64-
明确记录以下内容
64+
至少覆盖以下共识
6565
- 目录结构
6666
- 命名约定
67-
- 代码组织
68-
- 测试模式
67+
- 代码组织方式
68+
- 测试策略
6969

70-
## 架构作为共享上下文
70+
## architecture 是所有 epic 的共享上下文
7171

72-
将架构视为所有智能体在实现之前阅读的共享上下文
72+
把架构文档看作每个智能体在实施前都要阅读的“公共协议”
7373

7474
```text
75-
PRD:"构建什么"
75+
PRD: "做什么"
7676
77-
架构:"如何构建"
77+
architecture: "如何做"
7878
79-
智能体 A 阅读架构 → 实现 Epic 1
80-
智能体 B 阅读架构 → 实现 Epic 2
81-
智能体 C 阅读架构 → 实现 Epic 3
79+
智能体 A 读 architecture → 实现 Epic 1
80+
智能体 B 读 architecture → 实现 Epic 2
81+
智能体 C 读 architecture → 实现 Epic 3
8282
83-
结果:一致的实现
83+
结果:实现一致、集成顺畅
8484
```
8585

86-
## Key ADR Topics
86+
## 优先写清的 ADR 主题
8787

88-
防止冲突的常见决策:
89-
90-
| Topic | Example Decision |
88+
| 主题 | 示例决策 |
9189
| ---------------- | -------------------------------------------- |
92-
| API Style | GraphQL vs REST vs gRPC |
93-
| Database | PostgreSQL vs MongoDB |
94-
| Auth | JWT vs Sessions |
95-
| State Management | Redux vs Context vs Zustand |
96-
| Styling | CSS Modules vs Tailwind vs Styled Components |
97-
| Testing | Jest + Playwright vs Vitest + Cypress |
90+
| API 风格 | GraphQL vs REST vs gRPC |
91+
| 数据存储 | PostgreSQL vs MongoDB |
92+
| 认证机制 | JWT vs Session |
93+
| 状态管理 | Redux vs Context vs Zustand |
94+
| 样式方案 | CSS Modules vs Tailwind vs Styled Components |
95+
| 测试体系 | Jest + Playwright vs Vitest + Cypress |
9896

99-
## 避免的反模式
97+
## 常见误区
10098

10199
:::caution[常见错误]
102-
- **隐式决策** — "我们边做边确定 API 风格"会导致不一致
103-
- **过度文档化** — 记录每个次要选择会导致分析瘫痪
104-
- **过时架构** — 文档写一次后从不更新,导致智能体遵循过时的模式
100+
- **隐式决策**:边写边定规则,最终通常会分叉
101+
- **过度文档化**:把每个小选择都写 ADR,造成分析瘫痪
102+
- **架构陈旧**:文档不更新,智能体继续按过时规则实现
105103
:::
106104

107-
:::tip[正确方法]
108-
- 记录跨越 epic 边界的决策
109-
- 专注于容易产生冲突的领域
110-
- 随着学习更新架构
111-
- 对重大变更使用 `correct-course`
105+
:::tip[更稳妥的做法]
106+
- 先记录跨 `epic`、高冲突概率的决策
107+
- 把精力放在“会影响多个 story 的规则”
108+
- 随着项目演进持续更新架构文档
109+
- 出现重大偏移时使用 `bmad-correct-course`
112110
:::
113111

114-
---
115-
## 术语说明
116-
117-
- **agent**:智能体。在人工智能与编程文档中,指具备自主决策或执行能力的单元。
118-
- **ADR**:架构决策记录(Architecture Decision Record)。用于记录重要架构决策及其背景、选项和后果的文档。
119-
- **FR**:功能需求(Functional Requirement)。系统必须具备的功能或行为。
120-
- **NFR**:非功能需求(Non-Functional Requirement)。系统性能、安全性、可扩展性等质量属性。
121-
- **Epic**:史诗。大型功能或用户故事的集合,通常需要多个迭代完成。
122-
- **snake_case**:蛇形命名法。单词之间用下划线连接,所有字母小写的命名风格。
123-
- **camelCase**:驼峰命名法。除第一个单词外,每个单词首字母大写的命名风格。
124-
- **GraphQL mutations**:GraphQL 变更操作。用于修改服务器数据的 GraphQL 操作类型。
125-
- **Redux**:JavaScript 状态管理库。用于管理应用全局状态的可预测状态容器。
126-
- **React Context**:React 上下文 API。用于在组件树中传递数据而无需逐层传递 props。
127-
- **Zustand**:轻量级状态管理库。用于 React 应用的简单状态管理解决方案。
128-
- **CSS Modules**:CSS 模块。将 CSS 作用域限制在组件内的技术。
129-
- **Tailwind**:Tailwind CSS。实用优先的 CSS 框架。
130-
- **Styled Components**:样式化组件。使用 JavaScript 编写样式的 React 库。
131-
- **Jest**:JavaScript 测试框架。用于编写和运行测试的工具。
132-
- **Playwright**:端到端测试框架。用于自动化浏览器测试的工具。
133-
- **Vitest**:Vite 原生测试框架。快速且轻量的单元测试工具。
134-
- **Cypress**:端到端测试框架。用于 Web 应用测试的工具。
135-
- **gRPC**:远程过程调用框架。Google 开发的高性能 RPC 框架。
136-
- **JWT**:JSON Web Token。用于身份验证的开放标准令牌。
137-
- **PRD**:产品需求文档(Product Requirements Document)。描述产品功能、需求和目标的文档。
112+
## 继续阅读
113+
114+
- [为什么解决方案阶段很重要](./why-solutioning-matters.md)
115+
- [项目上下文](./project-context.md)
116+
- [工作流地图](../reference/workflow-map.md)

0 commit comments

Comments
 (0)