📌 项目地址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机制

这篇文章对你有帮助吗?

发表回复