MCPcopy Index your code
hub / github.com/HKUDS/Vibe-Trading

github.com/HKUDS/Vibe-Trading @v0.1.10 sqlite

repository ↗ · DeepWiki ↗ · release v0.1.10 ↗
7,721 symbols 32,630 edges 1,056 files 3,830 documented · 50% 34 cross-repo links
README

English | 中文 | 日本語 | 한국어 | العربية

Vibe-Trading Logo

Vibe-Trading:你的个人交易智能体

一条命令,让你的智能体具备完整交易研究能力

HKUDS%2FVibe-Trading | Trendshift

Python FastAPI React PyPI License

Feishu WeChat Discord

官网  ·  文档  ·  News  ·  Features  ·  Shadow Account  ·  Demo  ·  Quick Start  ·  Examples  ·  API / MCP  ·  Roadmap  ·  Contributing

pip install vibe-trading-ai


📰 News

  • 2026-06-19 🚀 v0.1.10 — 全球数据层:行情数据源从 10 个增至 18 个(免费直连 东方财富 / 新浪 / Stooq / Yahoo + 可选 key 的 Finnhub / Alpha Vantage / Tiingo / FMP,按封禁风险排序 fallback),外加 18 个只读数据工具(资金流、龙虎榜、北向、融资融券、大宗交易、SEC EDGAR + XBRL、财报、期权链、全市场筛选……)覆盖 A股 / 美股 / 港股,全部经 MCP 暴露。本版同时卷入 0.1.9 以来的全部更新——10 个券商连接器、alpha compare、provider 可靠性大修、可选数据缓存。pip install -U vibe-trading-ai
  • 2026-06-18 🔬 Research Autopilot 第一阶段 + 本地 Data Bridge 加载器,外加 Discord 安全提示:新增 run_research_autopilot + generate_backtest_config,把假设 → 研究目标 → 回测打通(现 50 个工具),新 local 加载器直接从你的 CSV / Parquet / DuckDB 文件读 OHLCV(#260#252,感谢 @Robin1987China),并修了 DeepSeek DSML 工具调用解析与一波标识符收敛加固。⚠️ 安全提示:旧社区 Discord 邀请现指向一个我们已无法控制、跑着假冒 Collab.Land 钱包"验证"钓鱼的服务器——已全部移除;唯一官方 Discord 是 HKUDS 服务器(discord.gg/6TdQnT5xcF),我们绝不会要求你连接钱包。
  • 2026-06-17 🧩 安装兼容 + Opus/Kimi provider 修复:基础 pip install vibe-trading-ai 不再拉取可选的 pyharmonics / ta 依赖链;谐波形态识别现在放到 vibe-trading-ai[harmonic] extra 后面,同时保留内置 fallback 检测器(#250,关闭 #249)。Agent loop 也不再发送 Opus 4.8+ 会拒绝的 assistant-prefill handoff 消息,Kimi/Moonshot 可通过 MOONSHOT_USER_AGENT 覆盖客户端 User-Agent#248,关闭 #246#204);后续测试已直接覆盖 background-result 与 auto-compact 两条 handoff 路径(#251)。

更早的更新

  • 2026-06-16 🛡️ 安全/API 加固 + GLM/Zhipu alias:Settings 写入在配置认证时必须鉴权(#245);API session 中 shell-capable 工具必须显式设置 VIBE_TRADING_ENABLE_SHELL_TOOLS=1 才会暴露(#243);配置 API key 后 local shutdown 也要求鉴权(#241);看似 loopback 但不可信的 Host 会被拒绝,而不再被当成本地请求(#242)。运行边角也继续打磨:Web chat 会同步已完成尝试(#236),run card 对非有限指标写出 strict JSON(#238),畸形 RSSHUB_TIMEOUT_S / RSSHUB_FETCH_BUDGET_S 会安全回退(#240),ddgs retry fallback 已有回归覆盖(#239)。GLM/Zhipu 现在是一等 provider alias,并支持按模型名推断(#247,关闭 #237)。

  • 2026-06-15 🧭 Web 搜索韧性 + Web UI 运行连续性修复web_search 不再因单个引擎被限流而失败——现在按序查询多个免费、免 key 的引擎(DuckDuckGo、Google、Bing、Brave、Mojeek、Yahoo),带重试/退避,把"无结果"当作空答案而非错误,所有引擎都被限流时返回可操作的提示而不是一个干巴巴的 ❌(可用 VIBE_TRADING_SEARCH_BACKENDS 覆盖引擎列表)(#232,关闭 #231,感谢 @Ethan-sun01)。Web UI 方面,运行过程中切换页面不再卡死——聊天页返回时会重新订阅实时流并回放期间错过的进度(#234)——停止按钮现在会在流式中和工具之间即时生效,而不只是在迭代边界(#235),两个症状一起关闭了 #229(感谢 @kalkinj)。baostock loader 也开始接受原生的 sh.601398 / sz.000001 代码格式,与 tushare 风格的 601398.SH 并存(#230,感谢 @bhlt)。

  • 2026-06-14 📊 按运行记录 token 用量 + Run Detail 图表按需加载:每次 agent 运行现在都会把 provider 上报的 token 用量持久化为运行级的 llm_usage.json——provider/模型、累计总量、逐迭代计数——并附加到 /runs/{id} 上,这样一次运行结束、实时流消失后,它的 token 成本依然可审计(仅 provider 上报值;不抓 prompt/内容,不估算价格)(#223,感谢 @LemonCANDY42)。Run Detail 页面也不再一上来就加载每个标的的 K 线:默认 /runs/{id} 响应保持不变,但 UI 现在先渲染运行摘要,再通过可选的 ?chart_payload=summary / ?chart_symbol= 模式按需加载每个标的的图表,带有逐标的的加载状态和一个"全部加载 + 进度"控件(#225,感谢 @LemonCANDY42)。两个 loader 修复收尾:yfinance 的排他 end 边界不再漏掉请求范围内的最后一个交易日——下载调用现在传 end + 1 天,而缓存键仍保留原始范围(#226,感谢 @gyx09212214-prog);畸形的 CCXT_TIMEOUT_MS / OKX_TIMEOUT_S 值现在会告警并回退到默认值,而不是在 import 时抛错、阻塞启动(#227,感谢 @gyx09212214-prog)。

  • 2026-06-13 ↩️ 从 CLI 按 ID 恢复历史会话:交互式 CLI 现在会在退出时打印 session-id,并附上可直接复制的 vibe-trading resume <session-id> 提示——找某次运行对应的 trace 不再需要靠时间戳去猜 agent/sessions/ 下哪个目录最新。新增的 vibe-trading resume <session-id> 子命令会重新打开那个确切的会话,并把最近几轮对话回放进 loop;ID 不存在时会立即报错退出,而不是静默开一个空会话(#218,感谢 @zwrong)。
  • 2026-06-12 🩺 Provider 可靠性大修——DeepSeek 卡死、Kimi 接入、流式存活:一批 provider 报告——DeepSeek 运行卡在"智能体工作中…"(#208,感谢 @XYWOX)、reached max iterations 掩盖了模型空响应(#203,感谢 @mojianliang)、卡住后 UI 无法恢复(#195,感谢 @mafia23)、Kimi 拒绝客户端(#204,感谢 @liao497)——指向同一个根因:所有 OpenAI 兼容 provider 共用一个 shim,把 DeepSeek/Kimi/Gemini 的协议怪癖全局套用,还静默吞掉流式失败。现在 provider 专属行为收进显式的能力层(capability layer)——reasoning 捕获/回放、Gemini thought signature、Kimi User-Agent、OpenRouter reasoning body 各自只作用于自己的 provider,不再互相污染。纯 reasoning 流式会显示实时 "Reasoning…" 指示而不是一片死寂;流式失败会抛出带上下文的 provider_stream_error,瞬态中断自动重试一次(确定性 4xx 立即失败),不再静默降级为慢速非流式调用;模型空响应被如实诊断为 empty_model_response 而非"max iterations";SSE 心跳不再破坏重连回放;卡死的只读工具会超时退出而不是永远躲在心跳后面。新增 vibe-trading provider doctor,一条命令打印脱敏的 provider/模型/包/代理快照,快速定位环境侧假卡死。DeepSeek 用户可通过 pip install "vibe-trading-ai[deepseek]" 启用官方原生 adapter;kimi-k2.x 的 temperature=1 要求自动适配——Kimi 链路已对真实 API 完成端到端验证(kimi-k2.6 工具调用 + 严格多轮 reasoning 回放)。

  • 2026-06-11 🐝 Swarm worker 全面接入 loader 层行情数据:一次 NVDA 投资委员会运行暴露出一串缺口——worker 自己手写 yfinance 脚本、轻信了一根残缺的最新 K 线(有成交量但 OHLC 为空)、NaN 泄漏进非严格 JSON,丢失上下文的续跑 prompt 还被路由到错误的 preset(#198,感谢 @BillDin 出色的诊断和两个修复 PR)。现在 swarm worker 拥有本地 get_market_data 工具,与 MCP 共用同一套归一化 loader 注册表——严格 JSON、非有限浮点序列化为 null——并接入所有行情类 preset(13 个 preset、21 个 worker),prompt 政策引导 OHLCV 工作优先走工具(#199);run_swarm 支持显式 preset_name,含糊的续跑片段会被直接拒绝,而不是静默回落到 equity_research_team#200)。Grounding 也更聪明:swarm prompt 里裸写的美股代码(如 NVDA)会自动提升为 NVDA.US(带停用词防误判),worker 从一开始就拿到权威的预取价格。该工具同时进入主 agent 注册表——现在共 48 个工具。另外:Docker 数据现在可以跨更新存活——持久记忆、会话搜索索引、自建 skills、shadow account 和 broker 配置都放进了命名数据卷,docker compose up --build 不会再清空它们(#197,感谢 @FlyerJ)。

  • 2026-06-10 🐳 Docker 开箱即可访问宿主机 Ollama:容器内的 localhost 指向容器自身,默认的 OLLAMA_BASE_URL=http://localhost:11434 让所有 Docker + Ollama 组合的 LLM 预检直接失败。docker-compose.yml 现在默认指向 http://host.docker.internal:11434(导出 OLLAMA_BASE_URL 可覆盖),并加入 host-gatewayextra_hosts 映射,在 Linux 上与 Docker Desktop 一样开箱即用(#196,感谢 @ShahNewazKhan)。
  • 2026-06-09 🔑 从另一台机器打开 Web UI 时的报错更清晰:从非 loopback 客户端(另一台机器、虚拟机宿主机、局域网里的手机)访问聊天且未设 API_AUTH_KEY 时,所有敏感接口——发消息、列会话、live 状态——都会返回 403,但聊天界面只笼统显示 “Failed to send message, please retry.”。现在发送路径会直接给出真实原因——“Remote API access requires an API key. Add it in Settings, or run the backend on localhost for local-only use.”——README 的 Web UI 配置说明也讲清了 localhost 与局域网的区别以及三种解法(在同一台机器上用 localhost 访问;设置 API_AUTH_KEY 并在 Settings 里填一次;或为 Docker Desktop 宿主网关设 VIBE_TRADING_TRUST_DOCKER_LOOPBACK=1)(#191,感谢 @mafia23)。
  • 2026-06-08 🔧 Gemini 3.x 多轮工具调用修复:补全了 Gemini 3.x 思考模型的修复。6/05 的回传(#176)只覆盖了内存中的历史,而真正的 agent loop 会把历史以 OpenAI 格式的 dict 回放,LangChain 在构建请求前丢掉了每个工具调用的 thought_signature——导致多轮工具调用仍以 missing thought_signature 报 400。现在它会在 invokestream 共用的唯一入口 _convert_input 处重新挂回(并行调用——N 个里只有第一个带签名——也已涵盖)(#184,感谢 @ngoanpv)。
  • 2026-06-07 🐝 聊天时间线中的实时 swarm 状态:当 agent 启动多智能体 swarm(投资委员会、量化台、风险委员会……)时,聊天界面现在会内联渲染一张状态卡,实时流式展示每个 worker 的状态——等待 / 运行 / 完成 / 失败 / 阻塞 / 重试——与独立 swarm 仪表盘一致的逐 agent 可见性。运行时事件被桥接进会话 SSE 流,且不改动现有的 /swarm/runs API;重连或回放历史时,已结束的卡片会从最终的 run_swarm 结果复原(#188,感谢 @BillDin)。preset 路由也更精准:显式指定的 preset(如 investment_committee,带不带下划线均可)现在优先于关键词打分,而裸 IV 衍生品关键词也不再误匹配 “given” 之类普通单词(#189,感谢 @BillDin)。
  • 2026-06-06 ⚖️ Alpha 对比 —— CLI / Web UI / REST / agent 四端齐全:新增 alpha compare,把你手选的一组 Alpha Zoo 因子放在同一 universe 和区间上两两对比,按 IC 均值/标准差、IR、IC>0 比例或样本数排名,并标出每个因子与榜首的差距。不同于整库 bench,它只评估你点名的因子(新增 run_bench(only=…) 子集过滤),所以对比 3 个因子不会再把整库 191 个全跑一遍。四端共用同一套核心:vibe-trading alpha compare <id1> <id2> … --sort ir(CLI)、Alpha Zoo Web UI 的 Compare 视图(在目录里勾选因子 → 一键对比 + 流式排名表)、POST /alpha/compare + SSE(REST),以及只读的 alpha_compare agent 工具(工具数达 47)。
  • 2026-06-05 🇮🇳 Dhan + Shoonya connector(印度)——10 家券商:connector-first 交易层新增 DhanShoonya 两个印度券商(NSE/BSE 股票 + F&O),券商总数达到十家。两者均为模拟盘 + 只读——与长桥一样,其 API 不暴露运行时的模拟/正式判别标识,因此 place_order / cancel_order 在第一行就硬拒任何非模拟配置(通用规则:无结构性模拟/正式守卫的券商一律封顶模拟盘 + 只读)(#181,收尾 #174)。本轮还修复了 Gemini 2.5 / 3.x 思考模型:每个工具调用的 thoughtSignature 现在能在 OpenAI 兼容路径上完整回传,多轮 function calling 不再因 INVALID_ARGUMENT 失败(#176,关闭 #170,感谢 @mvanhorn 与 @jliu6789)。全部 452 个 Alpha Zoo 因子补上了中文 docstring(中文名称/说明/用途)(#180,感谢 @LeeCQiang);前端测试套件(197 个 vitest 用例)加上后端鉴权 / 路径穿越 / CORS 安全测试也进了 CI(#175,感谢 @sambazhu)。
  • 2026-06-04 🗃️ 全部 7 个数据源的可选本地缓存:新增 VIBE_TRADING_DATA_CACHE 开关,让每个回测 loader——tushare、okx、ccxt、akshare、mootdx、yfinance、futu——把已结算的历史 bar 缓存到 ~/.vibe-trading/cache(用户主目录,绝不写入仓库),让重复以及长周期 / 跨市场回测跳过网络、避开数据源限流。默认关闭。批量与连接型 loader(yfinance、futu)在缓存全部命中时完全跳过批量下载 / FutuOpenD 连接;结算守卫绝不缓存截止到当天的区间(最后一根 bar 还在形成中);缓存帧与实时拉取的结果逐字节一致(#177,感谢 @mvanhorn)。同时还落地了一份面向 AI / 自动化辅助 PR 的贡献者指南,梳理了安全的本地检查项与高风险的 broker/MCP/凭证操作面(#173)。
  • 2026-06-03 🧹 社区 triage + trace 关联:工具调用的 trace 条目现在带上原始 call_id,回放 run trace 时可以把 tool_result 对回它的 tool_call——入参预览仍保持截断,避免 trace 文件膨胀(#168,感谢 @zwrong)。源码注释不再指向外部贡献者找不到的内部文档路径(#166,感谢 @jaleelpersonal)。另外澄清了安装时的 langchain-community 依赖解析告警只是残留旧包的无害提示、并非安装失败(#167),并把 Gemini 2.5/3.0 函数调用的 thoughtSignature 往返梳理成一条带完整修复方案的 help wanted 任务(#170,感谢 @jliu6789)。
  • 2026-06-02 🔌 六个新券商 connector(老虎 / 长桥 / Alpaca / OKX / 币安 / 富途):connector-first 交易层在 IBKR(本地)和 Robinhood(MCP)之外,新增一条直连 SDK 传输。每个 connector 都暴露只读的账户 / 持仓 / 订单 / 行情 / 历史,外加模拟账户下单——把你的策略放到这些券商的模拟盘上跑。其中五个(老虎、Alpaca、OKX、币安、富途)还支

Extension points exported contracts — how you extend this code

SwarmAgentStatus (Interface)
(no doc)
frontend/src/types/agent.ts
SwarmRunStatus (Interface)
(no doc)
frontend/src/types/agent.ts
AgentMessage (Interface)
(no doc)
frontend/src/types/agent.ts
ToolCallEntry (Interface)
(no doc)
frontend/src/types/agent.ts
Props (Interface)
(no doc)
frontend/src/components/layout/ConnectionBanner.tsx

Core symbols most depended-on inside this repo

get
called by 1827
agent/src/agent/tools.py
rank
called by 309
agent/src/factors/base.py
safe_div
called by 306
agent/src/factors/base.py
get
called by 258
agent/backtest/loaders/yahoo_client.py
ts_mean
called by 156
agent/src/factors/base.py
ts_corr
called by 141
agent/src/factors/base.py
set
called by 138
wiki/main.js
get
called by 127
agent/src/factors/registry.py

Shape

Function 4,370
Method 2,391
Class 802
Interface 106
Route 52

Languages

Python95%
TypeScript5%

Modules by API surface

agent/api_server.py196 symbols
agent/cli/_legacy.py134 symbols
agent/mcp_server.py75 symbols
frontend/src/lib/api.ts74 symbols
agent/tests/test_cli_live.py68 symbols
agent/tests/test_persistent_memory.py66 symbols
agent/tests/test_cli_interactive.py65 symbols
agent/tests/test_sdk_connectors.py60 symbols
agent/tests/test_fetch_sina_penalties.py59 symbols
agent/tests/factors/test_bench_strict.py59 symbols
agent/tests/test_runtime_runner.py57 symbols
agent/tests/test_cli_runtime.py50 symbols

Dependencies from manifests, versioned

@tailwindcss/typography0.5.0 · 1×
@testing-library/react16.3.2 · 1×
@testing-library/user-event14.6.1 · 1×
@types/react19.0.0 · 1×
@types/react-dom19.0.0 · 1×
@vitejs/plugin-react4.3.0 · 1×
@vitest/coverage-v84.1.0 · 1×
autoprefixer10.4.0 · 1×
clsx2.1.0 · 1×
echarts6.0.0 · 1×
highlight.js11.11.1 · 1×

For agents

$ claude mcp add Vibe-Trading \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact