Skip to content

01 - 架构设计食谱

从技术选型到系统架构,用 AI 辅助做出可靠的架构决策。


适用场景

场景痛点本食谱解法
技术选型犹豫不决信息散落、对比维度不统一食谱 1:多维度加权矩阵
系统设计缺乏全局视角口头描述不够精确食谱 2:分层架构方案
API 接口反复变更前后端约定不一致食谱 3:契约先行设计
数据库设计遗漏关系实体关系考虑不全食谱 4:实体关系建模
模块职责不清耦合过紧、边界模糊食谱 5:职责与依赖分析
架构决策无据可查事后忘记当初为什么选 A 不选 B食谱 6:ADR 标准化模板

食谱 1:技术选型对比

场景描述

在多个框架/库/方案中做出选择,从 AI 友好度、性能、生态等维度系统对比,产出可执行的推荐结论。

核心模板

text
我正在为 {{项目名称}} 做技术选型。

项目背景:
- 类型:{{项目类型,如 SaaS/移动端/CLI 工具}}
- 团队:{{人数和技术背景}}
- 规模:{{用户量/数据量/并发量}}
- 时间:{{上线时间约束}}

候选方案:{{候选方案列表,如 Next.js vs Nuxt vs Remix}}

请从以下维度对比:
1. 成熟度 — 版本稳定性、breaking change 频率
2. 社区与生态 — GitHub Stars、npm 周下载量、插件丰富度
3. 性能与可扩展性 — 基准测试数据、已知瓶颈
4. 学习曲线 — 上手时间、文档质量
5. AI 友好度 — 类型安全、文档密度、约定优先程度

输出:对比矩阵表格(每项 1-5 分)+ 加权总分 + 各方案优劣势 + 最终推荐

变量说明

变量说明示例
{{项目名称}}项目代号TaskFlow 任务管理系统
{{项目类型}}应用形态全栈 Web SaaS
{{人数和技术背景}}团队情况1 人,熟悉 React 和 Node.js
&#123;&#123;用户量/数据量/并发量&#125;&#125;量化约束初期 1k DAU,数据量 < 10GB
&#123;&#123;候选方案列表&#125;&#125;待对比选项Next.js 14 vs Remix v2 vs Nuxt 3

好坏对比

模糊提问

text
Next.js 和 Remix 哪个好?帮我选一个。

结构化提问

text
我要做一个个人博客+作品集站点,1 人开发,熟悉 React。
需要 SSG 为主、偶尔 SSR,部署到 Vercel。
对比 Next.js 14 App Router vs Astro 4,
从构建速度、内容管理友好度、AI 友好度三个维度分析,给出推荐。

实战案例

text
项目:个人记账 App(Web + PWA)
团队:1 人,3 年 React 经验,无 Vue 经验
规模:初期 500 用户,数据量 < 1GB
时间:4 周 MVP
候选:Next.js 14 vs Remix v2
维度:AI 友好度、全栈能力、PWA 支持、部署成本
请输出对比表格和推荐结论。

Claude 增强 💡

text
先用 Web Search 获取 Next.js 14 和 Remix v2 的最新 npm 周下载量、
GitHub Stars 和最近一次 breaking change 的日期,
然后基于实际数据填充对比矩阵,不要用模糊的定性描述。

食谱 2:系统架构方案设计

场景描述

为项目设计整体架构,包括分层结构、核心组件、数据流向和部署方式,输出可落地的架构方案文档。

核心模板

text
为 {{项目名称}} 设计系统架构方案。

功能需求:{{核心功能列表,3-5 条}}

非功能需求:
- 性能:{{响应时间/吞吐量}}
- 可用性:{{SLA 要求}}
- 安全:{{认证/授权要求}}

技术约束:
- 框架:{{已确定的技术栈}}
- 部署:{{云平台/自建/Serverless}}
- 预算:{{月成本上限}}

请输出:
1. 架构分层图(ASCII 字符画或 Mermaid 语法)
2. 各层职责说明(每层 2-3 句话)
3. 核心组件清单及交互方式
4. 关键数据流示意(主要用户场景的请求链路)
5. 需要权衡的技术决策点(至少 2 个)

