Files
sanguo_vnpy_v2/docs/research/openbb-platform-research.md
T
claude_dev 2c20e1674f 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
2026-07-29 22:45:43 +08:00

391 lines
24 KiB
Markdown
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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/)
相关: