📌 项目地址:HKUDS/Vibe-Trading | ⭐ 10,785 颗星 | 🔧 Python | 📜 未标注
不是“一条命令”那么简单
Vibe-Trading 的 README 开头写着 “One Command to Empower Your Agent”。这不是让你输入一行代码就能自动赚钱。它的意思是:给你一个命令行工具,让你能用自己的 AI agent 直接下交易指令。
项目的核心不是预测行情,也不是提供选股策略。它做的是三件事:
- 把你的 Agent(任何兼容 LLM 的程序)连到券商
- 用一套叫 mandate 的硬规则约束 Agent 的行为
- 记录 Agent 每一次下单的完整轨迹(Trace),方便回放审计
GitHub 上有 10785 个 star,迭代节奏很快。从五月底到现在几乎每天都有合并提交,每次改动都对应真实的问题修复或功能补全。
真正的精华:mandate 机制
大多数人看到这个项目会关注 “AI 交易”、“LLM 选股” 这些词。但我觉得最有价值的不是 Agent 能做什么,而是它不能做什么。
mandate 是一份用代码强制执行的交易规则清单。你可以提前写:
- 只交易沪深300成分股
- 单笔金额不超过 5000 元
- 不允许做空
Agent 生成的所有下单请求,在真正执行前必须过 mandate 校验。不通过就直接拒绝,Agent 没有绕过路径。
这不是写在 README 里的 “承诺”,而是写在连接器代码里的硬性门槛。
举个具体的例子。2026-06-05 那天的更新增加了两个印度券商连接器:Dhan 和 Shoonya。核心改动是,这两个券商的 place_order 函数第一行就拒绝非 paper(纸账户)配置。原因很简单:这两个券商没有提供运行时区分 paper 和 live(实盘)的 API 字段。它的选择是:不能确保安全,就一刀切不允许实盘。
这种做法很实在。它承认了:不是所有券商都提供了安全区分的 API 能力,那我在代码层做强制拦截。
另一个辅助功能是 影子账户。你创建一个虚拟环境,Agent 正常生成所有订单,但实际不执行。你可以观察它怎么做分析、怎么下单、会不会超过你的 mandate 限制。跑上几周,确认行为正常了再切换到纸账户甚至实盘。
数据缓存:一个小设计说明很多问题
2026-06-04 加入了本地缓存功能。环境变量 VIBE_TRADING_DATA_CACHE,默认关闭。打开后,七个数据源(tushare、okx、ccxt、akshare、mootdx、yfinance、futu)的历史 K 线会缓存到 ~/.vibe-trading/cache。
路径选在用户 home 目录,而不是项目仓库内。理由:不污染仓库、不干扰 git 操作、用户删除缓存不影响代码更新。
缓存命中的历史数据直接跳过所有网络请求。这对反复回测同一段行情的场景来说,节省的不只是时间,还有 API 配额。很多免费数据源有调用次数限制,缓存可以让你多跑几个回测才撞到上限。
多平台支持的代价
项目目前支持 10 家券商:IBKR(本地)、Robinhood(MCP)、Tiger、Longbridge、Alpaca、OKX、Binance、Futu,加上 Dhan 和 Shoonya。
每个券商都支持只读查询和纸账户下单。但实际差别很大:
- IBKR、Alpaca 这些券商有明确的 paper/live 环境区分,项目做了双重校验
- Longbridge、Dhan、Shoonya 没有运行时区分,项目在
place_order第一行写死拒绝非 paper 配置 - 部分券商的纸账户还需要单独申请 API key
这意味着,如果你的券商是 Longbridge 这类不支持运行时区分的,你永远不能用实盘模式。不是项目在为难你,是它不愿意为你承担 “用户误设实盘” 的风险。
几个值得关注的修复细节
News 里写了过去一周的几条合并记录。挑几个有代表性的:
-
Gemini 2.5 / 3.x 的 thinking 模型修复(#176, #184)。以前多轮函数调用会报
INVALID_ARGUMENT,因为thoughtSignature字段没处理好。现在走 OpenAI 兼容路径,修复了这个问题。感谢 @mvanhorn 和 @jliu6789 报的 bug,以及 @ngoanpv 的第二次补丁。 -
452 个 Alpha Zoo 因子加了中文 docstring(#180)。对中文用户来说,不需要再查翻译才能理解因子含义。这是 @LeeCQiang 提交的。
-
前端测试套件:197 个 vitest 测试,加上后端安全测试(auth bypass、路径穿越、CORS 配置)。这是 @sambazhu 贡献的。
-
Trace 追踪的 call_id:2026-06-03 开始,每个工具调用都带上
call_id。回放时能精确匹配工具结果和调用来源,参数预览会被截断以控制文件大小。
这些修复都不是 “修了一个用户反馈不明显的 bug” 的那种通用话术。每一条都对应一个具体的技术问题,并且有明确的复现路径和解决方案。
如果你打算用这个项目,有两点要知道
第一,它不是投资建议。 项目 README 写得很清楚:不保证盈利,AI 可能误解你的意图,mandate 和影子账户只是降低风险,不能消除风险。我用自己的理解再补一句:任何自动交易系统,最危险的时候不是它犯错的时候,而是你以为它不会犯错的时候。
第二,接口不稳定是常态。 从 News 看,几乎每天都有合并提交。缓存路径换过,trace 格式改过,连接器接口也改过。建议锁定一个你测试过的 commit 版本,不要追最新。
两个设计选择我觉得值得学
项目采用的是一条 “connector-first” 路径:先抽象券商和数据源的接口,再在上层接 LLM 和 mandate,下层是具体实现。这种架构的好处是,加一个新券商只需要实现几个接口,mandate 和 Trace 无需改动。
另一个是 社区贡献指南的 AI 安全检查(#173)。项目维护者专门补充了针对 AI/自动化助手提 PR 的安全检查清单。他们提前预判到了:未来会有很多人用 LLM 写代码来提 PR。提前设定规则是一种务实做法。
如果你想研究交易 Agent 的安全设计,这个项目值得花时间读读它的 mandate 实现和 Trace 日志设计。不是因为它完美,而是因为它愿意用代码把不安全的路径堵死。
标签:AI交易Agent,交易安全,量化工具,mandate机制