Skip to Content

30b - AI辅助架构决策

本文是《AI Agent 实战手册》第 30 章第 2 节。 上一节:30a-AI辅助架构设计概览 | 下一节:30c-系统设计文档AI生成

概述

架构决策是软件工程中影响最深远的活动——一个错误的技术选型或架构模式选择,可能在数月后才暴露问题,届时修正成本已呈指数级增长。2025-2026 年,AI 辅助架构决策从”聊天式咨询”演进为系统化的决策工程:多维度权衡矩阵自动生成、ADR(架构决策记录)AI 驱动的全生命周期管理、技术评估框架的智能化评分,以及决策可追溯性的版本化管理。本节提供完整的 AI 辅助架构决策方法论、Prompt 模板库、实战工作流和避坑指南,帮助架构师和开发者将 AI 从”建议者”升级为”决策协作伙伴”。


1. AI 辅助权衡分析方法论

1.1 为什么架构决策需要系统化的权衡分析

架构决策的本质是在多个相互冲突的质量属性之间寻找最优平衡点。没有”完美”的架构方案,只有”在给定约束下最合适”的方案。

传统权衡分析的痛点:

痛点描述AI 如何解决
维度遗漏人工分析容易遗漏某些质量属性维度(如可观测性、成本曲线)AI 可以基于项目类型自动补全评估维度
认知偏见架构师倾向于推荐自己熟悉的技术栈(锤子效应)AI 可以提供更广泛的候选方案,减少技术偏见
量化困难”性能好”、“扩展性强”等定性描述难以比较AI 可以引导量化评估,生成评分矩阵
上下文丢失决策背景和权衡过程未被记录,后人无法理解”为什么”AI 自动生成 ADR,完整记录决策上下文
时间压力深度权衡分析耗时,项目进度压力下容易草率决策AI 可以在数分钟内生成初始权衡分析,大幅缩短时间

1.2 多维度权衡矩阵方法

多维度权衡矩阵是 AI 辅助架构决策的核心工具。它将模糊的”哪个方案更好”转化为可量化、可比较的结构化评估。

权衡矩阵的基本结构:

┌─────────────────────────────────────────────────────────────┐ │ 多维度权衡矩阵 │ ├──────────────┬────────┬─────────┬─────────┬─────────────────┤ │ 评估维度 │ 权重 │ 方案 A │ 方案 B │ 方案 C │ ├──────────────┼────────┼─────────┼─────────┼─────────────────┤ │ 开发速度 │ 0.25 │ 5 (1.25)│ 3 (0.75)│ 4 (1.00) │ │ 运维复杂度 │ 0.20 │ 5 (1.00)│ 2 (0.40)│ 3 (0.60) │ │ 可扩展性 │ 0.15 │ 3 (0.45)│ 5 (0.75)│ 4 (0.60) │ │ 团队匹配度 │ 0.15 │ 5 (0.75)│ 2 (0.30)│ 4 (0.60) │ │ 成本效益 │ 0.10 │ 4 (0.40)│ 2 (0.20)│ 5 (0.50) │ │ 安全合规 │ 0.10 │ 4 (0.40)│ 4 (0.40)│ 3 (0.30) │ │ 长期维护 │ 0.05 │ 4 (0.20)│ 3 (0.15)│ 4 (0.20) │ ├──────────────┼────────┼─────────┼─────────┼─────────────────┤ │ 加权总分 │ 1.00 │ 4.45 │ 2.95 │ 3.80 │ └──────────────┴────────┴─────────┴─────────┴─────────────────┘

权重分配原则:

权重反映项目的优先级和约束条件,不同项目类型的权重分配差异很大:

项目类型开发速度运维复杂度可扩展性团队匹配度成本效益安全合规
MVP/创业项目0.300.200.050.200.150.10
企业级 SaaS0.100.150.250.100.150.25
金融/医疗系统0.050.100.150.100.100.50
高并发平台0.100.150.350.100.150.15
内部工具0.300.250.050.250.100.05

1.3 ATAM(架构权衡分析方法)的 AI 增强版

ATAM(Architecture Tradeoff Analysis Method)是 SEI(卡内基梅隆大学软件工程研究所)提出的经典架构评估方法。AI 可以大幅加速 ATAM 的执行过程。

传统 ATAM 流程 vs AI 增强 ATAM:

ATAM 阶段传统方式AI 增强方式效率提升
1. 展示架构架构师准备演示文档(2-4 小时)AI 从代码/文档自动生成架构概览3-5x
2. 识别架构方法人工识别架构模式和策略(1-2 小时)AI 自动识别代码中的架构模式5-10x
3. 生成质量属性效用树利益相关者讨论(2-4 小时)AI 基于需求文档生成初始效用树,人工审查调整2-3x
4. 分析架构方法专家逐一分析(4-8 小时)AI 对每个质量属性场景进行自动化分析3-5x
5. 头脑风暴和优先级排序团队讨论(2-4 小时)AI 生成风险清单,团队聚焦讨论2x
6. 分析架构方法(续)深入分析高优先级场景(4-8 小时)AI 提供深度分析报告,人工验证关键发现2-3x
7. 展示结果编写报告(4-8 小时)AI 自动生成 ATAM 评估报告5-10x

AI 增强 ATAM 的关键 Prompt:

你是一位经验丰富的软件架构评估师,精通 ATAM(架构权衡分析方法)。 请对以下架构方案执行 ATAM 分析。 ## 架构方案描述 [粘贴架构方案或设计文档] ## 关键质量属性场景 1. **性能场景**:[描述,如"1000 并发用户下,API 响应时间 P95 < 200ms"] 2. **可用性场景**:[描述,如"单节点故障时,系统在 30 秒内自动恢复"] 3. **安全性场景**:[描述,如"未授权用户无法访问其他租户数据"] 4. **可修改性场景**:[描述,如"添加新的支付方式需要 < 2 人天"] 5. **可扩展性场景**:[描述,如"用户量从 1 万增长到 100 万时的架构演进"] ## 请输出 ATAM 分析报告: ### 1. 架构方法识别 - 识别架构中使用的关键架构模式和策略 - 每个模式对应的质量属性 ### 2. 质量属性效用树 - 将质量属性分解为具体场景 - 标注优先级(H/M/L)和风险(H/M/L) ### 3. 风险点(Risks) - 识别架构中的风险点 - 每个风险的影响范围和严重程度 ### 4. 敏感点(Sensitivity Points) - 识别对质量属性影响最大的架构决策 ### 5. 权衡点(Tradeoff Points) - 识别影响多个质量属性的架构决策 - 分析这些决策在不同质量属性间的权衡 ### 6. 改进建议 - 针对每个风险点提供具体的缓解措施 - 按优先级排序

1.4 成本效益分析框架

架构决策中最容易被忽视的维度是全生命周期成本。AI 可以帮助进行更全面的成本效益分析。

成本维度分解:

┌─────────────────────────────────────────────────────────┐ │ 架构方案全生命周期成本模型 │ ├─────────────────────────────────────────────────────────┤ │ │ │ 初始成本(一次性) 运营成本(持续性) │ │ ┌──────────────┐ ┌──────────────┐ │ │ │ · 开发人力成本 │ │ · 基础设施费用 │ │ │ │ · 学习曲线成本 │ │ · 运维人力成本 │ │ │ │ · 工具/许可费用│ │ · 监控/告警费用 │ │ │ │ · 环境搭建成本 │ │ · 安全合规费用 │ │ │ └──────────────┘ └──────────────┘ │ │ │ │ 演进成本(阶段性) 隐性成本(容易忽略) │ │ ┌──────────────┐ ┌──────────────┐ │ │ │ · 架构迁移成本 │ │ · 技术债务利息 │ │ │ │ · 数据迁移成本 │ │ · 招聘/培训成本 │ │ │ │ · 停机/降级损失│ │ · 故障恢复成本 │ │ │ │ · 并行运行成本 │ │ · 机会成本 │ │ │ └──────────────┘ └──────────────┘ │ │ │ └─────────────────────────────────────────────────────────┘

成本效益分析 Prompt 模板:

请为以下架构方案进行全生命周期成本效益分析: ## 方案描述 [架构方案摘要] ## 项目参数 - 团队规模:[人数] - 开发者平均月薪:[金额] - 项目周期:[月数] - 预期运营年限:[年数] - 云平台:[AWS/GCP/Azure] ## 请输出: ### 1. 初始成本估算(第 0-N 个月) | 成本项 | 方案 A | 方案 B | 方案 C | |--------|--------|--------|--------| | 开发人力(人月 × 单价) | | | | | 学习曲线(额外人天) | | | | | 工具/许可费用 | | | | | 环境搭建 | | | | | **小计** | | | | ### 2. 月度运营成本估算 | 成本项 | 方案 A | 方案 B | 方案 C | |--------|--------|--------|--------| | 基础设施(计算/存储/网络) | | | | | 第三方服务 | | | | | 运维人力(占比) | | | | | 监控/安全工具 | | | | | **月度小计** | | | | ### 3. 3 年总拥有成本(TCO) | | 方案 A | 方案 B | 方案 C | |--|--------|--------|--------| | 初始成本 | | | | | 运营成本(36 个月) | | | | | 预估演进成本 | | | | | **3 年 TCO** | | | | ### 4. 成本风险因素 - 哪些成本项可能超出预估? - 规模增长对成本的影响曲线 - 隐性成本提醒

2. ADR(架构决策记录)的 AI 自动生成工作流

2.1 为什么 ADR 是架构决策的”必需品”

ADR(Architecture Decision Record)是记录架构决策的轻量级文档格式。每个 ADR 记录一个重要的架构决策,包括决策背景、考虑的选项、最终选择和预期后果。

没有 ADR 的常见后果:

  • 新成员加入团队时问”为什么用 MongoDB 而不是 PostgreSQL?“,没人能完整回答
  • 技术债务清理时,不确定某个设计是”有意为之”还是”历史遗留”
  • 架构审查时,无法追溯决策的上下文和约束条件
  • 重复讨论已经做过的决策,浪费团队时间

ADR 的核心价值:

价值维度描述
决策透明性记录”为什么”而非仅仅”是什么”,让决策过程可追溯
知识传承新成员可以快速理解架构决策的背景和理由
避免重复讨论已记录的决策不需要反复讨论,除非上下文发生变化
演进基础当需要修改架构时,ADR 提供了原始决策的上下文,帮助评估变更影响
审计合规在合规要求严格的行业,ADR 提供了决策审计轨迹

2.2 ADR 模板标准

业界最流行的 ADR 模板是 MADR(Markdown Any Decision Records)和 Michael Nygard 的经典格式。以下是 AI 生成 ADR 时推荐使用的增强版模板:

# ADR-{编号}:{决策标题} ## 状态 {提议 | 已接受 | 已废弃 | 已替代(被 ADR-XXX 替代)} ## 日期 {YYYY-MM-DD} ## 背景 {描述决策的业务和技术背景。为什么需要做这个决策?当前面临什么问题或机会?} ## 决策驱动因素 - {驱动因素 1:如"团队规模限制"} - {驱动因素 2:如"上线时间压力"} - {驱动因素 3:如"合规要求"} ## 考虑的选项 ### 选项 1:{选项名称} {简要描述} - ✅ 优势:{优势 1}、{优势 2} - ❌ 劣势:{劣势 1}、{劣势 2} ### 选项 2:{选项名称} {简要描述} - ✅ 优势:{优势 1}、{优势 2} - ❌ 劣势:{劣势 1}、{劣势 2} ### 选项 3:{选项名称} {简要描述} - ✅ 优势:{优势 1}、{优势 2} - ❌ 劣势:{劣势 1}、{劣势 2} ## 决策结果 选择 **{选项 X}**,因为 {核心理由}。 ### 权衡矩阵 | 维度 | 权重 | 选项 1 | 选项 2 | 选项 3 | |------|------|--------|--------|--------| | {维度 1} | {权重} | {评分} | {评分} | {评分} | | {维度 2} | {权重} | {评分} | {评分} | {评分} | | **加权总分** | | **{总分}** | **{总分}** | **{总分}** | ## 后果 ### 正面后果 - {正面后果 1} - {正面后果 2} ### 负面后果 - {负面后果 1} - {负面后果 2} ### 风险与缓解 | 风险 | 概率 | 影响 | 缓解措施 | |------|------|------|---------| | {风险 1} | {高/中/低} | {高/中/低} | {缓解措施} | ## 相关决策 - 依赖:{ADR-XXX} - 被依赖:{ADR-YYY} - 相关:{ADR-ZZZ} ## 备注 {任何补充信息、参考链接、讨论记录等}

2.3 AI 自动生成 ADR 的工作流

工作流 1:对话式 ADR 生成(实时决策)

适用于团队正在讨论架构决策时,实时使用 AI 生成 ADR。

┌─────────────────────────────────────────────────────────┐ │ 对话式 ADR 生成工作流 │ ├─────────────────────────────────────────────────────────┤ │ │ │ ① 描述决策背景 ② AI 生成选项 ③ 团队讨论 │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ 架构师描述│───→│ AI 生成 │───→│ 团队审查 │ │ │ │ 决策上下文│ │ 3-5 个 │ │ 补充选项 │ │ │ │ 和约束条件│ │ 候选方案 │ │ 调整权重 │ │ │ └──────────┘ └──────────┘ └──────────┘ │ │ │ │ │ ④ AI 生成权衡矩阵 ⑤ 确认决策 ⑥ AI 输出 ADR │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ 多维度评分│───→│ 团队确认 │───→│ 完整 ADR │ │ │ │ 加权计算 │ │ 最终选择 │ │ Markdown │ │ │ │ 可视化对比│ │ 记录理由 │ │ 归档版控 │ │ │ └──────────┘ └──────────┘ └──────────┘ │ │ │ └─────────────────────────────────────────────────────────┘

步骤 1:描述决策背景

我们需要做一个架构决策,请帮我生成 ADR。 ## 决策背景 我们正在构建一个 [系统类型] 系统。当前需要决定 [决策主题]。 ## 约束条件 - 团队:[规模和技术栈] - 预算:[预算范围] - 时间:[截止日期] - 合规:[合规要求] - 现有系统:[需要集成的系统] ## 已知的候选方案 1. [方案 A](如果有的话) 2. [方案 B] 请先帮我: 1. 补充我可能遗漏的候选方案 2. 为每个方案列出优劣势 3. 建议评估维度和权重

步骤 2:AI 生成选项和权衡分析后,团队讨论调整

感谢你的分析。基于团队讨论,我们做了以下调整: - [调整 1:如"去掉方案 C,因为团队没有相关经验"] - [调整 2:如"将'开发速度'的权重从 0.15 提高到 0.25"] - [调整 3:如"补充一个评估维度:'社区生态成熟度'"] 请基于调整后的参数重新生成权衡矩阵,并输出完整的 ADR 文档。 我们的最终决策是选择 [方案 X]。

工作流 2:代码库逆向 ADR 生成(补充历史决策)

适用于已有项目缺少 ADR 文档,需要从代码中逆向推断架构决策。这是 2025 年 AI 辅助 ADR 的一个重要创新方向——AI Agent 扫描代码库,自动识别架构决策并生成 ADR。

操作步骤:

步骤 1:让 AI 扫描代码库识别架构决策

请扫描当前代码库,识别以下类型的架构决策: 1. **技术栈选择**:使用了哪些语言、框架、数据库、消息队列? 2. **架构模式**:采用了什么架构模式(单体/微服务/Serverless/事件驱动)? 3. **数据策略**:数据存储、缓存、一致性策略是什么? 4. **通信模式**:组件间如何通信(REST/gRPC/消息队列/事件)? 5. **安全策略**:认证、授权、加密方案是什么? 6. **部署策略**:如何部署(容器/Serverless/VM)? 对于每个识别到的决策,请推断: - 可能的决策背景和动机 - 可能考虑过的替代方案 - 该决策的优势和潜在风险

步骤 2:人工审查和补充

AI 生成的逆向 ADR 需要人工审查,因为:

  • AI 无法知道决策时的团队约束和业务背景
  • 某些技术选择可能是”历史遗留”而非”有意为之”
  • AI 可能误判某些实现细节为架构决策

步骤 3:归档和版本管理

请将审查后的 ADR 按以下格式归档: 目录结构: docs/adr/ ├── 0001-选择-typescript-作为主要语言.md ├── 0002-采用模块化单体架构.md ├── 0003-选择-postgresql-作为主数据库.md ├── 0004-使用-redis-作为缓存层.md ├── 0005-采用-jwt-认证方案.md └── README.md ← ADR 索引和使用指南

工作流 3:Spec 驱动的 ADR 生成(Kiro 工作流)

在 Kiro 的 Spec 驱动开发模式中,ADR 可以作为 design.md 的一部分自动生成:

┌─────────────────────────────────────────────────────────┐ │ Kiro Spec 驱动 ADR 工作流 │ ├─────────────────────────────────────────────────────────┤ │ │ │ requirements.md design.md │ │ ┌──────────────┐ ┌──────────────────┐ │ │ │ 需求 1 │ │ 架构概览 │ │ │ │ 需求 2 │──────→│ 组件设计 │ │ │ │ 需求 3 │ │ ┌──────────────┐ │ │ │ └──────────────┘ │ │ ADR 列表 │ │ │ │ │ │ ADR-001: ... │ │ │ │ │ │ ADR-002: ... │ │ │ │ │ └──────────────┘ │ │ │ └────────┬─────────┘ │ │ │ │ │ tasks.md │ │ │ ┌──────────────┐ │ │ │ │ 任务清单 │◄───────────────┘ │ │ │ (基于 ADR │ │ │ │ 约束实现) │ │ │ └──────────────┘ │ │ │ └─────────────────────────────────────────────────────────┘

2.4 ADR 生成工具推荐

工具类型核心能力价格适用场景
Claude Code + ADR 插件CLI Agent + 插件代码库扫描→ADR 自动生成、MADR 格式、交互式决策引导Claude 订阅费($20-200/月)开发者日常 ADR 编写,代码库逆向 ADR
Kiro Spec ModeAgentic IDESpec 驱动 ADR 生成,需求→设计→ADR 一体化免费(50 Vibe)/ $20/月(Pro)结构化架构设计流程中的 ADR
Workik ADR GeneratorWeb 平台自然语言→ADR、模板库、团队协作免费(基础)/ 付费计划快速生成 ADR 草稿
ADR Architect (theee.ai)AI 助手对话式 ADR 生成、引导式决策流程免费交互式 ADR 编写
adr-tools (CLI)命令行工具ADR 文件管理、编号、索引生成免费(开源)ADR 文件管理和版本控制
Log4brains文档平台ADR 知识库、搜索、可视化、CI/CD 集成免费(开源)团队 ADR 知识库管理
Equal Experts ADR 工作流方法论AI 加速 ADR 编写的结构化方法论免费(开源方法论)企业级 ADR 实践

2.5 ADR 的版本管理和生命周期

ADR 不是一次性文档,它有完整的生命周期:

┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ 提议 │───→│ 已接受 │───→│ 已废弃 │ │ 已替代 │ │ Proposed │ │ Accepted │ │Deprecated│ │Superseded│ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │ │ │ │ │ ┌────────────────────┘ │ │ │ ▼ ▼ ▼ 团队审查 正常使用 新 ADR 引用 可能被拒绝 直到上下文 "替代 ADR-XXX" 发生变化

AI 辅助 ADR 生命周期管理:

请审查以下 ADR,评估其当前状态是否仍然有效: ## ADR 内容 [粘贴 ADR 内容] ## 当前项目状态 - 团队规模变化:[从 X 人变为 Y 人] - 用户规模变化:[从 X DAU 变为 Y DAU] - 技术栈变化:[新增/移除的技术] - 业务需求变化:[新增的需求或约束] 请评估: 1. 该 ADR 的决策驱动因素是否仍然成立? 2. 是否有新的选项需要考虑? 3. 建议:维持/废弃/替代? 4. 如果建议替代,请生成新的 ADR 草稿

3. 技术评估框架

3.1 评估维度体系

技术评估是架构决策中最常见的场景——选择数据库、选择框架、选择云服务、选择通信协议等。AI 可以帮助构建系统化的评估框架。

标准技术评估维度:

┌─────────────────────────────────────────────────────────┐ │ 技术评估六维度模型 │ ├─────────────────────────────────────────────────────────┤ │ │ │ ┌──────────────┐ │ │ │ 功能匹配度 │ │ │ │ (Feature Fit)│ │ │ └──────┬───────┘ │ │ │ │ │ ┌──────────────┐ │ ┌──────────────┐ │ │ │ 生态成熟度 │───┼───│ 性能与扩展性 │ │ │ │ (Ecosystem) │ │ │ (Performance) │ │ │ └──────────────┘ │ └──────────────┘ │ │ │ │ │ ┌──────────────┐ │ ┌──────────────┐ │ │ │ 团队适配度 │───┼───│ 成本效益 │ │ │ │ (Team Fit) │ │ │ (Cost) │ │ │ └──────────────┘ │ └──────────────┘ │ │ │ │ │ ┌──────┴───────┐ │ │ │ 风险与长期性 │ │ │ │ (Risk/Future)│ │ │ └──────────────┘ │ │ │ └─────────────────────────────────────────────────────────┘

各维度的细分评估项:

维度细分评估项评估方法
功能匹配度核心功能覆盖率、API 完整性、扩展机制、集成能力需求清单逐项对照
性能与扩展性基准性能、并发处理、水平扩展能力、资源效率基准测试数据、案例研究
生态成熟度社区规模、文档质量、第三方库数量、企业采用率GitHub Stars、npm 下载量、Stack Overflow 活跃度
团队适配度学习曲线、现有技能匹配、招聘难度、培训成本团队技能调查、市场招聘数据
成本效益许可费用、基础设施成本、运维成本、迁移成本TCO 计算、供应商报价
风险与长期性供应商锁定风险、技术过时风险、安全漏洞历史、长期路线图供应商评估、技术趋势分析

3.2 评分模型

加权评分法

最常用的技术评估方法,适合大多数场景:

总分 = Σ (维度权重 × 维度评分) 其中: - 维度评分:1-5 分(1=完全不满足,5=完全满足) - 维度权重:0-1(所有权重之和 = 1) - 总分范围:1-5

AI 辅助评分的关键原则:

  1. AI 提供初始评分,人工校准:AI 基于公开信息给出初始评分,团队根据实际经验调整
  2. 评分必须有依据:每个评分都需要附带理由,避免”拍脑袋”
  3. 区分”已验证”和”推测”:标注哪些评分基于实际测试,哪些基于文档/社区反馈

淘汰法(Elimination)

当候选方案较多时,先用”硬性标准”淘汰不合格的方案,再对剩余方案进行详细评估:

请帮我对以下技术候选方案进行初步筛选: ## 候选方案 [列出所有候选方案] ## 硬性标准(不满足即淘汰) 1. 必须支持 [语言/平台] 2. 必须有 [许可类型] 许可证 3. 月度成本不超过 [金额] 4. 必须支持 [合规标准] 5. 社区活跃度:最近 6 个月有持续更新 ## 请输出: 1. 每个方案是否满足所有硬性标准 2. 不满足的方案及原因 3. 通过筛选的方案列表(进入详细评估阶段)

场景化评估法

针对不同使用场景分别评估,避免”一刀切”:

请对以下数据库候选方案进行场景化评估: ## 候选方案 1. PostgreSQL 2. MongoDB 3. DynamoDB ## 评估场景 ### 场景 1:用户数据存储(强一致性,复杂查询) - 数据模型:关系型,多表关联 - 查询模式:复杂 JOIN、聚合、全文搜索 - 一致性要求:强一致性 - 数据量:100 万-1000 万行 ### 场景 2:事件日志存储(高写入,时序查询) - 数据模型:半结构化,追加写入 - 查询模式:时间范围查询、聚合统计 - 一致性要求:最终一致性可接受 - 数据量:每天 1000 万条 ### 场景 3:配置和元数据存储(低频读写,灵活 Schema) - 数据模型:文档型,Schema 经常变化 - 查询模式:按 Key 查询,偶尔范围查询 - 一致性要求:强一致性 - 数据量:< 10 万条 ## 请输出: 每个场景下各方案的评分(1-5)和推荐选择

3.3 决策矩阵生成

决策矩阵是将评估结果可视化的最终产物。AI 可以自动生成多种格式的决策矩阵。

决策矩阵 Prompt 模板:

请为以下技术选型生成完整的决策矩阵: ## 选型场景 [描述选型场景] ## 候选技术 1. [技术 A] 2. [技术 B] 3. [技术 C] 4. [技术 D] ## 项目约束 - [约束 1] - [约束 2] - [约束 3] ## 评估维度和权重 (如果不确定,请帮我建议合适的维度和权重) ## 输出要求 请生成以下内容: ### 1. 决策矩阵表格 包含:维度、权重、每个技术的评分(1-5)、加权分、总分排名 ### 2. 雷达图数据 (用于可视化各技术在不同维度的表现) ### 3. 每个技术的一句话总结 格式:"[技术名] 最适合 [场景],但在 [维度] 上有短板" ### 4. 最终推荐 - 首选:[技术] — 理由 - 备选:[技术] — 在什么条件下选择备选 - 不推荐:[技术] — 理由 ### 5. 风险提示 - 选择首选方案的主要风险 - 缓解措施

4. AI 辅助技术选型对比分析

4.1 技术选型的常见场景

选型场景典型候选方案关键评估维度
后端框架Express / Fastify / NestJS / Hono性能、TypeScript 支持、生态、学习曲线
前端框架React / Vue / Svelte / Solid生态、性能、学习曲线、招聘市场
数据库PostgreSQL / MySQL / MongoDB / DynamoDB数据模型匹配、性能、成本、运维复杂度
ORMPrisma / Drizzle / TypeORM / Sequelize类型安全、性能、迁移工具、学习曲线
消息队列Kafka / RabbitMQ / Redis Streams / SQS吞吐量、延迟、持久性、运维复杂度
缓存Redis / Memcached / Valkey / DragonflyDB数据结构支持、持久性、集群能力、成本
搜索引擎Elasticsearch / Meilisearch / Typesense全文搜索质量、实时性、运维复杂度、成本
认证方案Auth0 / Clerk / Supabase Auth / 自建功能完整性、价格、自定义能力、供应商锁定
部署平台Vercel / Railway / Fly.io / AWS ECS成本、扩展性、DX、供应商锁定
监控方案Datadog / Grafana Cloud / New Relic / 自建功能、成本、集成、自托管能力

4.2 技术选型对比分析 Prompt 模板

请帮我进行 [选型场景] 的技术选型对比分析。 ## 项目背景 - 项目类型:[SaaS/电商/内部工具/API 平台/移动应用] - 团队规模:[人数] - 团队技术栈:[当前熟悉的技术] - 预期规模:[用户量/数据量/请求量] - 预算范围:[月度预算] - 上线时间:[截止日期] ## 候选技术 1. [技术 A] 2. [技术 B] 3. [技术 C] ## 特殊需求 - [特殊需求 1,如"必须支持多租户"] - [特殊需求 2,如"需要实时推送能力"] ## 请输出: ### 1. 快速对比表 | 维度 | [技术 A] | [技术 B] | [技术 C] | |------|---------|---------|---------| | 一句话定位 | | | | | 最新稳定版本 | | | | | 许可证 | | | | | GitHub Stars | | | | | 价格模型 | | | | ### 2. 详细评估矩阵 (包含 6 个维度的 1-5 评分和加权总分) ### 3. 场景化推荐 - 如果优先考虑 [开发速度],选择 [X] - 如果优先考虑 [性能],选择 [Y] - 如果优先考虑 [成本],选择 [Z] ### 4. 迁移难度评估 - 从 [技术 A] 迁移到 [技术 B] 的难度和成本 - 从 [技术 B] 迁移到 [技术 A] 的难度和成本 ### 5. 12 个月展望 - 各技术的发展趋势和路线图 - 潜在的风险信号(如维护者减少、商业化转向)

4.3 AI 辅助 PoC(概念验证)设计

当决策矩阵无法明确区分候选方案时,需要通过 PoC 来验证关键假设。AI 可以帮助设计高效的 PoC。

我们在 [技术 A] 和 [技术 B] 之间难以抉择。请帮我设计一个最小化的 PoC 来验证关键差异。 ## 决策的关键不确定性 1. [不确定性 1,如"技术 A 在 1000 并发下的实际性能"] 2. [不确定性 2,如"技术 B 的学习曲线是否在团队可接受范围内"] 3. [不确定性 3,如"技术 A 的 XX 功能是否满足我们的需求"] ## PoC 约束 - 时间预算:[天数] - 人力:[人数] ## 请输出: ### 1. PoC 范围定义 - 需要验证的具体假设(每个假设有明确的"通过/不通过"标准) - 不需要在 PoC 中验证的内容 ### 2. PoC 实现计划 - 每个技术的 PoC 实现步骤 - 预计耗时 ### 3. 评估标准 - 定量指标(性能数据、代码行数、完成时间) - 定性指标(开发体验、代码可读性、调试难度) ### 4. 决策规则 - 如果 [条件 A],选择 [技术 A] - 如果 [条件 B],选择 [技术 B] - 如果结果不明确,[后续行动]

5. 架构权衡的 Prompt Engineering 技巧

5.1 权衡分析 Prompt 的核心原则

架构权衡分析的 Prompt 与普通编码 Prompt 有本质区别——它需要引导 AI 进行多角度、多维度的批判性思考,而非给出单一”正确答案”。

原则 1:强制多方案对比

❌ 错误: "我们应该用微服务还是单体?" ✅ 正确: "请为我们的系统提供 3 个架构方案(单体、模块化单体、微服务), 从开发速度、运维复杂度、扩展性、团队匹配度、成本 5 个维度进行对比, 每个维度给出 1-5 分评分和评分理由。"

原则 2:提供充分的约束上下文

❌ 错误: "帮我选一个数据库" ✅ 正确: "帮我为以下场景选择数据库: - 数据模型:用户、订单、商品,强关系型 - 查询模式:80% 读、20% 写,需要复杂 JOIN - 数据量:初期 100 万行,1 年后预计 5000 万行 - 并发:峰值 500 QPS - 团队:3 人,熟悉 PostgreSQL,不熟悉 NoSQL - 预算:月度数据库费用 < $100 - 合规:需要 GDPR 合规,数据驻留在欧洲"

原则 3:要求考虑”反面论证”

✅ 好的 Prompt 补充: "在推荐方案后,请扮演'魔鬼代言人'角色, 列出选择该方案可能遇到的 3 个最大风险, 以及在什么条件下应该重新考虑这个决策。"

原则 4:要求时间维度的分析

✅ 好的 Prompt 补充: "请分别从以下时间维度分析各方案: - 短期(0-3 个月):MVP 阶段的适用性 - 中期(3-12 个月):增长阶段的适用性 - 长期(12+ 个月):成熟阶段的适用性 如果不同阶段的最优方案不同,请说明演进路径。"

原则 5:明确要求量化而非定性

❌ 错误: "哪个方案性能更好?" ✅ 正确: "请估算各方案在以下场景下的性能指标: - 场景:1000 并发用户,每秒 500 个 API 请求 - 指标:P50/P95/P99 响应时间、最大吞吐量、CPU/内存使用率 - 基于:官方基准测试数据或社区性能报告"

