Vibe-Trading 深度解析(一):用 LLM 驱动的完整股票研究智能体架构总览
一条命令,搭建一个具备完整交易研究能力的 AI 智能体------Vibe-Trading 是如何做到的?Github:https://github.com/HKUDS/Vibe-Trading/tree/main
一、项目解决了什么问题?
传统量化研究工作流割裂且繁琐:数据获取、因子计算、策略回测、报告生成、团队协作分布在十几个独立工具中,研究员往往花费大量时间在「胶水代码」上,而非策略本身。
Vibe-Trading 的回答是:以大语言模型(LLM)为中枢神经系统,将全量化研究工作流 Agent 化。它不仅仅是一个聊天机器人,而是一个具备以下能力的智能研究平台:
- 多市场数据接入:18 个免费数据源(yfinance / AKShare / Tushare / OKX / CCXT...)统一通过 Loader Registry 路由
- 460+ Alpha 因子库(Zoo):从 alpha101 到学术论文因子,全部向量化并具备回测
- 多券商实盘连接:IBKR / Robinhood / Alpaca / 长桥 / 老虎 / 币安等 10+ 家,mandate-gate 安全隔离
- 多 IM 通道运行时:Telegram / Discord / Slack / 飞书 / 企业微信 / 钉钉等 16 个即时通讯适配器
- Swarm 多智能体:投资委员会、量化台、风险委员会等多角色协同分析预设
二、技术栈
| 层次 | 技术选型 |
|---|---|
| 后端核心 | Python 3.11+, FastAPI, FastMCP |
| Agent 框架 | LangChain (ChatOpenAI wrapper), 自研 ReAct Loop |
| LLM 支持 | OpenAI / Claude / Gemini / DeepSeek / Kimi / Ollama / 30+ 兼容 provider |
| 数据处理 | Pandas, NumPy, Bottleneck(向量化加速) |
| 数据源 | tushare / yfinance / akshare / ccxt / okx / mootdx / futu + 可选付费层 |
| 前端 | React 19 + TypeScript + Vite |
| 部署 | Docker Compose(多阶段构建、只读根文件系统、资源限制) |
| 配置管理 | Pydantic EnvConfig(单一 Schema,AST CI 门禁防止 os.getenv 蔓延) |
三、目录结构分析
Vibe-Trading/
├── agent/ # 核心后端(Python)
│ ├── src/
│ │ ├── agent/ # ReAct 核心循环(loop.py / context.py / skills.py)
│ │ ├── channels/ # 16 个 IM 适配器 + MessageBus
│ │ ├── providers/ # LLM 工厂 + 能力层(capabilities.py)
│ │ ├── swarm/ # 多智能体 Swarm 运行时 + YAML 预设
│ │ ├── factors/ # Alpha Zoo 基础算子 + 注册表
│ │ ├── trading/ # 券商连接器(mandate-gate 安全模型)
│ │ └── memory/ # 持久化跨会话记忆
│ ├── backtest/ # 向量化回测引擎 + 指标计算
│ └── mcp_server.py # MCP 协议服务端(54 个 tools)
├── frontend/ # React 19 Web UI
└── tools/ # CI 门禁脚本(AST 静态分析)
四、如何使用
目标:用最少步骤跑通「自然语言 → 工具调用 → 可检查产物」。只需任意受支持的 LLM API Key (或本机 Ollama);行情默认走免费源自动 Fallback,无需先配 Tushare。
4.1 三条启动路径
| 路径 | 适用场景 | 大致耗时 |
|---|---|---|
| PyPI 一行安装 | 立刻试用 CLI / MCP | ~1 min |
| Docker | 零本地依赖,Web 一体 | ~2 min |
| 源码开发 | 改 Agent / 前端 / Loader | ~5 min |
路径 A:PyPI
bash
pip install vibe-trading-ai
vibe-trading init # 交互式写入 ~/.vibe-trading/.env
vibe-trading run -p "Backtest a BTC-USDT 20/50 moving-average strategy for 2024 and summarize return and drawdown"
安装后三个入口:
| 命令 | 用途 |
|---|---|
vibe-trading |
交互式 CLI / TUI |
vibe-trading serve |
FastAPI + 内嵌 Web |
vibe-trading-mcp |
MCP Server(Claude Desktop、Cursor、OpenClaw 等) |
路径 B:Docker
bash
git clone https://github.com/HKUDS/Vibe-Trading.git
cd Vibe-Trading
cp agent/.env.example agent/.env # 填入 LLM provider 与 API key
docker compose up --build
浏览器打开 http://localhost:8899。默认只绑定本机;若暴露到局域网,需设置 API_AUTH_KEY。
路径 C:源码开发
bash
python -m venv .venv
# Windows: .venv\Scripts\Activate.ps1
pip install -e .
cp agent/.env.example agent/.env
vibe-trading # CLI
# 或:vibe-trading serve --port 8899
# 前端热更:cd frontend && npm install && npm run dev → http://localhost:5899
4.2 典型用法(自然语言即可)
bash
# 1) 策略回测 + 报告
vibe-trading run -p "Backtest a BTC-USDT 20/50 moving-average strategy for 2024, summarize return and drawdown, then export the report"
# 2) Alpha Zoo 横评(不经过聊天,直接 CLI)
vibe-trading alpha bench --zoo gtja191 --universe csi300 --period 2018-2025 --top 20
# 3) Shadow Account:上传成交 → 抽出你的规则 → 对照回测
vibe-trading --upload trades_export.csv
vibe-trading run -p "Analyze my trading behavior, extract my shadow strategy, and compare it with my actual trades"
# 4) Swarm 委员会(Web 或聊天里也可点 Swarm 预设)
vibe-trading run -p "Use run_swarm with investment_committee to evaluate whether to go long 600519.SH"
# 5) 恢复历史会话
vibe-trading resume <session-id>
Web UI:聊天里直接输入研究问题;+ 菜单可挂载上传、Swarm、Research Goal。Settings 配置 Provider、数据源 token、IM 通道。
4.3 接入已有 Agent(MCP)
bash
vibe-trading-mcp # stdio;也可配 Streamable HTTP / SSE
将 MCP 客户端指向该进程后,即可调用行情、回测、研报、资金流等只读研究工具(不含裸下单面)。细节见官方 Wiki:vibetrading.wiki/docs。
4.4 使用前检查清单
vibe-trading init或 Settings 已写入可用 LLM(OpenAI / DeepSeek / Kimi / Gemini / Ollama 等 30+)。- 网络能访问至少一个免费行情源(腾讯 / Yahoo / OKX / mootdx 等);可选
TUSHARE_TOKEN提升 A 股质量。 - 出问题先跑
vibe-trading provider doctor,再查agent/sessions/下 trace。
五、使用效果
「效果」分两层:界面上能立刻看到的交互效果,以及一次完整研究任务落地的产物效果。
5.1 交互效果(Demo)


5.2 任务效果:输入 → 系统行为 → 你得到什么
| 你怎么用 | 系统实际做什么 | 可见效果 / 产物 |
|---|---|---|
| 「回测某策略并总结」 | ReAct 调 get_market_data → 生成 signal_engine → backtest → 归因 |
聊天结论 + runs// 下 equity、metrics、run_card.md、可选 HTML 报告 |
alpha bench |
对选定 Zoo 批量算 IC / IR | 终端排行榜;Wiki Alpha Library 同源渲染 |
| 上传成交做 Shadow | 解析券商 CSV → 行为画像 → 抽规则 → shadow 回测 | 胜率/处置效应等诊断 + 规则违背/错过信号对照报告 |
run_swarm 委员会 |
DAG 调度多 Worker,聊天内嵌状态卡 | 各角色分报告 + Aggregator final_report;SSE 实时状态 |
| 挂 Research Goal | Goal 准则 + add_goal_evidence 续跑 |
可审计证据账本;未完成准则会强制续轮 |
| IM(飞书/Telegram...) | 同一 Session Runtime 经 Channel 投递 | 手机端收到与 Web 同质的研究结果 |
5.3 相对「手写脚本」的体感差异
- 少胶水:数据源 Fallback、回测引擎选择、报告落盘由 Tool 层完成,用户只描述目标。
- 可检查 :每次 run 有 trace、artifacts、token 用量(
llm_usage.json),不是一次性聊天泡沫。 - 可续跑 :
resume、Goal continuation、Swarmrun_id跟进,长研究不会因一次超时整段作废。 - 可外挂:同一套研究能力经 MCP / REST / IM 复用,不必为每个客户端重写工作流。
说明:系统输出研究与回测结论,不构成投资建议;实盘下单受 mandate-gate 约束,默认研究面只读。
六、系统核心架构
6.1 入口类说明
核心入口类 :AgentLoop(agent/src/agent/loop.py)
AgentLoop 是整个系统的 ReAct(Reason + Act)引擎,负责调度 LLM 推理与工具执行的完整循环。它持有三个核心依赖:
ToolRegistry:工具注册表(68 个 agent 工具)ChatLLM:LLM 客户端(抽象为src.providers.chat.ChatLLM)WorkspaceMemory:工作区记忆(当前运行状态)

6.2 关键流程:ReAct 主循环

6.3 关键实现点:五层上下文压缩
这是 Vibe-Trading 最具工程价值的设计之一,在 loop.py 开头注释中已明确:
| 层次 | 触发条件 | 代价 | 机制 |
|---|---|---|---|
| Layer 1: microcompact | tokens > threshold×50% | 零 API | 清除旧工具结果(保留最近 3 条) |
| Layer 2: context_collapse | tokens > threshold×70% | 零 API | 折叠长文本块(保留首尾) |
| Layer 3: auto_compact | tokens > threshold | 1次 LLM | 结构化摘要生成 |
| Layer 4: compact tool | 模型显式调用 | 1次 LLM | 同 Layer 3 |
| Layer 5: iterative update | 连续压缩 | 1次 LLM | 更新已有摘要(非重建) |
python
# 实际代码摘取(loop.py)
if tokens > int(_token_threshold() * 0.5):
_microcompact(messages)
if tokens > int(_token_threshold() * 0.7):
_context_collapse(messages)
if tokens > _tok_threshold:
self._auto_compact(messages, run_dir, trace, iteration=current_iter)
_context_collapse 的零代价折叠策略:保留最近 6 条消息不压缩,对更早的长文本(>2400 字符)截取头 900 字符 + 尾 500 字符,中间记录字符数。整个操作无需调用 LLM,成本为零。
七、技术总结
Vibe-Trading 的架构核心是**"LLM as ReAct Engine + Skill/Tool Ecosystem"**。与市面上大多数「LLM + 工具调用」方案相比,它的特别之处在于:
- 无框架绑定的自研 ReAct Loop:不依赖 LangGraph/AgentExecutor,直接控制消息历史和工具调用流程,保持对上下文生命周期的完全掌控
- 五层分级上下文压缩:在 LLM 上下文窗口约束与信息保真之间精细权衡,零代价优先
- Provider 能力层解耦 :通过
capabilities.py把各模型的特殊行为(Gemini thought signatures / DeepSeek reasoning_content / Kimi temperature 限制)收进能力描述符,不污染主循环 - 读写批处理工具执行:连续只读工具通过线程池并发执行,写操作串行,兼顾吞吐与安全
- 开箱即用的多入口:CLI / Web / MCP / IM 共用同一套 Session Runtime,研究产物可检查、可续跑
下一篇将聚焦多 IM 工具通道 的工程实现------16 个适配器如何通过 BaseChannel 抽象与 MessageBus 统一接入同一个 agent session runtime。
