名称: senior-architect
描述: 当用户提出“设计系统架构”、“评估微服务与单体架构”、“创建架构图”、“分析依赖关系”、“选择数据库”、“规划可扩展性”、“做出技术决策”或“评审系统设计”等需求时,应使用此技能。适用于架构决策记录(ADR)、技术栈评估、系统设计评审、依赖分析,以及生成 Mermaid、PlantUML 或 ASCII 格式的架构图。
用于做出明智技术决策的架构设计与分析工具。
# 从项目生成架构图
python scripts/architecture_diagram_generator.py ./my-project --format mermaid
# 分析依赖关系以发现问题
python scripts/dependency_analyzer.py ./my-project --output json
# 获取架构评估
python scripts/project_architect.py ./my-project --verbose
从项目结构生成多种格式的架构图。
解决问题: “我需要为文档或团队讨论可视化系统架构”
输入: 项目目录路径
输出: 图表代码(Mermaid、PlantUML 或 ASCII)
支持的图表类型:
- component - 显示模块及其关系
- layer - 显示架构层(表示层、业务层、数据层)
- deployment - 显示部署拓扑
用法:
# Mermaid 格式(默认)
python scripts/architecture_diagram_generator.py ./project --format mermaid --type component
# PlantUML 格式
python scripts/architecture_diagram_generator.py ./project --format plantuml --type layer
# ASCII 格式(终端友好)
python scripts/architecture_diagram_generator.py ./project --format ascii
# 保存到文件
python scripts/architecture_diagram_generator.py ./project -o architecture.md
示例输出(Mermaid):
graph TD
A[API 网关] --> B[认证服务]
A --> C[用户服务]
B --> D[(PostgreSQL)]
C --> D
分析项目依赖关系,识别耦合、循环依赖和过时包。
解决问题: “我需要了解依赖树并识别潜在问题”
输入: 项目目录路径
输出: 分析报告(JSON 或人类可读格式)
分析内容:
- 依赖树(直接和传递依赖)
- 模块间的循环依赖
- 耦合度评分(0-100)
- 过时包
支持的包管理器:
- npm/yarn (package.json)
- Python (requirements.txt, pyproject.toml)
- Go (go.mod)
- Rust (Cargo.toml)
用法:
# 人类可读报告
python scripts/dependency_analyzer.py ./project
# JSON 输出,用于 CI/CD 集成
python scripts/dependency_analyzer.py ./project --output json
# 仅检查循环依赖
python scripts/dependency_analyzer.py ./project --check circular
# 详细模式,包含建议
python scripts/dependency_analyzer.py ./project --verbose
示例输出:
依赖分析报告
==========================
总依赖数:47(32 个直接依赖,15 个传递依赖)
耦合度评分:72/100(中等)
发现的问题:
- 循环依赖:auth → user → permissions → auth
- 过时包:lodash 4.17.15 → 4.17.21(安全漏洞)
建议:
1. 提取共享接口以打破循环依赖
2. 更新 lodash 以修复 CVE-2020-8203
分析项目结构,检测架构模式、代码异味和改进机会。
解决问题: “我想了解当前架构并识别需要改进的领域”
输入: 项目目录路径
输出: 架构评估报告
检测内容:
- 架构模式(MVC、分层、六边形、微服务指标)
- 代码组织问题(上帝类、职责混杂)
- 层违规
- 缺失的架构组件
用法:
# 完整评估
python scripts/project_architect.py ./project
# 详细模式,包含具体建议
python scripts/project_architect.py ./project --verbose
# JSON 输出
python scripts/project_architect.py ./project --output json
# 检查特定方面
python scripts/project_architect.py ./project --check layers
示例输出:
架构评估
=======================
检测到的模式:分层架构(置信度:85%)
结构分析:
✓ controllers/ - 检测到表示层
✓ services/ - 检测到业务逻辑层
✓ repositories/ - 检测到数据访问层
⚠ models/ - 混合了领域模型和 DTO
问题:
- 大文件:UserService.ts(1,847 行)- 考虑拆分
- 职责混杂:PaymentController 包含业务逻辑
建议:
1. 将 UserService 拆分为职责更单一的服务
2. 将业务逻辑从控制器移至服务层
3. 分离领域模型与 DTO
适用于为新项目选择数据库或迁移现有数据。
步骤 1:识别数据特征
| 特征 | 指向 SQL | 指向 NoSQL |
|----------------|---------------|-----------------|
| 结构化且有关联关系 | ✓ | |
| 需要 ACID 事务 | ✓ | |
| 灵活/演进式模式 | | ✓ |
| 面向文档的数据 | | ✓ |
| 时序数据 | | ✓(专用数据库) |
步骤 2:评估规模要求
- <100 万条记录,单区域 → PostgreSQL 或 MySQL
- 100 万 - 1 亿条记录,读密集型 → PostgreSQL 配合只读副本
- >1 亿条记录,全球分布 → CockroachDB、Spanner 或 DynamoDB
- 高写入吞吐量(>10K/秒)→ Cassandra 或 ScyllaDB
步骤 3:检查一致性要求
- 需要强一致性 → SQL 或 CockroachDB
- 可接受最终一致性 → DynamoDB、Cassandra、MongoDB
步骤 4:记录决策
创建架构决策记录(ADR),包含:
- 背景与需求
- 考虑的选项
- 决策与理由
- 接受的权衡
快速参考:
PostgreSQL → 大多数应用程序的默认选择
MongoDB → 文档存储,灵活模式
Redis → 缓存、会话、实时功能
DynamoDB → 无服务器、自动扩缩容、AWS 原生
TimescaleDB → 时序数据,提供 SQL 接口
适用于设计新系统或重构现有架构。
步骤 1:评估团队和项目规模
| 团队规模 | 推荐的起点 |
|-----------|---------------------------|
| 1-3 名开发者 | 模块化单体 |
| 4-10 名开发者 | 模块化单体或面向服务架构 |
| 10 名以上开发者 | 考虑微服务 |
步骤 2:评估部署要求
- 可接受单一部署单元 → 单体
- 需要独立扩缩容 → 微服务
- 混合情况(部分服务扩缩容需求不同)→ 混合架构
步骤 3:考虑数据边界
- 可接受共享数据库 → 单体或模块化单体
- 需要严格的数据隔离 → 微服务配合独立数据库
- 适合事件驱动通信 → 事件溯源/CQRS
步骤 4:根据需求匹配模式
| 需求 | 推荐模式 |
|---|---|
| 快速 MVP 开发 | 模块化单体 |
| 团队独立部署 | 微服务 |
| 复杂领域逻辑 | 领域驱动设计(DDD) |
| 读写比例差异大 | CQRS |
| 需要审计追踪 | 事件溯源 |
| 第三方集成 | 六边形架构/端口与适配器 |
详细模式描述请参阅 references/architecture_patterns.md。
选择单体架构当:
- [ ] 团队规模小(<10 名开发者)
- [ ] 领域边界不清晰
- [ ] 快速迭代是优先事项
- [ ] 必须最小化运维复杂度
- [ ] 可接受共享数据库
选择微服务架构当:
- [ ] 团队可以端到端拥有服务
- [ ] 独立部署至关重要
- [ ] 各组件有不同的扩缩容需求
- [ ] 需要技术多样性
- [ ] 领域边界已明确
混合方法:
从模块化单体开始。仅在以下情况提取服务:
1. 某个模块有显著不同的扩缩容需求
2. 某个团队需要独立部署
3. 技术限制要求分离
加载以下文件获取详细信息:
| 文件 | 内容 | 当用户询问时加载 |
|---|---|---|
references/architecture_patterns.md |
9 种架构模式,包含权衡、代码示例和使用时机 | “哪种模式?”、“微服务 vs 单体”、“事件驱动”、“CQRS” |
references/system_design_workflows.md |
6 个系统设计任务的逐步工作流 | “如何设计?”、“容量规划”、“API 设计”、“迁移” |
references/tech_decision_guide.md |
技术选择的决策矩阵 | “哪个数据库?”、“哪个框架?”、“哪个云平台?”、“哪个缓存?” |
语言: TypeScript、JavaScript、Python、Go、Swift、Kotlin、Rust
前端: React、Next.js、Vue、Angular、React Native、Flutter
后端: Node.js、Express、FastAPI、Go、GraphQL、REST
数据库: PostgreSQL、MySQL、MongoDB、Redis、DynamoDB、Cassandra
基础设施: Docker、Kubernetes、Terraform、AWS、GCP、Azure
CI/CD: GitHub Actions、GitLab CI、CircleCI、Jenkins
# 架构可视化
python scripts/architecture_diagram_generator.py . --format mermaid
python scripts/architecture_diagram_generator.py . --format plantuml
python scripts/architecture_diagram_generator.py . --format ascii
# 依赖分析
python scripts/dependency_analyzer.py . --verbose
python scripts/dependency_analyzer.py . --check circular
python scripts/dependency_analyzer.py . --output json
# 架构评估
python scripts/project_architect.py . --verbose
python scripts/project_architect.py . --check layers
python scripts/project_architect.py . --output json
--help 参数查看使用信息--verbose 标志获取详细的解释和建议