BMAD-METHOD/docs_cn/explanation/preventing-agent-conflicts_...

138 lines
5.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: "防止智能体冲突"
description: 架构如何在多个智能体实现系统时防止冲突
sidebar:
order: 4
---
当多个 AI 智能体实现系统的不同部分时,它们可能会做出相互冲突的技术决策。架构文档通过建立共享标准来防止这种情况。
## 常见冲突类型
### API 风格冲突
没有架构时:
- 智能体 A 使用 REST路径为 `/users/{id}`
- 智能体 B 使用 GraphQL mutations
- 结果API 模式不一致,消费者困惑
有架构时:
- ADR 指定:"所有客户端-服务器通信使用 GraphQL"
- 所有智能体遵循相同的模式
### 数据库设计冲突
没有架构时:
- 智能体 A 使用 snake_case 列名
- 智能体 B 使用 camelCase 列名
- 结果:模式不一致,查询混乱
有架构时:
- 标准文档指定命名约定
- 所有智能体遵循相同的模式
### 状态管理冲突
没有架构时:
- 智能体 A 使用 Redux 管理全局状态
- 智能体 B 使用 React Context
- 结果:多种状态管理方法,复杂度增加
有架构时:
- ADR 指定状态管理方法
- 所有智能体一致实现
## 架构如何防止冲突
### 1. 通过 ADR 明确决策
每个重要的技术选择都记录以下内容:
- 上下文(为什么这个决策很重要)
- 考虑的选项(有哪些替代方案)
- 决策(我们选择了什么)
- 理由(为什么选择它)
- 后果(接受的权衡)
### 2. FR/NFR 特定指导
架构将每个功能需求映射到技术方法:
- FR-001用户管理 → GraphQL mutations
- FR-002移动应用 → 优化查询
### 3. 标准和约定
明确记录以下内容:
- 目录结构
- 命名约定
- 代码组织
- 测试模式
## 架构作为共享上下文
将架构视为所有智能体在实现之前阅读的共享上下文:
```text
PRD"构建什么"
架构:"如何构建"
智能体 A 阅读架构 → 实现 Epic 1
智能体 B 阅读架构 → 实现 Epic 2
智能体 C 阅读架构 → 实现 Epic 3
结果:一致的实现
```
## Key ADR Topics
防止冲突的常见决策:
| Topic | Example Decision |
| ---------------- | -------------------------------------------- |
| API Style | GraphQL vs REST vs gRPC |
| Database | PostgreSQL vs MongoDB |
| Auth | JWT vs Sessions |
| State Management | Redux vs Context vs Zustand |
| Styling | CSS Modules vs Tailwind vs Styled Components |
| Testing | Jest + Playwright vs Vitest + Cypress |
## 避免的反模式
:::caution[常见错误]
- **隐式决策** — "我们边做边确定 API 风格"会导致不一致
- **过度文档化** — 记录每个次要选择会导致分析瘫痪
- **过时架构** — 文档写一次后从不更新,导致智能体遵循过时的模式
:::
:::tip[正确方法]
- 记录跨越 epic 边界的决策
- 专注于容易产生冲突的领域
- 随着学习更新架构
- 对重大变更使用 `correct-course`
:::
---
## 术语说明
- **agent**:智能体。在人工智能与编程文档中,指具备自主决策或执行能力的单元。
- **ADR**架构决策记录Architecture Decision Record。用于记录重要架构决策及其背景、选项和后果的文档。
- **FR**功能需求Functional Requirement。系统必须具备的功能或行为。
- **NFR**非功能需求Non-Functional Requirement。系统性能、安全性、可扩展性等质量属性。
- **Epic**:史诗。大型功能或用户故事的集合,通常需要多个迭代完成。
- **snake_case**:蛇形命名法。单词之间用下划线连接,所有字母小写的命名风格。
- **camelCase**:驼峰命名法。除第一个单词外,每个单词首字母大写的命名风格。
- **GraphQL mutations**GraphQL 变更操作。用于修改服务器数据的 GraphQL 操作类型。
- **Redux**JavaScript 状态管理库。用于管理应用全局状态的可预测状态容器。
- **React Context**React 上下文 API。用于在组件树中传递数据而无需逐层传递 props。
- **Zustand**:轻量级状态管理库。用于 React 应用的简单状态管理解决方案。
- **CSS Modules**CSS 模块。将 CSS 作用域限制在组件内的技术。
- **Tailwind**Tailwind CSS。实用优先的 CSS 框架。
- **Styled Components**:样式化组件。使用 JavaScript 编写样式的 React 库。
- **Jest**JavaScript 测试框架。用于编写和运行测试的工具。
- **Playwright**:端到端测试框架。用于自动化浏览器测试的工具。
- **Vitest**Vite 原生测试框架。快速且轻量的单元测试工具。
- **Cypress**:端到端测试框架。用于 Web 应用测试的工具。
- **gRPC**远程过程调用框架。Google 开发的高性能 RPC 框架。
- **JWT**JSON Web Token。用于身份验证的开放标准令牌。
- **PRD**产品需求文档Product Requirements Document。描述产品功能、需求和目标的文档。