5.2 高级 Prompt 技巧

技巧 1:角色扮演多视角分析

让 AI 从不同利益相关者的角度分析同一个架构决策:

请从以下 4 个角色的视角分析"采用微服务架构"这个决策: ### 角色 1:CTO(关注技术战略和长期演进) - 这个决策对技术战略的影响? - 长期技术债务风险? ### 角色 2:开发团队 Lead(关注开发效率和团队体验) - 对开发效率的影响? - 团队学习成本? - 日常开发体验变化? ### 角色 3:运维工程师(关注稳定性和可运维性) - 运维复杂度变化? - 监控和告警需求? - 故障排查难度? ### 角色 4:CFO(关注成本和 ROI) - 基础设施成本变化? - 人力成本变化? - 投资回报周期? 最后,综合 4 个角色的视角,给出平衡建议。

技巧 2:预设失败场景分析

假设我们选择了 [方案 X],请预设以下失败场景并分析应对策略: 1. **规模超预期**:用户量在 3 个月内增长 10 倍 - 该方案能否应对?瓶颈在哪里? - 紧急扩展方案是什么? 2. **关键依赖故障**:[核心依赖] 服务宕机 2 小时 - 系统影响范围? - 降级策略? 3. **团队变动**:核心开发者离职 - 新人上手难度? - 知识传承风险? 4. **需求剧变**:需要支持 [新需求,如实时协作] - 当前架构能否适应? - 改造成本估算? 5. **安全事件**:发现 [安全漏洞类型] - 影响范围? - 修复难度和时间?

技巧 3:渐进式深入分析

不要一次性要求 AI 给出完整分析,而是分步骤逐层深入:

第 1 轮:高层方案对比 "请用一句话描述每个候选方案的核心优势和最大风险" 第 2 轮:聚焦关键差异 "基于第 1 轮分析,[维度 X] 是关键差异点。 请深入分析各方案在 [维度 X] 上的具体表现" 第 3 轮:验证假设 "你在分析中假设了 [假设 A]。 如果这个假设不成立(即 [反面情况]),结论会如何变化?" 第 4 轮:生成决策 "基于以上分析,请生成最终的决策矩阵和 ADR"

技巧 4:利用 AI 的”不确定性”

在你的分析中,请明确标注以下信息的确定性级别: - 🟢 高确定性:基于官方文档、基准测试数据、广泛的社区验证 - 🟡 中确定性:基于社区经验分享、案例研究、合理推断 - 🔴 低确定性:基于有限信息的推测,建议通过 PoC 验证 这帮助我们识别哪些结论可以直接采信,哪些需要进一步验证。

6. 决策可追溯性和版本管理

6.1 架构决策的版本控制策略

架构决策应该像代码一样纳入版本控制,确保可追溯性和可审计性。

推荐的目录结构:

project-root/ ├── docs/ │ └── adr/ │ ├── README.md # ADR 索引和使用指南 │ ├── templates/ │ │ └── adr-template.md # ADR 模板 │ ├── 0001-选择-typescript-作为主要语言.md │ ├── 0002-采用模块化单体架构.md │ ├── 0003-选择-postgresql-作为主数据库.md │ ├── 0004-使用-jwt-认证方案.md │ ├── 0005-采用-事件驱动通知系统.md │ └── 0006-选择-redis-作为缓存层.md ├── .kiro/ │ └── steering/ │ └── architecture-rules.md # 基于 ADR 的 Steering 规则 └── ...

ADR 索引文件(README.md)模板:

# 架构决策记录(ADR)索引 ## 使用指南 - 每个重要的架构决策都应该记录为一个 ADR - ADR 编号递增,不重复使用 - 使用 `docs/adr/templates/adr-template.md` 作为模板 - ADR 一旦"已接受",不修改原文,如需变更则创建新 ADR 并标记旧 ADR 为"已替代" ## ADR 列表 | 编号 | 标题 | 状态 | 日期 | |------|------|------|------| | 0001 | 选择 TypeScript 作为主要语言 | ✅ 已接受 | 2025-01-15 | | 0002 | 采用模块化单体架构 | ✅ 已接受 | 2025-01-20 | | 0003 | 选择 PostgreSQL 作为主数据库 | ✅ 已接受 | 2025-01-22 | | 0004 | 使用 JWT 认证方案 | ⚠️ 已替代(→ 0008) | 2025-01-25 | | 0005 | 采用事件驱动通知系统 | ✅ 已接受 | 2025-02-01 | | 0006 | 选择 Redis 作为缓存层 | ✅ 已接受 | 2025-02-05 |

6.2 ADR 与 Steering 规则的联动

ADR 中的决策应该转化为 Steering 规则,确保 AI 在后续编码中自动遵守架构约束:

请基于以下 ADR 列表,生成对应的 Steering 规则: ## ADR 列表 - ADR-0002:采用模块化单体架构 - ADR-0003:选择 PostgreSQL 作为主数据库 - ADR-0006:选择 Redis 作为缓存层 ## 请生成 Steering 规则,覆盖: 1. 模块边界约束(哪些模块不能直接依赖) 2. 数据访问约束(必须通过 Repository 层) 3. 缓存使用约束(什么数据应该/不应该缓存) 4. 禁止事项(基于 ADR 中的"负面后果"和"风险")

生成的 Steering 规则示例:

# 架构约束 Steering 规则 # 基于 ADR-0002, ADR-0003, ADR-0006 ## 模块边界(ADR-0002) - 模块间通过公共接口通信,禁止直接导入其他模块的内部实现 - 每个模块拥有独立的数据库 Schema,禁止跨模块直接查询 - 新增模块必须先更新 ADR 或创建新 ADR ## 数据访问(ADR-0003) - 所有数据库操作必须通过 Prisma ORM - 禁止在业务逻辑层编写原始 SQL(除非有性能优化的 ADR 支持) - 数据库迁移必须可回滚 ## 缓存策略(ADR-0006) - 缓存仅用于读多写少的数据(用户 Profile、配置、权限) - 缓存 TTL 不超过 1 小时(除非有明确的业务需求) - 缓存失效策略:写时失效(write-through invalidation) - 禁止将缓存作为主要数据存储

6.3 决策追溯与审计

在合规要求严格的项目中,架构决策需要完整的审计轨迹:

请帮我设计一个架构决策审计系统,满足以下需求: 1. **决策记录**:每个 ADR 包含决策者、审批者、日期 2. **变更追踪**:ADR 的每次修改都有 Git 提交记录 3. **影响分析**:每个 ADR 关联受影响的代码模块 4. **定期审查**:每季度审查所有"已接受"的 ADR 是否仍然有效 5. **合规报告**:生成架构决策合规报告 ## 输出: 1. ADR 模板中需要添加的审计字段 2. Git hook 配置(确保 ADR 变更有适当的 commit message) 3. 季度审查 Prompt 模板 4. 合规报告生成 Prompt 模板

7. 团队协作中的 AI 辅助架构决策

7.1 架构决策的协作模式

协作模式适用场景AI 辅助方式
独立决策低影响、可逆的技术选择AI 生成决策分析,开发者自行决定
咨询式决策中等影响,需要专家意见AI 生成初始分析,架构师审查后决定
共识式决策高影响,跨团队的架构变更AI 生成权衡分析,团队讨论后投票决定
升级式决策战略级,影响产品方向AI 生成全面分析报告,管理层最终决定

7.2 架构评审会议中的 AI 辅助

会前准备(AI 辅助):

我们即将召开架构评审会议,讨论 [决策主题]。 请帮我准备以下材料: 1. **决策背景摘要**(1 页,供所有参会者快速了解上下文) 2. **候选方案对比表**(包含权衡矩阵) 3. **讨论引导问题**(5-8 个关键问题,确保讨论覆盖所有重要维度) 4. **风险清单**(每个方案的 Top 3 风险) 5. **决策模板**(会议结束时填写的决策记录模板)

会中记录(AI 辅助):

请基于以下会议讨论要点,更新架构决策分析: ## 会议讨论要点 1. [团队成员 A 提出的观点] 2. [团队成员 B 的反对意见] 3. [新发现的约束条件] 4. [达成的共识] 5. [仍有分歧的点] ## 请更新: 1. 权衡矩阵(基于新信息调整评分) 2. 风险清单(添加新识别的风险) 3. 如果达成决策,生成完整 ADR 4. 如果未达成决策,列出需要进一步调研的问题

会后跟进(AI 辅助):

架构评审会议已结束,决策结果如下: - 选择方案:[方案 X] - 关键理由:[理由] - 待办事项:[列表] 请帮我: 1. 生成完整的 ADR 文档 2. 生成对应的 Steering 规则 3. 生成实施任务清单(可以直接放入 tasks.md) 4. 生成通知邮件/Slack 消息(告知相关团队决策结果)

7.3 异步架构决策工作流

对于分布式团队或非紧急决策,可以使用异步工作流:

┌─────────────────────────────────────────────────────────┐ │ 异步架构决策工作流 │ ├─────────────────────────────────────────────────────────┤ │ │ │ Day 1:提案 │ │ ┌──────────────────────────────────────────┐ │ │ │ 架构师 + AI 生成决策提案(ADR 草稿) │ │ │ │ 提交 PR → docs/adr/0007-xxx.md │ │ │ └──────────────────────────────────────────┘ │ │ │ │ │ Day 2-4:评审 │ │ ┌──────────────────────────────────────────┐ │ │ │ 团队成员在 PR 中评论 │ │ │ │ AI 辅助回应评论、更新分析 │ │ │ │ 标注"同意/反对/需要更多信息" │ │ │ └──────────────────────────────────────────┘ │ │ │ │ │ Day 5:决策 │ │ ┌──────────────────────────────────────────┐ │ │ │ 如果达成共识:合并 PR,ADR 状态→已接受 │ │ │ │ 如果有分歧:安排同步会议讨论 │ │ │ │ AI 生成最终 ADR + Steering 规则 │ │ │ └──────────────────────────────────────────┘ │ │ │ └─────────────────────────────────────────────────────────┘

8. 提示词模板库

8.1 权衡分析 Prompt 模板

模板 1:通用架构权衡分析

你是一位拥有 15 年经验的软件架构师,擅长多维度权衡分析。 请对以下架构决策进行系统化的权衡分析。 ## 决策主题 [描述需要做的架构决策] ## 项目背景 - 项目类型:[类型] - 团队规模:[人数] - 技术栈:[当前技术栈] - 预期规模:[用户量/数据量] - 预算:[预算范围] - 时间约束:[截止日期] ## 候选方案 1. [方案 A] 2. [方案 B] 3. [方案 C] ## 分析要求 ### 1. 多维度评估矩阵 请从以下维度评估(每个维度 1-5 分,附评分理由): - 开发速度(MVP 交付时间) - 运维复杂度(Day 2 运维成本) - 可扩展性(应对 10x 增长的能力) - 团队匹配度(学习曲线和现有技能匹配) - 成本效益(3 年 TCO) - 安全合规(满足合规要求的难度) - 长期演进(技术过时风险和演进灵活性) ### 2. 权衡点分析 识别影响多个维度的关键权衡点,说明"选择 A 意味着在 B 上妥协"。 ### 3. 风险矩阵 每个方案的 Top 3 风险,标注概率和影响。 ### 4. 推荐决策 - 首选方案及核心理由 - 在什么条件下应该选择备选方案 - 决策的有效期(在什么条件下需要重新评估) ### 5. 确定性标注 对每个评分标注确定性级别: 🟢 高确定性 | 🟡 中确定性 | 🔴 低确定性(建议 PoC 验证)

模板 2:数据库选型权衡分析

请帮我进行数据库选型的权衡分析。 ## 应用场景 - 数据模型:[关系型/文档型/键值/图/时序] - 读写比例:[如 80:20] - 数据量:[当前和预期] - 并发量:[峰值 QPS] - 一致性要求:[强一致/最终一致] - 查询模式:[简单查询/复杂 JOIN/全文搜索/聚合分析] ## 候选数据库 1. [数据库 A] 2. [数据库 B] 3. [数据库 C] ## 请从以下维度分析: 1. **数据模型匹配度**:数据库的数据模型是否天然适合应用场景 2. **查询性能**:在目标查询模式下的性能表现 3. **写入性能**:在目标写入模式下的性能表现 4. **扩展策略**:水平扩展/垂直扩展的能力和复杂度 5. **运维复杂度**:备份、恢复、监控、升级的难度 6. **生态工具**:ORM 支持、管理工具、监控工具 7. **成本**:许可费 + 基础设施费 + 运维人力 8. **团队经验**:团队对该数据库的熟悉程度 ## 输出格式 1. 评估矩阵(含评分和理由) 2. 场景化推荐(不同场景可能选择不同数据库) 3. 混合方案建议(如果适用) 4. 迁移路径(如果未来需要切换)

模板 3:架构模式选择权衡分析

请帮我选择最适合的架构模式。 ## 系统需求 [描述系统的核心功能和非功能需求] ## 候选架构模式 1. **单体架构**(Monolith) 2. **模块化单体**(Modular Monolith) 3. **微服务**(Microservices) 4. **Serverless** 5. **事件驱动**(Event-Driven) ## 评估约束 - 团队规模:[人数] - 团队经验:[对各模式的熟悉程度] - 预期规模:[用户量/请求量] - 上线时间:[截止日期] - 运维能力:[有/无专职运维] ## 请输出: 1. **淘汰分析**:哪些模式在当前约束下明显不适合?为什么? 2. **深度对比**:对剩余候选模式进行详细权衡分析 3. **演进路径**:推荐的架构演进路线(从 MVP 到成熟期) 4. **混合建议**:是否建议混合使用多种模式?如何组合?

8.2 ADR 生成 Prompt 模板

模板 4:标准 ADR 生成

请帮我生成一份架构决策记录(ADR)。 ## 决策标题 [简短描述决策内容] ## 决策背景 [描述为什么需要做这个决策] ## 已考虑的选项 1. [选项 A]:[简述] 2. [选项 B]:[简述] 3. [选项 C]:[简述] ## 最终选择 [选项 X] ## 选择理由 [核心理由] ## 请按 MADR 格式输出完整 ADR,包含: 1. 状态 2. 日期 3. 背景(扩展描述) 4. 决策驱动因素 5. 考虑的选项(每个选项的详细优劣分析) 6. 决策结果 7. 权衡矩阵 8. 正面后果 9. 负面后果 10. 风险与缓解措施 11. 相关决策

模板 5:逆向 ADR 生成(从代码推断)

请扫描以下代码结构,识别架构决策并生成 ADR: ## 项目结构 [粘贴 tree 命令输出或目录结构] ## 关键配置文件 [粘贴 package.json、docker-compose.yml、terraform 配置等] ## 请识别并生成 ADR: 1. 识别至少 5 个重要的架构决策 2. 对每个决策推断可能的背景和动机 3. 列出可能考虑过的替代方案 4. 分析当前选择的优劣势 5. 按 MADR 格式输出每个 ADR ## 注意: - 标注哪些推断是"高确定性"(基于代码证据),哪些是"推测" - 对于推测性内容,建议与团队确认

模板 6:ADR 更新/替代

以下 ADR 需要更新,因为项目上下文发生了变化。 ## 原始 ADR [粘贴原始 ADR 内容] ## 上下文变化 1. [变化 1,如"团队从 3 人增长到 10 人"] 2. [变化 2,如"用户量从 1 万增长到 50 万"] 3. [变化 3,如"新增了实时协作需求"] ## 请评估: 1. 原始决策是否仍然有效? 2. 如果需要变更,推荐的新方案是什么? 3. 迁移策略和成本估算 4. 生成新的 ADR(状态为"提议"),并在原 ADR 中标注"已替代"

8.3 技术评估框架 Prompt 模板

模板 7:全面技术评估

