系统概览

📎 引用文件

本文引用的文件 - README.md - README_zh.md - api_server.py - mcp_server.py - docker-compose.yml - runner.py - __init__.py - config/__init__.py

目录

  1. 简介
  2. 项目结构
  3. 核心组件
  4. 架构总览
  5. 详细组件分析
  6. 依赖关系分析
  7. 性能与扩展性
  8. 故障排查指南
  9. 结论
  10. 附录

简介

Vibe-Trading 是一个前后端分离、面向研究与交易的智能体平台。后端以 FastAPI 提供 REST/SSE/MCP 接口,前端为 React + Vite 的 Web UI;通过 MCP 暴露研究工具,结合多市场回测引擎、数据加载器与交易连接器,形成“AI 代理 → 量化回测 → 数据管理 → 交易集成”的闭环。系统支持 Docker Compose 一键部署,内置安全加固(沙箱执行、最小权限、只读根文件系统)与可观测性(运行产物、审计账本、SSE 心跳)。

项目结构

graph TB subgraph "前端" FE["Web UI<br/>React + Vite"] end subgraph "后端" API["FastAPI 服务<br/>REST/SSE"] MCP["MCP 服务<br/>stdio/http/sse"] AG["Agent 内核<br/>ReAct/工具/记忆"] BT["回测引擎<br/>多市场/组合"] DL["数据加载层<br/>多源注册表"] TR["交易连接器<br/>券商/交易所"] end subgraph "外部" LLM["LLM Provider"] DS["行情/基本面数据源"] BR["券商/交易所网关"] end FE --> API FE --> MCP API --> AG API --> BT API --> TR AG --> DL BT --> DL TR --> BR AG --> LLM

图表来源 - api_server.py:163-183 - mcp_server.py:69-81 - docker-compose.yml:1-90

章节来源 - README_zh.md:1425-1488 - api_server.py:163-183 - mcp_server.py:69-81 - docker-compose.yml:1-90

核心组件

章节来源 - api_server.py:127-183 - mcp_server.py:86-128 - README_zh.md:1425-1488

架构总览

系统采用前后端分离与微服务式模块化设计: - 前端通过 REST/SSE 与 API 交互,或通过 MCP 直接调用工具。 - API 作为编排层,协调 Agent、回测、数据与交易。 - MCP 作为工具总线,供任意 MCP 客户端(Claude Desktop、Cursor、OpenClaw 等)复用能力。 - 数据层通过注册表与 fallback 机制屏蔽异构数据源差异。 - 交易层通过 Connector 抽象隔离不同券商/交易所实现。

sequenceDiagram participant U as "用户/客户端" participant FE as "Web UI" participant API as "FastAPI" participant AG as "Agent" participant DL as "数据加载层" participant BT as "回测引擎" participant TR as "交易连接器" participant LLM as "LLM Provider" U->>FE : 发起研究/回测请求 FE->>API : POST /runs, /sessions, /swarm... API->>AG : 创建会话/目标/任务 AG->>LLM : 推理/工具选择 AG->>DL : 获取行情/基本面 DL-->>AG : 标准化数据帧 AG->>BT : 生成信号/执行回测 BT-->>API : 指标/工件 API-->>FE : SSE 流/结果 FE-->>U : 渲染图表/报告

图表来源 - api_server.py:163-183 - mcp_server.py:69-81

章节来源 - api_server.py:163-183 - mcp_server.py:69-81

详细组件分析

API 服务(FastAPI)

flowchart TD Start(["启动 API"]) --> Preflight["预检查/迁移/调度器"] Preflight --> Middleware["CORS/安全头/SPA深链"] Middleware --> Routes["注册各路由模块"] Routes --> Serve{"是否构建前端?"} Serve -- 是 --> MountFrontend["挂载静态资源/SPA回退"] Serve -- 否 --> Warn["提示构建前端"] MountFrontend --> Run["Uvicorn 监听端口"] Warn --> Run

图表来源 - api_server.py:127-183 - api_server.py:321-395

章节来源 - api_server.py:127-183 - api_server.py:321-395

MCP 服务(工具总线)

classDiagram class FastMCP { +http_app() +tool() } class ToolsRegistry { +build_registry() +execute(name, params) } class GoalStore { +replace_goal() +append_evidence() +update_status() } FastMCP --> ToolsRegistry : "使用" FastMCP --> GoalStore : "读写研究目标"

图表来源 - mcp_server.py:69-81 - mcp_server.py:319-344 - mcp_server.py:530-594

章节来源 - mcp_server.py:69-81 - mcp_server.py:319-344 - mcp_server.py:530-594

回测执行器(Runner)

flowchart TD Enter(["执行入口"]) --> Env["构建受限环境"] Env --> Sandbox["创建临时HOME/链接必要目录"] Sandbox --> RLIMIT["设置RLIMIT_AS/NOFILE"] RLIMIT --> DropUID{"是否可降权?"} DropUID -- 是 --> SubProc["以非特权用户执行"] DropUID -- 否 --> SubProc2["以当前用户执行"] SubProc --> Collect["收集stdout/stderr/工件"] SubProc2 --> Collect Collect --> Cleanup["清理临时HOME"] Cleanup --> Exit(["返回RunResult"])

图表来源 - runner.py:372-620

章节来源 - runner.py:372-620

配置与路径

章节来源 - config/__init__.py:1-25

依赖关系分析

graph LR API["api_server.py"] --> SEC["src/api/security"] API --> ROUTES["各路由模块"] API --> LIFE["preflight/scheduled/channel"] MCP["mcp_server.py"] --> REG["工具注册表"] MCP --> GOAL["GoalStore"] RUNNER["core/runner.py"] --> SUBP["subprocess/rlimit"] COMPOSE["docker-compose.yml"] --> API COMPOSE --> FE["frontend dev/prod"]

图表来源 - api_server.py:163-183 - mcp_server.py:319-344 - runner.py:372-620 - docker-compose.yml:1-90

章节来源 - api_server.py:163-183 - mcp_server.py:319-344 - runner.py:372-620 - docker-compose.yml:1-90

性能与扩展性

[本节为通用指导,不直接分析具体文件]

故障排查指南

章节来源 - api_server.py:127-183 - mcp_server.py:131-140 - runner.py:480-620 - docker-compose.yml:40-66

结论

Vibe-Trading 通过前后端分离与模块化微服务设计,将 AI 代理、量化回测、数据管理与交易集成有机整合。其插件化注册表机制使系统具备高度可扩展性;安全沙箱与资源限制确保在生产环境中的稳健运行;Docker Compose 简化了部署与运维。未来可在更多市场、数据源与交易连接器上持续扩展,同时保持严格的审计与可观测性。

[本节为总结,不直接分析具体文件]

附录

章节来源 - README.md:1-182 - docker-compose.yml:1-90 - api_server.py:321-395