LumiBot / 许可与商业边界
LumiBot 的许可到底写的是什么:GPL-3.0,还是 MIT?
同一份项目,四处官方来源给出两套许可口径:GitHub 的许可字段与仓库 setup.py 写 GPL-3.0,而你在 PyPI 上装到的 4.5.91 版 元数据写 MIT。更关键的是——本站把那个 wheel 解开看了:元数据说 MIT,而同一个包里携带的 LICENSE 文件内容是 GNU GPL v3 全文(35,130 字符)。
这不是二手转述。下面每一条都给了文件路径、采集方式和复现命令,你可以用一条 pip download 在五分钟内自己验一遍。这个差异之所以重要,是因为它会直接落到「我能不能把它放进我的产品里」这种问题上,而这类问题必须看官方 LICENSE 文件原文,不能看博客结论。
同时要分清两件事:开源代码与官方托管的 BotSpot 平台。前者可以自己部署,后者是商业服务,承载数据、并行回测、调度、监控、告警与 kill switch。README 里存在一段 affiliate 声明,说明部分 provider 链接与优惠码可能支持项目开发——本站如实转述这段声明的存在,但不复制任何优惠码或推广链接。
- 仓库:Lumiwealth/lumibot,默认分支
dev(HEAD28afefe8) - PyPI 产物:
lumibot-4.5.91-py3-none-any.whl,37,810,900 字节,2026-09-06T21:16:02Z 上传 - 本机:Python 3.11.9 / Windows;wheel 已解包读取 METADATA 与 licenses/LICENSE
- 本站与 Lumiwealth、BotSpot 无关联;本站不提供法律意见
- 采集日期 2026-09-22;不做收益声明
四处来源,两套口径
同一项目在 GitHub、setup.py、PyPI 元数据与包内 LICENSE 文件上的许可声明
setup.py、wheel 内 dist-info/METADATA 与 dist-info/licenses/LICENSE,2026-09-22 采集)。示意图只重述四处出处的事实,不构成法律意见,也不推测官方动机。同一项目的许可声明,摊开来看
下面这张表是本站逐处读取的结果。前三行是「项目说自己是 GPL」,中间三行是「你在 PyPI 拿到的东西说自己 MIT」,最后两行是「包里面实际带的文件」。请特别注意最后两行——它们是唯一能直接代表你手上那份产物的证据。
| 口径来源 | 具体内容 | 文件位置 / 读取方式 | 采集方式 | 注意点 |
|---|---|---|---|---|
| GitHub 许可字段 | GPL-3.0(spdx_id,名称为 GNU General Public License v3.0) | REST /repos/Lumiwealth/lumibot 的 license 对象 | API 直读 | 这是平台识别结果,依据仓库根目录的 LICENSE 文件 |
| README 徽章 | 盾牌标记 License: GPL v3 | README 顶部徽章行 | 原文读取 | 徽章是人写的展示元素,不是许可文件本身 |
dev 分支 setup.py | license="GPL-3.0";classifier License :: OSI Approved :: GNU General Public License v3 (GPLv3) | raw.githubusercontent.com/.../dev/setup.py 的 setuptools.setup(...) 段 | 原文读取 | 打包脚本里的声明会决定以后新发布的元数据,但不改变已发布产物的元数据 |
| PyPI 接口的 license 字段 | MIT | pypi.org/pypi/lumibot/json 的 info.license | API 直读 | 该字段来自上传时包内的元数据,随版本冻结 |
| PyPI 接口的 classifier | License :: OSI Approved :: MIT License | 同一 JSON 的 info.classifiers | API 直读 | 与上一行同源,两者一致地说「MIT」 |
| PyPI 4.5.91 wheel 的 METADATA | License: MIT、Classifier: License :: OSI Approved :: MIT License,另有 Metadata-Version: 2.4、Requires-Python: >=3.10 | 包内 lumibot-4.5.91.dist-info/METADATA | 本机解包读取 | 同一份 METADATA 里还写着 License-File: LICENSE,即「许可正文在另一个文件里」 |
| 包内 LICENSE 文件的文件名 | 存在,路径为 lumibot-4.5.91.dist-info/licenses/LICENSE | wheel 文件清单(共 231 个条目) | 本机解包读取 | 文件名和 METADATA 的 License-File 对得上,说明它不是缺失,而是内容不一致 |
| 包内 LICENSE 文件的内容 | GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 —— 全文 35,130 字符 | 同一路径,读取正文首段 | 本机解包读取 | 正文以 Copyright (C) 2007 Free Software Foundation, Inc. 开头,是标准 GPL v3 全文,不是 MIT 文本 |
五分钟自己验一遍:包里的 MIT 声明与 GPL 正文
下面这套命令不依赖本站任何结论,只需要能访问 PyPI。注意:只下载 wheel、不装依赖,所以很快,也不会污染你的环境。
# 1) 只下载 wheel,不安装、不装依赖
python -m pip download --no-deps lumibot==4.5.91 -d .\lumi_check
# 2) 查看包内文件清单
python -c "import zipfile,glob;z=zipfile.ZipFile(glob.glob('lumi_check/*.whl')[0]);print('\n'.join(n for n in z.namelist() if 'licenses' in n or n.endswith('METADATA')))"
# 3) 读元数据里的许可声明(你会看到 License: MIT)
python -c "import zipfile,glob;z=zipfile.ZipFile(glob.glob('lumi_check/*.whl')[0]);print('\n'.join(l for l in z.read('lumibot-4.5.91.dist-info/METADATA').decode().split(chr(10)) if l.startswith(('License','Classifier','Metadata-Version','Requires-Python'))))"
# 4) 读包内 LICENSE 正文的前两行(你会看到 GNU GENERAL PUBLIC LICENSE / Version 3)
python -c "import zipfile,glob;z=zipfile.ZipFile(glob.glob('lumi_check/*.whl')[0]);print(z.read('lumibot-4.5.91.dist-info/licenses/LICENSE').decode()[:120])"
| 检查项 | 命令要做的事 | 本站实测你会看到什么 | 注意点 |
|---|---|---|---|
| 产物形态 | 下载 4.5.91 | 只有一个 wheel,lumibot-4.5.91-py3-none-any.whl,37,810,900 字节,没有 sdist | 没有 sdist 意味着「自己编译打包再改元数据」这条路在这个版本上不存在 |
| 包内条目数 | 列出 wheel 清单 | 共 231 个条目,含 dist-info 目录与 lumibot/ 包体 | 条目数随版本变化,别把它当固定值 |
| 元数据许可字段 | 读 dist-info/METADATA | License: MIT 与 Classifier: License :: OSI Approved :: MIT License | 同时可见 License-File: LICENSE,指向包内实际许可正文 |
| 包内 LICENSE 正文 | 读 dist-info/licenses/LICENSE | GNU GENERAL PUBLIC LICENSE / Version 3, 29 June 2007,全文 35,130 字符 | 这就是「元数据说 MIT、正文是 GPL」的直接证据 |
| Python 版本门槛 | 读同一份 METADATA | Requires-Python: >=3.10 | 与仓库 setup.py 的 python_requires 一致,见安装与依赖体量 |
| 重复性 | 换机器 / 换镜像源再跑一次 | 只要拿到的是同一个 4.5.91 wheel,结果应一致 | 若官方重新上传同版本号(PyPI 允许撤回后重传),结果可能变;所以务必记下你下载的日期与文件名 |
开源代码与官方托管:哪些是免费的代码,哪些是付费的服务
官方 README 同时承载两件事:一是开源框架的用法,二是向托管平台 BotSpot 的导流。这两件事需要分开读——前者你能自己部署,后者是别人的服务器与订阅关系。
| 能力 | 开源自托管 | 官方托管平台 | 注意点 |
|---|---|---|---|
| 框架代码 | 可自行获取与部署 | 同一套代码在平台上运行 | 代码与平台是两件事,不要因为平台收费就以为框架也收费 |
| 行情与历史数据 | 自己选数据源与账号(免费源与付费源都有) | 官方称托管环境已接入若干数据 | 数据订阅的授权与费用通常在数据商一侧,见数据源与路由 |
| 回测算力 | 用你自己的机器 | 官方称提供并行回测的执行能力 | 回测规模大时差别明显;小规模自测通常够用 |
| 调度与定时 | 自己配计划任务或常驻进程 | 官方称已内置调度 | 「只跑日频」这类需求在自托管上也要自己兜底 |
| 日志与告警 | 自己搭 | 官方称已整合日志与告警 | 告警通道与配额属平台侧规则 |
| 监控与 kill switch | 自己实现 | 官方称提供监控与一键停止 | 这是自托管最容易被低估的一块,见回测与实盘一致性 |
| 券商连接 | 用自己的券商账号与 API Key | 官方称在平台上统一接入 | 无论哪条路,委托最终都落在你自己的券商账户上 |
| AI 网关与模型凭据 | 自己准备模型 Key(默认模型为 gemini-3.5-flash-lite) | 官方文档提到托管侧有 AI 网关相关环境变量 | 托管网关属平台功能,不是本地开源的必需项 |
| 策略库与市场 | 用仓库自带示例与社区仓库 | 官方称有策略市场与发布流程 | 市场上看到的策略收益数字不构成对你的收益预期 |
README 里的商业痕迹:看到这些时该注意什么
README 是项目最重要的门面,也常常同时是商业入口。下面把本站读到的几类文案列出来,并给出「你该怎么读」——目的不是评判,而是让你在读文档时不把推销内容当成技术结论。
| 文案类型 | 出现的位置(本站读到的形式) | 它在推进什么 | 你该怎么读 | 注意点 |
|---|---|---|---|---|
| 带跟踪参数的链接 | README 中指向托管平台的链接普遍带 utm_* 查询参数 | 统计来源渠道 | 参数只影响统计,不影响内容;本站不复制这些参数化链接 | 不要因为链接「看起来是官方域名」就跳过阅读;域名相同也可能带渠道参数 |
| 免费挑战 / 训练营 | README 提到创作者带队的免费挑战,并提到训练营的报名人数规模 | 把文档读者转成社群与课程参与者 | 这是市场文案;「多少人参加」不是技术指标,也和代码质量无关 | 报名人数、社群规模这类数字无法由代码库验证,本站不做复述判断 |
| 托管平台能力介绍 | 独立小节描述托管环境的各项能力 | 卖托管服务 | 当作「另一条部署路径」的介绍,与框架本身能力分开记 | 平台能力不等于开源框架能力;判断「我需要什么」时以本页第三节的分工表为准 |
| 策略市场 | README 指向策略市场,并可看到已发布的策略列表 | 内容生态与转化 | 市场上的收益展示有其自身口径与样本期,不构成你的预期收益 | 任何历史收益展示都不能当作未来预期;本站全站不做收益声明 |
| 面向编码代理的 MCP 入口 | README 提到可把平台的 MCP 接进编码助手 | 把托管平台嵌进开发流程 | 这是平台能力;仓库本身也自带 llms.txt 等面向 AI 的说明文件 | 仓库自带的 AI 说明文件面向本地仓库,平台 MCP 面向平台账号,两者不是一回事 |
| affiliate 声明 | README 的免责声明段落:明确写到部分 provider 链接或优惠码(其中点到 ThetaData)可能支持该项目的持续开发 | 披露返佣关系 | 这是一段值得肯定的披露:它告诉你「推荐某个数据商」这件事存在利益关联 | 本站如实转述该声明的存在,但不复制任何优惠码、折扣码或推广链接;要买数据请直接看数据商官网当期条款 |
utm_* 的推广链接、不替官方计算成本。如果你要装数据商或托管服务,请直接去官方页面看当前价格与条款——那些数字随时会变,任何第三方转述都可能过时。动手之前,自己确认这六件事
这六个问题的共同点是:答案都在官方文件里,但都不在任何一篇「LumiBot 教程」里。建议按顺序过一遍,尤其是涉及对外交付的场景。
| 问题 | 为什么重要 | 去哪个文件看 | 注意点 |
|---|---|---|---|
| 我实际用的是哪一版? | 不同版本的元数据与代码可能不同,口径会跟着变 | PyPI 发行版页;或本地 pip show lumibot | pip install lumibot 拿到的是 PyPI 上的 4.5.91,而 README 的 AI 示例要求从仓库分支装 4.5.92 |
| 我拿到的是哪个 LICENSE? | 这是唯一直接代表你手上这份产物的许可证据 | 包内 dist-info/licenses/LICENSE;仓库根目录 LICENSE | 不要只看 PyPI 页面的许可标签,也不要只看仓库页徽章 |
| 我是自己用,还是要对外交付? | 「自己跑」与「放进产品分发」是两种完全不同的使用方式 | 官方 LICENSE 原文 | 本站不给法律判断;请按原文与你所在法域的实际规定确认 |
| 我是否修改后不打算公开源码? | 不同许可对衍生作品的要求不同 | 同上 | 这是最需要专业人士介入的场景,不要靠社区问答下结论 |
| 我要接的是哪个数据源或券商? | 数据与券商侧有自己的条款,与项目许可无关 | 数据商 / 券商的官网条款 | 项目许可不覆盖第三方数据与券商协议;另外项目不提供 A 股券商通道 |
| 我是否会把它的输出当成投资建议? | 回测与 AI 决策都不构成收益承诺 | README 的免责声明段落 | 官方免责声明明确写明这是教育/信息用途、不构成投资建议,并提示算法交易存在损失风险;本站同样不做收益声明 |
出问题时去哪问,以及本站不回答什么
下面是官方在 README 与 PyPI 项目信息里给出的对外渠道。本站只列渠道与用途,并把链接统一处理为不含跟踪参数的官方地址。
| 渠道 | 适合问什么 | 注意点 |
|---|---|---|
官方文档站 lumibot.lumiwealth.com | 用法、生命周期方法、示例与指南 | 英文为主;真正有价值的口径说明常在仓库 docs/ 目录而不在文档站首页 |
GitHub Issues(仓库地址 + /issues) | 可复现的 bug、版本相关问题 | 提问前先确认你用的是哪一版;仓库默认分支是 dev 而不是 main |
Discord 社群(邀请链接 discord.gg/4R9j6T3PN8) | 快速提问、看别人怎么用 | 聊天里的结论不是官方文档;涉及许可与资金的问题不要只在聊天里确认 |
Reddit 社区 r/BotSpotTrade | 经验分享、使用感受 | 社区内容时效性差,注意发帖时间 |
| YouTube 频道(Lumiwealth) | 跟着视频跑一遍流程 | 视频不会替代你核对版本与依赖;示例能跑通不等于策略有效 |
仓库内的 AI 说明文件(llms.txt、AGENTS.md 等) | 让编码助手按项目约定写代码 | 这些是给工具读的约定,不是使用手册 |
| 本站(LumiBot 项目研究站) | 中文的机制核对、出处标注、边界说明 | 本站不是官方,也不提供支持;发现事实错误欢迎对照出处指出 |
关于 LumiBot 许可与费用的高频问题
以下回答基于 2026-09-22 对 GitHub 接口、dev 分支 setup.py、PyPI 元数据与本机 wheel 解包的核对。涉及许可的解释请以官方 LICENSE 文件原文为准;本站不提供法律意见。
LumiBot 到底是 GPL-3.0 还是 MIT?
两套口径同时存在,而且都在官方发布物里:GitHub 的许可字段、README 徽章、仓库 setup.py 都写 GPL-3.0;而 PyPI 上 4.5.91 的元数据(info.license、classifier,以及 wheel 内 METADATA)写的是 MIT 与 MIT classifier。更关键的是:同一个 wheel 里携带的 dist-info/licenses/LICENSE 文件内容是 GNU GPL v3 全文(35,130 字符)。所以「它就是 GPL」或「它就是 MIT」这种一句话结论都不严谨——本站只把四处出处并置给你看。
那我应该以哪个文件为准?
以你手上那份产物携带的 LICENSE 正文文件为准——对 pip install lumibot 拿到的 4.5.91 来说,就是 wheel 内 dist-info/licenses/LICENSE;对从仓库 clone 的代码来说,就是仓库根目录的 LICENSE。PyPI 页面的许可标签与仓库徽章都是声明性信息,可能与正文不一致(本页第二节的四步命令可以在五分钟内验证)。如果你需要判断具体用法,请拿这份正文去找专业人士确认,不要依赖本站或任何二手文章的转述。
我公司内部自己用,需要开源我的代码吗?
本站不能替你回答这个问题——它取决于许可证条款、你对「使用 / 修改 / 分发」的实际做法,以及你所在法域的规定。可以确定的只有两件事实:①这个项目在官方口径上存在 GPL-3.0 的声明,而 GPL 系许可证对衍生作品的源码公开有相应要求;②同一批产物里也存在 MIT 声明。这两条事实之间的取舍需要你按正文与自己情况判断。不要在社区问答或博客评论里下结论,也不要让本站的并置表替代专业意见。
我可以把它放进我的商业产品里吗?
本站不给结论。原因很具体:许可口径本身在官方发布物里就不一致,而「能不能放进商业产品」还要看你是否修改、是否分发二进制、是否通过网络提供服务、你所在法域如何认定等一系列事实。本站能帮你的只有一件事——把四处出处和可复现的检查命令列清楚(见本页第一、二节),让你拿着这些事实去问对的人。
BotSpot 是必须买的吗?
不是。开源代码可以自己部署,PyPI 上有可安装的发行版,README 里也给了本地回测与自连券商的写法。BotSpot 承载的是托管侧的能力:托管数据、并行回测、调度、日志与告警、监控与 kill switch 等。是否需要付费平台,取决于你「愿不愿意自己维护调度、日志与告警」——这部分工作真实存在,只是有人愿意自己做、有人愿意买服务。
为什么 README 里到处都是推广链接?本站为什么复述它?
README 同时是技术文档和商业入口,这在商业公司维护的开源项目里很常见。本站复述的原因只有一条:README 的免责声明段落里明确写了 affiliate 关系(部分 provider 链接与优惠码可能支持项目开发)。披露的存在本身就是值得告知读者的信息——它提醒你「推荐某个数据商」这句话背后可能有利益关联,因此更应该去数据商官网核实价格与条款。本站的做法是:只保留不带参数的官方地址,不复制任何优惠码、折扣码或 utm_* 推广链接,也不替官方计算成本。
那我到底该怎么选:自托管还是用平台?
看你缺的是「算力与运维」还是「控制权」。如果你的策略是日频或周频、只需要偶尔回测,自托管的维护量通常可接受;如果你要跑大量并行回测、需要 7×24 调度与告警、并且不想自己保证进程活着,托管的价值就出来了。两条路的代码层是同一套框架,差别主要在运行环境与谁负责半夜的故障。本站不做推荐,只把分工列清楚(见本页第三节)。