请对 [技术名称] 进行全面的技术评估。 ## 评估目的 [为什么要评估这个技术?计划用在什么场景?] ## 评估维度 ### 1. 技术成熟度 - 当前版本和发布历史 - 重大版本的发布频率 - 向后兼容性记录 - 已知的重大 Bug 或限制 ### 2. 社区与生态 - GitHub Stars / npm 下载量 / 社区规模 - 文档质量和完整性 - 第三方库和插件数量 - Stack Overflow 问题数量和回答质量 - 企业采用案例 ### 3. 性能特征 - 官方基准测试数据 - 社区性能对比报告 - 已知的性能瓶颈 - 优化空间和策略 ### 4. 安全性 - CVE 历史记录 - 安全更新响应速度 - 内置安全特性 - 合规认证 ### 5. 开发体验 - 学习曲线评估 - IDE/工具支持 - 调试体验 - 错误信息质量 ### 6. 商业因素 - 许可证类型 - 价格模型(如果是商业产品) - 供应商锁定风险 - 长期路线图和资金支持 ## 输出格式 1. 评估摘要(一段话) 2. 评分卡(每个维度 1-5 分) 3. SWOT 分析 4. 推荐/不推荐的使用场景 5. 风险提示

模板 8:决策矩阵生成

请为以下技术选型生成决策矩阵。 ## 选型场景 [描述选型场景和需求] ## 候选技术 1. [技术 A] 2. [技术 B] 3. [技术 C] 4. [技术 D] ## 评估维度和权重 | 维度 | 权重 | 说明 | |------|------|------| | 功能匹配度 | [权重] | [说明] | | 性能 | [权重] | [说明] | | 生态成熟度 | [权重] | [说明] | | 团队适配度 | [权重] | [说明] | | 成本 | [权重] | [说明] | | 风险 | [权重] | [说明] | (如果不确定权重,请根据项目类型建议合适的权重分配) ## 请输出: ### 决策矩阵 | 维度 | 权重 | [技术 A] | [技术 B] | [技术 C] | [技术 D] | |------|------|---------|---------|---------|---------| | ... | ... | 评分(加权) | 评分(加权) | 评分(加权) | 评分(加权) | | **总分** | | **X.XX** | **X.XX** | **X.XX** | **X.XX** | ### 评分依据 (每个评分的简要理由) ### 敏感性分析 (如果调整权重,结论是否会变化?哪些维度的权重变化会导致不同的推荐?) ### 最终推荐 - 🥇 首选:[技术] — [一句话理由] - 🥈 备选:[技术] — [在什么条件下选择] - ⚠️ 不推荐:[技术] — [一句话理由]

实战案例:电商平台技术栈选型全流程

案例背景

一个 5 人全栈团队要构建一个 B2C 电商平台,需要在 6 个月内上线 MVP。预期初期 5000 DAU,1 年内增长到 5 万 DAU。月度基础设施预算 $500。团队熟悉 TypeScript/React,有 PostgreSQL 经验,无 NoSQL 经验。

步骤 1:识别需要做的架构决策

Prompt:

我们是一个 5 人全栈团队,要在 6 个月内构建 B2C 电商平台 MVP。 团队熟悉 TypeScript/React/PostgreSQL。 预期初期 5000 DAU,1 年内增长到 5 万 DAU。 月度基础设施预算 $500。 请帮我识别需要做的关键架构决策,按优先级排序。

AI 输出:

关键架构决策清单(按优先级): 1. 🔴 P0:整体架构模式(单体 vs 微服务 vs Serverless) 2. 🔴 P0:后端框架选型(Express vs Fastify vs NestJS vs Hono) 3. 🔴 P0:数据库策略(单库 vs 读写分离 vs 多库) 4. 🟡 P1:前端框架/元框架(Next.js vs Remix vs Nuxt) 5. 🟡 P1:认证方案(Auth0 vs Clerk vs 自建) 6. 🟡 P1:支付集成(Stripe vs 自建支付网关) 7. 🟡 P1:搜索方案(PostgreSQL 全文搜索 vs Meilisearch vs Algolia) 8. 🟢 P2:缓存策略(Redis vs 应用层缓存) 9. 🟢 P2:文件存储(S3 vs Cloudflare R2) 10. 🟢 P2:部署平台(Vercel + Railway vs AWS ECS vs Fly.io)

步骤 2:执行 P0 决策——后端框架选型

Prompt:

请帮我进行后端框架选型的权衡分析。 项目:B2C 电商平台,TypeScript,5 人团队 候选:Express、Fastify、NestJS、Hono 评估维度权重: - 开发速度:0.25(6 个月 MVP 压力大) - TypeScript 支持:0.20(团队全 TS) - 性能:0.15(5 万 DAU 不算高并发) - 生态成熟度:0.20(需要丰富的中间件) - 学习曲线:0.10(团队有 Express 经验) - AI 工具支持:0.10(大量使用 AI 辅助开发)

AI 输出权衡矩阵:

| 维度 | 权重 | Express | Fastify | NestJS | Hono | |------|------|---------|---------|--------|------| | 开发速度 | 0.25 | 4 (1.00) | 4 (1.00) | 3 (0.75) | 4 (1.00) | | TypeScript 支持 | 0.20 | 3 (0.60) | 5 (1.00) | 5 (1.00) | 5 (1.00) | | 性能 | 0.15 | 3 (0.45) | 5 (0.75) | 4 (0.60) | 5 (0.75) | | 生态成熟度 | 0.20 | 5 (1.00) | 4 (0.80) | 4 (0.80) | 3 (0.60) | | 学习曲线 | 0.10 | 5 (0.50) | 4 (0.40) | 2 (0.20) | 4 (0.40) | | AI 工具支持 | 0.10 | 5 (0.50) | 4 (0.40) | 4 (0.40) | 3 (0.30) | | **总分** | **1.00** | **4.05** | **4.35** | **3.75** | **4.05** | 推荐:Fastify - 首选理由:TypeScript 原生支持最好,性能最优,生态足够成熟 - 风险:部分 Express 中间件不兼容,需要寻找 Fastify 替代 - 备选:Express(如果团队不愿学习新框架)

步骤 3:生成 ADR

Prompt:

基于以上分析,请生成完整的 ADR。 决策:选择 Fastify 作为后端框架。

AI 输出 ADR:

# ADR-0002:选择 Fastify 作为后端 API 框架 ## 状态 已接受 ## 日期 2025-XX-XX ## 背景 团队需要为 B2C 电商平台选择后端 API 框架。团队 5 人,全部使用 TypeScript, 有 Express 经验。项目需要在 6 个月内交付 MVP,预期 1 年内支持 5 万 DAU。 ## 决策驱动因素 - 6 个月 MVP 时间压力,需要高开发效率 - 团队全面使用 TypeScript,需要一流的 TS 支持 - 预期 5 万 DAU,需要合理的性能表现 - 大量使用 AI 辅助开发,需要 AI 工具对框架有良好支持 ## 考虑的选项 ### 选项 1:Express - ✅ 最成熟的 Node.js 框架,生态最丰富 - ✅ 团队已有经验,零学习成本 - ❌ TypeScript 支持需要额外配置 - ❌ 性能在候选方案中最低 ### 选项 2:Fastify - ✅ 原生 TypeScript 支持,类型安全的路由和插件 - ✅ 性能优异(比 Express 快 2-3 倍) - ✅ 插件系统设计优秀,生态快速增长 - ❌ 部分 Express 中间件不兼容 ### 选项 3:NestJS - ✅ 企业级架构,内置依赖注入、模块系统 - ✅ TypeScript 原生支持 - ❌ 学习曲线陡峭(装饰器、DI、模块概念) - ❌ 对 5 人团队来说架构过重 ### 选项 4:Hono - ✅ 超轻量,性能极致 - ✅ 多运行时支持(Node.js/Deno/Bun/Edge) - ❌ 生态较新,第三方库较少 - ❌ AI 工具的训练数据中 Hono 示例较少 ## 决策结果 选择 **Fastify**,因为它在 TypeScript 支持、性能和生态成熟度之间 提供了最佳平衡,且学习成本对有 Express 经验的团队来说可控。 ## 后果 ### 正面后果 - TypeScript 类型安全贯穿路由、插件、请求/响应 - 性能余量充足,5 万 DAU 无压力 - 插件系统便于模块化组织代码 ### 负面后果 - 需要 1-2 周学习 Fastify 的插件系统和生命周期 - 部分 Express 中间件需要寻找 Fastify 替代或编写适配器 ### 风险与缓解 | 风险 | 概率 | 影响 | 缓解措施 | |------|------|------|---------| | Express 中间件不兼容 | 中 | 低 | 使用 @fastify/express 兼容层 | | 团队学习成本超预期 | 低 | 中 | 安排 1 周集中学习,编写团队 Fastify 指南 |