变量说明

变量说明示例
&#123;&#123;项目名称&#125;&#125;项目代号BookShelf 读书管理
&#123;&#123;核心功能列表&#125;&#125;主要功能书籍 CRUD、阅读进度追踪、笔记标注
&#123;&#123;已确定的技术栈&#125;&#125;技术约束Next.js + Prisma + PostgreSQL
&#123;&#123;云平台/自建/Serverless&#125;&#125;部署形态Vercel + Supabase
&#123;&#123;月成本上限&#125;&#125;预算$20/月(含数据库)

好坏对比

模糊提问

text
帮我设计一个读书 App 的架构。

约束明确

text
帮我设计读书管理 App 的架构。1 人开发,Next.js + Supabase,部署 Vercel。
核心功能:书籍管理、阅读进度、笔记。预算 $20/月。
请用 ASCII 字符画分层架构图,说明每层职责。单体优先,不要微服务。

实战案例

text
项目:TaskFlow — 个人任务管理 SaaS
功能:任务 CRUD、看板视图、番茄钟、周报生成
技术栈:Next.js 14 App Router + Prisma + PostgreSQL
部署:Vercel (前端) + Railway (数据库),预算 $10/月
请输出 ASCII 分层架构图、目录结构建议、关键数据流示意。

Claude 增强 💡

text
请用 ASCII 字符画出架构图(+--+ 画框、--> 画箭头),不用 Mermaid。
确保架构中每个技术选择都符合 AI 友好度 S/A 级别。

食谱 3:API 契约设计

场景描述

编码前先定义 API 输入输出契约,含 endpoint、请求响应格式、错误码,确保前后端有明确的接口规范。

核心模板

text
为 {{模块名称}} 设计 RESTful API 契约。

业务背景:{{模块核心业务逻辑,2-3 句话}}

资源/实体:{{实体列表及关键字段}}

技术约束:
- 框架:{{如 Next.js Route Handlers / FastAPI}}
- 校验:{{如 zod / pydantic}}
- 认证:{{如 JWT / NextAuth Session}}

请输出:
1. API 端点清单(方法 + 路径 + 简述)
2. 每个端点的请求/响应 TypeScript 类型定义
3. 统一错误响应格式(含错误码枚举)
4. 分页、排序、过滤的查询参数约定
5. 认证与权限要求标注

变量说明

变量说明示例
&#123;&#123;模块名称&#125;&#125;功能模块用户管理模块
&#123;&#123;模块核心业务逻辑&#125;&#125;业务描述支持注册、登录、信息修改和头像上传
&#123;&#123;实体列表及关键字段&#125;&#125;核心实体User: id, email, name, avatar, role
&#123;&#123;框架&#125;&#125;后端框架Next.js 14 Route Handlers
&#123;&#123;校验库&#125;&#125;数据校验zod

好坏对比

模糊提问

text
帮我写用户管理的 API。

契约先行

text
先为用户管理模块设计 API 契约,不要写实现代码。
实体:User (id, email, name, avatar, role, createdAt)
框架:Next.js Route Handlers + zod 校验
端点:注册、登录、获取/更新个人信息、上传头像
输出 TypeScript 类型定义和端点清单。
错误响应统一用 { error: string, code: string } 格式。

实战案例

text
模块:书籍管理
实体:Book (id, title, author, isbn, coverUrl, status, rating, userId)
status 枚举:WANT_READ | READING | FINISHED | DROPPED
框架:Next.js 14 Route Handlers + zod
认证:NextAuth Session(userId 从 session 获取)

设计 CRUD + 状态变更 + 按状态筛选的 API 契约。
输出 zod schema 定义和端点清单。
分页用 cursor-based,排序支持 createdAt 和 rating。

Claude 增强 💡

text
基于上面的 API 契约,直接生成 OpenAPI 3.0 spec(YAML 格式),
包含 paths、requestBody、responses 和 components/schemas。
  • 如果项目已采用 Zod → OpenAPI 工作流,在定义 zod schema 时同步添加 .openapi() 元数据(description + example),避免事后补充。详见 doc-17 API 接口维护体系

食谱 4:数据模型设计

场景描述

从用户故事或需求描述推导数据模型,设计 ER 关系、字段定义、索引策略和种子数据。

核心模板

text
为 {{项目名称}} 设计数据模型。

核心业务实体:
{{实体及其业务含义,每个 1 句话}}

业务规则:
{{实体间的关系和约束,3-5 条}}

技术约束:
- 数据库:{{如 PostgreSQL / SQLite}}
- ORM:{{如 Prisma / Drizzle / SQLAlchemy}}
- 特殊需求:{{软删除/多租户/审计日志等}}

请输出:
1. ER 图(Mermaid erDiagram 语法)
2. ORM Schema 定义(完整可执行代码)
3. 索引策略(哪些字段需要索引及原因)
4. 种子数据示例(至少 3 条记录)
5. 迁移注意事项

变量说明

变量说明示例
&#123;&#123;项目名称&#125;&#125;项目代号TaskFlow
&#123;&#123;实体及其业务含义&#125;&#125;核心实体Task: 待办事项;Tag: 分类标签;TimeLog: 番茄钟记录
&#123;&#123;实体间的关系和约束&#125;&#125;业务规则Task 可有多个 Tag(多对多);TimeLog 属于一个 Task
&#123;&#123;数据库类型&#125;&#125;数据库PostgreSQL
&#123;&#123;ORM 工具&#125;&#125;ORMPrisma

好坏对比

模糊提问

text
帮我设计任务管理的数据库。

约束完整

text
用 Prisma + PostgreSQL 设计任务管理的数据模型。
实体:User、Task、Tag、TimeLog
关系:User 1:N Task,Task M:N Tag,Task 1:N TimeLog
要求:软删除、自动时间戳、Task.status 用枚举
请输出 Prisma schema 和 Mermaid ER 图。
索引:按 userId+status 复合索引,按 createdAt 排序索引。

实战案例

text
请从以下用户故事推导数据模型:
- US-1:作为用户,我想记录正在读的书,追踪阅读进度
- US-2:作为用户,我想为每本书打分和写笔记
- US-3:作为用户,我想记录每天的阅读时长和页数
技术栈:PostgreSQL + Prisma
要求:输出完整 Prisma schema,Book 按 ISBN 去重,阅读状态用枚举。

Claude 增强 💡

text
读 @prisma/schema.prisma,在现有模型基础上新增实体,确保与已有 User 兼容。
生成增量迁移 SQL 预览,确认后再执行 prisma migrate dev。

食谱 5:模块划分与依赖分析

场景描述

分析现有代码库的模块边界,检测循环依赖,重新划分职责清晰的模块结构。

核心模板

text
为 {{项目名称}} 进行模块划分与依赖分析。

系统功能概览:
{{功能列表,5-10 条}}

技术栈:{{语言/框架}}

当前痛点(如有):
{{现有代码的结构问题}}

设计原则偏好:
- {{按功能切分 vs 按层切分}}
- {{单体内模块化 vs 微服务}}

请输出:
1. 模块清单(模块名 + 职责 + 对外接口)
2. 模块依赖关系图(Mermaid flowchart)
3. 循环依赖检测结果与解耦建议
4. 推荐目录结构
5. 模块间通信方式(函数调用/事件/消息队列)
6. 需要警惕的耦合风险点

变量说明

变量说明示例
&#123;&#123;项目名称&#125;&#125;项目代号TaskFlow
&#123;&#123;功能列表&#125;&#125;系统功能用户认证、任务 CRUD、看板视图、番茄钟、统计报表
&#123;&#123;语言/框架&#125;&#125;技术栈Next.js 14 + TypeScript
&#123;&#123;现有代码的结构问题&#125;&#125;痛点所有逻辑集中在 pages/api,service 和 controller 混在一起

好坏对比

模糊提问

text
帮我把项目重构一下,代码太乱了。

问题导向

text
我的 Next.js 项目 app/api/ 下每个 route.ts 直接操作 Prisma,无 service 层。
功能:用户、任务、看板、番茄钟、统计。请按功能领域划分模块,给出:
1. 目录结构(src/modules/{feature}/ 模式)
2. 每个模块的 public API(函数签名)
3. 依赖方向图(不允许循环依赖)+ 共享代码放置策略

实战案例

text
项目:TaskFlow,Next.js 14 App Router + Prisma
现状:app/api/ 下 15 个 route.ts,直接 import prisma,无 service 层
功能:用户认证、任务管理、标签、番茄钟、周报、通知
请按 feature-based 模式重组为 src/modules/{feature}/,
app/api/ 只做路由转发。输出模块清单、依赖图和迁移步骤。

Claude 增强 💡

text
先读 @src/ 下所有 TS 文件的 import 语句,生成依赖图(Mermaid flowchart),
标记循环依赖路径并给出解耦方案。不改代码,先输出分析报告。

食谱 6:架构决策记录(ADR)

场景描述

记录重要架构决策的背景、候选方案、理由和后果,确保团队(含未来的自己)能追溯决策过程。

核心模板

text
为以下架构决策撰写 ADR。

决策标题:{{决策标题}}
背景:{{为什么需要做这个决策,1-3 句话}}
约束:{{技术、时间、成本等限制}}

候选方案:
1. {{方案 A}}:{{简述}}
2. {{方案 B}}:{{简述}}
3. {{方案 C(如有)}}:{{简述}}

已选方案:{{选中的方案}}

请按以下格式输出:
- 标题(ADR-NNN: 简短描述)
- 状态(Proposed / Accepted / Deprecated)
- 背景(Context)— 业务和技术上下文
- 决策(Decision)— 选了什么
- 理由(Rationale)— 为什么选 A 不选 B,逐条对比
- 后果(Consequences)— 正面影响 + 负面影响 + 需接受的代价
- 合规检查(Compliance)— 如何验证决策被正确执行

变量说明

变量说明示例
&#123;&#123;决策标题&#125;&#125;决策简称选择 Prisma 作为 ORM
&#123;&#123;背景&#125;&#125;决策上下文需要 TS 友好的 ORM,支持 PostgreSQL 和迁移
&#123;&#123;约束&#125;&#125;限制因素必须支持 Serverless,冷启动 < 3s
&#123;&#123;方案 A/B/C&#125;&#125;候选项Prisma / Drizzle ORM / TypeORM
&#123;&#123;选中的方案&#125;&#125;最终决策Prisma

好坏对比

事后补记

text
我们用了 Prisma,帮我写个 ADR。

决策过程完整

text
写一份 ADR:ORM 选型。
背景:个人全栈项目,Next.js + PostgreSQL,需要类型安全的 ORM。
候选:Prisma(声明式 Schema)、Drizzle(SQL-like API)、Kysely(查询构建器)
约束:支持 Vercel Serverless、迁移管理、AI 辅助友好。已选:Prisma。
请分析各方案优劣,说明选择 Prisma 的理由及需接受的代价。

实战案例

text
请根据以下讨论记录自动生成 ADR:
主题:状态管理方案选型(Next.js 14 App Router 项目)
讨论要点:
- 小明:Server Component 为主,客户端状态少,Context 够用
- 小红:后续可能加复杂表单,Zustand 更有弹性
- 结论:选 Zustand,学习成本低且可渐进式引入
请在 Rationale 中反映双方观点。

Claude 增强 💡

text
读 @docs/adr/ 已有 ADR,保持编号连续和格式一致,新编号为最大编号 +1。
生成后自动更新索引文件。

组合技巧

技巧组合路径适用场景
选型→架构→API 三连食谱 1 → 2 → 3,每步确认后继续新项目从零开始
数据驱动设计食谱 4 → 3 → 5,关键决策用食谱 6 记录业务实体已明确
遗留系统重构食谱 5(分析现状)→ 6(记录决策)→ 2(设计目标架构)现有项目改造
/plan 协同/plan 生成任务清单,再按清单执行食谱 1-6复杂系统设计

新项目全流程串联:食谱 1(选型)→ 2(架构)→ 4(数据模型)→ 3(API 契约)→ 5(模块划分)→ 6(记录 ADR),每步确认后再进下一步。


相关资源

面向个人开发者的 AI 辅助编程工程化方案