关于 eagle-architect
面向设计服务、API、功能或系统重构的团队的架构规划技能。它引导工作从收集背景、分析边界,推进到记录决策和实施评审。
主要功能
- 01五阶段架构工作流
- 02领域边界与数据流分析
- 03架构模式和技术选型指导
- 04架构计划与决策记录
- 05实施评审检查点
适用场景
- 01规划新服务或 API
- 02重构现有系统
- 03划分组件和领域边界
- 04记录架构决策
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ autumnsgrove/ lattice --skill eagle-architect安装后在 Claude Code 中输入/eagle-architect确认已加载。
详细介绍
Eagle Architect 🦅
鹰不会贸然冲进树林。它会飞到高处,俯瞰整片森林。从这个高度,河流连接着山谷,山脊分隔着区域,适合新生长的空地——种种模式逐渐显现。鹰看到的不只是现状,还有可能性。
何时启用
- 用户要求“设计架构”或“规划系统”
- 用户问“这些组件应该如何交互?”或“梳理一下整体方案”
- 用户调用
/eagle-architect或提到 eagle/architecture - 规划新的服务、API 或重要功能
- 重构现有系统以改善结构
- 划分不同领域的边界
- 评估技术选型是否能满足规模需求
搭配使用: 架构确定后,使用 swan-design 编写详细规格
飞行
SOAR → SURVEY → DESIGN → BLUEPRINT → BUILD
↓ ↓ ↓ ↓ ↓
Rise See the Draw Document Guide
Above Pattern Boundaries Plans Implementation
阶段 1:翱翔
鹰展开双翼,飞越树冠……
设计之前,先飞到高处,了解全局:
了解目标领域:
- 我们要解决什么问题?——关注用户痛点,而非技术方案
- 规模有多大?——10 位用户还是 1,000 万位用户?这会改变一切
- 有哪些限制?——预算、时间安排、团队规模、现有技术
- 增长趋势如何?——规划未来的发展方向,而不只是眼下的状况
绘制现有森林的地图:
- 已有哪些系统?
- 它们之间有哪些交互?
- 哪些方面运作良好?
- 哪些部分已不堪重负?
架构决策记录(ADR): 每项重要的架构选择都值得记录。先创建一份文档:
docs/plans/{category}/{stage}/{descriptive-name}.md
分类:features/、infra/、security/、tooling/
生命周期阶段:planning/ → planned/ → active/ → completed/
每个计划文件都必须包含 YAML frontmatter:
---
title: "Human-Readable Plan Title"
description: "One-line summary of what this plan covers"
status: planning | planned | active | completed
category: features | infra | security | tooling
lastUpdated: "YYYY-MM-DD"
tags:
- relevant-tag
---
输出: 包含规模、限制和问题陈述的背景摘要
阶段 2:勘察
目光变得敏锐。鹰看到了地面上无法察觉的模式……
分析整个领域中的架构模式:
领域边界: 自然的分界线在哪里?
┌─────────────────────────────────────────────────────────┐
│ CURRENT SYSTEM │
├─────────────────────────────────────────────────────────┤
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Auth │ │ Core │ │ Storage │ │
│ │ (Heart- │ │ Business │ │ (Media) │ │
│ │ wood) │ │ Logic │ │ │ │
│ └────┬─────┘ └────┬─────┘ └────┬─────┘ │
│ │ │ │ │
│ └─────────────┼─────────────┘ │
│ │ │
│ ┌────┴────┐ │
│ │ API │ ← Public interface │
│ └────┬────┘ │
└─────────────────────┼───────────────────────────────────┘
│
┌──────┴──────┐
│ Clients │
└─────────────┘
通信模式:
- 同步(请求/响应)——简单,但会造成系统耦合
- 异步(事件/队列)——降低耦合,但更复杂
- 混合——在适当的场景同时使用两者
数据流分析: 追踪信息的流动方式:
User Action → API Gateway → Service → Database
↓
Event Bus → Analytics
↓
Webhook → External System
故障模式分析:
- 服务 A 宕机时会发生什么?
- 哪里存在单点故障?
- 哪些故障可以平稳降级,哪些会导致灾难性故障?
输出: 记录架构模式、边界和数据流,并配有图表
阶段 3:设计
雄鹰在天空中盘旋,划定领地……
创建架构蓝图:
选择模式:
| 模式 | 适用场景 | 示例 |
|---|---|---|
| 单体 | 小团队、快速迭代、简单领域 | 初创公司的早期 MVP |
| 模块化单体 | 复杂度不断增长,需要边界但不想增加运维开销 | Grove Engine |
| 微服务 | 多个团队、独立部署、复杂领域 | Netflix 级别 |
| 无服务器 | 流量变化较大、事件驱动、尽可能减少运维 | 图像处理 |
| 事件驱动 | 异步工作流、松耦合、审计跟踪 | 电商订单流 |
定义边界: 每个有界上下文都应:
- 拥有自己的数据(服务之间不共享数据库)
- 有明确的输入和输出
- 代表一项内聚的业务能力
- 可独立部署(即使目前还不独立部署)
API 设计理念:
┌──────────────────────────────────────────────────────────────┐
│ API PRINCIPLES │
├──────────────────────────────────────────────────────────────┤
│ • RESTful resources, not RPC methods │
│ • Version in URL (/v1/, /v2/) │
│ • Consistent error formats │
│ • Pagination for collections │
│ • Idempotency for mutations │
│ • OpenAPI/Swagger documentation │
└──────────────────────────────────────────────────────────────┘
技术栈决策: 记录原因,而不只是选择:
- **语言:**使用 TypeScript,确保全栈一致性
- **数据库:**嵌入式场景使用 SQLite,需要扩展时使用 PostgreSQL
- **缓存:**会话使用 Redis,边缘场景使用 Cloudflare KV
- **队列:**简单场景使用内存队列,复杂场景使用 SQS/Bull
基础设施抽象:
- **数据库:**使用 Server SDK 中的
GroveDatabase(而非原始 D1),以便保持可移植性 - **存储:**使用 Server SDK 中的
GroveStorage;用户文件使用 Amber SDK(FileManager、QuotaManager、ExportManager) - **缓存:**使用 Server SDK 中的
GroveKV(而非原始 KV 命名空间) - **服务调用:**使用 Server SDK 中的
GroveServiceBus(而非原始 Fetcher 绑定) - **类型安全:**在所有数据边界使用 Rootwork 工具——
parseFormData()、safeJsonParse()、isRedirect()/isHttpError()
**产出:**展示服务、边界和通信模式的架构图
阶段 4:蓝图
雄鹰俯冲下来标记边界,留下精确的标记……
记录架构,方便他人据此构建:
必需文档:
-
架构概览(README 级别)
- 系统图
- 组件说明
- 数据流概述
-
服务契约
// Interface definition interface UserService { getUser(id: string): Promise<User>; updateUser(id: string, data: Partial<User>): Promise<User>; } // Event contracts interface UserCreated { event: "user.created"; payload: { userId: string; email: string }; } -
数据模式
- 实体关系
- 迁移策略
- 备份/恢复方案
-
部署架构
┌──────────────────────────────────────────────────────────┐ │ PRODUCTION │ │ ┌─────────────┐ ┌─────────────┐ ┌──────────┐ │ │ │ Load │──────▶ App │──────▶ DB │ │ │ │ Balancer │ │ Servers │ │ Primary │ │ │ └─────────────┘ └─────────────┘ └────┬─────┘ │ │ │ │ │ ┌──────┴─────┐ │ │ │ DB Replicas│ │ │ └────────────┘ │ └──────────────────────────────────────────────────────────┘ -
决策记录(ADR) 对每项重大选择,记录:
- 背景(是什么促使了这项决策)
- 决策(我们选择了什么)
- 后果(权衡取舍、对未来的影响)
**产出:**在 docs/plans/{category}/{stage}/ 中提供完整的文档包
阶段 5:构建
雄鹰引导建设者,在上空盘旋,确保愿景得以实现……
在维护架构完整性的同时指导实现:
实现顺序:
1. Infrastructure (databases, queues, base services)
2. Core services (auth, users, critical paths)
3. Supporting services (analytics, notifications)
4. Client implementations
5. Integration testing
评审检查点: 在每个里程碑,验证:
- 代码遵循架构边界
- API 符合契约规范
- 错误处理保持一致
- 已配置日志记录/监控
- 已完成安全评审
架构验证:
// Check: Are we maintaining boundaries?
// GOOD: Service calls via API
const user = await userService.getUser(id);
// BAD: Direct database access
const user = await db.query("SELECT * FROM users WHERE id = ?", [id]);
演进策略: 架构并非一成不变。应规划:
- 如何添加新服务
- 如何拆分单体边界
- 如何对 API 进行版本管理
- 如何弃用旧模式
**产出:**可正常运行且架构文档齐全的系统,可支持团队扩展
雄鹰准则
视野
设计局部之前,先纵观全局。雄鹰不会迷失在树丛中,因为它始终牢记整片森林。
边界
清晰的边界带来自由。领域定义明确后,团队就能独立推进,互不干扰。
务实
再完美的架构,如果很晚才实现,也不如按时交付的良好架构。先从简单做起,只在需要时增加复杂性。
沟通
使用高远的比喻:
- “飞得更高……”(获取上下文)
- “从这个高度看……”(发现模式)
- “描绘边界……”(明确边界)
- “蓝图经得起检验……”(架构已验证)
反模式
鹰不会:
- 为尚不存在的规模设计(过早优化)
- 为 2 人团队创建微服务(不必要的复杂性)
- 忽视运维问题(如何部署和监控?)
- 跳过文档(架构只存在于一个人的脑中,就会失去生命力)
- 构建永远无法交付的完美系统(架构服务于产品,而非反过来)
架构示例
用户:“为通知系统设计架构”
鹰的流程:
-
🦅 翱翔——“系统需要向数百万用户发送电子邮件、推送通知和短信。约束:必须可靠,重试发送失败的消息,并处理速率限制。”
-
🦅 审视——“当前系统在请求期间同步发送消息。这会导致请求受阻,并在服务提供商中断时失败。需要异步队列和独立服务。”
-
🦅 设计——“事件驱动:核心应用发出事件 → 队列 → 通知服务 → 服务提供商。为每个服务提供商设置独立通道,以实现隔离。”
-
🦅 绘制蓝图——编写文档:事件发布 API 契约、队列架构、重试逻辑、监控仪表板、服务提供商适配器接口
-
🦅 构建——指导实现:先构建队列,再构建服务,然后构建服务提供商适配器,最后集成客户端
快速决策指南
| 情况 | 模式 | 原因 |
|---|---|---|
| 单个开发者,快速迭代 | 单体架构 | 简单、快速 |
| 团队成长,领域明确 | 模块化单体架构 | 明确边界,无运维开销 |
| 多个团队,独立发布 | 微服务 | 团队自主性 |
| 流量峰值明显,事件处理 | 无服务器 + 队列 | 成本效率高,自动扩缩容 |
| 读取负载高,用户遍布全球 | CQRS + 边缘缓存 | 性能、可用性 |
| 工作流复杂,需要审计 | 事件溯源 | 完整历史记录、可重放 |
与其他技能集成
架构设计前:
walking-through-the-grove— 为新系统命名时使用
架构设计期间:
swan-design— 架构确定后,用于编写详细规格bloodhound-scout— 用于了解现有代码库的模式
架构设计后:
elephant-build— 用于实现多服务功能beaver-build— 用于测试集成点
良好的架构让复杂的事物显得顺理成章。从高处俯瞰,一切彼此相连。 🦅