步骤 4:生成 Steering 规则

基于 ADR,AI 自动生成约束后续开发的 Steering 规则:

# 后端框架 Steering 规则(基于 ADR-0002) ## 框架使用 - 使用 Fastify 作为 HTTP 框架,禁止引入 Express - 路由定义使用 Fastify 的 TypeScript 类型系统 - 插件使用 Fastify 的 fp(fastify-plugin)模式封装 ## 中间件 - 优先使用 Fastify 原生插件(@fastify/ 前缀) - 如果必须使用 Express 中间件,通过 @fastify/express 适配 - 自定义中间件使用 Fastify 的 hook 系统(onRequest/preHandler/onSend) ## 性能 - 使用 Fastify 的 JSON Schema 验证(而非 Joi/Zod 运行时验证) - 利用 Fastify 的序列化优化(fast-json-stringify) - 避免在请求处理中使用同步操作

案例分析

关键决策点:

  1. 权重分配反映项目优先级:开发速度权重最高(0.25),因为 6 个月 MVP 是硬约束
  2. AI 工具支持作为评估维度:在 AI 辅助开发时代,框架的 AI 工具支持度成为重要考量
  3. 从权衡矩阵到 ADR 到 Steering 规则:形成完整的决策→记录→约束链条

需要人工审查的点:

  1. Fastify 生态是否满足电商需求:支付、邮件、文件上传等关键中间件是否有 Fastify 版本
  2. 团队实际学习成本:虽然 AI 评估学习曲线为 4 分,但需要团队实际体验确认
  3. 性能评分的基准:AI 引用的性能数据是否基于最新版本的基准测试

避坑指南

❌ 常见错误

  1. 让 AI 直接做决策而非辅助决策

    • 问题:完全依赖 AI 的推荐,不进行人工审查和团队讨论。AI 的推荐受训练数据偏见影响,可能不适合特定项目的独特约束
    • 正确做法:AI 生成分析和推荐,团队讨论后做最终决策。AI 是”分析师”,不是”决策者”。Salesforce 提出的”Human-Led, AI-Powered”方法论强调:AI 辅助分析,人类主导决策
  2. 权衡分析中遗漏”Day 2”运维维度

    • 问题:AI 生成的权衡分析通常聚焦于开发阶段的维度(性能、功能、学习曲线),忽略运维阶段的维度(监控难度、故障排查、升级复杂度、备份恢复)
    • 正确做法:在 Prompt 中明确要求包含运维维度,或使用本文提供的”全生命周期成本模型”确保覆盖所有成本维度
  3. ADR 只记录”选了什么”而不记录”为什么”

    • 问题:ADR 沦为简单的技术选型记录(“我们选了 PostgreSQL”),缺少决策背景、候选方案分析和权衡过程
    • 正确做法:使用本文提供的 ADR 模板,确保每个 ADR 包含完整的决策上下文、候选方案对比、权衡矩阵和后果分析
  4. 权重分配不反映项目实际优先级

    • 问题:使用”平均权重”(每个维度权重相同),导致权衡矩阵无法区分不同项目类型的优先级差异
    • 正确做法:根据项目类型和约束条件调整权重。MVP 项目的”开发速度”权重应该远高于”可扩展性”;金融系统的”安全合规”权重应该远高于”开发速度”
  5. 技术评估只看”当前”不看”未来”

    • 问题:技术评估只关注当前版本的功能和性能,忽略技术的发展趋势、社区活跃度、供应商路线图
    • 正确做法:在评估中加入”12 个月展望”维度,评估技术的长期可持续性。关注 GitHub 提交频率、核心维护者数量、资金支持等信号
  6. 不做敏感性分析

    • 问题:权衡矩阵的结论可能对权重变化非常敏感——稍微调整权重就会改变推荐方案,但决策者不知道这一点
    • 正确做法:在 Prompt 中要求 AI 进行敏感性分析:“如果调整权重,结论是否会变化?哪些维度的权重变化会导致不同的推荐?”
  7. ADR 写完就束之高阁

    • 问题:ADR 写完后从不回顾,即使项目上下文已经发生重大变化(团队扩大、用户增长、需求变更),仍然遵循过时的架构决策
    • 正确做法:建立 ADR 定期审查机制(每季度),使用 AI 辅助评估现有 ADR 是否仍然有效
  8. 忽略团队组织结构对架构的影响

    • 问题:AI 在做架构推荐时通常不考虑团队的组织结构、沟通模式和技术文化(康威定律),导致推荐的架构与团队结构不匹配
    • 正确做法:在 Prompt 中提供团队组织信息:“团队分为 X 个小组,每组 Y 人,负责 Z 领域”,让 AI 基于团队结构推荐匹配的架构

✅ 最佳实践

  1. “Human-Led, AI-Powered”原则:AI 提供分析和建议,人类做最终决策。每个 AI 生成的分析都需要人工审查和校准
  2. 渐进式决策:不要试图一次性做完所有架构决策。先做 P0 决策(整体架构、核心技术栈),再逐步做 P1/P2 决策
  3. ADR 即文化:将 ADR 编写融入团队日常工作流,而非事后补充。每个重要的技术讨论都应该产出 ADR
  4. 权衡矩阵 + ADR + Steering 规则三件套:每个重要架构决策都应该产出这三个产物,形成”分析→记录→约束”的完整链条
  5. 多模型交叉验证:对于高影响决策,使用多个 AI 模型(Claude、GPT、Gemini)分别分析,对比结论的一致性
  6. PoC 验证关键假设:当权衡矩阵无法明确区分候选方案时,设计最小化 PoC 验证关键不确定性
  7. 决策有效期:每个 ADR 标注”建议审查日期”,提醒团队在上下文变化时重新评估
  8. 版本控制一切:ADR、权衡矩阵、Steering 规则全部纳入 Git 版本控制,与代码同步管理

相关资源与延伸阅读

  1. Salesforce: Architectural Decisions — A Human-Led, AI-Powered Approach — 企业级 AI 辅助架构决策方法论,强调人类主导、AI 增强的决策模式

  2. Equal Experts: Accelerating ADRs with Generative AI — 使用生成式 AI 加速 ADR 编写的实践指南

  3. Hands-on Architects: Using Generative AI as an Architect Buddy for ADRs — AI 作为架构师伙伴辅助 ADR 创建的实战经验

  4. adolfi.dev: AI Generated Architecture Decision Records — 使用 AI Agent 扫描代码库自动生成 ADR 的创新实践

  5. MADR (Markdown Any Decision Records) — 最流行的 ADR 模板格式,被广泛用于开源项目和企业

  6. Microsoft AI Decision Framework — 微软发布的 AI 决策框架,提供系统化的评估模式和可视化工具

  7. DataKnobs: Architecture Tradeoff Analysis Method (ATAM) — ATAM 方法的详细解析,包含流程步骤和行业案例

  8. Log4brains — 开源 ADR 知识库管理工具,支持搜索、可视化和 CI/CD 集成


参考来源


📖 返回 总览与导航 | 上一节:30a-AI辅助架构设计概览 | 下一节:30c-系统设计文档AI生成

Last updated on