@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.
Files changed (43) hide show
  1. package/README.md +96 -0
  2. package/bin/cli.js +76 -0
  3. package/lib/copy.js +38 -0
  4. package/lib/index.js +8 -0
  5. package/lib/init.js +139 -0
  6. package/lib/manifest.js +53 -0
  7. package/lib/output.js +74 -0
  8. package/lib/update.js +85 -0
  9. package/package.json +36 -0
  10. package/templates/.agent/rules/agents.md +90 -0
  11. package/templates/.agent/skills/build-inspector/SKILL.md +83 -0
  12. package/templates/.agent/skills/complexity-guard/SKILL.md +71 -0
  13. package/templates/.agent/skills/complexity-guard/references/anti_patterns.md +21 -0
  14. package/templates/.agent/skills/concept-modeler/SKILL.md +112 -0
  15. package/templates/.agent/skills/concept-modeler/prompts/GLOSSARY_PROMPT.md +40 -0
  16. package/templates/.agent/skills/concept-modeler/references/ENTITY_EXTRACTION_PROMPT.md +299 -0
  17. package/templates/.agent/skills/concept-modeler/scripts/glossary_gen.py +66 -0
  18. package/templates/.agent/skills/git-forensics/SKILL.md +74 -0
  19. package/templates/.agent/skills/git-forensics/references/ANALYSIS_METHODOLOGY.md +193 -0
  20. package/templates/.agent/skills/git-forensics/scripts/git_forensics.py +615 -0
  21. package/templates/.agent/skills/git-forensics/scripts/git_hotspots.py +118 -0
  22. package/templates/.agent/skills/report-template/SKILL.md +88 -0
  23. package/templates/.agent/skills/report-template/references/REPORT_TEMPLATE.md +100 -0
  24. package/templates/.agent/skills/runtime-inspector/SKILL.md +93 -0
  25. package/templates/.agent/skills/spec-writer/SKILL.md +58 -0
  26. package/templates/.agent/skills/spec-writer/references/prd_template.md +174 -0
  27. package/templates/.agent/skills/system-architect/SKILL.md +620 -0
  28. package/templates/.agent/skills/system-architect/references/rfc_template.md +59 -0
  29. package/templates/.agent/skills/system-designer/SKILL.md +439 -0
  30. package/templates/.agent/skills/system-designer/references/system-design-template.md +533 -0
  31. package/templates/.agent/skills/task-planner/SKILL.md +474 -0
  32. package/templates/.agent/skills/task-planner/references/TASK_TEMPLATE.md +133 -0
  33. package/templates/.agent/skills/tech-evaluator/SKILL.md +135 -0
  34. package/templates/.agent/skills/tech-evaluator/references/ADR_TEMPLATE.md +68 -0
  35. package/templates/.agent/workflows/blueprint.md +185 -0
  36. package/templates/.agent/workflows/challenge.md +467 -0
  37. package/templates/.agent/workflows/change.md +294 -0
  38. package/templates/.agent/workflows/craft.md +626 -0
  39. package/templates/.agent/workflows/design-system.md +497 -0
  40. package/templates/.agent/workflows/explore.md +307 -0
  41. package/templates/.agent/workflows/forge.md +354 -0
  42. package/templates/.agent/workflows/genesis.md +265 -0
  43. package/templates/.agent/workflows/scout.md +130 -0
@@ -0,0 +1,533 @@
1
+ # {System Name} 系统设计文档
2
+
3
+ **System ID**: {system-id} (如: frontend-system, backend-api-system)
4
+ **Project**: [Project Name]
5
+ **Version**: 1.0
6
+ **Status**: Draft | Review | Approved
7
+ **Author**: [Author Name or Agent]
8
+ **Date**: [YYYY-MM-DD]
9
+
10
+ ---
11
+
12
+ ## 1. 概览 (Overview)
13
+
14
+ ### 1.1 System Purpose (系统目的)
15
+ [这个系统要解决什么问题?为什么需要它?]
16
+
17
+ ### 1.2 System Boundary (系统边界)
18
+ <!-- ⚠️ CRITICAL: 明确边界,避免职责不清 -->
19
+
20
+ - **输入 (Input)**: [系统接收什么?来自哪里?]
21
+ - **输出 (Output)**: [系统产出什么?给谁?]
22
+ - **依赖系统 (Dependencies)**: [依赖哪些其他系统?]
23
+ - **被依赖系统 (Dependents)**: [哪些系统依赖本系统?]
24
+
25
+ ### 1.3 System Responsibilities (系统职责)
26
+ <!-- 明确"负责什么"和"不负责什么" -->
27
+
28
+ **负责**:
29
+ - [职责1]
30
+ - [职责2]
31
+
32
+ **不负责**:
33
+ - [非职责1 - 由XX系统负责]
34
+ - [非职责2 - 超出范围]
35
+
36
+ ---
37
+
38
+ ## 2. 目标与非目标 (Goals & Non-Goals)
39
+
40
+ ### 2.1 Goals
41
+ <!-- 从PRD继承需求,转化为该系统的技术目标 -->
42
+
43
+ - **[G1]**: [该系统的具体目标,如: API响应时间p95 < 200ms]
44
+ - **[G2]**: [可衡量的性能/质量目标]
45
+
46
+ ### 2.2 Non-Goals
47
+ - **[NG1]**: [不在本系统范围内的内容]
48
+
49
+ ---
50
+
51
+ ## 3. 背景与上下文 (Background & Context)
52
+
53
+ ### 3.1 Why This System? (为什么需要这个系统?)
54
+ [问题背景、业务驱动、关联的PRD需求]
55
+
56
+ **关联PRD需求**: [REQ-001], [REQ-002], ...
57
+
58
+ ### 3.2 Current State (现状分析)
59
+ [当前是怎么做的?有什么问题?]
60
+
61
+ ### 3.3 Constraints (约束条件)
62
+ <!-- 从PRD的Constraint Analysis继承 -->
63
+
64
+ - **技术约束**: [必须使用或避免的技术,如: 必须兼容现有Python 3.9环境]
65
+ - **性能约束**: [性能要求,如: 并发1000 req/s]
66
+ - **资源约束**: [团队、时间、预算]
67
+ - **安全约束**: [安全要求,如: 所有数据必须加密传输]
68
+
69
+ ---
70
+
71
+ ## 4. 系统架构 (Architecture)
72
+
73
+ ### 4.1 Architecture Diagram (架构图)
74
+ <!-- ⚠️ CRITICAL: 使用Mermaid或图片展示系统架构 -->
75
+
76
+ ```mermaid
77
+ graph TD
78
+ A[User] -->|HTTP| B[Frontend Component]
79
+ B -->|API Call| C[API Client]
80
+ C -->|REST/GraphQL| D[Backend API]
81
+ D -->|Query| E[Database]
82
+
83
+ style B fill:#e1f5ff
84
+ style D fill:#fff4e1
85
+ style E fill:#e1ffe1
86
+ ```
87
+
88
+ ### 4.2 Core Components (核心组件)
89
+ <!-- 每个组件的职责和技术栈 -->
90
+
91
+ | Component Name | Responsibility | Tech Stack | Notes |
92
+ |---------------|----------------|------------|-------|
93
+ | [Component 1] | [职责描述] | [技术] | [备注] |
94
+ | [Component 2] | [职责描述] | [技术] | [备注] |
95
+
96
+ ### 4.3 Data Flow (数据流)
97
+ <!-- 描述数据如何在组件间流动 -->
98
+
99
+ ```mermaid
100
+ sequenceDiagram
101
+ participant User
102
+ participant Frontend
103
+ participant Backend
104
+ participant Database
105
+
106
+ User->>Frontend: 输入登录信息
107
+ Frontend->>Backend: POST /auth/login
108
+ Backend->>Database: 验证用户
109
+ Database-->>Backend: 用户信息
110
+ Backend-->>Frontend: JWT Token
111
+ Frontend-->>User: 跳转Dashboard
112
+ ```
113
+
114
+ **关键数据流说明**:
115
+ 1. [流程1描述]
116
+ 2. [流程2描述]
117
+
118
+ ---
119
+
120
+ ## 5. 接口设计 (Interface Design)
121
+
122
+ <!-- ⚠️ CRITICAL: 根据系统类型选择合适的小节 -->
123
+
124
+ ### 5.1 API Design (如果是后端系统)
125
+
126
+ #### 5.1.1 POST /auth/login [REQ-001]
127
+ **Purpose**: 用户登录认证
128
+
129
+ **Request**:
130
+ ```json
131
+ {
132
+ "email": "user@example.com",
133
+ "password": "password123"
134
+ }
135
+ ```
136
+
137
+ **Response (Success - 200)**:
138
+ ```json
139
+ {
140
+ "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
141
+ "user": {
142
+ "id": "550e8400-e29b-41d4-a716-446655440000",
143
+ "email": "user@example.com",
144
+ "name": "John Doe"
145
+ }
146
+ }
147
+ ```
148
+
149
+ **Response (Error - 401)**:
150
+ ```json
151
+ {
152
+ "error": {
153
+ "code": "INVALID_CREDENTIALS",
154
+ "message": "Invalid email or password"
155
+ }
156
+ }
157
+ ```
158
+
159
+ **Rate Limit**: 5 requests/minute/IP
160
+ **Authentication**: None (public endpoint)
161
+
162
+ ---
163
+
164
+ ### 5.2 Component Interface (如果是前端系统)
165
+
166
+ #### 5.2.1 LoginForm Component [REQ-001]
167
+
168
+ **Props**:
169
+ ```typescript
170
+ interface LoginFormProps {
171
+ onSuccess: (token: string) => void;
172
+ onError: (error: Error) => void;
173
+ isLoading?: boolean;
174
+ }
175
+ ```
176
+
177
+ **Events**:
178
+ - `onSuccess(token: string)`: 登录成功时触发
179
+ - `onError(error: Error)`: 登录失败时触发
180
+
181
+ **Usage**:
182
+ ```jsx
183
+ <LoginForm
184
+ onSuccess={(token) => saveToken(token)}
185
+ onError={(error) => showError(error.message)}
186
+ />
187
+ ```
188
+
189
+ ---
190
+
191
+ ### 5.3 Message Format (如果是Agent/消息系统)
192
+
193
+ #### 5.3.1 Tool Call Message [REQ-XXX]
194
+
195
+ **Format**:
196
+ ```json
197
+ {
198
+ "tool": "search_code",
199
+ "parameters": {
200
+ "query": "function authenticate",
201
+ "scope": "src/"
202
+ }
203
+ }
204
+ ```
205
+
206
+ **Response**:
207
+ ```json
208
+ {
209
+ "status": "success",
210
+ "results": [...]
211
+ }
212
+ ```
213
+
214
+ ---
215
+
216
+ ## 6. 数据模型 (Data Model)
217
+
218
+ ### 6.1 Data Structures (数据结构)
219
+
220
+ #### User Entity
221
+ ```typescript
222
+ interface User {
223
+ id: string; // UUID v4
224
+ email: string; // Unique, RFC 5322 compliant
225
+ passwordHash: string; // bcrypt hash (rounds=10)
226
+ name: string;
227
+ createdAt: Date;
228
+ updatedAt: Date;
229
+ }
230
+ ```
231
+
232
+ ### 6.2 Database Schema (如适用)
233
+
234
+ #### Users Table
235
+ ```sql
236
+ CREATE TABLE users (
237
+ id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
238
+ email VARCHAR(255) UNIQUE NOT NULL,
239
+ password_hash VARCHAR(255) NOT NULL,
240
+ name VARCHAR(255),
241
+ created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
242
+ updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
243
+ );
244
+
245
+ -- Indexes
246
+ CREATE INDEX idx_users_email ON users(email);
247
+ CREATE INDEX idx_users_created_at ON users(created_at DESC);
248
+ ```
249
+
250
+ ### 6.3 Data Flow Direction (数据流向)
251
+ [数据如何在系统间流动?存储在哪里?]
252
+
253
+ ---
254
+
255
+ ## 7. 技术选型 (Technology Stack)
256
+
257
+ ### 7.1 Core Technologies (核心技术)
258
+ <!-- 从ADR继承,或新增系统级技术决策 -->
259
+
260
+ | Domain | Choice | Rationale |
261
+ |--------|--------|-----------|
262
+ | Framework | FastAPI | 高性能、异步、类型安全、OpenAPI自动生成 |
263
+ | Database | PostgreSQL | ACID、JSON支持、成熟生态、团队熟悉 |
264
+ | Cache | Redis | 高性能、丰富数据结构、持久化选项 |
265
+ | ORM | SQLAlchemy | 类型安全、灵活、异步支持 |
266
+
267
+ ### 7.2 Key Libraries/Dependencies (关键依赖)
268
+ - `pydantic ^2.0`: 数据验证、序列化
269
+ - `jose`: JWT token生成和验证
270
+ - `passlib[bcrypt]`: 密码哈希
271
+ - `asyncpg`: PostgreSQL异步驱动
272
+
273
+ ---
274
+
275
+ ## 8. Trade-offs & Alternatives (权衡与备选方案)
276
+ <!-- ⚠️ CRITICAL: Google Design Docs风格 - 说明为什么选A而不是B -->
277
+
278
+ ### 8.1 Decision 1: 为什么用PostgreSQL而不是MongoDB?
279
+
280
+ **Option A: PostgreSQL (✅ Selected)**
281
+ - ✅ **优点**:
282
+ - ACID保证,强一致性
283
+ - 关系型数据适合我们的用户-权限模型
284
+ - 团队熟悉SQL,学习成本低
285
+ - JSON支持满足灵活性需求
286
+ - ❌ **缺点**:
287
+ - 横向扩展不如NoSQL简单
288
+ - Schema变更需要migration
289
+
290
+ **Option B: MongoDB**
291
+ - ✅ **优点**:
292
+ - 灵活Schema,易于快速迭代
293
+ - 天然横向扩展
294
+ - ❌ **缺点**:
295
+ - 我们需要强一致性(用户认证)
296
+ - 关系查询复杂
297
+ - 团队不熟悉
298
+
299
+ **Decision**: 选择PostgreSQL,因为**数据一致性**比灵活性更重要。未来如果需要扩展,可以考虑读写分离+分片。
300
+
301
+ ---
302
+
303
+ ### 8.2 Decision 2: 认证方式选择
304
+
305
+ **Option A: JWT (✅ Selected)**
306
+ - ✅ 无状态,易于横向扩展
307
+ - ✅ 前后端分离友好
308
+ - ❌ Token无法主动撤销
309
+
310
+ **Option B: Session**
311
+ - ✅ 可撤销
312
+ - ❌ 需要共享Session存储(如Redis)
313
+
314
+ **Decision**: 选择JWT + 黑名单机制(Redis存储被撤销的token ID),兼顾两者优点。
315
+
316
+ ---
317
+
318
+ ## 9. 安全性考虑 (Security Considerations)
319
+
320
+ ### 9.1 Authentication & Authorization (认证授权)
321
+ - **Authentication**: JWT + bcrypt密码哈希(rounds=10)
322
+ - **Authorization**: RBAC (Role-Based Access Control)
323
+
324
+ ### 9.2 Data Encryption (数据加密)
325
+ - **In Transit**: HTTPS/TLS 1.3, 禁用TLS 1.0/1.1
326
+ - **At Rest**: 敏感字段加密(如:密码哈希、支付信息)
327
+
328
+ ### 9.3 Security Risks & Mitigations (安全风险与缓解)
329
+
330
+ | Risk | Severity | Mitigation |
331
+ |------|:--------:|-----------|
332
+ | SQL注入 | 高 | 使用ORM参数化查询,禁止拼接SQL |
333
+ | XSS | 中 | 输入验证、输出转义、CSP头 |
334
+ | CSRF | 中 | CSRF Token(如适用) |
335
+ | 密码暴力破解 | 高 | Rate limiting (5次/分钟/IP) |
336
+ | JWT伪造 | 高 | 使用强密钥(HS256, 256-bit),定期轮换 |
337
+
338
+ ---
339
+
340
+ ## 10. 性能考虑 (Performance Considerations)
341
+
342
+ ### 10.1 Performance Goals (性能目标)
343
+ <!-- 从PRD的Constraints继承 -->
344
+
345
+ - **API响应时间**: p95 < 200ms, p99 < 500ms
346
+ - **并发支持**: 1000 req/s
347
+ - **数据库查询**: < 50ms (p95)
348
+ - **缓存命中率**: > 80% (热点数据)
349
+
350
+ ### 10.2 Optimization Strategies (优化策略)
351
+
352
+ 1. **Caching (缓存)**:
353
+ - Redis缓存用户信息、权限配置
354
+ - TTL: 5分钟(用户信息),10分钟(配置)
355
+ - 缓存失效策略: Write-through
356
+
357
+ 2. **Database Optimization (数据库优化)**:
358
+ - 为高频查询字段建索引 (`email`, `created_at`)
359
+ - 连接池大小: 20 (根据并发量调整)
360
+ - 使用`EXPLAIN ANALYZE`分析慢查询
361
+
362
+ 3. **Async I/O (异步IO)**:
363
+ - FastAPI异步端点
364
+ - asyncpg异步数据库驱动
365
+ - Redis异步客户端 (aioredis)
366
+
367
+ ### 10.3 Performance Monitoring (性能监控)
368
+
369
+ - **工具**: Prometheus + Grafana
370
+ - **关键指标**:
371
+ - Latency (p50, p95, p99)
372
+ - Throughput (req/s)
373
+ - Error Rate (%)
374
+ - Cache Hit Rate (%)
375
+
376
+ ---
377
+
378
+ ## 11. 测试策略 (Testing Strategy)
379
+
380
+ ### 11.1 Unit Testing (单元测试)
381
+ - **Coverage Target**: > 80%
382
+ - **Framework**: pytest + pytest-asyncio
383
+ - **Key Test Areas**:
384
+ - [ ] 用户认证逻辑(密码验证、JWT生成)
385
+ - [ ] 数据验证(Pydantic models)
386
+ - [ ] 业务逻辑(用户CRUD)
387
+
388
+ ### 11.2 Integration Testing (集成测试)
389
+ - **Tool**: pytest + TestClient (FastAPI)
390
+ - **Test Scenarios**:
391
+ - [ ] 端到端登录流程(POST /auth/login → 验证 → 返回Token)
392
+ - [ ] 数据库事务(创建用户 → Rollback on error)
393
+ - [ ] Redis缓存交互
394
+
395
+ ### 11.3 End-to-End Testing (端到端测试) - 可选
396
+ - **Tool**: Playwright / Cypress (如果是前端系统)
397
+ - **Test Scenarios**:
398
+ - [ ] 用户登录完整流程(前端 → 后端 → 数据库)
399
+
400
+ ### 11.4 Performance Testing (性能测试)
401
+ - **Tool**: Locust / k6
402
+ - **Scenarios**:
403
+ - [ ] 1000 并发用户登录
404
+ - [ ] Target: p95 < 200ms
405
+
406
+ ---
407
+
408
+ ## 12. 部署与运维 (Deployment & Operations)
409
+
410
+ ### 12.1 Deployment Process (部署流程)
411
+
412
+ 1. **构建**: `docker build -t backend-api:v1.0 .`
413
+ 2. **推送**: `docker push registry.example.com/backend-api:v1.0`
414
+ 3. **部署**: Kubernetes deployment
415
+ ```yaml
416
+ apiVersion: apps/v1
417
+ kind: Deployment
418
+ metadata:
419
+ name: backend-api
420
+ spec:
421
+ replicas: 3
422
+ selector:
423
+ matchLabels:
424
+ app: backend-api
425
+ template:
426
+ spec:
427
+ containers:
428
+ - name: api
429
+ image: registry.example.com/backend-api:v1.0
430
+ resources:
431
+ requests:
432
+ cpu: "500m"
433
+ memory: "512Mi"
434
+ limits:
435
+ cpu: "1000m"
436
+ memory: "1Gi"
437
+ ```
438
+
439
+ ### 12.2 Monitoring & Alerting (监控告警)
440
+
441
+ **Logging (日志)**:
442
+ - **Format**: Structured JSON logging
443
+ - **Destination**: stdout → Fluentd → Elasticsearch
444
+ - **Log Levels**: INFO (生产), DEBUG (开发)
445
+ - **禁止记录**: 密码、Token、PII
446
+
447
+ **Metrics (指标)**:
448
+ - **Tool**: Prometheus → Grafana
449
+ - **Key Metrics**: Latency, Throughput, Error Rate, Cache Hit Rate
450
+
451
+ **Alerting (告警)**:
452
+ - API错误率 > 5% → Slack通知
453
+ - p95响应时间 > 500ms → Email通知
454
+ - 服务Down → PagerDuty
455
+
456
+ ### 12.3 Observability (可观测性)
457
+
458
+ - **Tracing**: Jaeger / OpenTelemetry (可选)
459
+ - **Health Check**: `/health` 端点
460
+ ```json
461
+ {
462
+ "status": "healthy",
463
+ "database": "connected",
464
+ "redis": "connected",
465
+ "version": "1.0.0"
466
+ }
467
+ ```
468
+
469
+ ---
470
+
471
+ ## 13. 未来考虑 (Future Considerations)
472
+
473
+ ### 13.1 Scalability (扩展性)
474
+ - **Horizontal Scaling**: Kubernetes HPA (Horizontal Pod Autoscaler)
475
+ - Target: CPU > 70% → Scale up
476
+ - **Database Scaling**: 读写分离 + 分片(当用户量 > 100万时)
477
+
478
+ ### 13.2 Tech Debt (技术债)
479
+ - [ ] 迁移到微服务架构(当API端点 > 50个时)
480
+ - [ ] 引入GraphQL(当前端需要灵活查询时)
481
+ - [ ] 数据库分片策略设计
482
+
483
+ ### 13.3 Future Enhancements (待优化项)
484
+ - [ ] 实现OAuth2.0支持第三方登录 [REQ-XXX future]
485
+ - [ ] 添加多因素认证(MFA)[REQ-XXX future]
486
+ - [ ] 用户行为分析(Analytics)
487
+
488
+ ---
489
+
490
+ ## 14. Appendix (附录)
491
+
492
+ ### 14.1 Glossary (术语表)
493
+ - **JWT (JSON Web Token)**: 一种无状态认证方式
494
+ - **RBAC (Role-Based Access Control)**: 基于角色的访问控制
495
+ - **p95**: 95th percentile,95%的请求响应时间小于该值
496
+
497
+ ### 14.2 References (参考资料)
498
+ - [FastAPI Documentation](https://fastapi.tiangolo.com/)
499
+ - [PostgreSQL Best Practices](https://wiki.postgresql.org/wiki/Don%27t_Do_This)
500
+ - [JWT Best Practices](https://tools.ietf.org/html/rfc8725)
501
+ - [Architecture Overview](../02_ARCHITECTURE_OVERVIEW.md)
502
+ - [ADR001: Tech Stack](../03_ADR/ADR001_TECH_STACK.md)
503
+
504
+ ### 14.3 Change Log (变更日志)
505
+
506
+ | Version | Date | Changes | Author |
507
+ |---------|------|---------|--------|
508
+ | 1.0 | 2026-01-08 | 初始版本 | XXX |
509
+
510
+ ---
511
+
512
+ <!-- ⚠️ CRITICAL 使用指南 -->
513
+ <!--
514
+ **系统设计文档撰写原则**:
515
+ 1. **自包含**: 文档应自包含,减少对外部上下文的依赖
516
+ 2. **追溯链**: 通过[REQ-XXX]引用PRD需求,而不是复制内容
517
+ 3. **约束继承**: 从PRD和ADR继承约束和决策
518
+ 4. **Trade-offs说明**: 每个重要技术选型都要说明"为什么选A不选B"
519
+ 5. **可视化**: 使用Mermaid图表,一图胜千言
520
+
521
+ **章节使用指南**:
522
+ - **必需章节**: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11
523
+ - **可选章节**: 12 (部署,小项目可简化), 13 (未来,可简化), 14 (附录)
524
+ - **根据系统类型选择Interface Design小节**:
525
+ - 后端系统 → 5.1 API Design
526
+ - 前端系统 → 5.2 Component Interface
527
+ - Agent系统 → 5.3 Message Format
528
+
529
+ **小项目简化策略**:
530
+ - 可省略: 13 (未来考虑), 14 (附录)
531
+ - 可简化: 8 (Trade-offs, 只保留关键决策), 12 (部署, 简化为部署命令)
532
+ - 但必须保留: 4 (架构), 5 (接口), 6 (数据模型), 11 (测试)
533
+ -->