@haaaiawd/anws 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +96 -0
- package/bin/cli.js +76 -0
- package/lib/copy.js +38 -0
- package/lib/index.js +8 -0
- package/lib/init.js +139 -0
- package/lib/manifest.js +53 -0
- package/lib/output.js +74 -0
- package/lib/update.js +85 -0
- package/package.json +36 -0
- package/templates/.agent/rules/agents.md +90 -0
- package/templates/.agent/skills/build-inspector/SKILL.md +83 -0
- package/templates/.agent/skills/complexity-guard/SKILL.md +71 -0
- package/templates/.agent/skills/complexity-guard/references/anti_patterns.md +21 -0
- package/templates/.agent/skills/concept-modeler/SKILL.md +112 -0
- package/templates/.agent/skills/concept-modeler/prompts/GLOSSARY_PROMPT.md +40 -0
- package/templates/.agent/skills/concept-modeler/references/ENTITY_EXTRACTION_PROMPT.md +299 -0
- package/templates/.agent/skills/concept-modeler/scripts/glossary_gen.py +66 -0
- package/templates/.agent/skills/git-forensics/SKILL.md +74 -0
- package/templates/.agent/skills/git-forensics/references/ANALYSIS_METHODOLOGY.md +193 -0
- package/templates/.agent/skills/git-forensics/scripts/git_forensics.py +615 -0
- package/templates/.agent/skills/git-forensics/scripts/git_hotspots.py +118 -0
- package/templates/.agent/skills/report-template/SKILL.md +88 -0
- package/templates/.agent/skills/report-template/references/REPORT_TEMPLATE.md +100 -0
- package/templates/.agent/skills/runtime-inspector/SKILL.md +93 -0
- package/templates/.agent/skills/spec-writer/SKILL.md +58 -0
- package/templates/.agent/skills/spec-writer/references/prd_template.md +174 -0
- package/templates/.agent/skills/system-architect/SKILL.md +620 -0
- package/templates/.agent/skills/system-architect/references/rfc_template.md +59 -0
- package/templates/.agent/skills/system-designer/SKILL.md +439 -0
- package/templates/.agent/skills/system-designer/references/system-design-template.md +533 -0
- package/templates/.agent/skills/task-planner/SKILL.md +474 -0
- package/templates/.agent/skills/task-planner/references/TASK_TEMPLATE.md +133 -0
- package/templates/.agent/skills/tech-evaluator/SKILL.md +135 -0
- package/templates/.agent/skills/tech-evaluator/references/ADR_TEMPLATE.md +68 -0
- package/templates/.agent/workflows/blueprint.md +185 -0
- package/templates/.agent/workflows/challenge.md +467 -0
- package/templates/.agent/workflows/change.md +294 -0
- package/templates/.agent/workflows/craft.md +626 -0
- package/templates/.agent/workflows/design-system.md +497 -0
- package/templates/.agent/workflows/explore.md +307 -0
- package/templates/.agent/workflows/forge.md +354 -0
- package/templates/.agent/workflows/genesis.md +265 -0
- package/templates/.agent/workflows/scout.md +130 -0
|
@@ -0,0 +1,620 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: system-architect
|
|
3
|
+
description: 识别项目中的独立系统,定义系统边界。产出系统架构总览,为后续系统设计奠定基础。
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# 系统拆解手册 (System Decomposition Manual)
|
|
7
|
+
|
|
8
|
+
> "Good architecture is less about building the perfect system,
|
|
9
|
+
> and more about dividing the problem into the right systems."
|
|
10
|
+
|
|
11
|
+
你是一位**系统架构师**,专注于**识别和拆解系统**。
|
|
12
|
+
你的目标是找到项目中的独立系统,定义清晰的边界。
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## ⚠️ 强制深度思考
|
|
17
|
+
|
|
18
|
+
> [!IMPORTANT]
|
|
19
|
+
> 在进行拆解之前,你**必须**调用 `sequential thinking` 工具,视复杂情况进行 **3—7 步**推理。
|
|
20
|
+
> 思考内容例如:
|
|
21
|
+
> 1. "这个系统是否可以合并到另一个系统?"
|
|
22
|
+
> 2. "拆分是否真正带来价值(独立部署、技术栈差异)?"
|
|
23
|
+
> 3. "如果未来业务增长 10 倍,现在的边界是否还能维持?" (演进路线推演)
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## ⚠️ 核心原则
|
|
28
|
+
|
|
29
|
+
> [!IMPORTANT]
|
|
30
|
+
> **系统拆解的三大原则**:
|
|
31
|
+
>
|
|
32
|
+
> 1. **关注点分离** - 每个系统聚焦单一职责
|
|
33
|
+
> 2. **边界清晰** - 明确输入输出,避免职责模糊
|
|
34
|
+
> 3. **适度拆分** - 不过度拆分(>10个系统),也不过度聚合(1个系统)
|
|
35
|
+
|
|
36
|
+
❌ **错误做法**:
|
|
37
|
+
- 过度拆分:把每个功能都拆成独立系统
|
|
38
|
+
- 过度聚合:所有功能都塞在一个"大系统"
|
|
39
|
+
- 边界模糊:系统之间职责重叠
|
|
40
|
+
- 忽略技术栈差异:前端和后端混在一起
|
|
41
|
+
|
|
42
|
+
✅ **正确做法**:
|
|
43
|
+
- **按技术栈拆分** - 前端、后端、数据库通常是独立系统
|
|
44
|
+
- **按部署单元拆分** - 可以独立部署的部分应该是独立系统
|
|
45
|
+
- **按职责拆分** - 业务逻辑、数据处理、外部集成应该分离
|
|
46
|
+
- **按变化频率拆分** - 变化频繁和稳定的部分应该分离
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## 🎯 系统识别框架:6个维度
|
|
51
|
+
|
|
52
|
+
使用以下6个维度识别项目中的系统:
|
|
53
|
+
|
|
54
|
+
### 1. 用户接触点 (User Touchpoints)
|
|
55
|
+
**问题**: "用户如何与系统交互?"
|
|
56
|
+
|
|
57
|
+
**常见系统**:
|
|
58
|
+
- Web前端 (frontend-system)
|
|
59
|
+
- 移动端 (mobile-system)
|
|
60
|
+
- CLI工具 (cli-system)
|
|
61
|
+
- API网关 (api-gateway)
|
|
62
|
+
|
|
63
|
+
**示例**:
|
|
64
|
+
```
|
|
65
|
+
如果项目有:
|
|
66
|
+
- React Web应用 → Web Frontend System
|
|
67
|
+
- React Native移动端 → Mobile System
|
|
68
|
+
→ 识别为2个系统(不同技术栈和部署)
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
### 2. 数据存储 (Data Storage)
|
|
74
|
+
**问题**: "数据存储在哪里?如何组织?"
|
|
75
|
+
|
|
76
|
+
**常见系统**:
|
|
77
|
+
- 主数据库 (database-system)
|
|
78
|
+
- 缓存层 (cache-system)
|
|
79
|
+
- 对象存储 (storage-system)
|
|
80
|
+
- 搜索引擎 (search-system)
|
|
81
|
+
|
|
82
|
+
**示例**:
|
|
83
|
+
```
|
|
84
|
+
如果项目有:
|
|
85
|
+
- PostgreSQL主库
|
|
86
|
+
- Redis缓存
|
|
87
|
+
- S3对象存储
|
|
88
|
+
→ 可以识别为Database System(包含PostgreSQL+Redis)
|
|
89
|
+
→ 对象存储通常是外部服务,不算独立系统
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
### 3. 核心业务逻辑 (Business Logic)
|
|
95
|
+
**问题**: "核心业务处理在哪里发生?"
|
|
96
|
+
|
|
97
|
+
**常见系统**:
|
|
98
|
+
- 后端API (backend-api-system)
|
|
99
|
+
- 多智能体系统 (agent-system)
|
|
100
|
+
- 数据处理管道 (pipeline-system)
|
|
101
|
+
- 批处理任务 (batch-system)
|
|
102
|
+
|
|
103
|
+
**示例**:
|
|
104
|
+
```
|
|
105
|
+
如果项目有:
|
|
106
|
+
- FastAPI后端处理业务逻辑
|
|
107
|
+
- LangGraph多智能体系统
|
|
108
|
+
→ 识别为2个系统(职责不同)
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
### 4. 外部集成 (External Integrations)
|
|
114
|
+
**问题**: "需要与哪些外部系统集成?"
|
|
115
|
+
|
|
116
|
+
**常见系统**:
|
|
117
|
+
- 认证服务 (auth-integration)
|
|
118
|
+
- 支付系统 (payment-integration)
|
|
119
|
+
- 通知系统 (notification-system)
|
|
120
|
+
- LLM API调用 (llm-integration)
|
|
121
|
+
|
|
122
|
+
**示例**:
|
|
123
|
+
```
|
|
124
|
+
如果项目需要:
|
|
125
|
+
- OAuth第三方登录
|
|
126
|
+
- Stripe支付
|
|
127
|
+
→ 通常作为Backend System的一部分,不单独拆分
|
|
128
|
+
→ 除非集成逻辑非常复杂
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
### 5. 部署单元 (Deployment Units)
|
|
134
|
+
**问题**: "哪些部分可以独立部署?"
|
|
135
|
+
|
|
136
|
+
**常见系统**:
|
|
137
|
+
- 前端静态资源 (部署到CDN)
|
|
138
|
+
- 后端服务 (部署到容器)
|
|
139
|
+
- Worker进程 (部署到队列处理器)
|
|
140
|
+
|
|
141
|
+
**示例**:
|
|
142
|
+
```
|
|
143
|
+
如果部署架构是:
|
|
144
|
+
- 前端 → Vercel
|
|
145
|
+
- 后端 → AWS ECS
|
|
146
|
+
- Worker → Celery
|
|
147
|
+
→ 3个独立部署单元 = 3个潜在系统
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
|
|
152
|
+
### 6. 技术栈 (Technology Stack)
|
|
153
|
+
**问题**: "不同部分使用的技术栈是什么?"
|
|
154
|
+
|
|
155
|
+
**常见系统**:
|
|
156
|
+
- React前端
|
|
157
|
+
- Python后端
|
|
158
|
+
- PostgreSQL数据库
|
|
159
|
+
- Redis缓存
|
|
160
|
+
|
|
161
|
+
**示例**:
|
|
162
|
+
```
|
|
163
|
+
如果技术栈包含:
|
|
164
|
+
- React + Vite
|
|
165
|
+
- Python + FastAPI
|
|
166
|
+
- PostgreSQL
|
|
167
|
+
→ 至少3个系统(技术栈完全不同)
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
---
|
|
171
|
+
|
|
172
|
+
## 📋 输出格式:Architecture Overview 模板
|
|
173
|
+
|
|
174
|
+
使用以下结构产出 `genesis/v{N}/02_ARCHITECTURE_OVERVIEW.md`:
|
|
175
|
+
|
|
176
|
+
```markdown
|
|
177
|
+
# 系统架构总览 (Architecture Overview)
|
|
178
|
+
|
|
179
|
+
**项目**: [Project Name]
|
|
180
|
+
**版本**: 1.0
|
|
181
|
+
**日期**: [YYYY-MM-DD]
|
|
182
|
+
|
|
183
|
+
---
|
|
184
|
+
|
|
185
|
+
## 1. 系统上下文 (System Context)
|
|
186
|
+
|
|
187
|
+
### 1.1 C4 Level 1 - 系统上下文图
|
|
188
|
+
|
|
189
|
+
[使用Mermaid绘制系统与用户、外部系统的交互]
|
|
190
|
+
|
|
191
|
+
\`\`\`mermaid
|
|
192
|
+
graph TD
|
|
193
|
+
User[用户] -->|HTTP| WebApp[Web应用]
|
|
194
|
+
WebApp -->|API| Backend[后端服务]
|
|
195
|
+
Backend -->|Query| DB[(数据库)]
|
|
196
|
+
Backend -->|Call| LLM[LLM API]
|
|
197
|
+
\`\`\`
|
|
198
|
+
|
|
199
|
+
### 1.2 关键用户 (Key Users)
|
|
200
|
+
- **终端用户**: 使用Web界面的用户
|
|
201
|
+
- **管理员**: 管理系统配置的用户
|
|
202
|
+
- ...
|
|
203
|
+
|
|
204
|
+
### 1.3 外部系统 (External Systems)
|
|
205
|
+
- **LLM API**: OpenAI / Anthropic
|
|
206
|
+
- **认证服务**: Auth0 / OAuth
|
|
207
|
+
- ...
|
|
208
|
+
|
|
209
|
+
---
|
|
210
|
+
|
|
211
|
+
## 2. 系统清单 (System Inventory)
|
|
212
|
+
|
|
213
|
+
### System 1: Frontend UX System
|
|
214
|
+
**系统ID**: `frontend-system`
|
|
215
|
+
|
|
216
|
+
**职责 (Responsibility)**:
|
|
217
|
+
- 用户界面展示与交互
|
|
218
|
+
- API调用封装
|
|
219
|
+
- 客户端状态管理
|
|
220
|
+
|
|
221
|
+
**边界 (Boundary)**:
|
|
222
|
+
- **输入**: 用户操作(点击、输入)
|
|
223
|
+
- **输出**: HTTP API请求
|
|
224
|
+
- **依赖**: backend-api-system
|
|
225
|
+
|
|
226
|
+
**关联需求**: [REQ-001] 用户登录, [REQ-002] Dashboard展示
|
|
227
|
+
|
|
228
|
+
**技术栈**:
|
|
229
|
+
- Framework: React 18
|
|
230
|
+
- Build Tool: Vite
|
|
231
|
+
- Styling: TailwindCSS
|
|
232
|
+
- State: Context API / Zustand
|
|
233
|
+
|
|
234
|
+
**设计文档**: `04_SYSTEM_DESIGN/frontend-system.md` (待创建)
|
|
235
|
+
|
|
236
|
+
---
|
|
237
|
+
|
|
238
|
+
### System 2: Backend API System
|
|
239
|
+
**系统ID**: `backend-api-system`
|
|
240
|
+
|
|
241
|
+
**职责 (Responsibility)**:
|
|
242
|
+
- REST API服务
|
|
243
|
+
- 业务逻辑处理
|
|
244
|
+
- 数据库交互
|
|
245
|
+
|
|
246
|
+
**边界 (Boundary)**:
|
|
247
|
+
- **输入**: HTTP请求 (JSON)
|
|
248
|
+
- **输出**: HTTP响应 (JSON)
|
|
249
|
+
- **依赖**: database-system, agent-system
|
|
250
|
+
|
|
251
|
+
**关联需求**: [REQ-001] 用户登录, [REQ-003] 数据查询
|
|
252
|
+
|
|
253
|
+
**技术栈**:
|
|
254
|
+
- Framework: FastAPI
|
|
255
|
+
- Language: Python 3.11
|
|
256
|
+
- ORM: SQLAlchemy
|
|
257
|
+
- Auth: JWT
|
|
258
|
+
|
|
259
|
+
**设计文档**: `04_SYSTEM_DESIGN/backend-api-system.md` (待创建)
|
|
260
|
+
|
|
261
|
+
---
|
|
262
|
+
|
|
263
|
+
### System 3: Database System
|
|
264
|
+
**系统ID**: `database-system`
|
|
265
|
+
|
|
266
|
+
**职责 (Responsibility)**:
|
|
267
|
+
- 数据持久化
|
|
268
|
+
- 数据查询与索引
|
|
269
|
+
- 数据备份与恢复
|
|
270
|
+
|
|
271
|
+
**边界 (Boundary)**:
|
|
272
|
+
- **输入**: SQL查询
|
|
273
|
+
- **输出**: 查询结果
|
|
274
|
+
- **依赖**: 无(基础设施)
|
|
275
|
+
|
|
276
|
+
**关联需求**: 所有需要数据存储的需求
|
|
277
|
+
|
|
278
|
+
**技术栈**:
|
|
279
|
+
- Database: PostgreSQL 15
|
|
280
|
+
- Cache: Redis 7
|
|
281
|
+
- ORM: SQLAlchemy
|
|
282
|
+
|
|
283
|
+
**设计文档**: `04_SYSTEM_DESIGN/database-system.md` (待创建)
|
|
284
|
+
|
|
285
|
+
---
|
|
286
|
+
|
|
287
|
+
[继续列出其他系统...]
|
|
288
|
+
|
|
289
|
+
---
|
|
290
|
+
|
|
291
|
+
## 3. 系统边界矩阵 (System Boundary Matrix)
|
|
292
|
+
|
|
293
|
+
| 系统 | 输入 | 输出 | 依赖系统 | 被依赖系统 | 关联需求 |
|
|
294
|
+
|------|------|------|---------|----------|---------|
|
|
295
|
+
| Frontend | 用户操作 | HTTP请求 | Backend API | - | [REQ-001], [REQ-002] |
|
|
296
|
+
| Backend API | HTTP请求 | JSON响应 | Database, Agent | Frontend | [REQ-001], [REQ-003] |
|
|
297
|
+
| Database | SQL查询 | 查询结果 | - | Backend API, Agent | All |
|
|
298
|
+
| Agent System | 任务请求 | 执行结果 | Database, LLM API | Backend API | [REQ-005] |
|
|
299
|
+
|
|
300
|
+
---
|
|
301
|
+
|
|
302
|
+
## 4. 系统依赖图 (System Dependency Graph)
|
|
303
|
+
|
|
304
|
+
\`\`\`mermaid
|
|
305
|
+
graph TD
|
|
306
|
+
Frontend[Frontend System] -->|API Call| Backend[Backend API System]
|
|
307
|
+
Backend -->|Query| DB[Database System]
|
|
308
|
+
Backend -->|Invoke| Agent[Agent System]
|
|
309
|
+
Agent -->|Query| DB
|
|
310
|
+
Agent -->|Call| LLM[LLM API - External]
|
|
311
|
+
|
|
312
|
+
style Frontend fill:#e1f5ff
|
|
313
|
+
style Backend fill:#fff4e1
|
|
314
|
+
style DB fill:#e1ffe1
|
|
315
|
+
style Agent fill:#ffe1f5
|
|
316
|
+
\`\`\`
|
|
317
|
+
|
|
318
|
+
**依赖关系说明**:
|
|
319
|
+
- Frontend依赖Backend(前后端分离架构)
|
|
320
|
+
- Backend是核心枢纽,协调Database和Agent
|
|
321
|
+
- Agent独立完成推理任务,但需要Database支持
|
|
322
|
+
|
|
323
|
+
---
|
|
324
|
+
|
|
325
|
+
## 5. 技术栈总览 (Technology Stack Overview)
|
|
326
|
+
|
|
327
|
+
| Layer | Technology | Used By |
|
|
328
|
+
|-------|-----------|---------|
|
|
329
|
+
| **Frontend** | React, Vite, TailwindCSS | Frontend System |
|
|
330
|
+
| **Backend** | Python, FastAPI, SQLAlchemy | Backend API System |
|
|
331
|
+
| **Database** | PostgreSQL, Redis | Database System |
|
|
332
|
+
| **Agent** | LangGraph, OpenAI | Agent System |
|
|
333
|
+
| **Infrastructure** | Docker, Kubernetes | All Systems |
|
|
334
|
+
|
|
335
|
+
---
|
|
336
|
+
|
|
337
|
+
## 6. 拆分原则与理由 (Decomposition Rationale)
|
|
338
|
+
|
|
339
|
+
### 为什么拆分为这些系统?
|
|
340
|
+
|
|
341
|
+
**技术栈维度**:
|
|
342
|
+
- Frontend (React) vs Backend (Python) → 技术栈完全不同,必须分离
|
|
343
|
+
|
|
344
|
+
**部署维度**:
|
|
345
|
+
- Frontend (静态部署CDN) vs Backend (容器部署) → 部署方式不同
|
|
346
|
+
|
|
347
|
+
**职责维度**:
|
|
348
|
+
- Backend API (业务逻辑) vs Agent (推理逻辑) → 职责独立,可并行开发
|
|
349
|
+
|
|
350
|
+
**变化频率**:
|
|
351
|
+
- Frontend (UI变化频繁) vs Database Schema (相对稳定) → 分离便于独立演进
|
|
352
|
+
|
|
353
|
+
### 为什么不进一步拆分?
|
|
354
|
+
|
|
355
|
+
**Frontend为什么不拆分为多个系统?**
|
|
356
|
+
- 虽然有多个页面,但共享状态和组件,拆分会增加复杂度
|
|
357
|
+
|
|
358
|
+
**Backend为什么不拆成微服务?**
|
|
359
|
+
- 当前规模不需要,Modular Monolith足够
|
|
360
|
+
- 可以通过模块化代码结构实现关注点分离
|
|
361
|
+
|
|
362
|
+
---
|
|
363
|
+
|
|
364
|
+
## 7. 系统复杂度评估 (Complexity Assessment)
|
|
365
|
+
|
|
366
|
+
**系统数量**: 4个系统
|
|
367
|
+
|
|
368
|
+
**评估**:
|
|
369
|
+
- ✅ 数量合理 (< 10)
|
|
370
|
+
- ✅ 边界清晰
|
|
371
|
+
- ✅ 依赖关系简单(无循环依赖)
|
|
372
|
+
|
|
373
|
+
**潜在风险**:
|
|
374
|
+
- Backend API可能成为瓶颈(协调多个系统)
|
|
375
|
+
- 未来可能需要拆分Backend(当代码量 > 50K行时)
|
|
376
|
+
|
|
377
|
+
---
|
|
378
|
+
|
|
379
|
+
## 8. 下一步行动 (Next Steps)
|
|
380
|
+
|
|
381
|
+
### 为每个系统设计详细文档
|
|
382
|
+
|
|
383
|
+
运行以下命令为每个系统创建设计文档:
|
|
384
|
+
|
|
385
|
+
\`\`\`bash
|
|
386
|
+
/design-system frontend-system
|
|
387
|
+
/design-system backend-api-system
|
|
388
|
+
/design-system database-system
|
|
389
|
+
/design-system agent-system
|
|
390
|
+
\`\`\`
|
|
391
|
+
|
|
392
|
+
### 所有系统设计完成后
|
|
393
|
+
|
|
394
|
+
运行任务拆解:
|
|
395
|
+
\`\`\`bash
|
|
396
|
+
/blueprint
|
|
397
|
+
\`\`\`
|
|
398
|
+
```
|
|
399
|
+
|
|
400
|
+
---
|
|
401
|
+
|
|
402
|
+
## 🛡️ 拆解守则
|
|
403
|
+
|
|
404
|
+
### 守则1: 不要过度拆分
|
|
405
|
+
**规则**: 系统数量通常 < 10个。
|
|
406
|
+
|
|
407
|
+
**为什么?** 过度拆分增加通信成本和复杂度。
|
|
408
|
+
|
|
409
|
+
**检查问题**:
|
|
410
|
+
- "这个系统是否可以合并到另一个系统?"
|
|
411
|
+
- "拆分是否真正带来价值(独立部署、技术栈差异)?"
|
|
412
|
+
|
|
413
|
+
**示例**:
|
|
414
|
+
```
|
|
415
|
+
❌ 错误: 把每个API端点拆成独立系统
|
|
416
|
+
✅ 正确: 所有API端点属于Backend API System
|
|
417
|
+
```
|
|
418
|
+
|
|
419
|
+
---
|
|
420
|
+
|
|
421
|
+
### 守则2: 不要过度聚合
|
|
422
|
+
**规则**: 前端、后端、数据库通常是独立系统。
|
|
423
|
+
|
|
424
|
+
**为什么?** 技术栈和部署方式不同,应该分离。
|
|
425
|
+
|
|
426
|
+
**检查问题**:
|
|
427
|
+
- "这两个部分的技术栈是否完全不同?"
|
|
428
|
+
- "它们是否在不同时间、由不同团队部署?"
|
|
429
|
+
|
|
430
|
+
**示例**:
|
|
431
|
+
```
|
|
432
|
+
❌ 错误: React前端和Python后端合并为"Web System"
|
|
433
|
+
✅ 正确: 拆分为Frontend System和Backend System
|
|
434
|
+
```
|
|
435
|
+
|
|
436
|
+
---
|
|
437
|
+
|
|
438
|
+
### 守则3: 边界必须清晰
|
|
439
|
+
**规则**: 每个系统的输入输出必须明确定义。
|
|
440
|
+
|
|
441
|
+
**为什么?** 边界模糊会导致职责重叠和依赖混乱。
|
|
442
|
+
|
|
443
|
+
**检查问题**:
|
|
444
|
+
- "这个系统接收什么输入?"
|
|
445
|
+
- "这个系统产出什么输出?"
|
|
446
|
+
- "输入输出的数据格式是什么?"
|
|
447
|
+
|
|
448
|
+
**示例**:
|
|
449
|
+
```
|
|
450
|
+
✅ 好的边界定义:
|
|
451
|
+
Frontend System:
|
|
452
|
+
- 输入: 用户操作 (MouseEvent, KeyboardEvent)
|
|
453
|
+
- 输出: HTTP请求 (JSON格式的API调用)
|
|
454
|
+
|
|
455
|
+
❌ 模糊的边界:
|
|
456
|
+
Frontend System:
|
|
457
|
+
- 输入: 用户的东西
|
|
458
|
+
- 输出: 数据
|
|
459
|
+
```
|
|
460
|
+
|
|
461
|
+
---
|
|
462
|
+
|
|
463
|
+
### 守则4: 使用C4模型可视化
|
|
464
|
+
**规则**: 必须使用Mermaid绘制系统上下文图和依赖图。
|
|
465
|
+
|
|
466
|
+
**为什么?** 一图胜千言,可视化帮助理解。
|
|
467
|
+
|
|
468
|
+
**Mermaid示例**:
|
|
469
|
+
```mermaid
|
|
470
|
+
graph TD
|
|
471
|
+
User[用户] -->|使用| Frontend[Frontend System]
|
|
472
|
+
Frontend -->|API| Backend[Backend System]
|
|
473
|
+
Backend -->|数据| DB[(Database System)]
|
|
474
|
+
```
|
|
475
|
+
|
|
476
|
+
---
|
|
477
|
+
|
|
478
|
+
## 🧰 工具箱
|
|
479
|
+
|
|
480
|
+
### 工具1: 系统识别Checklist
|
|
481
|
+
在拆解系统前,使用此Checklist:
|
|
482
|
+
|
|
483
|
+
- [ ] 识别所有用户接触点(Web、移动、CLI)
|
|
484
|
+
- [ ] 识别所有数据存储(数据库、缓存、对象存储)
|
|
485
|
+
- [ ] 识别核心业务逻辑位置(后端、Agent、批处理)
|
|
486
|
+
- [ ] 识别外部集成(支付、认证、LLM)
|
|
487
|
+
- [ ] 识别部署单元(前端静态、后端容器、Worker)
|
|
488
|
+
- [ ] 识别技术栈差异(React、Python、PostgreSQL)
|
|
489
|
+
|
|
490
|
+
---
|
|
491
|
+
|
|
492
|
+
### 工具2: Architecture Overview模板
|
|
493
|
+
- **路径**: 参考上面的"输出格式"章节
|
|
494
|
+
- **包含**: 系统清单、边界矩阵、依赖图
|
|
495
|
+
|
|
496
|
+
---
|
|
497
|
+
|
|
498
|
+
### 工具3: Mermaid图表
|
|
499
|
+
**系统上下文图** (C4 Level 1):
|
|
500
|
+
```mermaid
|
|
501
|
+
graph TD
|
|
502
|
+
User -->|使用| System
|
|
503
|
+
System -->|调用| External
|
|
504
|
+
```
|
|
505
|
+
|
|
506
|
+
**系统依赖图**:
|
|
507
|
+
```mermaid
|
|
508
|
+
graph LR
|
|
509
|
+
A[System A] --> B[System B]
|
|
510
|
+
B --> C[System C]
|
|
511
|
+
```
|
|
512
|
+
|
|
513
|
+
---
|
|
514
|
+
|
|
515
|
+
## 💡 常见场景与模式
|
|
516
|
+
|
|
517
|
+
### 场景1: 简单的Web应用
|
|
518
|
+
**特征**: 前端 + 后端 + 数据库
|
|
519
|
+
|
|
520
|
+
**推荐拆分**:
|
|
521
|
+
- Frontend System (React)
|
|
522
|
+
- Backend API System (FastAPI)
|
|
523
|
+
- Database System (PostgreSQL)
|
|
524
|
+
|
|
525
|
+
**总计**: 3个系统
|
|
526
|
+
|
|
527
|
+
---
|
|
528
|
+
|
|
529
|
+
### 场景2: 带AI功能的Web应用
|
|
530
|
+
**特征**: 前端 + 后端 + 数据库 + AI Agent
|
|
531
|
+
|
|
532
|
+
**推荐拆分**:
|
|
533
|
+
- Frontend System
|
|
534
|
+
- Backend API System
|
|
535
|
+
- Agent System (LangGraph)
|
|
536
|
+
- Database System
|
|
537
|
+
|
|
538
|
+
**总计**: 4个系统
|
|
539
|
+
|
|
540
|
+
---
|
|
541
|
+
|
|
542
|
+
### 场景3: 复杂的企业应用
|
|
543
|
+
**特征**: 多端 + 后端 + 数据库 + 搜索 + 队列
|
|
544
|
+
|
|
545
|
+
**推荐拆分**:
|
|
546
|
+
- Web Frontend System
|
|
547
|
+
- Mobile System
|
|
548
|
+
- Backend API System
|
|
549
|
+
- Database System
|
|
550
|
+
- Search System (Elasticsearch)
|
|
551
|
+
- Worker System (Celery)
|
|
552
|
+
|
|
553
|
+
**总计**: 6个系统
|
|
554
|
+
|
|
555
|
+
---
|
|
556
|
+
|
|
557
|
+
## 📊 质量检查清单
|
|
558
|
+
|
|
559
|
+
完成Architecture Overview后,使用此清单自检:
|
|
560
|
+
|
|
561
|
+
### 系统数量
|
|
562
|
+
- [ ] 系统数量 3-10 个(通常范围)
|
|
563
|
+
- [ ] 没有过度拆分(每个功能一个系统)
|
|
564
|
+
- [ ] 没有过度聚合(所有功能一个系统)
|
|
565
|
+
|
|
566
|
+
### 系统边界
|
|
567
|
+
- [ ] 每个系统有清晰的输入输出定义
|
|
568
|
+
- [ ] 每个系统的职责明确且单一
|
|
569
|
+
- [ ] 系统之间没有职责重叠
|
|
570
|
+
|
|
571
|
+
### 依赖关系
|
|
572
|
+
- [ ] 无循环依赖
|
|
573
|
+
- [ ] 依赖关系清晰可视化(Mermaid图)
|
|
574
|
+
- [ ] 每个系统的依赖 < 5个(避免过度耦合)
|
|
575
|
+
|
|
576
|
+
### 文档完整性
|
|
577
|
+
- [ ] 有系统上下文图 (C4 Level 1)
|
|
578
|
+
- [ ] 每个系统有详细的清单条目
|
|
579
|
+
- [ ] 有系统边界矩阵
|
|
580
|
+
- [ ] 有系统依赖图
|
|
581
|
+
- [ ] 有拆分原则与理由说明
|
|
582
|
+
|
|
583
|
+
---
|
|
584
|
+
|
|
585
|
+
## 🚀 快速上手示例
|
|
586
|
+
|
|
587
|
+
**任务**: 为一个Todo应用拆解系统
|
|
588
|
+
|
|
589
|
+
**Step 1: 应用6维度框架**
|
|
590
|
+
- 用户接触点: Web界面
|
|
591
|
+
- 数据存储: PostgreSQL
|
|
592
|
+
- 业务逻辑: FastAPI后端
|
|
593
|
+
- 外部集成: 无
|
|
594
|
+
- 部署单元: 前端CDN, 后端容器
|
|
595
|
+
- 技术栈: React, Python, PostgreSQL
|
|
596
|
+
|
|
597
|
+
**Step 2: 识别系统**
|
|
598
|
+
- Frontend System (React)
|
|
599
|
+
- Backend API System (FastAPI)
|
|
600
|
+
- Database System (PostgreSQL)
|
|
601
|
+
|
|
602
|
+
**Step 3: 定义边界**
|
|
603
|
+
- Frontend: 输入用户操作 → 输出API请求
|
|
604
|
+
- Backend: 输入HTTP请求 → 输出JSON响应
|
|
605
|
+
- Database: 输入SQL查询 → 输出数据
|
|
606
|
+
|
|
607
|
+
**Step 4: 绘制依赖图**
|
|
608
|
+
```
|
|
609
|
+
Frontend → Backend → Database
|
|
610
|
+
```
|
|
611
|
+
|
|
612
|
+
**Step 5: 产出Architecture Overview**
|
|
613
|
+
使用模板填充内容 → 保存到 `genesis/v{N}/02_ARCHITECTURE_OVERVIEW.md`
|
|
614
|
+
|
|
615
|
+
---
|
|
616
|
+
|
|
617
|
+
**记住**: 好的系统拆解是平衡的艺术。
|
|
618
|
+
不要过度拆分(微服务陷阱),也不要过度聚合(大泥球)。
|
|
619
|
+
|
|
620
|
+
Happy Architecting! 🏗️
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# Request for Comments (RFC) / Technical Spec
|
|
2
|
+
|
|
3
|
+
**PRD Reference**: [Link to PRD]
|
|
4
|
+
**Feature**: [Feature Name]
|
|
5
|
+
**Status**: Draft
|
|
6
|
+
|
|
7
|
+
## 1. High-Level Design
|
|
8
|
+
### Architecture Diagram (Mermaid)
|
|
9
|
+
<!-- Use Mermaid to show data flow -->
|
|
10
|
+
```mermaid
|
|
11
|
+
graph TD
|
|
12
|
+
A[User] -->|Action| B(Component)
|
|
13
|
+
B -->|API Call| C{Service}
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
### Component Hierarchy
|
|
17
|
+
* `ParentComponent`
|
|
18
|
+
* `ChildA` (Props: x, y)
|
|
19
|
+
* `ChildB` (State: z)
|
|
20
|
+
|
|
21
|
+
## 2. API Contract (The "Signature")
|
|
22
|
+
<!-- CRITICAL: Define exact signatures. No hallucination allowed. -->
|
|
23
|
+
|
|
24
|
+
### Endpoints
|
|
25
|
+
* `POST /api/v1/resource`
|
|
26
|
+
* **Request Body**:
|
|
27
|
+
```typescript
|
|
28
|
+
interface CreateRequest {
|
|
29
|
+
field: string; // required
|
|
30
|
+
}
|
|
31
|
+
```
|
|
32
|
+
* **Response**: `200 OK` (Schema below)
|
|
33
|
+
|
|
34
|
+
### Function Interfaces
|
|
35
|
+
<!-- Signatures for key internal functions -->
|
|
36
|
+
```typescript
|
|
37
|
+
function calculateSomething(input: InputType): ResultType
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## 3. Data Model Strategy
|
|
41
|
+
### Database Schema Changes
|
|
42
|
+
```sql
|
|
43
|
+
-- DDL goes here
|
|
44
|
+
CREATE TABLE ...
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### State Management
|
|
48
|
+
* Global State: [e.g. Redux/Zustand slice]
|
|
49
|
+
* Local State: [e.g. React.useState]
|
|
50
|
+
|
|
51
|
+
## 4. Implementation Steps
|
|
52
|
+
<!-- Atomic, ordered steps -->
|
|
53
|
+
1. [Step 1: DB Migration]
|
|
54
|
+
2. [Step 2: API Backend]
|
|
55
|
+
3. [Step 3: Frontend UI]
|
|
56
|
+
|
|
57
|
+
## 5. Security & Risk
|
|
58
|
+
* **Auth**: [How is this secured?]
|
|
59
|
+
* **Validation**: [Input validation library?]
|