架构设计
Source: Notion | Last edited: 2026-01-06 | ID: 2e02d2dc-3ef...
架构设计方案:Alpha Forge 对话式策略平台
基于 zen-architect 的分析,以下是三套架构方案:
方案一:单体扩展架构 (Layer Cake)
核心理念:在现有 Alpha Forge 之上添加新层,最小化改动,最快上线。
┌─────────────────────────────────────────────────────────────┐
│ 对话层 (Conversation Layer) │
│ Web UI ◀──▶ Chat API ◀──▶ Session Manager ◀──▶ Suggestion │
├─────────────────────────────────────────────────────────────┤
│ AI层 (NL-to-DSL Engine) │
│ Intent Parser → Template Selector → DSL Generator │
├─────────────────────────────────────────────────────────────┤
│ 现有 Alpha Forge (不变) │
│ DSL Compiler → Orchestrator → Backtest → Plugins │
├─────────────────────────────────────────────────────────────┤
│ 部署层 (Deployment Layer) │
│ Signal Subscription │ Code Generator │ Config Store │
└─────────────────────────────────────────────────────────────┘
| 组件 | 职责 |
|-------------------|--------------------------------------|
| Web UI | React/Next.js 对话界面,策略可视化 |
| NL-to-DSL Engine | LLM 编排:自然语言 → DSL 生成 → 验证 |
| Suggestion Engine | 分析回测结果,生成改进建议 |
| Code Generator | 平台特定执行代码 (Binance/OKX) |
优势:4-6周实现,单人可维护,风险最低
劣势:扩展性有限,LLM调用可能阻塞执行
复杂度:低
方案二:微服务架构 (Federated)
核心理念:拆分为独立服务,通过消息队列通信,独立扩展和部署。
┌─────────────┐
│ API Gateway │
└──────┬──────┘
┌──────────┬───────────┼───────────┬──────────┐
▼ ▼ ▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐
│Conversation│ │NL-to-DSL│ │ Backtest │ │ Signal │ │ Code Gen │
│ Service │ │ Service │ │ Service │ │ Service │ │ Service │
└─────┬──────┘ └────┬─────┘ └────┬─────┘ └────┬─────┘ └──────────┘
└─────────────┴────────────┴────────────┘
│
┌─────────▼─────────┐
│ Message Queue │
│ (Redis/NATS) │
└─────────┬─────────┘
│
┌────────────────┼────────────────┐
▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌──────────┐
│Suggestion│ │Experiment│ │ Data │
│ Service │ │ Store │ │ Service │
└──────────┘ └──────────┘ └──────────┘
| 服务 | 技术栈 | 职责 |
|----------------------|---------------------|-----------------------|
| Conversation Service | FastAPI + WebSocket | 会话管理、历史记录 |
| NL-to-DSL Service | Python + Claude | LLM编排、DSL生成 |
| Backtest Service | Alpha Forge Core | 包装现有编译器+编排器 |
| Signal Service | Rust/Go | 高性能实时信号推送 |
| Code Gen Service | Python + Jinja2 | 平台特定代码生成 |
优势:独立扩展、故障隔离、技术栈灵活
劣势:运维复杂、网络延迟、需要 K8s 专业知识
复杂度:高 (12-16周)
方案三:事件驱动无服务器架构 (Event Sourcing)
核心理念:所有状态变更都是事件,函数响应事件触发,按使用付费。
┌─────────────────────────────────────────────────────────────┐
│ Web UI (React + WebSocket) │
└───────────────────────────┬─────────────────────────────────┘
│
┌───────────────────────────┼─────────────────────────────────┐
│ API Gateway Layer │
│ WebSocket Gateway │ REST API │ Event Publisher │
└───────────────────────────┬─────────────────────────────────┘
│
┌───────────────────────────▼─────────────────────────────────┐
│ Event Bus (EventBridge/Kinesis) │
│ Events: UserMessage │ DSLGenerated │ BacktestDone │ Signal │
└───────────────────────────┬─────────────────────────────────┘
│
┌──────────┬──────────┼──────────┬──────────┐
▼ ▼ ▼ ▼ ▼
┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐
│NL-to-DSL│ │Backtest │ │Suggestion│ │ Signal │ │Code Gen │
│ Lambda │ │ECS/Batch│ │ Lambda │ │ Lambda │ │ Lambda │
└─────────┘ └─────────┘ └─────────┘ └─────────┘ └─────────┘
│
┌───────────────────────────▼─────────────────────────────────┐
│ Event Store │
│ Event Log (DynamoDB) │ Views (RDS) │ Artifacts (S3) │
└─────────────────────────────────────────────────────────────┘
事件流示例:
UserMessage → NL-to-DSL → DSLGenerated → Backtest
→ BacktestComplete → Suggestion → SuggestionReady → User
优势:完美审计追踪、零闲置成本、无限扩展、自然异步
劣势:事件溯源学习曲线、Lambda冷启动、AWS绑定
复杂度:中高 (8-10周)
对比矩阵
| 维度 | 单体扩展 | 微服务 | 事件驱动 |
|------------|----------|---------|----------|
| MVP时间 | 4-6周 | 12-16周 | 8-10周 |
| 扩展性 | 有限 | 高 | 很高 |
| 运维复杂度 | 低 | 高 | 中 |
| 规模成本 | 固定 | 可变 | 最低 |
| 调试难度 | 容易 | 困难 | 中等 |
| 团队规模 | 1-2人 | 4+人 | 2-3人 |
| 审计追踪 | 手动 | 手动 | 内置 |
建议路径
阶段一:从单体扩展开始
-
最快验证产品市场契合度 (PMF)
-
对现有系统零风险
-
单人可实现和维护
阶段二:演进到事件驱动
-
PMF验证后,将对话层抽取为事件
-
Alpha Forge Core 变成 “Backtest Function”
-
获得审计追踪和扩展性
理由:
-
对话AI天然是异步的,事件驱动契合
-
每次交互都是事件,自带审计追踪
-
Alpha Forge 已是 DAG-based,映射到事件流自然
-
按使用付费符合研究工作负载特征(突发性)