docs(research): OpenBB(ODP)平台深度调研报告

四维度深度调研(功能/技术/部署架构+亮点),4 sub-agent 并行整合。
- 功能:15数据域/32 provider(全欧美)/181标准模型/27指标,不做交易与回测
- 技术:pydantic v2+FastAPI+FastMCP monorepo(~56包/23万行),Fetcher TET三段式+一函数四出口
- 部署:官方Dockerfile 4行+openbb-api:6900+widgets.json连Workspace
- 亮点:AI agent原生(MCP)+AGPL-3.0商业护城河+71.2k star开源
- 对本项目:借鉴Fetcher TET清白实现,MCP直暴露LocalUnifiedProvider
This commit is contained in:
2026-07-29 22:45:43 +08:00
parent 417907e2ea
commit 2c20e1674f
+390
View File
@@ -0,0 +1,390 @@
# OpenBB(ODP)平台深度调研报告
> 调研日期 2026-07-29。源码在 NAS `github-repos/OpenBB`(develop 分支 tarball 解压,241M)。本报告由 4 个 sub-agent 并行深挖(源码 + 官网/博客/竞品 Web)整合而成。同步副本存于本地知识库 `wiki-vault/references/openbb-platform-research.md`。
# OpenBB(ODP)平台深度调研报告
> 调研日期 2026-07-29。源码在 NAS `github-repos/OpenBB`(develop 分支 tarball 解压,无 .git,241M)。4 个 sub-agent 并行深挖(部署/功能/技术/亮点)+ 官网/blog/竞品 Web 调研。下载技巧见 。
## 〇、TL;DR
**OpenBB = AI Agent 时代的开源金融数据基础设施层**。2024 年起从"开源版 Bloomberg Terminal"叙事升级为 **ODP(Open Data Platform)**——「**connect once, consume everywhere**」:任何数据源接入一次,同时暴露给 Python SDK / REST API / **MCP server(AI agent)** / Workspace 前端 / Excel。
| 关键数字 | 值 |
|---------|-----|
| GitHub Star | **71.2k**(同级 LangChain) |
| Contributors | 248+ |
| 开源用户 | ~50,000 |
| 数据源(provider) | **32 个官方**(15 免费 + 17 付费)+ 近 100 含社区 |
| 数据域(domain) | 15 个 |
| 标准数据模型 | **181 个**(统一契约) |
| 独立 PyPI 包 | **~56 个**(monorepo 拆包) |
| 代码规模 | ~23 万行 Python |
| 许可证 | **AGPL-3.0**(2024-05-15 改) |
| 融资 | $8.5M Seed(OSS Capital 领投,**非 YC**) |
**一句话功能边界**:统一接口的**金融数据聚合 + 分析平台**(取数 / 技术指标 / 量化统计 / 图表 / 监管文件);**不做交易执行、不做回测**。
---
## 一、产品形态全景(⚠️ Terminal 已死)
> **关键认知刷新**:顶层**没有 `openbb_terminal/` 目录**(只在 images/ 留个 gif)。官方博客 [Sunsetting OpenBB Terminal](https://openbb.co/blog/sunsetting-openbb-terminal-why-how-and-what-now/) 已确认——老 Terminal sunset,转世为 `cli/`(`openbb-cli`),主力产品更名 ODP。「开源 CLI 终端 vs 商业平台」的二分法已过时。
| 产品线 | 形态 | 开源/付费 | 定位 |
|--------|------|----------|------|
| **ODP(Open Data Platform)** | Python SDK `obb` + REST API + MCP server | **开源 AGPL-3.0** | 数据集成基础设施底座,所有上层产品的根基 |
| **OpenBB CLI**(`cli/`) | 交互式 REPL,独立包 `openbb-cli` v1.4.2 | 开源 | 老 Terminal 转世,wrap ODP,Routine Scripts 自动化 |
| **OpenBB Desktop**(`desktop/`) | **Tauri(Rust 1.90)+ React 18**,~35MB | 源码开源,但依赖闭源 npm `@openbb/ui-pro` | 桌面壳,内置 Miniforge + REST API + MCP + Jupyter |
| **OpenBB Workspace**(pro.openbb.co) | Web 前端 SaaS | **付费**(Community/Lite/Pro 三档) | 企业级分析师工作台,AI copilot / dashboard / 图表 |
| **openbb-cookiecutter** | 脚手架模板 | 开源 | 一次生成 router+provider+obbject 三合一扩展骨架 |
| **OpenBB MCP Server** | MCP server,内置 4 个 AI skill | 开源 `openbb-mcp-server` v1.4.1 | AI agent 调用 ODP 的标准入口 |
### 开源 vs 付费边界(精确版)
```
完全开源 AGPL-3.0(无限制):
- ODP 全套:Python SDK / REST API / MCP server / CLI
- Desktop 源码(但 UI 组件 @openbb/ui-pro 是闭源 npm,不装跑不起来 GUI)
- 全部 32 provider + 17 extension + charting
付费(商业价值捕获点):
- Workspace 前端(Community 免费1人 / Lite / Pro)
- Desktop release binaries(macOS/Windows)
- @openbb/ui-pro 组件库
- 团队协作、RBAC、审计、白标
```
**设计洞察**:核心数据层完全开源做生态/标准/漏斗,商业边界精准划在 **UI 组件 + 团队协作**。任何人可用 ODP 自建等价 Workspace 后端(前端组件要付费或自研)。这是个聪明的 COSS(商业开源)设计。
---
## 二、功能架构:功能矩阵
### 2.1 数据域 × 能力(15 个 domain)
| 数据域 | 代表性子能力 |
|--------|-------------|
| **equity** 股票 | price(历史/实时)、fundamental(财报/比率)、ownership(持股/内部人)、calendar(除权/财报日)、estimates(预期)、screener(筛选)、compare、darkpool(暗池)、shorts(做空) |
| **crypto** 加密 | price、search |
| **economy** 经济 | calendar(经济日历)、gdp、shipping(航运)、survey |
| **etf** | search、historical、info、holdings、sectors、countries、equity_exposure |
| **fixedincome** 固收 | rate、spreads、government(国债)、corporate、bond_indices |
| **currency** 外汇 | price、search |
| **derivatives** 衍生品 | options(期权链)、futures(曲线/历史) |
| **index** 指数 | price、constituents(成分股)、snapshots |
| **news** 新闻 | world、company |
| **regulators** 监管 | SEC filings(财报/insider/MD&A/诉讼) |
| **technical** 技术分析 | **27 个指标**:sma/ema/hma/wma、macd、rsi、bollinger、atr、adx、cci、stoch、vwap、obv、fisher、aroon、donchian、ichimoku、fibonacci、keltner、clenow_momentum、cones、relative_rotation |
| **quantitative** 量化 | normality(正态检验)、**capm**、**adf_test**(单位根)、kps_test、summary、rolling、performance |
| **econometrics** 计量 | ols_regression(OLS 回归) |
| **commodity** 大宗 | price、petroleum_status_report(EIA 原油) |
| **famafrench** | 市场因子(SMB/HML 等) |
### 2.2 官方 Provider 清单(32 个)
**免费 / 无需 key(15 个)**:yfinance(覆盖最广)、fred(美联储经济)、sec(SEC 文件)、cboe、finviz、ecb(欧央行)、eia(能源)、famafrench、federal_reserve、finra、government_us、imf、multpl、oecd、deribit(加密期权)
**付费 / 需 API key(17 个)**:fmp(最全面付费源)、intrinio、polygon、benzinga、tiingo、nasdaq、tradier、tradingeconomics、wsj、seeking_alpha、stockgrid、alpha_vantage、biztoc、bls(劳工统计)、cftc、congress_gov(国会议员交易)、econdb
**全部欧美源,无一个中国数据源**(A股全靠社区第三方 `openbb_akshare` / `openbb-tushare`)。
### 2.3 分析能力
- **技术指标**:27 个(趋势/动量/波动率/成交量/形态),`technical`
- **量化统计**:CAPM、OLS 回归、正态性检验、单位根(ADF/KPSS)、滚动指标、业绩风险,`quantitative`/`econometrics`
- **图表**:`obbject_extensions/charting`,基于 **Plotly v6.3** 交互式,支持技术指标/财报/经济数据可视化,主题配置
### 2.4 功能边界
| 能干 | 不能干 |
|------|--------|
| 多资产数据获取(股/加密/经济/ETF/外汇/期货/期权/债) | ❌ 实时交易执行 |
| 公司财务分析(财报/比率/估值/内部人/持股) | ❌ 组合管理 |
| 宏观经济(GDP/通胀/利率/调查) | ❌ 回测(仅数据分析,不含策略回测引擎) |
| 新闻聚合、技术指标、量化统计、监管文件 | ❌ 非金融领域数据 |
> **对量化人的启示**:OpenBB 是「投研数据与分析」工具,不是「交易/回测」工具。回测引擎、组合管理需另配(本项目用 vnpy/BulletTrade 承接,正好互补)。
---
## 三、技术架构
### 3.1 三层架构
```
openbb_platform/
├── core/ # 框架:Platform 入口(obb)、Router、AbstractProvider/Fetcher、standard_models(181 基类)、Registry、QueryExecutor
├── extensions/ # 17 个 router 扩展:定义统一命令树形状(obb.equity.price.historical)+ 含 mcp_server/platform_api
├── providers/ # 32 个数据源实现(全是欧美源)
└── obbject_extensions/ # 返回对象(OBBject)后处理(charting 等)
```
**关键分离**:`extensions` 定义 API 形状,`providers` 各自实现该形状,`core` 调度。
### 3.2 技术栈
| 组件 | 版本 | 用途 |
|------|------|------|
| Python | `>=3.10,<4`(实测锁 **3.103.12**) | 语言 |
| **pydantic** | `^2.12.3`(**v2**) | 数据校验 |
| **FastAPI** | `0.136.3`(全仓硬锁精确版) | Web 框架 |
| uvicorn | `^0.40.0` | ASGI |
| websockets | `>=15.0` | WebSocket |
| pandas | `>=1.5.3` | 数据处理 |
| **FastMCP** | `>=3.2.0` | MCP server |
| plotly | `^6.3.1` | 可视化 |
| poetry | poetry-core | 构建(monorepo) |
| ruff | `^0.15` | lint(运行时依赖,import 时 lint 生成代码) |
| pytest + nox | — | 测试 |
> **关键约束**:`openbb-core` 强依赖 FastAPI+uvicorn+pydantic v2。**即使只想用 SDK 取数,也会拉进整个 web 框架**——ODP 永远以「可启动 API 的应用」形态存在,不是纯库。对多面消费(REST/MCP)必需,对纯数据使用者是负担。
### 3.3 包架构与依赖图
```
core (openbb-core 1.6.13) ← 地基:抽象 + API 框架 + 181 standard_models
↓ 被依赖
providers/ (32 包) + extensions/ (17 包) + obbject_extensions/ (1)
↓ 被聚合
platform (openbb 4.7.3) ← 顶层主包,聚合全部
```
**entry_points 4 类挂载点**(全部由 `import openbb` 时扫描):
- `openbb_provider_extension` → provider 数据源
- `openbb_core_extension` → router 路由
- `openbb_obbject_extension` → 结果后处理(.charting/.to_df)
- `openbb_charting_extension` → 可视化视图
**发布**:`build/pypi/openbb_platform/{publish.py,nightly.py}` 统一 CI 发版,~56 个独立 PyPI 包。
### 3.4 代码规模
| 层 | 文件数 | 行数 |
|----|--------|------|
| core | 189 | ~154,000 |
| extensions | 351 | ~42,500 |
| providers | 635 | ~34,000 |
| **合计** | ~1,175 | **~230,000** |
core 最大(154k 行)印证「框架+标准模型库」是核心资产。
### 3.5 工程化
- **CI**:17 个 workflow(Python 3.103.14 测试矩阵、black/mypy/pylint/ruff/codespell lint、draft-release、release-desktop、Windows/macOS x64+ARM 桌面构建)
- **测试**:pytest + nox,`.coveragerc` 覆盖率配置,conftest.py fixture 模式
- **代码生成**:`package_builder.py``auto_build()` 扫 entry points 生成嵌套 Container 树(SDK)+ Router + REST + MCP
- **扩展机制**:`openbb-cookiecutter` 脚手架一次生成 router+provider+obbject 三合一骨架,填 4 个模板变量即可
---
## 四、Provider Framework(数据层核心机制)
> 上轮深挖,此处精炼。完整细节见本节。
**发现链路**:Python `entry_points``ExtensionLoader` `ep.load()``Provider` 实例 → `Registry.include_provider()` 按 name 入册 → `QueryExecutor.execute(provider, model, params)` 找 Fetcher。
**Provider** = 非抽象入口类,只持 `fetcher_dict: dict[标准模型名, Fetcher类]`,不取数。真正干活的是 **Fetcher**
### Fetcher TET 三段式(⭐最值得借鉴)
`openbb_core/provider/abstract/fetcher.py` 定义 Generic `Fetcher[Q, R]`,`fetch_data` 串三钩子:
| 钩子 | 作用 | IO? |
|------|------|-----|
| `transform_query(params)→Q` | 参数校验、补默认、vendor 参数转换 | 否 |
| `extract_data(query, creds)→Any` | **唯一调网络/IO 的地方**,返回 raw | 是 |
| `transform_data(query, data)→R` | raw → 标准化 `list[Data]`,字段映射 + pydantic 校验 | 否 |
`extract_data` 是 staticmethod 无状态;同步/异步二选一(`aextract_data` alias);`Fetcher.test()` 内置契约自检。
### standardized model 多源统一
`standard_models/`(181 基类)定义全行业统一 `XxxQueryParams`+`XxxData`。Provider 子类继承标准模型 + `__alias_dict__`(vendor 字段名→标准名)+ `__json_schema_extra__``Data``model_validator(mode="before")` 在校验前重写 key → 不同源 raw 落进同一字段名。**新增 model = 加一个三件套文件 + fetcher_dict 加一行,无中央注册表**。
---
## 五、Router / SDK / MCP / REST(消费层:一函数四出口)
**一句话**:一份被 `@router.command(model=...)` 装饰的 Python 函数,**同时变成 SDK 方法 + REST 端点 + MCP 工具**(三出口代码生成)。
- **Router** = FastAPI `APIRouter` 薄包装 + `include_router` 嵌套。`SignatureInspector.complete``ProviderInterface` **反射**把参数经 FastAPI `Depends()` 注入 → 零样板。
- **obb 入口**:`PackageBuilder.auto_build()` 扫 entry points **代码生成**嵌套 Container 树,`create_app` 多重继承嫁接 → `obb.x.y.z()` = `command_runner.run()`
- **REST**:`rest_api.py` 一个 FastAPI app,`commands.py` 自动生成端点,`GET /api/equity/price/historical?symbol=&provider=`,OpenAPI swagger 同源。
- **MCP**(⭐关键洞察):**不维护单独 MCP 工具定义**,用 `fastmcp` 的 OpenAPI provider **从 FastAPI app 反向派生** MCP 工具。一条 GET 端点 = 一个工具,命名 `equity_price_historical`。工具爆炸(500+)时用 `list_categories`/`list_tools_in_category` 元工具发现兜底。
### 完整数据流
`obb.equity.price.historical("AAPL", provider="yfinance")` → 命令路径解析 → `CommandRunner.run`(校验+注入 `CommandContext`)→ `historical()``OBBject.from_query(Query)``Query.execute``QueryExecutor.execute("yfinance","EquityHistorical",params)``YFEquityHistoricalFetcher` → TET → `OBBject[results, provider, warnings]`。每步边界清晰、可单测、可换 provider、`transform_query` 可缓存。
---
## 六、部署架构(⭐ 用户最关心)
### 6.1 部署方式矩阵
| 方式 | 关键命令 | 适用场景 | 注意 |
|------|---------|---------|------|
| **最小 SDK** | `pip install openbb` | 仅 Python 取数 | 默认只装 17 核心 provider |
| **全量 SDK** | `pip install "openbb[all]"` | 全部 provider + charting + MCP | 含 20 个可选 extra |
| **单 extra** | `pip install "openbb[mcp_server]"` / `[charting]` | 按需 | 19 个具名 extra |
| **REST API** | `openbb-api`(默认 127.0.0.1:6900,自动生成 widgets.json) | 连 Workspace 标准入口 | 需 `pip install "openbb[all]"` |
| **Docker 轻量** ⭐ | `build/docker/platformAPI.Dockerfile`(**4 行**) | **官方推荐生产部署** | 见下,无需源码 |
| **Docker 重型** | `build/docker/platform.dockerfile`(python:3.11 + Rust + libwebkit2gtk + 源码 install) | CI / 需编译桌面 | 后端容器其实不需要 Rust,装它是为 Tauri |
| **Desktop** | `npm run tauri dev` | 单机桌面 | 需 Rust 1.90 + Node;自动装 Miniforge+REST+MCP+Jupyter |
| **Workspace 接自托管** | 登 pro.openbb.co → Connect backend → 填 `http://127.0.0.1:6900` | 个人/团队 | SaaS 前端 + 本机 backend,走 widgets.json |
### 6.2 官方推荐 Docker 部署(4 行)
```dockerfile
FROM python:3.10-slim-bookworm
RUN pip install "openbb[all]" openbb-platform-api
EXPOSE 6900
ENTRYPOINT ["openbb-api","--host","0.0.0.0"]
```
### 6.3 Workspace ↔ Backend 协议(widgets.json,踩坑点)
- 协议是 `widgets.json`,由 `openbb-platform-api` 启动时**自动 introspect FastAPI 路由生成**
- 三种挂载:内存默认 / `--editable` 落盘可手改 / `--widgets-json /path` 完全自定义
- **Widget 类型由返回类型推断**:`list[dict]`→AgGrid 表、`str`→Markdown、`dict + type="chart"`→Plotly、Metric→指标卡、PDF→PDF
- **OmniWidget**(`OmniWidgetResponseModel`):POST + prompt 输入 + 多模态返回 —— **AI agent 与 Workspace 集成的官方钩子**
- **`--agents-json`** CLI 参数加 `/agents` endpoint;`workspace_apps.json` 导入导出 dashboard 模板 →「AI agent 反向给 Workspace 推 dashboard」闭环
### 6.4 开发者安装(dev_install.py,⚠️ 反模式)
`openbb_platform/dev_install.py` 的 editable install 是脚本 hack(非 uv workspace):
1. 备份 pyproject.toml + poetry.lock
2. 动态把 32 provider + 17 ext 改成 `{path="./xxx", develop=true}`
3. `poetry lock --regenerate` + `poetry install -E all`
4. `finally` 恢复原文件
**坑**:中间任何一步崩溃(含 Ctrl-C)会留半改状态;CLI 部分还会先删 `openbb` 依赖再装。二开团队 fork 后这是最易踩的坑。新增扩展用 `openbb-cookiecutter` 脚手架 + `pip install -e .` 更稳。
---
## 七、亮点介绍(系统化)
### 7.1 技术亮点
| # | 亮点 | 是什么 | 为什么重要 |
|---|------|--------|-----------|
| 1 | **一函数四出口** | `@router.command` 一个函数 → SDK + REST + MCP + Workspace widget | 消费面零样板,改一处全出口同步 |
| 2 | **MCP 是 REST 副产品** | fastmcp 从 FastAPI OpenAPI 反向派生 MCP 工具,无单独 MCP 定义 | AI agent 接入零额外成本,与 REST 同源同 schema |
| 3 | **Fetcher TET 三段式** | transform_query / extract_data(唯一 IO) / transform_data | IO 与转换解耦,可单测、可缓存、多源归一 |
| 4 | **181 标准模型统一** | 标准化 schema + `__alias_dict__` 字段映射 | LLM 不用学每源方言,只学一套 schema,天然契合 function calling |
| 5 | **MCP server 内置 4 个 AI skill** | `build_workspace_app` SKILL.md 从 fetcher/router/widgets 全流程脚本化 | "AI 帮你写 OpenBB 扩展"做成产品内功能,教科书级 MCP skill 范本 |
| 6 | **Tauri 桌面** | Rust+React 35MB 非 Electron | 分发体积小,企业 IT 更易接受(代价:需 Rust 工具链) |
### 7.2 战略亮点
| # | 亮点 | 说明 |
|---|------|------|
| 1 | **"Connect once, consume everywhere"** | 一次接入,Python/REST/Workspace/Excel/MCP 并列一等公民消费 |
| 2 | **AI-first 信任定位** | Workspace 把 MCP 输出转可交互 widget,参数透明、原始数据一键可查、LLM 转换可审计——"不是连接,是信任" |
| 3 | **"Workflows that stay when analysts leave"** | 工作流持久化可共享,沉淀机构知识,直击买方"明星分析师带走 know-how"痛点 |
| 4 | **数据主权 / 自托管优先** | Lite/Pro/Enterprise 全支持 VPC/本地,"No vendor access, No shared infra",SOC 2 Type II |
| 5 | **真开源(71.2k star)** | vs Bloomberg $25k/座/年封闭;Core 全免费可自托管,把"终端"从特权变基础设施 |
---
## 八、商业模式与竞品
### 8.1 商业模式:开源核心 + 商业前端
**本质**:开源 ODP 做漏斗与标准制定 → Workspace 企业前端变现(product-led growth,非外呼销售)。
| 档位 | 价格 | 部署 | 目标 |
|------|------|------|------|
| Community | 免费 | OpenBB 云 | 个人/学生/PoC |
| Lite | $1,200/年(原 $2,400) | 自托管 | <10 人小团队 |
| Pro | 定制 | 自托管/多租户云 | 大型投研团队 |
| Snowflake | $500/座/年 | Snowflake Marketplace | 已在 Snowflake 的数据团队 |
| Enterprise | 定制 | 完全本地/白标/OEM | 资管/卖方/金融科技 |
### 8.2 AGPL-3.0 战略(2024-05-15 改)
| 干系人 | 含义 |
|--------|------|
| 个人/研究 | 无影响,免费用 |
| 企业内部使用 | 无影响(不分发、不 SaaS) |
| **修改并分发** | 必须开源修改,或买商业许可 |
| **修改并提供 SaaS** ⚠️ | **必须开源,或买商业许可**(AGPL 网络条款,比 GPL 严) |
**战略意图**:① 保护社区投入防白嫖闭源 fork;② 双重许可变现 SaaS 厂商;③ 对手想做闭源金融 SaaS 必须付费 → 商业护城河。对标 GitLab/Mattermost/Grafana 的 COSS 路线。
> **对本项目(量化私募)含义**:若交易系统通过网络对外服务(给 LP/客户看净值),挂 ODP 会触发开源义务。规避方式:**独立进程+API 调用松耦合**,不改 ODP 源码。这也是 ODP 设计成 REST/MCP 多面消费的隐性动机之一。
### 8.3 竞品定位
| 对手 | 定位差异 | OpenBB 优/劣 |
|------|---------|-------------|
| **Bloomberg/FactSet/Refinitiv** | 闭路终端帝国 vs 开放基础设施你拥有 | 优:免费/自托管/无锁定/AI 原生;劣:数据深度(Bloomberg 独家无可替代) |
| **yfinance/akshare/tushare** | 单源爬虫库 vs 多源路由+统一 API+UI/agent | 优:多源聚合/统一字段/可视化;劣:轻量场景 yfinance 三行更简(且 OpenBB 反向集成了 akshare/tushare) |
| **LangChain/LlamaIndex** | 通用 agent 编排 vs 金融数据层 | **非竞争是互补**:OpenBB 把它们列为生态伙伴,自己定位金融数据+终端 UI |
| **自建数据中台** | 24-36 月/$5-10M/20+ FTE vs 开箱即用 | 优:TTM 从 2 年→2 周;劣:极独特私有数据自建仍优 |
### 8.4 生态
- **GitHub**:71.2k star / 7.3k fork / 248+ contributors / 6,863 commits
- **团队**:~15-18 FTE 管理 8 条产品线
- **创始人**:Didier R Lopes(2021 因 meme stock 亏损建 "Gamestonk Terminal",2022 改名 OpenBB;"BB" 来自 Blackberry 代码**非 Bloomberg**)
- **融资**:$8.5M Seed(2022-03,OSS Capital 领投)。**⚠️ 非 YC 公司**(网络有 LLM 摘要误传 W22,官方源查无)
---
## 九、A 股集成现状
OpenBB 官方无中国源,全靠社区第三方:
- `finanalyzer/openbb_akshare`(★125,AGPL-3.0)— AKShare 扩展,聚合东财/同花顺/腾讯/新浪/雪球
- `openbb-tushare`(PyPI,需 token)、`openbb-hka`(A+H 股 Workspace app),贡献者 Roger Ye
`backends-for-openbb`(给 Workspace 前端接数据 FastAPI 模板)、`openbb-ai`(给 Workspace 构建 SSE agent SDK)都绑定 Workspace 前端,与本项相关度低。
---
## 十、对 sanguo_vnpy_v2 的建议(按 ROI 排序)
| 设计 | 借鉴价值 | 建议 |
|------|---------|------|
| **Fetcher TET 三段式** | ⭐⭐⭐⭐⭐ | **直接抄(清白实现,不引依赖)**。把 baostock/akshare/miniQMT 取数重构成 Fetcher,治"数据层瑕疵在 provider 兜底会乱"旧伤 ;`__alias_dict__` 归一 + `transform_data` pydantic 校验 = 数据质量内建 |
| **MCP 直接暴露 provider 方法** | ⭐⭐⭐⭐ | OpenBB 把 MCP 当"REST 副产品"走 router→FastAPI→fastmcp;**本项更直接**——MCP 把 `LocalUnifiedProvider.get_price/get_fundamentals/get_closes_panel` 直接暴露给 Claude Code,跳过 router/FastAPI。参考 Vibe-Research 5 工具模式 |
| **standard/extra 参数拆分** | ⭐⭐⭐⭐ | 可借鉴:标准字段(symbol/start/end/interval)vs vendor 特有(fq/adjustment)分家 |
| **OBBject 信封(results+provider+warnings)** | ⭐⭐⭐ | 统一返回壳带 warnings(治 bs_eod 15min dt 乱码没早发现那种 ) |
| **把 sanguo 封装成 openbb_sanguo_provider** | ⭐⭐⭐ | entry_points 挂进 ODP,立刻获 REST+MCP+Workspace 全套消费面——**但 AGPL 合规风险**(网络对外服务触发开源),需法务确认 |
| entry_points / Container 代码生成 | ⭐⭐ | 不值得抄。单仓库单开发者过度工程,字典+直白 API 更符合 KISS |
### 直接复用 openbb_akshare?**不推荐**
致命限制:① **AGPL-3.0** 网络条款;② 数据语义错配(OpenBB EquityHistorical 美股模型无复权概念,A 股 qfq/hfq 只能落 extra_params,策略层无法跨 vendor 用);③ akshare DataFrame 被强拆 dict→pydantic 重建丢 dtype,本项已直接用 df 反向适配无收益;④ 凭证/限流不匹配(baostock 单进程单登录会拉黑 、akshare 东财瞬时限流、miniQMT 需 Win 常驻);⑤ 场景错配(本项机器内 provider+策略直调+Claude Code 偶查,用不到 REST/Workspace)。
**推荐**:**借鉴架构,不引依赖**。Fetcher 三段式清白实现(不复制 OpenBB 代码→不触发 AGPL),MCP 直接调 provider。真要尝鲜 OpenBB MCP,**单独实验目录 `pip install openbb[mcp]`**,不混进生产仓库。
---
## 十一、关键文件(绝对路径根 `github-repos/OpenBB/`)
- 抽象:`openbb_platform/core/openbb_core/provider/abstract/{data,query_params,fetcher,provider}.py`
- 注册调度:`.../provider/{registry,registry_map,query_executor}.py``.../app/extension_loader.py`
- 标准模型库:`.../provider/standard_models/`(181 个)
- Router:`.../app/router.py``extensions/equity/openbb_equity/{equity_router,price/price_router}.py`
- obb 生成:`core/openbb/__init__.py``.../app/static/{package_builder,app_factory}.py``.../app/provider_interface.py`
- REST+MCP:`.../api/{rest_api.py,router/commands.py}``extensions/mcp_server/openbb_mcp_server/app/app.py`
- **MCP skill 范本**:`extensions/mcp_server/openbb_mcp_server/skills/build_workspace_app/SKILL.md`
- **官方推荐部署**:`build/docker/platformAPI.Dockerfile`(4 行)
- **widgets.json 协议全集**:`extensions/platform_api/README.md`
- provider 样例:`providers/{yfinance,fmp}/openbb_*/models/equity_historical.py`
- 脚手架:`cookiecutter/openbb_cookiecutter/template/`
- 技术栈/依赖:`openbb_platform/{pyproject.toml,core/pyproject.toml}`
- editable install 反模式:`openbb_platform/dev_install.py`
## 十二、参考来源
- 官网:[openbb.co](https://openbb.co) / [platform](https://openbb.co/platform) / [pricing](https://openbb.co/pricing/) / [docs](https://docs.openbb.co)
- 博客:[Sunsetting Terminal](https://openbb.co/blog/sunsetting-openbb-terminal-why-how-and-what-now/) / [License Change AGPL](https://openbb.co/blog/license-change-openbb-platform-goes-agpl/) / [MCP for Finance](https://openbb.co/blog/openbb-the-interface-that-makes-mcp-work-for-financial-workflows/) / [FinAI Stack](https://openbb.co/blog/the-new-finai-tech-stack/)
- [GitHub: OpenBB-finance/OpenBB](https://github.com/OpenBB-finance/OpenBB)
- [TechCrunch: OpenBB beyond Bloomberg](https://techcrunch.com/2024/10/07/fintech-openbb-aims-to-be-more-than-an-open-source-bloomberg-terminal/)
- [OSS Capital Portfolio](https://oss.capital/portfolio/openbb/)
- [Extending OpenBB with AKShare/Tushare](https://openbb.co/blog/extending-openbb-for-a-share-and-hong-kong-stock-analysis-with-akshare-and-tushare/)
相关: