内容
# 贸易汇聚 Crew
<div align="center">
**用于加密货币分析和专业交易日志的多智能体 AI 系统**
*支持 CrewAI · FastAPI · .NET 8 · React 18*
[](https://www.python.org/)
[](https://dotnet.microsoft.com/)
[](https://reactjs.org/)
[](https://fastapi.tiangolo.com/)
[](https://crewai.com/)
[](https://docs.docker.com/compose/)
[](LICENSE)
> **不是交易机器人。** 决策支持系统 — AI 分析,您决策。
</div>
---
## 概述
贸易汇聚 Crew 是一个自托管的、适用于加密货币交易者的多智能体决策支持平台。您提供交易对、时间范围、余额和风险承受能力。由五个智能体组成的 CrewAI 流水线并行运行技术分析、新闻情感、链上信号和风险评估 — 然后综合结构化建议和图表注释。您审查输出,决定是否采取行动,并手动记录交易。
所有智能体推理通过 Redis Pub/Sub → SignalR WebSockets 流式传输到 UI,提供透明的“思维过程”窗口,以便 AI 工作。每次分析和交易都存储在 PostgreSQL 中,并可通过具有股权曲线、回撤指标和执行质量评分的专业交易日志访问。
---
## 架构

该系统基于四个层级的严格分离构建,所有层级均由 Docker Compose 协调:
| 层级 | 技术 | 责任 |
|-------|-----------|---------------|
| **前端** | React 18, Vite, lightweight-charts, Zustand | UI,图表,实时遥测显示 |
| **.NET 8 API** | ASP.NET Core, EF Core, PostgreSQL, SignalR | 业务逻辑,数据所有权,交易生命周期 |
| **Python AI 服务** | FastAPI, CrewAI v2, pandas | 无状态多智能体分析引擎 |
| **内部 MCP 服务器** | Python MCP SDK(stdio 传输) | 智能体抽象层 |
**关键架构约束:** Python AI 服务不向任何数据库写入数据。PostgreSQL 是 .NET API 层的专属领域。这种无状态设计使得 AI 服务可独立测试并水平扩展。
---
## AI 流水线

### 五个专业智能体
流水线设计具有明确的依赖关系管理 — 数据智能体首先运行,TA 和新闻智能体并行运行,风险智能体加入它们的输出,协调器综合所有内容:
```
[数据智能体]
│
├──────────────────────────┐
▼ ▼
[TA 智能体] [新闻 + 链上智能体]
(pandas-ta,MCP 工具) (CryptoPanic,RSS,Binance 期货)
│ │
└──────────┬────────────────┘
▼
[风险智能体]
(ATR 基 SL/TP,动态杠杆)
│
▼
[协调器]
(加权综合,冲突检测,图表注释)
│
▼
结构化 JSON → .NET API → PostgreSQL → 前端
```
#### 智能体角色
| 智能体 | 角色 | 关键工具(MCP) |
|-------|------|-----------------|
| **数据智能体** | 获取 OHLCV 蜡烛,准备共享市场上下文 | `get_ohlcv` → ccxt → Binance |
| **TA 智能体** | 计算指标,检测背离和支撑/阻力水平 | `calculate_indicator`(pandas-ta),`detect_divergence`,`get_support_resistance` |
| **新闻智能体** | 配对特定 + 宏观情绪,分为两层 | `get_pair_news`(CryptoPanic),RSS 级联(CoinDesk,CoinTelegraph,Decrypt) |
| **链上智能体** | 衍生品市场信号 | `get_funding_rate`,`get_open_interest`,`get_long_short_ratio`(Binance 期货) |
| **风险智能体** | 头寸调整,SL/TP,动态杠杆边界 | `get_volatility_metrics`,ATR 基计算 |
| **协调器** | 加权情感综合,冲突检测,图表注释 | — (纯综合) |
### 工程决策
**ReAct优于 Pydantic 输出约束。** CrewAI v2 的 `output_pydantic` 强制子智能体优先考虑模式生成而不是工具探索,从而破坏 ReAct 循环。我们删除了所有子智能体的 `output_pydantic` — 它们输出纯文本并自由探索工具。只有协调器强制执行严格的 JSON 模式,确保结构化输出而不牺牲推理质量。
**多提供商工厂的 LLM 策略模式。** `LLMFactory` 从模型字符串前缀解析正确的 API 密钥环境变量(`anthropic/`,`openai/`,`gemini/`,`github_models/`,`ollama/`)。每个智能体可以使用不同的提供商,实现零代码切换和 GitHub Models 的 150 req/day 每模型限制分布在 5 个模型上以获得 750 个有效请求/天。
**基于 Parquet 文件的 OHLCV 缓存。** CrewAI 的 `MCPServerStdio` 为每个工具调用生成一个全新的子进程,销毁所有内存状态。我们将共享的 DataFrame 持久化为 Parquet 文件,以会话 UUID 为键,在子进程重启后存活。缓存会在每个分析会话后清除。
**基于 RSS 的新闻策略。** DuckDuckGo 严格限制 IP。备用链为:CryptoPanic API(如果提供密钥)→ CoinDesk RSS → CoinTelegraph RSS → Decrypt RSS → DuckDuckGo(最后手段)。如果没有关键词匹配,则返回空列表,触发低置信度报告而不是通用标题。
---
## 功能
### 🤖 多智能体 AI 流水线
- 五个专业 CrewAI v2 智能体,具有明确的依赖顺序
- TA 和新闻智能体并行运行;风险智能体在定义的同步点加入其输出
- 每个智能体使用内部 MCP 服务器进行工具调用(数据,指标,新闻,链上)
- 通过 Redis Pub/Sub → SignalR → WebSockets 将智能体思维过程实时流式传输到 UI
### 📊 高级图表
- 由 `lightweight-charts`(TradingView OSS)支持的烛状图表
- 客户端指标叠加层:EMA-20,EMA-50,布林带
- RSI(14)和 MACD(12,26,9)子面板与主图表同步
- AI 生成的图表注释:支撑/阻力线,背离标记,SL/TP 水平
### 📔 专业交易日志
- 手动交易入口和出口,具有执行质量评分(好/一般/差)
- 使用 lightweight-charts 截图 API 在入口和出口时捕获图表快照
- 标签系统(突破,反转,趋势跟随,新闻驱动等)具有多选芯片 UI
- 高级投资组合指标:股权曲线,最大回撤,期望值,恢复因子,夏普/索蒂诺,平均 R:R,每月 PnL 分解,胜/负 streak
### 🔁 多时间范围汇聚
- 单击切换在多个时间范围内运行分析(1h,4h,1d 等)
- 显示跨时间范围方向一致性的汇聚表
- 将 MTF 结果持久化到数据库以进行历史比较
### ⏱️ 向量回测引擎
- 无 LLM 调用进行历史策略模拟 — 在 1 秒内完成
- `BacktestEngine` 将协调器的信号逻辑转换为 Pandas 向量算法
- ccxt 批量获取 → pandas 信号生成 → 股权曲线 → 交易明细分解
- 可选的交易费用模拟和最大交易限制以获得现实的结果
### 🔍 AI 交易审查助手
- 通过单个直接 LLM 调用(无 CrewAI 开销)按需评估已关闭的交易
- 评估:计划遵守情况,SL/TP 理性,时机(早/晚/最佳),改进建议
- 集成到交易日志和分析详情页面,具有玻璃态 UI
### 🎯 模型准确性跟踪
- 分析后,系统查询 Binance 获取实际价格变动,1h,4h,24h 间隔
- 计算 SL/TP 目标是否达到并记录准确性分数
- 投资组合页面显示全局准确性统计数据;历史页面显示每项分析的准确性徽章
### 📋 策略模板
- 预设策略配置文件:标量,日内,摆动,持仓
- 设置中的自定义构建器:配置时间范围集,最小 R:R,指标/新闻权重
- 策略选择在每次分析时持续以便历史审查
### 🔔 警报系统
- 仪表板小部件显示高置信度,非中立的近期信号
- 分析比较:两个历史分析的并排视图
---
## UI 预览

---
## 技术栈
| 层级 | 技术 | 版本 |
|-------|-----------|---------|
| 前端 | React,Vite,lightweight-charts(TradingView OSS),Zustand | React 18,Vite 5 |
| API | ASP.NET Core,EF Core,PostgreSQL | .NET 8 |
| 实时 | Redis Pub/Sub,SignalR | Redis 7 |
| AI 服务 | Python,FastAPI,CrewAI | Python 3.12,CrewAI v2 |
| MCP 服务器 | Python MCP SDK(stdio 传输) | — |
| LLM 提供商 | Anthropic,OpenAI,Gemini,GitHub Models,Ollama | 多提供商 |
| 市场数据 | ccxt(Binance),Binance 期货 API | — |
| 指标 | pandas-ta,自定义背离/支撑阻力检测 | — |
| 新闻 | CryptoPanic API,RSS(CoinDesk,CoinTelegraph,Decrypt) | — |
| 部署 | Docker Compose,多阶段 Docker 构建 | Compose v2 |
| 数据库 | PostgreSQL(Docker 命名卷) | Postgres 16 |
---
## 项目结构
```
贸易汇聚 Crew/
├── ai-service/ # Python AI 服务
│ ├── app/
│ │ ├── api/ # FastAPI 端点(/analyze,/backtest,/review)
│ │ ├── crew/
│ │ │ ├── prompts/ # 每个智能体的提示工程文件
│ │ │ │ ├── data_agent.py # 数据上下文提示
│ │ │ │ ├── ta_agent.py # 技术分析提示
│ │ │ │ ├── news_agent.py # 新闻和情感提示
│ │ │ │ ├── risk_agent.py # 方向感知风险计算提示
│ │ │ │ ├── onchain_agent.py # 资金 / OI / LS 比率提示
│ │ │ │ └── orchestrator.py # 综合和冲突检测提示
│ │ ├── llm/
│ │ │ ├── factory.py # 多提供商 LLM 工厂(策略模式)
│ │ │ └── config.py # 提供商 → API 密钥映射
│ │ ├── mcp_server/
│ │ │ ├── tools/
│ │ │ │ ├── data_tools.py # get_ohlcv(ccxt → Binance)
│ │ │ │ ├── indicator_tools.py # calculate_indicator,detect_divergence,S&R
│ │ │ │ ├── news_tools.py # CryptoPanic + RSS 级联 + 文章刮刀
│ │ │ │ └── onchain_tools.py # 资金利率,OI,Long/Short 比率
│ │ │ ├── cache.py # 基于 Parquet 文件的 OHLCV 会话缓存
│ │ │ └── server.py # MCP 协议处理程序(stdio 传输)
│ │ ├── schemas/ # Pydantic 请求/响应模型
│ │ └── services/
│ │ ├── analysis_orchestrator.py # 单 TF 流水线入口点
│ │ ├── multi_tf_orchestrator.py # 多时间范围汇聚引擎
│ │ ├── backtest_engine.py # 向量化的 pandas 回测引擎
│ │ ├── trade_review_engine.py # 直接 LLM 交易评估
│ │ └── telemetry_publisher.py # Redis Pub/Sub 智能体步骤发布者
│ ├── Dockerfile
│ └── requirements.txt
│
├── api/ # .NET 8 API — 清洁架构
│ └── src/
│ ├── Confluence.API/
│ │ ├── Controllers/ # 9 个控制器(Analysis,Trade,Portfolio,Backtest...)
│ │ ├── Hubs/ # SignalR 分析中心(WebSocket 广播)
│ │ └── BackgroundServices/ # RedisTelemetrySubscriber(Redis → SignalR)
│ ├── Confluence.Application/ # DTOs,服务接口,应用服务
│ ├── Confluence.Domain/ # 实体:Trade,Analysis,Pair,UserSettings,
│ │ # StrategyTemplate,TradeReview,AnalysisAccuracy
│ └── Confluence.Infrastructure/ # EF Core DbContext,迁移,存储库
│
├── frontend/ # React 18 SPA
│ └── src/
│ ├── components/
│ │ ├── Analysis/ # ControlPanel,SynthesisPanel,TelemetryConsole,
│ │ │ # ConfluenceGauge,AccuracyDashboard,AlertWidget
│ │ ├── Chart/ # TradingChart(lightweight-charts + 指标叠加层)
│ │ ├── Trade/ # TradeForm,TradeReviewPanel,SnapshotLightbox
│ │ └── Backtest/ # BacktestDashboard
│ ├── hooks/ # useBinanceData,useAnalysisLogic
│ ├── pages/ # Dashboard,Trading,Portfolio,Backtest,
│ │ # History,Compare,Trades,Settings,Landing
│ ├── services/ # apiClient.js,signalrClient.js
│ └── store/ # Zustand 状态管理
│
├── docs/
│ ├── architecture.md # 系统架构,层级职责,端到端数据流
│ ├── agents.md # 智能体定义,I/O 模式,流水线依赖图
│ ├── mcp_tools.md # 内部 MCP 服务器工具定义和参数模式
│ ├── db_schema.md # PostgreSQL 模式,索引,EF Core 迁移历史,PnL 计算
│ └── setup.md # 完整设置指南,env 变量,烟雾测试,网络故障排除
│
├── docker-compose.yml # 5 服务编排(db,redis,ai-service,api,frontend)
├── .env.example # 多提供商 LLM 配置参考
└── README.md
```
---
## 快速开始
> 完整设置指南,包括故障排除和网络配置:[`docs/setup.md`](docs/setup.md)
### erequisites
- Docker 和 Docker Compose v2+
- 至少一个 LLM 提供商 API 密钥(参见配置)
- Binance API 密钥/密码(可选 - 提高市场数据速率限制)
- CryptoPanic API 密钥(可选 - 启用特定配对新闻)
### 1. 克隆
```bash
git clone https://github.com/aeren23/confluence-trade-crew.git
cd confluence-trade-crew
```
### 2. 配置
```bash
cp .env.example .env
# 编辑 .env - 设置至少一个 LLM 提供商密钥
```
### 3. 运行
```bash
docker compose up --build
```
### 4. 打开
| 服务 | URL |
|---------|-----|
| 前端 | [http://localhost:3000](http://localhost:3000) |
| .NET API 健康检查 | [http://localhost:5000/health](http://localhost:5000/health) |
| AI 服务健康检查 | [http://localhost:8000/health](http://localhost:8000/health) |
---
## 配置
`.env.example` 文件包含完整的跨提供商参考。选择任何支持的 LLM 提供商用于每个智能体 - 或对所有智能体使用相同的提供商:
```bash
# --- Anthropic (Claude) ---
# ANTHROPIC_API_KEY=sk-ant-...
# DATA_AGENT_MODEL=anthropic/claude-3-5-haiku-20241022
# --- OpenAI ---
# OPENAI_API_KEY=sk-...
# DATA_AGENT_MODEL=openai/gpt-4o-mini
# --- Google Gemini ---
# GEMINI_API_KEY=AIza...
# DATA_AGENT_MODEL=gemini/gemini-1.5-flash
# --- GitHub Models (free tier: 150 req/day per model) ---
# Distribute across 5 models for 750 effective req/day:
# DATA_AGENT_MODEL=github_models/gpt-4.1-nano
# TA_AGENT_MODEL=github_models/Mistral-Small-3.1
# NEWS_AGENT_MODEL=github_models/Meta-Llama-3.1-8B-Instruct
# RISK_AGENT_MODEL=github_models/Llama-3.3-70B-Instruct
# ORCHESTRATOR_MODEL=github_models/gpt-4.1-mini
# --- Ollama (local, no API key) ---
# DATA_AGENT_MODEL=ollama/llama3.1
```
**可选服务:** 如果未设置 `BINANCE_API_KEY`,数据智能体将使用公共 Binance 端点(速率限制)。如果未设置 `CRYPTOPANIC_API_KEY`,新闻智能体将回退到 RSS 级联 - 仍然功能正常,但置信度分数降低。
---
## 关键设计决策
- **不是交易机器人。** 该系统生成分析和建议。所有交易入口、出口和头寸管理都是手动的。AI 服务无权访问任何交易所或数据库。
- **单用户,自托管,BYOK。** 携带自己的 API 密钥。无 SaaS,无多租户,无托管部署。在您的机器或私有服务器上使用 `docker compose up` 运行。
- **无状态 AI 层。** Python FastAPI 服务在请求之间保持零状态。这简化了横向扩展,使服务可独立测试,并确保 PostgreSQL(由 .NET 所有)是单一事实来源。
- **通过 stdio 的内部 MCP 服务器。** 将 MCP 服务器作为 AI 服务容器的子进程运行,避免额外的 Docker 服务,额外的网络和端口配置。stdio 传输对于单个容器使用是同步和可靠的。
- **矢量化的回测,而不是每个蜡烛的 LLM。** 调用完整的 CrewAI 流水线来获取每个历史蜡烛将花费数千美元,并需要数小时。回测引擎将协调器的信号逻辑转换为 Pandas 数学算法,在不到一秒的时间内完成历史扫描。
- **方向感知的风险智能体。** 早期版本仅计算多头仓位的 SL/TP。风险智能体现在读取 TA `sentiment_score` 以确定 LONG/SHORT/NEUTRAL 方向,然后计算水平 - 熊市分析生成 SL 高于阻力,TP 高于当前价格,防止倒置推荐。
---
## 解决的挑战
| 挑战 | 解决方案 |
|-----------|---------|
| MCP 子进程销毁内存缓存 | 基于 Parquet 文件的 OHLCV 缓存,键控会话 UUID - 在进程重启后存活 |
| DuckDuckGo 限制新闻请求 | RSS 级联:CoinDesk → CoinTelegraph → Decrypt → DuckDuckGo(最后手段) |
| GitHub Models 每个模型 150 req/day 配额 | 在 5 个不同模型上分布一个模型(750 个有效请求/天) |
| CrewAI `output_pydantic` 破坏 ReAct 工具探索 | 智能体输出纯文本;只有协调器强制执行 JSON 模式 |
| Docker 容器被排除在主机 WARP VPN 之外 | SOCKS5 代理(`host.docker.internal:40000`)路由到 Cloudflare WARP 代理模式 |
| 熊市分析产生多头仓位 SL/TP | 方向感知风险智能体在计算水平之前读取 `ta_sentiment_score` |
| CrewAI 启动时的遥测 OTLP 垃圾信息 | 在第一个 `crewai` 导入之前设置 `OTEL_SDK_DISABLED=true` |
| 相同的通用新闻标题适用于每个资产 | 删除 `or all_items` RSS 备用;空列表触发低置信度报告 |
---
## 文档
| 文档 | 描述 |
|----------|-------------|
| [`docs/architecture.md`](docs/architecture.md) | 系统架构,层级职责,端到端数据流 |
| [`docs/agents.md`](docs/agents.md) | CrewAI 智能体定义,I/O 模式,流水线依赖图 |
| [`docs/mcp_tools.md`](docs/mcp_tools.md) | 内部 MCP 服务器工具定义和参数模式 |
| [`docs/db_schema.md`](docs/db_schema.md) | PostgreSQL 模式,索引,EF Core 迁移历史,PnL 计算 |
| [`docs/setup.md`](docs/setup.md) | 完整设置指南,env 变量,烟雾测试,网络故障排除 |
---
## 路线图
- [ ] 交易所 API 集成以进行自动头寸监控(只读)
- [ ] 电子邮件 / Telegram / Discord 警报通知
- [ ] 图表标题上的 ATR 波动性徽章
- [ ] 公共 MCP 服务器模式 - 将系统公开为 Claude/Cursor 智能体的工具
- [ ] 🎬 演示视频(即将推出)
---
## 重置
```bash
# 停止,保留数据
docker compose down
# 完整重置(删除所有数据库数据)
docker compose down -v
```
---
## 许可
本项目根据 MIT 许可协议授权。有关详细信息,请参阅 [LICENSE](LICENSE)。
MCP 配置
以下是此 MCP Server 的配置信息,可直接复制到 Cursor 或其他 MCP 客户端中使用。
mcp.json
连接信息
猜你喜欢
暂无推荐服务器