Doramagic 项目包 · 项目说明书

OpenBB 项目

生成时间:2026-05-11 12:57:04 UTC

OpenBB项目概述

OpenBB是一个开源金融数据平台项目,旨在为投资者、分析师和开发者提供全面的金融数据访问和分析工具。该项目采用AGPLv3开源许可证发布,允许用户自由使用、修改和分发代码。 资料来源:[README.md:1-50]()

章节 相关页面

继续阅读本节完整说明和来源证据。

章节 1.1 核心定位

继续阅读本节完整说明和来源证据。

章节 1.2 技术架构

继续阅读本节完整说明和来源证据。

章节 2.1 Python SDK

继续阅读本节完整说明和来源证据。

1 项目简介

OpenBB是一个开源金融数据平台项目,旨在为投资者、分析师和开发者提供全面的金融数据访问和分析工具。该项目采用AGPLv3开源许可证发布,允许用户自由使用、修改和分发代码。 资料来源:README.md:1-50

1.1 核心定位

OpenBB的核心定位是一个模块化的金融数据平台,通过统一的数据接口整合来自多个来源的金融信息,包括股票、加密货币、宏观经济数据、政府数据等。项目强调开放性和可扩展性,允许第三方开发者通过扩展和自定义来增强平台功能。 资料来源:openbb_platform/README.md:1-30

1.2 技术架构

OpenBB采用现代化的微服务架构设计,主要包含以下核心组件:

graph TD
    A[OpenBB Platform Core] --> B[Extensions 扩展系统]
    A --> C[Providers 数据提供者]
    A --> D[CLI 命令行工具]
    A --> E[Desktop 桌面应用]
    A --> F[REST API 服务]
    B --> B1[News 新闻扩展]
    B --> B2[Commodity 商品扩展]
    B --> B3[Regulators 监管扩展]
    B --> B4[MCP Server MCP服务器]
    C --> C1[US Government 美国政府数据]
    C --> C2[Congress Gov 议会数据]
    C --> C3[CFTC 期货数据]

资料来源:openbb_platform/README.md:30-60

2 平台核心组件

2.1 Python SDK

OpenBB Platform提供Python软件开发包,用户可以通过简单的Python代码访问金融数据。核心使用方式如下:

from openbb import obb

# 获取股票数据
result = obb.equity.price_historical(symbol="AAPL", start_date="2023-01-01")

# 获取宏观经济数据
gdp_data = obb.economy.gdp(country="Japan")

# 获取商品数据
commodity = obb.commodity.psd_report(commodity="wheat")

平台支持Python 3.10至3.13版本,需要使用虚拟环境进行安装。开发者可以使用poetry进行依赖管理,通过运行python dev_install.py -e命令以可编辑模式安装所有包。 资料来源:openbb_platform/README.md:40-80

2.2 REST API服务

OpenBB Platform内置FastAPI驱动的REST API,允许用户通过HTTP请求访问所有功能。启动API服务只需一条命令:

uvicorn openbb_core.api.rest_api:app --host 0.0.0.0 --port 8000 --reload

API文档位于"/docs"路径下,可在浏览器中直接查看和测试所有可用的API端点。REST API支持配置运行时设置和环境变量,适合需要程序化访问金融数据的应用场景。 资料来源:openbb_platform/README.md:50-70

3 扩展系统

OpenBB的扩展系统允许开发者添加自定义功能模块,每个扩展都是独立的Python包,通过pip进行安装和管理。

3.1 扩展类型一览

扩展名称包名功能描述
Newsopenbb-news提供新闻数据集成
Commodityopenbb-commodity商品市场数据访问
Regulatorsopenbb-regulators全球监管机构数据
MCP Serveropenbb-mcp-server模型上下文协议服务

资料来源:openbb_platform/extensions/news/README.md, openbb_platform/extensions/commodity/README.md, openbb_platform/extensions/regulators/README.md, openbb_platform/extensions/mcp_server/README.md

3.2 MCP Server扩展

MCP Server扩展是OpenBB的重要创新,它将FastAPI路由暴露为MCP(Model Context Protocol)工具。通过MCPConfigModel,开发者可以精细控制每个路由的暴露行为:

  • expose:设置为False可完全隐藏某个路由
  • mcp_type:指定MCP类型,支持"tool"、"resource"或"resource_template"
  • methods:指定要暴露的HTTP方法

MCP Server扩展支持内联MCP配置,允许开发者直接在openapi_extra字典中定义提示词和工具行为。 资料来源:openbb_platform/extensions/mcp_server/README.md:1-60

4 数据提供者

OpenBB通过数据提供者模块集成外部数据源,每个提供者都是独立的扩展包,负责与特定数据API的交互。

4.1 美国政府数据提供者

US Government数据提供者集成了data.gov的数据接口,无需注册即可使用。覆盖的服务包括:

4.2 议会数据提供者

Congress Gov提供者整合了美国国会相关数据,支持以下功能:

# 获取最近更新的法案
bills = obb.uscongress.bills(limit=10)

# 获取法案详情
bill_info = obb.uscongress.bill_info(bill_url="119/hr/1")

该提供者支持PDF文档处理,接受URL列表作为请求体参数。 资料来源:openbb_platform/providers/congress_gov/README.md:1-50

4.3 CFTC数据提供者

CFTC(商品期货交易委员会)数据提供者提供 Commitments of Traders(COT)报告数据:

# 搜索商品代码
search_results = obb.cftc.cot_search(query="gold")

# 获取持仓报告
report = obb.cftc.cot(code="CFTC_088695", measure="percent_of_oi", limit=4)

返回数据支持转换为DataFrame格式便于数据分析。 资料来源:openbb_platform/providers/cftc/README.md:1-60

5 客户端应用

5.1 命令行工具(CLI)

OpenBB CLI是通过pip安装的命令行客户端,安装命令为pip install openbb-cli。安装完成后,通过运行openbb命令启动交互式界面。CLI工具提供与Python SDK相同的功能,但以交互式终端方式呈现。 资料来源:cli/README.md:1-30

5.2 桌面应用

OpenBB桌面应用基于React构建,提供图形化用户界面。桌面应用的主要功能包括:

桌面应用的安装流程分为三个步骤:

graph LR
    A[Step 1: Miniforge安装] --> B[Step 2: 环境配置]
    B --> C[Step 3: 扩展选择]
    C --> D[完成安装]

资料来源:desktop/src/routes/installation-progress.tsx:30-60

6 开发工具

6.1 Cookiecutter模板

OpenBB提供cookiecutter模板帮助开发者快速创建新的扩展或数据提供者项目。使用步骤如下:

  1. 安装cookiecutter模板工具
  2. 运行openbb-cookiecutter命令选择项目类型
  3. 创建独立的Python虚拟环境
  4. 安装生成的包:pip install -e .
  5. 使用openbb-build生成静态文件

模板项目自动配置项目结构、依赖管理和构建流程,开发者只需专注于业务逻辑实现。 资料来源:cookiecutter/README.md:1-40

6.2 本地开发环境

本地开发需要满足以下条件:

组件要求
Git最新版本
Python3.10 - 3.13
包管理器Poetry
操作系统跨平台支持

开发安装脚本位于openbb_platform目录下,执行python dev_install.py -e以可编辑模式安装所有核心包。 资料来源:openbb_platform/README.md:60-90

7 配置与管理

7.1 API密钥配置

用户需要为不同的数据提供者配置API密钥。在Python代码中配置:

from openbb import obb

obb.user.credentials.fred_api_key = "REPLACE_ME"
obb.user.credentials.polygon_api_key = "REPLACE_ME"

详细的配置说明请参阅官方文档中的API密钥管理页面。 资料来源:openbb_platform/README.md:10-25

7.2 环境变量

REST API支持通过环境变量进行配置,包括数据库连接、超时设置、缓存策略等系统级参数。这些配置可以通过系统设置文档进行详细了解。 资料来源:openbb_platform/README.md:70-80

8 许可与免责声明

OpenBB采用AGPLv3开源许可证发布。重要的是,项目明确声明:

交易金融工具涉及高风险,包括损失部分或全部投资金额的风险,可能不适合所有投资者。

项目团队不对因依赖平台数据而造成的任何交易损失或损害承担法律责任。用户在使用前应充分了解相关风险,必要时寻求专业建议。 资料来源:README.md:45-60

9 相关资源

  • 官方文档:https://docs.openbb.co
  • Discord社区:https://openbb.co/discord
  • GitHub仓库:https://github.com/OpenBB-finance/OpenBB
  • 问题反馈:https://github.com/OpenBB-finance/OpenBB/issues

资料来源:[openbb_platform/README.md:30-60]()

项目目录结构

OpenBB 是一个采用 Monorepo(单体仓库)架构的开源金融分析平台。项目根目录下包含多个核心子项目,分别负责不同的功能模块和用户体验入口。这种架构设计使得代码共享、版本管理和跨模块协作更加高效,同时保持了各模块的独立性和可扩展性。

章节 相关页面

继续阅读本节完整说明和来源证据。

章节 核心子项目定位

继续阅读本节完整说明和来源证据。

概述

OpenBB 是一个采用 Monorepo(单体仓库)架构的开源金融分析平台。项目根目录下包含多个核心子项目,分别负责不同的功能模块和用户体验入口。这种架构设计使得代码共享、版本管理和跨模块协作更加高效,同时保持了各模块的独立性和可扩展性。

资料来源:cli/README.md

顶级目录架构

OpenBB/
├── cli/                      # 命令行界面模块
├── desktop/                  # 桌面应用程序
├── openbb_platform/          # 核心平台与扩展
└── README.md                 # 项目主文档

资料来源:cli/README.md

核心子项目定位

子项目功能定位技术栈
cli/命令行交互工具Python
desktop/桌面图形界面React + TypeScript
openbb_platform/数据处理核心与扩展生态Python

资料来源:openbb_platform/extensions/news/README.md, openbb_platform/extensions/commodity/README.md

资料来源:[cli/README.md]()

核心架构设计

OpenBB 是一个开源的投资研究平台,旨在为全球用户提供投资研究和分析工具。该平台采用模块化架构设计,支持通过多种接口访问核心功能,包括命令行界面(CLI)、桌面应用程序和 REST API。

章节 相关页面

继续阅读本节完整说明和来源证据。

概述

OpenBB 是一个开源的投资研究平台,旨在为全球用户提供投资研究和分析工具。该平台采用模块化架构设计,支持通过多种接口访问核心功能,包括命令行界面(CLI)、桌面应用程序和 REST API。

平台的技术栈涵盖了从前端界面到后端数据处理的完整生态系统,核心架构围绕数据提供者(Provider)、扩展(Extension)和统一入口点(OpenBB Bridge,简称 obb)构建。

资料来源:openbb_platform/core/openbb_core/api/rest_api.py

资料来源:[openbb_platform/core/openbb_core/api/rest_api.py](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/core/openbb_core/api/rest_api.py)

OBBject数据模型

OBBject是OpenBB Platform的核心数据模型,扮演着整个平台数据交互的中枢角色。作为一个统一的响应包装器,OBBject将各种数据源返回的原始数据封装为结构化的、可操作的对象,使得用户能够以一致的方式处理来自不同provider的金融数据。OBBject的设计遵循了类型安全和可扩展性的原则,通过泛型注解和抽象基类实现了高度灵活的查询-结果映射机制。

章节 相关页面

继续阅读本节完整说明和来源证据。

章节 类继承体系

继续阅读本节完整说明和来源证据。

章节 数据流架构图

继续阅读本节完整说明和来源证据。

章节 主要属性

继续阅读本节完整说明和来源证据。

概述

OBBject是OpenBB Platform的核心数据模型,扮演着整个平台数据交互的中枢角色。作为一个统一的响应包装器,OBBject将各种数据源返回的原始数据封装为结构化的、可操作的对象,使得用户能够以一致的方式处理来自不同provider的金融数据。OBBject的设计遵循了类型安全和可扩展性的原则,通过泛型注解和抽象基类实现了高度灵活的查询-结果映射机制。

在OpenBB Platform的架构中,OBBject位于应用层与provider层之间的关键位置。当用户通过obb对象发起数据请求时,底层会调用相应的fetcher获取数据,这些数据随后被封装为OBBject实例返回给用户。这种设计使得数据获取、数据转换和数据展示三个环节得以有效分离,从而提高了代码的可维护性和可测试性。

核心组件架构

类继承体系

OBBject数据模型采用了多层次的类继承结构,以支持不同类型的数据处理需求。整个体系从基础的抽象结果类开始,逐步演化为最终的OBBject类,每一层都承担着特定的数据处理职责。这种层次化的设计允许开发者根据具体的业务需求创建专门化的数据模型,同时保持与核心框架的兼容性。

抽象结果类定义了数据序列化的基本接口和属性转换机制,确保所有派生的数据模型都能以统一的方式进行数据导出和格式化。OBBject在此基础上进一步扩展,添加了与OpenBB生态系统交互所需的所有功能,包括元数据管理、参数跟踪和结果缓存等能力。

数据流架构图

graph TD
    A[用户请求 obb.provider.endpoint] --> B[Fetcher获取原始数据]
    B --> C[AbstractData模型验证]
    C --> D[AnnotatedResult注解处理]
    D --> E[Results基类封装]
    E --> F[OBBject实例化]
    F --> G[返回给用户]
    
    H[OBBject属性] --> F
    H --> I[results 数据载荷]
    H --> J[metadata 元信息]
    H --> K[provider 来源标识]
    H --> L[warnings 警告信息]

OBBject类详解

主要属性

OBBject类封装了数据查询和响应所需的所有关键信息。这些属性共同构成了一个完整的数据响应单元,使用户能够全面了解数据的来源、状态和内容。属性设计遵循了最小惊讶原则,每个属性都有明确的语义定义和使用场景。

属性名称类型说明资料来源
resultsList[Model]查询返回的数据模型列表obbject.py
providerstr数据提供者的唯一标识符obbject.py
paramsdict触发此结果的查询参数obbject.py
metadatadict附加的元数据信息obbject.py
warningsList[str]处理过程中的警告信息obbject.py
chartOptional[dict]图表配置数据obbject.py

results属性是OBBject中最核心的数据载体,它包含了实际查询结果的列表。每个结果都是一个经过验证的数据模型实例,遵循Pydantic的数据校验规则。provider属性标识了数据的原始来源,这对于数据溯源和质量问题追踪至关重要。params属性完整记录了生成此结果所使用所有参数,便于结果复现和调试。

数据转换方法

OBBject提供了丰富的数据转换方法,使用户能够将内部数据模型转换为各种常用的数据格式。这些方法的设计充分考虑了易用性和性能,既支持简单的单行调用,也支持复杂的数据处理流水线操作。

to_df方法是使用频率最高的数据转换接口,它将results列表转换为Pandas DataFrame对象,便于进行进一步的数据分析和可视化。该方法支持多种输出格式,包括标准宽格式和转置格式,用户可以通过参数控制是否包含索引列和如何处理嵌套数据结构。当结果包含时间序列数据时,to_df会自动设置时间索引,为后续的时间序列分析提供便利。

to_dict方法提供了将数据导出为字典格式的能力,这对于需要JSON序列化的场景非常重要。该方法支持不同的字典结构选项,包括记录导向的列表结构、列导向的字典结构以及面向编程使用的面向对象结构。

Abstract Results抽象基类

results.py的设计理念

抽象结果类定义在openbb_core/app/model/abstract/results.py中,它是所有具体结果模型的基类。这个抽象层承担着数据标准化的职责,确保来自不同数据源的数据能够以一致的方式被处理和使用。抽象结果类的设计遵循了组合优于继承的原则,通过组合各种数据处理功能模块来实现灵活的数据转换能力。

该基类定义了一组标准化的数据处理方法,包括数据验证、格式转换、聚合计算等。这些方法的具体实现由派生类根据数据特性来完成,基类只定义调用接口和通用逻辑。这种设计使得新的数据模型可以快速获得完整的数据处理能力,而无需重复实现基础功能。

classDiagram
    class AbstractResults {
        <<abstract>>
        +results: List[Model]
        +to_df()* Method
        +to_dict()* Method
        +validate()* Method
        #_format_results() Method
        #_process_warnings() Method
    }
    class OBBject {
        +provider: str
        +params: dict
        +metadata: dict
        +chart: Optional[dict]
        +to_chart() Method
        +to_excel() Method
    }
    AbstractResults <|-- OBBject

数据验证机制

数据验证是Abstract Results层的核心功能之一。通过集成Pydantic的数据校验能力,OBBject确保所有返回给用户的都符合预定义的数据模型规范。验证过程在数据进入OBBject实例之前就会触发,任何不符合规范的数据都会被拒绝并抛出详细的验证错误信息。

验证规则不仅检查数据类型和必填字段,还包括业务逻辑层面的约束验证。例如,对于股票价格数据,系统会验证价格不能为负数;对于日期范围查询,系统会验证结束日期不能早于开始日期。这种多层次的验证机制确保了数据的可靠性和一致性。

Provider数据抽象层

Annotated Result注解系统

annotated_result.py中定义的注解系统为数据模型提供了元数据附加能力。这个系统允许开发者在定义数据模型时通过装饰器语法添加额外的元信息,如字段描述、单位信息、数据来源等。这些注解信息会在数据处理和展示过程中被自动提取和使用,提升了数据的可读性和可用性。

注解系统支持多种类型的元数据定义。字段级别的注解可以指定单个数据字段的显示名称、单位、格式化规则等信息。模型级别的注解则定义了整个数据模型的元信息,包括数据来源、更新频率、数据质量评级等。这种多层次的注解设计使得数据模型既保持了清晰的代码结构,又包含了丰富的语义信息。

Abstract Data基类

openbb_core/provider/abstract/data.py中定义的AbstractData是所有provider数据模型的基类。它封装了与底层数据源交互所需的基础功能,包括连接管理、请求构建、响应解析等。这个基类使用泛型参数来指定具体的数据模型类型,实现了类型安全的数据处理流程。

AbstractData的设计充分考虑了扩展性。新的数据provider只需要继承这个基类并实现特定的接口方法,就可以快速接入OpenBB Platform的数据生态系统。基类提供了默认的错误处理机制、重试策略和日志记录功能,这些都可以通过配置进行自定义。

Fetcher抽象层

fetcher.py的作用

openbb_core/provider/abstract/fetcher.py中定义的Fetcher是数据获取的核心抽象层。它封装了从原始数据源到标准化OBBject之间的所有转换逻辑。Fetcher的设计遵循了单一职责原则,每个fetcher实例只负责处理一个特定的数据endpoint,这种设计使得系统具有优秀的可维护性和可测试性。

Fetcher的工作流程包括参数验证、请求构建、响应获取、数据解析、模型验证和结果封装六个主要阶段。每个阶段都有明确的输入输出定义和错误处理策略。当任何一个阶段出现异常时,Fetcher会捕获异常并进行适当的处理,最终返回一个包含错误信息的OBBject实例,而不是直接抛出异常。

请求-响应生命周期

sequenceDiagram
    participant U as 用户
    participant O as OBBject
    participant F as Fetcher
    participant P as Provider API
    participant D as Data Model
    
    U->>O: 发起查询请求
    O->>F: 传递参数
    F->>F: 参数验证
    F->>P: 构建并发送HTTP请求
    P-->>F: 返回原始数据
    F->>D: 创建Data Model实例
    D->>D: 数据验证
    F->>O: 封装为OBBject
    O-->>U: 返回结果

使用示例

基础数据查询

from openbb import obb

# 查询标准普尔500相关数据
result = obb.index.sp500_multiples(limit=10)

# 转换为DataFrame进行分析
df = result.to_df()

# 查看元数据信息
print(f"数据来源: {result.provider}")
print(f"查询参数: {result.params}")
print(f"更新时间: {result.metadata}")

数据导出操作

OBBject支持多种数据导出格式,满足不同场景的使用需求。to_excel方法可以将数据导出为Excel文件,同时支持多个工作表的创建和格式化。to_csv方法提供了轻量级的CSV导出功能,适用于数据备份和迁移场景。

# 导出为Excel
result.to_excel("output.xlsx", sheet_name="data")

# 导出为CSV
result.to_csv("output.csv", index=False)

# 获取字典格式
data_dict = result.to_dict(orientation="records")

最佳实践

参数管理

在使用OBBject时,合理管理查询参数是确保结果可复现的关键。建议在发起查询前显式声明所有非默认参数,并将这些参数与结果一起保存。这样做不仅便于后续的问题排查,也为自动化测试提供了可验证的输入输出对。

错误处理

虽然OBBject会尝试封装所有错误信息,但在编写健壮的应用程序时,仍建议实现额外的错误处理逻辑。通过检查warnings属性和验证results列表的非空性,可以优雅地处理各种异常情况。

性能优化

对于大量数据的查询和处理,应当注意OBBject的内存占用情况。to_df等转换方法会创建新的数据副本,在处理大规模数据集时可能带来显著的性能开销。在这种情况下,可以考虑使用流式处理或分页查询的方式减少内存压力。

来源:https://github.com/OpenBB-finance/OpenBB / 项目说明书

数据提供者系统

OpenBB Platform 的数据提供者系统(Provider System)是平台的核心架构组件之一,负责集成和管理来自多个外部数据源的市场数据、金融信息和经济指标。该系统采用模块化设计,允许开发者通过实现标准化的接口来添加新的数据提供者,同时保证上层应用代码的稳定性和一致性。

章节 相关页面

继续阅读本节完整说明和来源证据。

章节 系统层次结构

继续阅读本节完整说明和来源证据。

章节 目录结构规范

继续阅读本节完整说明和来源证据。

章节 注册表映射

继续阅读本节完整说明和来源证据。

概述

OpenBB Platform 的数据提供者系统(Provider System)是平台的核心架构组件之一,负责集成和管理来自多个外部数据源的市场数据、金融信息和经济指标。该系统采用模块化设计,允许开发者通过实现标准化的接口来添加新的数据提供者,同时保证上层应用代码的稳定性和一致性。

数据提供者系统的设计目标包括:

  • 多数据源集成:支持从多个第三方金融数据提供商获取数据
  • 统一数据格式:通过标准模型(Standard Models)规范数据结构
  • 灵活的扩展机制:允许社区贡献新的提供者
  • 透明的数据路由:根据配置和可用性自动选择数据源

资料来源:openbb_platform/providers/README.md

架构设计

系统层次结构

graph TB
    subgraph "应用层 (Application Layer)"
        CLI[CLI 客户端]
        REST_API[REST API 服务]
        MCP[MCP 服务器]
        DESKTOP[桌面应用]
    end
    
    subgraph "核心层 (Core Layer)"
        OBB[openbb 模块]
        STANDARD_MODELS[标准模型]
        REGISTRY[提供者注册表]
        INTERFACE[提供者接口]
    end
    
    subgraph "提供者层 (Provider Layer)"
        FMP[Financial Modeling Prep]
        TMX[TMX Provider]
        CFTC[CFTC Provider]
        GOV_US[US Government]
        CUSTOM[自定义提供者]
    end
    
    CLI --> OBB
    REST_API --> OBB
    MCP --> OBB
    DESKTOP --> OBB
    
    OBB --> STANDARD_MODELS
    OBB --> REGISTRY
    OBB --> INTERFACE
    
    INTERFACE --> FMP
    INTERFACE --> TMX
    INTERFACE --> CFTC
    INTERFACE --> GOV_US
    INTERFACE --> CUSTOM

目录结构规范

每个数据提供者应遵循统一的目录结构:

openbb_platform
└───providers
    └───<provider_name>
        ├── README.md              # 提供者说明文档
        ├── pyproject.toml        # Python 项目配置
        ├── poetry.lock           # 依赖锁定文件
        ├── tests/                 # 测试目录
        └── openbb_<provider_name>
            ├── __init__.py
            ├── models/
            │   ├── <some_model>.py
            │   └── ...
            └── utils/
                ├── <some_helper>.py
                └── ...
            └── routines/
                └── <routine_files>.py

资料来源:openbb_platform/providers/README.md

提供者注册机制

注册表映射

OpenBB 使用 registry_map.py 维护所有已注册提供者的映射关系。注册表负责:

  • 追踪可用提供者及其能力
  • 管理提供者与端点的关联
  • 处理提供者的加载和初始化

提供者接口

所有数据提供者必须实现 provider_interface.py 中定义的标准接口:

# 伪代码示例
class ProviderInterface:
    def __init__(self):
        self.name: str
        self.description: str
        self.credentials: List[str]
        self.endpoints: Dict[str, Endpoint]
    
    def get_data(self, endpoint: str, **kwargs) -> Any:
        """获取数据的主方法"""
        pass
    
    def validate_credentials(self) -> bool:
        """验证 API 凭证"""
        pass

资料来源:openbb_platform/core/openbb_core/provider/provider_interface.py

标准模型系统

标准模型定义

标准模型(Standard Models)位于 openbb_platform/core/openbb_core/provider/standard_models 目录,定义了平台通用的数据结构:

模型类别说明示例
Equity Models股票相关数据股价、财报、估值
Fixed Income固定收益数据国债收益率、债券价格
Commodity商品数据期货价格、供需报告
Derivatives衍生品数据期权链、期货合约
Macroeconomic宏观经济数据GDP、CPI、利率

数据转换流程

graph LR
    A[原始 API 响应] --> B[Provider Model]
    B --> C[数据清洗验证]
    C --> D[Standard Model]
    D --> E[用户端数据]
    
    style A fill:#ffcccc
    style D fill:#ccffcc
    style E fill:#ccccff

现有提供者一览

官方提供者

#### Financial Modeling Prep (FMP)

FMP 提供者集成 Financial Modeling Prep 数据服务:

pip install openbb-fmp

覆盖功能:

  • 股票报价和历史数据
  • 财务报表分析
  • 估值指标
  • 内部人交易

资料来源:openbb_platform/providers/fmp/README.md

#### US Government

US Government 提供者整合美国政府公开数据:

pip install openbb-us-government

覆盖服务:

此提供者无需注册即可使用。

资料来源:openbb_platform/providers/government_us/README.md

#### CFTC (商品期货交易委员会)

CFTC 提供者获取美国商品期货交易委员会报告:

from openbb import obb

# 搜索合约
search_results = obb.cftc.cot_search(query="gold")
print(search_results.to_df())

# 获取持仓报告
report = obb.cftc.cot(code="CFTC_088695", measure="percent_of_oi", limit=4)
print(report.to_df().T)

覆盖端点:

资料来源:openbb_platform/providers/cftc/README.md

#### TMX Provider

TMX 提供者由社区维护,提供加拿大金融市场数据:

pip install openbb-tmx

覆盖功能:

资料来源:openbb_platform/providers/tmx/README.md

社区提供者

社区开发者可以创建和发布自定义提供者,标准扩展名格式为 openbb-<provider_name>

扩展集成

扩展与提供者的关系

graph TD
    EXT[OpenBB Extension] --> DEP[声明 Provider 依赖]
    DEP --> LOAD[动态加载]
    LOAD --> REGISTRY[注册到 Registry]
    REGISTRY --> AVAILABLE[可用端点]

MCP 服务器集成

通过 openapi_extra.mcp_config 字典可以精细控制 MCP 工具暴露:

配置项类型说明
exposeOptional[bool]设为 False 完全隐藏路由
mcp_typeOptional[MCPType]工具类型:"tool", "resource", "resource_template"
methodsOptional[list[HTTPMethod]]暴露的 HTTP 方法列表

资料来源:openbb_platform/extensions/mcp_server/README.md

使用方式

Python 直接调用

from openbb import obb

# 使用默认提供者获取数据
result = obb.equity.price.historical(symbol="AAPL", start_date="2024-01-01")

# 转换为 DataFrame
df = result.to_df()

REST API 访问

启动本地 API 服务器:

openbb-api

API 端点格式:GET /api/v1/<provider>/<endpoint>

MCP 工具调用

在 MCP 配置中定义提示后,可通过工具调用数据端点:

{
  "description": "Generate a brief summary of GDP for a country.",
  "messages": [
    {
      "role": "user",
      "content": {
        "type": "text",
        "text": "Use the tool, economy_gdp, to perform the following task.\n\nProvide a concise summary of the GDP for Japan over the last 10 years."
      }
    }
  ]
}

资料来源:openbb_platform/extensions/mcp_server/README.md

配置与凭证管理

API 密钥设置

桌面应用提供可视化界面管理 API 密钥:

// 支持导入格式
accept=".json,.env"

凭证文件示例(JSON 格式):

{
  "FMP_API_KEY": "your_api_key_here"
}

环境变量配置

部分提供者支持通过环境变量配置:

export FMP_API_KEY="your_api_key"
export TMX_API_KEY="your_api_key"

开发新提供者

开发步骤

  1. 创建目录结构:遵循标准目录布局
  2. 实现 Provider 类:继承标准 Provider 接口
  3. 定义数据模型:使用 Pydantic 定义请求/响应模型
  4. 实现工具函数:处理 API 调用和数据转换
  5. 编写 README:提供安装和使用说明
  6. 添加测试:覆盖主要功能路径

模型定义规范

from pydantic import BaseModel, Field
from typing import Optional, List
from datetime import date

class EquityHistoricalData(BaseModel):
    symbol: str = Field(description="股票代码")
    date: date = Field(description="交易日期")
    open: float = Field(description="开盘价")
    high: float = Field(description="最高价")
    low: float = Field(description="最低价")
    close: float = Field(description="收盘价")
    volume: int = Field(description="成交量")

注册提供者

新提供者需在安装后注册到系统:

from openbb_core.provider.registry import Registry

Registry.register("my_provider", MyProviderClass)

技术限制与注意事项

数据质量

  • 平台数据平台中包含的数据未必完全准确
  • 交易金融工具存在高风险,包括损失全部投资金额的可能
  • 数据使用需自行承担风险

许可与免责

OpenBB 和任何数据提供者不对以下损失承担责任:

  • 交易活动导致的损失
  • 对信息内容的依赖导致的损失

所有第三方商标、品牌归各自所有者所有。

资料来源:README.md

相关资源

资源类型链接
官方文档https://docs.openbb.co/
平台参考https://docs.openbb.co/python/reference
问题反馈https://github.com/OpenBB-finance/OpenBB/issues
Discord 社区https://openbb.co/discord

资料来源:[openbb_platform/providers/README.md]()

扩展模块系统

OpenBB Platform 采用模块化的扩展系统架构,允许通过安装扩展包来增强平台功能。扩展模块是独立的 Python 包,可向平台添加特定领域的数据源、工具和功能。这种设计使平台核心保持精简,同时支持灵活的功能扩展。

章节 相关页面

继续阅读本节完整说明和来源证据。

章节 扩展与提供者关系

继续阅读本节完整说明和来源证据。

章节 安装机制

继续阅读本节完整说明和来源证据。

章节 Equity 扩展

继续阅读本节完整说明和来源证据。

概述

OpenBB Platform 采用模块化的扩展系统架构,允许通过安装扩展包来增强平台功能。扩展模块是独立的 Python 包,可向平台添加特定领域的数据源、工具和功能。这种设计使平台核心保持精简,同时支持灵活的功能扩展。

扩展系统分为两大类别:

类别说明示例
扩展(Extensions)提供功能模块和子模块equity、crypto、fixedincome、technical、economy
数据提供者(Providers)集成外部数据源fmp、tmx、government_us、multpl

资料来源:openbb_platform/extensions/equity/README.md

系统架构

扩展与提供者关系

graph TD
    A["OpenBB Platform Core<br/>openbb_core"] --> B["扩展模块<br/>Extensions"]
    A --> C["数据提供者<br/>Providers"]
    B --> B1["equity<br/>股票"] 
    B --> B2["crypto<br/>加密货币"]
    B --> B3["fixedincome<br/>固定收益"]
    B --> B4["technical<br/>技术分析"]
    B --> B5["economy<br/>宏观经济"]
    B --> B6["news<br/>新闻"]
    B --> B7["commodity<br/>大宗商品"]
    B --> B8["regulators<br/>监管机构"]
    C --> C1["fmp<br/>Financial Modeling Prep"]
    C --> C2["tmx<br/>TMX/tsx"]
    C --> C3["government_us<br/>美国政府数据"]
    C --> C4["multpl<br/>Multpl数据"]

安装机制

扩展模块通过 pip 包管理器安装,安装命令统一为 pip install openbb-<模块名>

扩展名称安装命令功能说明
equitypip install openbb-equity股票市场数据工具
cryptopip install openbb-crypto加密货币数据
fixedincomepip install openbb-fixedincome固定收益市场数据
technicalpip install openbb-technical技术分析指标
economypip install openbb-economy宏观经济数据
newspip install openbb-news新闻数据
commoditypip install openbb-commodity大宗商品数据
regulatorspip install openbb-regulators全球市场监管数据

资料来源:openbb_platform/extensions/commodity/README.md

扩展模块详细说明

Equity 扩展

Equity 扩展提供股票市场数据工具,是平台最核心的扩展之一。

子模块结构:

子模块功能
calendar股票特定事件日历
compare同业公司对比分析
darkpool暗池空头数据
discovery股票发现/筛选
estimates分析师预测
fundamental基本面分析
options期权数据
ownership内部和外部所有权
price历史价格数据
shorts做空数据

资料来源:openbb_platform/extensions/equity/README.md

News 扩展

News 扩展为平台提供新闻数据接口,支持获取金融新闻和市场资讯。

资料来源:openbb_platform/extensions/news/README.md

Commodity 扩展

Commodity 扩展提供大宗商品相关的命令和数据接口。

资料来源:openbb_platform/extensions/commodity/README.md

Regulators 扩展

Regulators 扩展提供来自全球市场监管机构的数据结构,用于查询各市场的监管信息。

资料来源:openbb_platform/extensions/regulators/README.md

数据提供者

数据提供者是扩展系统的核心组件,负责与外部数据源集成。

Provider 安装模式

所有数据提供者遵循统一的安装模式:

pip install openbb-<provider-name>

主要数据提供者

#### Financial Modeling Prep (fmp)

集成 Financial Modeling Prep 数据源。

资料来源:openbb_platform/providers/fmp/README.md

#### TMX Provider

集成 TMX(多伦多证券交易所)数据,提供加拿大市场数据。

覆盖的命令:

资料来源:openbb_platform/providers/tmx/README.md

#### Government US Provider

集成美国政府数据(来自 data.gov),提供无需注册的服务数据。

覆盖的命令:

命令说明
obb.commodity.psd_report供需报告
obb.commodity.psd_data供需数据
obb.commodity.weather_bulletins天气公报
obb.commodity.weather_bulletins_download天气公报下载
obb.fixed_income.government.treasury_auctions国债拍卖
obb.fixed_income.government.treasury_prices国债价格

资料来源:openbb_platform/providers/government_us/README.md

#### Multpl Provider

集成 multpl.com 数据源。

覆盖的命令:

资料来源:openbb_platform/providers/multpl/README.md

MCP 服务器集成

扩展系统支持通过 MCP(Model Context Protocol)协议将 API 路由暴露为 MCP 工具。

MCP 配置模型

使用 MCPConfigModel 进行细粒度控制:

from openbb_mcp_server.models.mcp_config import MCPConfigModel

配置属性:

属性类型说明
exposeOptional[bool]设为 False 可完全隐藏路由
mcp_typeOptional[MCPType]类型:"tool""resource""resource_template"
methodsOptional[list[HTTPMethod]]指定要暴露的 HTTP 方法

资料来源:openbb_platform/extensions/mcp_server/README.md

MCP 配置使用流程

graph LR
    A["FastAPI Route<br/>openapi_extra"] --> B["MCPConfigModel<br/>验证配置"]
    B --> C{"expose=True?"}
    C -->|是| D["MCP Server<br/>暴露为工具"]
    C -->|否| E["隐藏路由"]
    D --> F["MCP 客户端调用"]

REST API 集成

扩展模块通过 openbb_core 的 REST API 与平台集成。API 使用 FastAPI 框架构建。

API 配置

app = FastAPI(
    title=system.api_settings.title,
    description=system.api_settings.description,
    version=system.api_settings.version,
    servers=[
        {"url": s.url, "description": s.description}
        for s in system.api_settings.servers
    ],
)

CORS 中间件

平台启用 CORS 中间件,允许跨域请求:

app.add_middleware(
    CORSMiddleware,
    allow_origins=system.api_settings.cors.allow_origins,
    allow_methods=system.api_settings.cors.allow_methods,
    allow_headers=system.api_settings.cors.allow_headers,
)

路由注册

扩展通过 AppLoader.add_routers() 注册路由:

AppLoader.add_routers(
    app=app,
    routers=(
        [AuthService().router, router_system, router_coverage, router_commands]
        if Env().DEV_MODE
        else ([router_commands, router_coverage] if ...)
    ),
)

资料来源:openbb_platform/core/openbb_core/api/rest_api.py

开发指南

创建新扩展

  1. openbb_platform/extensions/ 目录下创建扩展目录
  2. 创建 README.md 文档
  3. 实现扩展功能模块
  4. 使用标准安装命令发布

扩展命名规范

扩展类型包名格式示例
官方扩展openbb-<name>openbb-equity
第三方扩展openbb-<name>openbb-tmx

依赖管理

扩展应声明所有必要依赖,并通过 requirements.txtpyproject.toml 管理。

总结

OpenBB Platform 的扩展模块系统提供了高度模块化和可扩展的架构:

  • 核心分离:平台核心与功能扩展解耦
  • 统一安装:通过 pip 统一管理
  • 多数据源:支持多种外部数据提供者
  • 协议支持:通过 MCP 协议暴露工具
  • RESTful API:通过 FastAPI 提供标准接口

扩展系统使 OpenBB 能够持续添加新功能,同时保持核心框架的稳定性和可维护性。

资料来源:[openbb_platform/extensions/equity/README.md]()

命令行界面(CLI)

⚠️ 文档状态: 当前上下文中未包含 CLI 源码文件的实际内容。以下文档基于已知的 OpenBB CLI 架构信息生成,实际实现细节可能与描述有所不同。建议查阅实际源码以获取准确信息。

章节 相关页面

继续阅读本节完整说明和来源证据。

章节 主控制器 (clicontroller)

继续阅读本节完整说明和来源证据。

章节 基类控制器 (basecontroller)

继续阅读本节完整说明和来源证据。

概述

OpenBB CLI 是 OpenBB 平台的终端用户界面,为金融数据分析提供了命令行操作方式。该界面基于 Python 开发,通过控制器架构实现了模块化的命令处理系统。CLI 作为 OpenBB 平台的三大入口之一(其他两者为桌面应用和 API),为专业用户提供了高效、灵活的交互方式。

核心架构

OpenBB CLI 采用分层控制器架构,主要由以下几个核心组件构成:

组件文件位置职责
CLI 入口cli.py应用初始化、主循环、命令路由
主控制器cli_controller.py顶层命令处理、菜单导航
基类控制器base_controller.py通用控制器功能、命令注册机制
参数解析argparse_translator命令行参数到内部调用的转换
会话管理session.py用户会话状态、上下文维护

命令解析流程

CLI 的命令解析采用多层级转发机制:

graph TD
    A[用户输入命令] --> B[cli.py 主循环]
    B --> C[argparse_translator 参数解析]
    C --> D[cli_controller 路由分发]
    D --> E{命令类型判断}
    E -->|主命令| F[主控制器处理]
    E -->|功能模块| G[子控制器处理]
    F --> H[执行对应功能]
    G --> I[调用 Platform API]
    H --> J[返回结果到终端]
    I --> J

会话管理

会话模块负责维护用户在 CLI 会话期间的状态信息,包括:

  • 当前工作目录和路径上下文
  • 用户偏好设置
  • 命令历史记录
  • 缓存的数据和查询结果

命令控制器

主控制器 (cli_controller)

主控制器负责处理顶级命令,包括帮助信息显示、系统设置、以及各功能模块的入口导航。

基类控制器 (base_controller)

所有功能模块控制器继承自基类控制器,基类提供了:

  • 动态命令注册
  • 参数验证和转换
  • 输出格式化
  • 错误处理和提示

安装与使用

CLI 通过 pip 或 conda 安装:

pip install openbb
# 或
conda install openbb-cli

启动 CLI:

openbb

相关资料

由于当前上下文未包含 CLI 源码文件的具体内容,建议直接查阅以下源码文件以获取准确的实现细节:

来源:https://github.com/OpenBB-finance/OpenBB / 项目说明书

桌面应用程序

OpenBB 桌面应用程序是一个基于 Tauri 框架构建的跨平台桌面客户端,采用 React + TypeScript 作为前端技术栈,后端使用 Rust 实现高性能的系统级交互。该应用程序为用户提供了一个功能完整的图形界面,用于管理 OpenBB 环境、安装扩展、配置 API 密钥以及启动和管理后端服务。

章节 相关页面

继续阅读本节完整说明和来源证据。

章节 框架技术栈

继续阅读本节完整说明和来源证据。

章节 架构层次图

继续阅读本节完整说明和来源证据。

章节 1. 路由系统

继续阅读本节完整说明和来源证据。

概述

OpenBB 桌面应用程序是一个基于 Tauri 框架构建的跨平台桌面客户端,采用 React + TypeScript 作为前端技术栈,后端使用 Rust 实现高性能的系统级交互。该应用程序为用户提供了一个功能完整的图形界面,用于管理 OpenBB 环境、安装扩展、配置 API 密钥以及启动和管理后端服务。

桌面应用程序的核心职责包括:环境生命周期管理、Python 版本选择、扩展安装与卸载、API 密钥安全存储、后端进程控制以及 OpenSSL 证书生成等功能。

技术架构

框架技术栈

层级技术职责
前端框架React 18 + TypeScript用户界面渲染与交互逻辑
状态管理React Hooks组件状态与副作用管理
UI 组件库Tailwind CSS + 自定义组件样式与交互设计
桌面框架Tauri 2.x原生系统集成与窗口管理
后端运行时Rust高性能系统调用与 IPC
Python 环境MiniforgePython 环境隔离与管理

架构层次图

graph TD
    A[用户界面层] --> B[路由层 desktop/src/routes]
    B --> C[组件层 desktop/src/components]
    C --> D[Tauri IPC 层]
    D --> E[Rust 后端 desktop/src-tauri/src]
    E --> F[Miniforge Python 环境]
    E --> G[系统文件系统]
    E --> H[进程管理]

核心模块

1. 路由系统

应用程序使用 React Router 进行路由管理,主要路由包括:

路由路径组件文件功能描述
/setupsetup.tsx初始安装配置
/installation-progressinstallation-progress.tsx安装进度展示
/environmentsenvironments.tsx环境管理
/backendsbackends.tsx后端服务配置
/api-keysapi-keys.tsxAPI 密钥管理

资料来源:desktop/src/routes/setup.tsx 资料来源:desktop/src/routes/environments.tsx 资料来源:desktop/src/routes/backends.tsx 资料来源:desktop/src/routes/api-keys.tsx

2. 安装与设置流程

初始设置流程(setup.tsx)负责收集用户配置信息:

graph LR
    A[选择安装目录] --> B[选择用户数据目录]
    B --> C[验证目录路径]
    C --> D[初始化安装进程]

关键配置项:

配置项标识符说明
安装目录installDirMiniforge、环境的安装位置
用户数据目录userDataDir用户配置与数据存储位置

资料来源:desktop/src/routes/setup.tsx

3. 环境管理系统

环境管理模块(environments.tsx)提供完整的 Python 环境生命周期管理功能:

#### 3.1 环境创建流程

graph TD
    A[输入环境名称] --> B[选择 Python 版本]
    B --> C[选择扩展]
    C --> D{创建环境}
    D --> E[后台安装进程]
    E --> F{成功?}
    F -->|是| G[显示环境列表]
    F -->|否| H[显示错误信息]
    H --> I[重试或取消]

#### 3.2 环境名称验证规则

/^[a-z0-9-]+$/

环境名称必须满足以下条件:

  • 仅使用小写字母
  • 仅使用数字
  • 仅使用连字符 -
  • 不允许使用空格或特殊字符

资料来源:desktop/src/routes/environments.tsx

#### 3.3 环境管理功能列表

功能描述触发方式
创建环境从 requirements.txt 创建新环境createEnvironmentFromRequirements
删除环境移除现有环境及其文件环境卡片删除按钮
安装扩展向环境添加 OpenBB 扩展AddExtensionSelector 组件
搜索扩展实时过滤扩展列表搜索输入框
查看包列表显示环境中已安装的包环境详情展开

4. 后端服务管理

后端管理模块(backends.tsx)负责控制 OpenBB 后端服务的启动、运行与监控:

#### 4.1 后端状态流转

graph TD
    A[idle] --> B{启动后端}
    B --> C[starting]
    C --> D{服务初始化}
    D -->|成功| E[running]
    D -->|失败| F[error]
    E --> F{发生错误}
    F --> G[停止服务]
    G --> A
    E --> H{用户停止}
    H --> A

#### 4.2 后端配置参数

参数说明默认值
command启动命令openbb-api
workingDir工作目录{installation_directory}/backends
extractedPid进程 ID自动分配

资料来源:desktop/src/routes/backends.tsx

#### 4.3 进程状态显示

{extractedPid && isRunning && (
    <div className="body-xs-regular text-theme-secondary mt-1">
        <span className="body-xs-bold">Process ID:</span> {extractedPid}
    </div>
)}

5. 扩展安装系统

扩展管理由 AddExtensionSelector.tsxInstallComponents.tsx 组件实现:

#### 5.1 支持的包类型

类型计数变量安装方式
Conda 包condaPackages.lengthaddCondaPackage()
PyPI 包customPackages.lengthaddCustomPackage()
OpenBB 扩展selectedExtensions.length复选框选择

资料来源:desktop/src/components/AddExtensionSelector.tsx 资料来源:desktop/src/components/InstallComponents.tsx

#### 5.2 扩展安装状态摘要

{condaPackages.length} Conda + {customPackages.length} PyPI + {selectedExtensions.length} OpenBB extensions selected

#### 5.3 Conda 包添加流程

graph LR
    A[输入包名] --> B{按 Enter?}
    B -->|是| C[addCondaPackage]
    B -->|否| D[等待]
    C --> E[添加到列表]
    E --> F[清空输入框]

6. API 密钥管理

API 密钥管理模块(api-keys.tsx)提供密钥的添加、编辑、删除与导入功能:

#### 6.1 支持的密钥格式

格式文件扩展名导入方式
JSON.json文件选择器
环境变量.env文件选择器

#### 6.2 密钥操作模式

模式模态框标题操作
add添加 API 密钥创建新密钥
edit编辑 API 密钥修改现有密钥

资料来源:desktop/src/routes/api-keys.tsx

7. 安装进度管理

安装进度模块(installation-progress.tsx)跟踪并展示安装过程的各个阶段:

#### 7.1 安装阶段划分

阶段标识阶段名称包含组件
extension_select扩展选择扩展复选框、PyPI 输入
version_selectPython 版本选择PythonVersionSelector
cancelled已取消错误信息、重试按钮

#### 7.2 进度指示器

STEP <span className="text-theme-accent">1</span> OF <span className="text-theme-accent">3</span>

初始安装包含三个步骤:

  1. Miniforge(Python 环境管理器)
  2. OpenBB 环境及核心依赖
  3. iPython 与 Jupyter Lab

资料来源:desktop/src/routes/installation-progress.tsx

用户界面组件

1. 通用 UI 组件

组件文件用途
IconIcon.tsxOpenBB Logo、文件图标等
Button共享组件操作按钮
Tooltip共享组件悬停提示
ReactMarkdown共享组件Markdown 内容渲染

2. 自定义图标系统

<CustomIcon id="close" className="h-6 w-6" />
<CustomIcon id="search" className="h-4 w-4" />

图标系统支持通过 id 属性动态加载不同图标,适用于关闭按钮、搜索图标等场景。

资料来源:desktop/src/components/Icon.tsx

3. 主题系统

应用程序采用深色主题设计,关键颜色变量包括:

CSS 变量用途
text-theme-primary主文本颜色
text-theme-secondary次要文本颜色
text-theme-muted弱化文本颜色
bg-theme-primary主背景色
bg-theme-secondary次要背景色
accent-color强调色/高亮色

4. ReactMarkdown 配置

扩展安装说明使用 ReactMarkdown 组件渲染,支持自定义渲染器:

<ReactMarkdown
    components={{
        img: ({ ...props }) => (
            <img {...props} className="max-w-full h-auto" style={{ maxHeight: "300px" }} />
        ),
        a: ({ ...props }) => (
            <a {...props} className="text-blue-500 underline" target="_blank" />
        ),
        code: ({ ...props }) => (
            <code {...props} className="bg-theme-tertiary px-1 py-0.5 rounded" />
        ),
    }}
>
    {extension.instructions}
</ReactMarkdown>

资料来源:desktop/src/components/InstallComponents.tsx

配置与数据管理

1. 用户数据存储

用户数据目录结构由 userDataDir 配置项控制,包含:

  • 配置文件存储
  • 环境信息缓存
  • API 密钥加密存储
  • 安装日志

2. Tauri 配置

Tauri 配置文件定义应用程序的窗口属性、权限与构建选项:

{
  "productName": "OpenBB",
  "identifier": "finance.openbb.desktop",
  "build": {
    "devtools": true
  }
}

错误处理

1. 错误显示组件

{error && (
    <div className="p-3 bg-theme-secondary border border-red-500/50 rounded text-red-500">
        <p>{error}</p>
    </div>
)}

2. 错误恢复选项

错误类型恢复方式
环境创建失败重试(Retry)或取消
后端启动失败自动重试或手动重启
安装错误显示 stderr 日志

3. 创建环境错误展示

{createEnvironmentError && (
    <div className="p-3 bg-theme-secondary border border-red-500 rounded-md">
        <p className="text-theme-secondary font-mono whitespace-pre-wrap">
            {extractStderr(createEnvironmentError)}
        </p>
    </div>
)}

资料来源:desktop/src/routes/environments.tsx

工作目录管理

后端服务的工作目录可通过用户界面配置:

<input
    id="working-dir-input"
    type="text"
    value={workingDirInput}
    onChange={e => setWorkingDirInput(e.target.value)}
    onBlur={handleDirectoryInputSubmit}
    onKeyDown={handleDirectoryInputKeyPress}
    placeholder="Select or enter path (defaults to '{installation_directory}/backends')"
/>

用户可以选择目录或手动输入路径,系统会在失焦时验证并保存输入。

总结

OpenBB 桌面应用程序通过 Tauri 框架将现代 Web 前端技术与原生系统能力相结合,提供了一个功能丰富、界面友好的 Python 环境管理工具。应用程序的核心优势包括:

  1. 统一的环境管理:支持多个 Python 环境的创建、切换与删除
  2. 灵活的扩展系统:支持 Conda、PyPI 和 OpenBB 原生扩展
  3. 安全的密钥存储:支持加密存储 API 密钥
  4. 直观的状态监控:实时显示后端服务状态与进程信息
  5. 完整的安装向导:引导用户完成初始配置与依赖安装

资料来源:[desktop/src/routes/setup.tsx](https://github.com/OpenBB-finance/OpenBB/blob/main/desktop/src/routes/setup.tsx)

扩展开发指南

OpenBB 平台采用模块化扩展架构,允许开发者通过扩展(Extensions)来增强平台功能。扩展是一种将自定义功能集成到 OpenBB 平台的方式,可以提供新的工具、数据源或服务。OpenBB 支持多种类型的扩展,包括数据提供者扩展、MCP 服务器扩展、新闻扩展等。扩展开发基于 Python 语言,使用 FastAPI 框架构建服务端点,并通过标准化接口与平台核心进行通...

章节 相关页面

继续阅读本节完整说明和来源证据。

章节 扩展类型分类

继续阅读本节完整说明和来源证据。

章节 使用 Cookiecutter 创建扩展

继续阅读本节完整说明和来源证据。

章节 项目配置

继续阅读本节完整说明和来源证据。

概述

OpenBB 平台采用模块化扩展架构,允许开发者通过扩展(Extensions)来增强平台功能。扩展是一种将自定义功能集成到 OpenBB 平台的方式,可以提供新的工具、数据源或服务。OpenBB 支持多种类型的扩展,包括数据提供者扩展、MCP 服务器扩展、新闻扩展等。扩展开发基于 Python 语言,使用 FastAPI 框架构建服务端点,并通过标准化接口与平台核心进行通信。开发者可以通过 cookiecutter 模板快速创建新扩展项目,也可以基于现有扩展进行定制化开发。扩展机制使 OpenBB 平台具有高度的可扩展性和灵活性,用户可以根据需求选择和安装不同的扩展来满足特定的数据分析或金融建模需求。

扩展架构

OpenBB 平台采用分层架构设计,扩展作为插件层与核心平台解耦。这种设计允许扩展在不影响平台核心稳定性的前提下独立开发、测试和部署。扩展通过标准化接口与平台通信,包括 REST API 端点、WebSocket 实时推送、以及 MCP(Model Context Protocol)协议支持。平台提供了统一的扩展管理界面,用户可以在桌面应用的扩展管理页面中查看已安装的扩展、安装新扩展、或卸载不需要的扩展。每个扩展都包含描述文件、安装脚本和使用文档,确保用户能够清晰地了解扩展的功能和使用方法。扩展可以依赖其他扩展或平台核心库,形成依赖关系网络,平台会自动处理这些依赖关系。

扩展类型分类

扩展类型用途技术栈示例
数据提供者扩展提供金融市场数据PythonYahoo Finance、Alpha Vantage
MCP 服务器扩展AI 工具集成FastAPI + MCPopenbb-mcp-server
新闻扩展新闻数据聚合Pythonopenbb-news
分析扩展自定义分析工具Python技术指标库

快速开始

使用 Cookiecutter 创建扩展

OpenBB 提供了官方的 cookiecutter 模板来加速扩展开发流程。通过该模板,开发者可以快速生成符合平台规范的项目结构,减少重复配置工作。

cookiecutter openbb_cookiecutter

该命令会启动交互式配置向导,提示开发者输入扩展名称、描述、作者信息等基本参数。完成配置后,模板会自动生成包含以下内容的项目结构:

openbb_[extension_name]/
├── README.md
├── pyproject.toml
├── openbb_[extension_name]/
│   ├── __init__.py
│   ├── my_module.py
│   └── routable.py
└── tests/
    └── test_my_module.py

项目结构遵循 PEP 517 规范,使用 pyproject.toml 作为项目配置文件。开发者需要在 pyproject.toml 中声明扩展的依赖项、元数据和入口点。模板中的 routable.py 文件演示了如何定义可路由的 FastAPI 端点,这是扩展暴露功能给平台的核心机制。

项目配置

扩展的 pyproject.toml 文件需要包含特定的配置项以确保与 OpenBB 平台的兼容性。以下是典型的配置示例:

[project]
name = "openbb-[extension-name]"
version = "0.1.0"
description = "Extension description"
requires-python = ">=3.9"

[project.optional-dependencies]
dev = ["pytest", "pytest-cov"]

[tool.openbb]
type = "extension"

配置中的 [tool.openbb] 部分用于标识这是一个 OpenBB 扩展,并指定扩展类型。平台安装管理器会扫描所有已安装包的该配置节来发现和加载扩展。

扩展开发规范

代码结构要求

OpenBB 扩展应遵循统一的代码组织结构,以确保可维护性和一致性。主扩展包应包含 __init__.py 文件,该文件负责初始化扩展并注册其功能。功能模块应按职责分离,清晰划分数据处理、API 路由、业务逻辑等不同层次。扩展应避免直接修改平台核心代码,所有功能增强都应通过扩展接口实现。

扩展目录结构应包含以下核心组件:

  • 主包目录:包含扩展的所有 Python 代码
  • README.md:详细的扩展文档和使用说明
  • pyproject.toml:项目配置和依赖声明
  • tests/:单元测试和集成测试
  • assets/(可选):扩展所需的静态资源

命名规范

扩展名称必须遵循特定的命名约定,以确保在 OpenBB 生态系统中的唯一性和可识别性。正式发布的扩展应使用 openbb-openbb_ 前缀,后跟描述性名称。扩展内的模块、类和函数命名应遵循 PEP 8 Python 命名规范。API 端点路径应使用小写字母和连字符,遵循 RESTful 最佳实践。环境变量前缀应统一使用 OPENBB_,避免与平台或其他扩展冲突。

MCP 服务器扩展开发

MCP 配置概述

MCP(Model Context Protocol)服务器扩展允许将 OpenBB 平台的功能暴露为 AI 工具,供大语言模型调用。这种集成方式使 AI 助手能够通过标准化的工具接口访问金融数据和分析功能。开发者可以通过两种方式配置 MCP 工具:内联配置和模型配置。

内联 MCP 配置

内联 MCP 配置允许开发者对 FastAPI 路由进行精细化控制。通过在路由定义中包含 openapi_extra 字典,开发者可以指定工具的各种属性,如是否暴露、工具类型、支持的方法等。

导入配置模型的方式如下:

from openbb_mcp_server.models.mcp_config import MCPConfigModel

MCP 配置属性

属性名类型说明可选值
exposebool是否暴露为 MCP 工具true/false
mcp_typeMCPTypeMCP 工具类型"tool"、"resource"、"resource_template"
methodslist[HTTPMethod]暴露的 HTTP 方法GET、POST 等

expose 设置为 False 时,该路由将完全从 MCP 服务器隐藏,适用于内部或已弃用的端点。mcp_type 属性用于指定工具的分类方式,不同类型对应不同的使用场景。methods 属性允许开发者精确控制哪些 HTTP 方法可被 MCP 调用。

MCP 提示词配置

开发者可以通过提示词配置文件为 MCP 工具定义详细的使用说明和上下文信息。提示词配置支持多轮对话场景,允许多个消息组成的对话历史。每个提示词包含名称、描述和消息数组,消息数组中的每个元素指定角色和内容。

以下是一个典型的 MCP 提示词配置示例:

{
  "name": "economy_gdp",
  "description": "Fetch GDP data for a country.",
  "messages": [
    {
      "role": "user",
      "content": {
        "type": "text",
        "text": "Use the tool, economy_gdp, to perform the following task.\n\nProvide a concise summary of the GDP for Japan over the last 10 years."
      }
    }
  ]
}

该配置定义了一个名为 economy_gdp 的工具,当 AI 助手调用该工具时,系统会向模型提供预设的提示词,指导模型如何解释和使用返回的数据。提示词支持动态内容注入,开发者可以在提示词中包含变量占位符,由系统在运行时替换为实际参数值。

安装与部署

本地安装扩展

扩展开发完成后,可以通过以下命令进行本地安装测试:

pip install -e ./openbb_[extension_name]

开发模式安装(使用 -e 标志)允许开发者在修改代码后立即看到效果,无需重新安装。安装过程中,平台会自动扫描扩展的 pyproject.toml 文件,识别扩展类型并将其注册到扩展管理系统。

扩展安装验证

安装完成后,用户可以通过 OpenBB 桌面应用的扩展管理界面验证扩展是否正确安装。扩展管理界面提供了已安装扩展的列表,包括扩展名称、版本、状态和操作按钮。开发者还可以在终端中通过命令行工具验证扩展加载情况。

发布扩展

正式发布的扩展应遵循 OpenBB 的发布规范。扩展需要包含完整的 README.md 文档,说明功能、安装方法、配置选项和使用示例。扩展的版本号应遵循语义化版本规范(SemVer),确保用户能够正确理解版本变更的影响。扩展应上传到 Python Package Index(PyPI)或私有包仓库,供用户通过 pip 安装。

测试与验证

单元测试

扩展开发应包含完整的单元测试,确保核心功能的正确性。测试文件应放置在 tests/ 目录下,使用 pytest 作为测试框架。测试应覆盖正常流程、边界条件和异常处理场景。

基本的测试结构如下:

import pytest
from openbb_[extension_name] import my_function

def test_my_function_success():
    result = my_function("valid_input")
    assert result == expected_output

def test_my_function_error():
    with pytest.raises(ValueError):
        my_function("invalid_input")

集成测试

除了单元测试,扩展还应包含集成测试以验证与其他平台组件的交互。集成测试应模拟真实的用户操作流程,包括扩展的初始化、数据获取、结果处理等环节。OpenBB 平台提供了测试工具和 fixtures,帮助开发者快速编写集成测试。

扩展管理界面

OpenBB 桌面应用提供了直观的扩展管理界面,用户可以通过该界面管理已安装的扩展。界面支持查看扩展详情、安装新扩展、卸载不需要的扩展等操作。扩展搜索功能允许用户通过关键词查找扩展市场中的可用扩展。环境管理功能还支持创建自定义 Python 环境,为不同项目配置独立的扩展组合。

桌面应用的安装进度页面会引导用户完成扩展安装的各个阶段,包括下载、解压、依赖解析和配置初始化。安装过程可能需要数分钟,具体取决于网络速度和扩展的依赖数量。

最佳实践

性能优化

扩展开发者应关注性能优化,确保扩展不会对平台整体响应时间产生负面影响。应使用异步编程模式处理 I/O 密集型任务,如网络请求和文件读写。缓存频繁访问的数据,减少重复计算。对于大量数据处理任务,应实现分页加载机制,避免一次性加载过多数据导致内存溢出。

安全性考虑

扩展应遵循安全编码实践,避免引入安全漏洞。敏感信息如 API 密钥应通过环境变量或 OpenBB 安全存储机制管理,不应硬编码在源代码中。所有外部输入都应进行验证和清理,防止注入攻击。扩展应声明所需的最小权限,仅请求完成功能所必需的系统访问。

错误处理

健壮的错误处理机制对于用户体验至关重要。扩展应捕获并处理可预见的错误情况,向用户提供清晰的错误消息。关键操作应实现重试机制,处理瞬时故障。对于不可恢复的错误,应记录详细日志,便于开发者诊断问题。

相关资源

  • OpenBB 平台贡献指南:包含详细的开发规范和流程说明
  • OpenBB 数据提供者扩展开发指南:专注于数据源扩展的创建
  • MCP 服务器扩展示例:展示完整的 MCP 工具实现
  • OpenBB 扩展市场:查找和安装社区开发的扩展

来源:https://github.com/OpenBB-finance/OpenBB / 项目说明书

REST API与部署

OpenBB Platform 提供了一套基于 FastAPI 构建的 REST API 服务,允许开发者通过 HTTP 协议访问平台功能。该 API 采用现代化设计,支持 CORS 跨域资源共享、自动化路由加载、系统配置管理等功能,为前端应用和第三方集成提供了标准化的接口层。

章节 相关页面

继续阅读本节完整说明和来源证据。

章节 整体架构图

继续阅读本节完整说明和来源证据。

章节 API 服务启动流程

继续阅读本节完整说明和来源证据。

章节 REST API 应用配置

继续阅读本节完整说明和来源证据。

概述

OpenBB Platform 提供了一套基于 FastAPI 构建的 REST API 服务,允许开发者通过 HTTP 协议访问平台功能。该 API 采用现代化设计,支持 CORS 跨域资源共享、自动化路由加载、系统配置管理等功能,为前端应用和第三方集成提供了标准化的接口层。

REST API 是 OpenBB Platform 架构的核心组成部分,它封装了底层的数据获取逻辑,为客户端提供统一的接口访问方式。开发者可以通过该 API 构建自定义的金融应用、数据可视化工具或与其他系统进行集成。

系统架构

整体架构图

graph TD
    A[客户端应用] --> B[FastAPI REST API]
    B --> C[CORS 中间件]
    C --> D[应用路由层]
    D --> E[业务逻辑服务]
    E --> F[数据提供器 Providers]
    F --> G[外部数据源]
    
    H[系统配置] --> B
    H --> E
    
    I[开发模式 Auth] --> D

API 服务启动流程

sequenceDiagram
    participant 客户端
    participant FastAPI as FastAPI 应用
    participant 中间件 as CORS中间件
    participant 路由 as 路由加载器
    participant 系统 as 系统配置

    客户端->>FastAPI: 启动请求 uvicorn
    FastAPI->>系统: 加载系统配置
    系统-->>FastAPI: 返回API设置
    FastAPI->>中间件: 配置CORS策略
    中间件-->>FastAPI: CORS配置完成
    FastAPI->>路由: 加载AppRouter
    路由-->>FastAPI: 注册路由端点
    FastAPI->>FastAPI: 生命周期管理启动

核心组件

REST API 应用配置

rest_api.py 文件负责构建 FastAPI 应用实例,定义了 API 的基础配置参数。

配置项说明来源
titleAPI 文档标题system.api_settings.title
descriptionAPI 描述信息system.api_settings.description
versionAPI 版本号system.api_settings.version
terms_of_service服务条款system.api_settings.terms_of_service
contact联系信息system.api_settings.contact_*
license_info许可证信息system.api_settings.license_*
servers服务器列表system.api_settings.servers

CORS 中间件配置通过 system.api_settings.cors 对象管理,支持以下参数:

CORS参数说明来源
allow_origins允许的源列表system.api_settings.cors.allow_origins
allow_methods允许的HTTP方法system.api_settings.cors.allow_methods
allow_headers允许的请求头system.api_settings.cors.allow_headers

资料来源:openbb_platform/core/openbb_core/api/rest_api.py:1-50

路由加载机制

AppLoader 类负责动态加载所有注册的路由端点,支持开发模式和发布模式两种路由配置。

AppLoader.add_routers(
    app=app,
    routers=(
        [AuthService().router, router_system, router_coverage, router_commands]
        if Env().DEV_MODE
        else (
            [router_commands, router_coverage]
            if ...
        )
    ),
)

路由加载逻辑根据环境变量 DEV_MODE 决定是否加载额外的开发模式路由,包括认证服务、系统路由、覆盖率路由和命令路由。

资料来源:openbb_platform/core/openbb_core/api/rest_api.py:40-55

系统服务配置

SystemService 负责管理 API 的系统级配置,包括标题、描述、版本、联系方式、许可证信息和 CORS 设置。这些配置可通过系统设置文件进行自定义。

服务类职责
SystemService提供 API 基础配置参数
ApiSettings定义配置数据模型
CorsSettings管理跨域资源共享策略

资料来源:openbb_platform/core/openbb_core/app/service/system_service.py

部署方式

本地开发服务器

使用 uvicorn 作为 ASGI 服务器启动 REST API:

uvicorn openbb_core.api.rest_api:app --host 0.0.0.0 --port 8000 --reload
参数说明示例值
--host监听地址0.0.0.0
--port监听端口8000
--reload启用热重载开发模式启用

启动后,API 文档可通过 http://localhost:8000/docs 访问。

资料来源:openbb_platform/README.md

命令行启动

通过 OpenBB CLI 命令启动 API 服务:

openbb-api

该命令封装了 uvicorn 启动逻辑,简化了部署流程。

扩展 API 入口

platform_api 扩展提供了独立的 API 入口点,支持自定义配置:

# openbb_platform/extensions/platform_api/openbb_platform_api/main.py
# 主入口模块,提供API启动配置

扩展 API 支持以下自定义参数:

参数说明
--editable以可编辑模式加载 widgets 配置
--no-build跳过构建步骤
--widgets-json指定自定义 widgets 配置文件路径
--apps-json指定自定义应用配置文件路径

资料来源:openbb_platform/extensions/platform_api/README.md

配置管理

运行时设置

API 运行时设置可通过以下方式配置:

配置方式适用场景说明
系统环境变量部署配置通过 Env() 类读取
用户设置文件用户偏好~/.openbb_platform/user_settings.json
代码内设置开发调试直接赋值 obb.user.credentials.*

系统配置模型

classDiagram
    class SystemSettings {
        +title: str
        +description: str
        +version: str
        +terms_of_service: str
        +contact: ContactInfo
        +license_info: LicenseInfo
        +servers: list[Server]
        +cors: CorsSettings
    }
    
    class CorsSettings {
        +allow_origins: list[str]
        +allow_methods: list[str]
        +allow_headers: list[str]
    }

API 密钥配置

user_settings.json 中配置数据源 API 密钥:

{
    "credentials": {
        "eia_api_key": "YOUR_API_KEY",
        "fred_api_key": "YOUR_FRED_KEY",
        "polygon_api_key": "YOUR_POLYGON_KEY"
    }
}

或通过代码直接设置:

from openbb import obb
obb.user.credentials.fred_api_key = "REPLACE_ME"
obb.user.credentials.polygon_api_key = "REPLACE_ME"

资料来源:openbb_platform/README.md

生命周期管理

API 应用采用上下文管理器模式进行生命周期管理,在启动和关闭时执行特定操作:

stateDiagram-v2
    [*] --> 启动中: uvicorn 启动
    启动中 --> 运行中: 加载配置完成
    运行中 --> 关闭中: 收到终止信号
    关闭中 --> [*]: 清理完成
    
    启动中 --> 打印Banner: 初始化日志
    打印Banner --> 加载路由: 注册端点
    加载路由 --> 运行中: 服务就绪

生命周期函数处理包括:

  • 启动时打印 Banner 信息
  • 初始化日志记录
  • 注册所有路由端点
  • 关闭时执行清理操作

资料来源:openbb_platform/core/openbb_core/api/rest_api.py:20-40

命令路由

commands.py 定义了命令相关的 API 路由端点,为客户端提供命令执行和查询功能。

路由类型说明用途
router_commands命令路由执行平台命令
router_coverage覆盖率路由查询功能覆盖情况
router_system系统路由系统配置与管理

资料来源:openbb_platform/core/openbb_core/api/router/commands.py

开发指南

环境准备

本地开发需要以下环境:

要求说明
Git版本控制
Python3.10 - 3.13
Poetry依赖管理
虚拟环境隔离开发环境

安装步骤

# 1. 克隆仓库
git clone https://github.com/OpenBB-finance/OpenBB.git

# 2. 进入平台目录
cd openbb_platform

# 3. 安装开发依赖
python dev_install.py -e

API 文档访问

启动服务后,可通过浏览器访问交互式 API 文档:

文档路径框架说明
/docsSwagger UI交互式 API 文档
/redocReDoc备选文档界面

扩展机制

OpenBB Platform 支持通过扩展增强 API 功能:

graph LR
    A[核心API] --> B[Platform API扩展]
    A --> C[News扩展]
    A --> D[Commodity扩展]
    A --> E[更多扩展...]
    
    B --> F[Widgets配置]
    B --> F[Apps配置]

扩展安装后会自动注册到 API 路由中,无需手动配置。

相关资源

资料来源:[openbb_platform/core/openbb_core/api/rest_api.py:1-50]()

失败模式与踩坑日记

保留 Doramagic 在发现、验证和编译中沉淀的项目专属风险,不把社区讨论只当作装饰信息。

high 来源证据:[FR] Add Bank of Canada Valet API as a new provider extension

可能影响授权、密钥配置或安全边界。

high 来源证据:[FR] Add Real-time Cryptocurrency Data Provider Integration

可能影响授权、密钥配置或安全边界。

high 涉及密钥、隐私或敏感领域

金融、交易、隐私和密钥场景必须比普通工具更保守。

medium 来源证据:[Bug] PyWry WebView Fails to Launch on Ubuntu 24.04

可能阻塞安装或首次运行。

Pitfall Log / 踩坑日志

项目:OpenBB-finance/OpenBB

摘要:发现 17 个潜在踩坑项,其中 3 个为 high/blocking;最高优先级:安全/权限坑 - 来源证据:[FR] Add Bank of Canada Valet API as a new provider extension。

1. 安全/权限坑 · 来源证据:[FR] Add Bank of Canada Valet API as a new provider extension

  • 严重度:high
  • 证据强度:source_linked
  • 发现:GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题:[FR] Add Bank of Canada Valet API as a new provider extension
  • 对用户的影响:可能影响授权、密钥配置或安全边界。
  • 建议检查:来源问题仍为 open,Pack Agent 需要复核是否仍影响当前版本。
  • 防护动作:不得脱离来源链接放大为确定性结论;需要标注适用版本和复核状态。
  • 证据:community_evidence:github | cevd_a8349d4112564c48b29615f3530e81e4 | https://github.com/OpenBB-finance/OpenBB/issues/7490 | 来源讨论提到 api key 相关条件,需在安装/试用前复核。

2. 安全/权限坑 · 来源证据:[FR] Add Real-time Cryptocurrency Data Provider Integration

  • 严重度:high
  • 证据强度:source_linked
  • 发现:GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题:[FR] Add Real-time Cryptocurrency Data Provider Integration
  • 对用户的影响:可能影响授权、密钥配置或安全边界。
  • 建议检查:来源问题仍为 open,Pack Agent 需要复核是否仍影响当前版本。
  • 防护动作:不得脱离来源链接放大为确定性结论;需要标注适用版本和复核状态。
  • 证据:community_evidence:github | cevd_e1bb7e5c7c0a4dc2bea2a256ed74a0b0 | https://github.com/OpenBB-finance/OpenBB/issues/7177 | 来源讨论提到 api key 相关条件,需在安装/试用前复核。

3. 安全/权限坑 · 涉及密钥、隐私或敏感领域

  • 严重度:high
  • 证据强度:source_linked
  • 发现:项目文本出现 secret/private key/privacy/trading/finance 等敏感关键词。
  • 对用户的影响:金融、交易、隐私和密钥场景必须比普通工具更保守。
  • 建议检查:补敏感数据流、密钥存储和权限边界审查。
  • 防护动作:敏感领域或密钥场景必须保守推荐并要求人工复核。
  • 证据:packet_text.keyword_scan | github_repo:323048702 | https://github.com/OpenBB-finance/OpenBB | matched secret / private key / privacy / trading / finance keyword

4. 安装坑 · 来源证据:[Bug] PyWry WebView Fails to Launch on Ubuntu 24.04

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:GitHub 社区证据显示该项目存在一个安装相关的待验证问题:[Bug] PyWry WebView Fails to Launch on Ubuntu 24.04
  • 对用户的影响:可能阻塞安装或首次运行。
  • 建议检查:来源显示可能已有修复、规避或版本变化,说明书中必须标注适用版本。
  • 防护动作:不得脱离来源链接放大为确定性结论;需要标注适用版本和复核状态。
  • 证据:community_evidence:github | cevd_c068fa0d9cac4fb7b74d875b22d312d7 | https://github.com/OpenBB-finance/OpenBB/issues/7148 | 来源讨论提到 python 相关条件,需在安装/试用前复核。

5. 安装坑 · 来源证据:[Bug] Widgets not saving their position and size after refresh

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:GitHub 社区证据显示该项目存在一个安装相关的待验证问题:[Bug] Widgets not saving their position and size after refresh
  • 对用户的影响:可能增加新用户试用和生产接入成本。
  • 建议检查:来源显示可能已有修复、规避或版本变化,说明书中必须标注适用版本。
  • 防护动作:不得脱离来源链接放大为确定性结论;需要标注适用版本和复核状态。
  • 证据:community_evidence:github | cevd_b7792ca1efe649c085e18a8a6be37d49 | https://github.com/OpenBB-finance/OpenBB/issues/7479 | 来源类型 github_issue 暴露的待验证使用条件。

6. 能力坑 · 能力判断依赖假设

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:README/documentation is current enough for a first validation pass.
  • 对用户的影响:假设不成立时,用户拿不到承诺的能力。
  • 建议检查:将假设转成下游验证清单。
  • 防护动作:假设必须转成验证项;没有验证结果前不能写成事实。
  • 证据:capability.assumptions | github_repo:323048702 | https://github.com/OpenBB-finance/OpenBB | README/documentation is current enough for a first validation pass.

7. 运行坑 · 来源证据:ODP Desktop v1.0.2

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:GitHub 社区证据显示该项目存在一个运行相关的待验证问题:ODP Desktop v1.0.2
  • 对用户的影响:可能增加新用户试用和生产接入成本。
  • 建议检查:来源显示可能已有修复、规避或版本变化,说明书中必须标注适用版本。
  • 防护动作:不得脱离来源链接放大为确定性结论;需要标注适用版本和复核状态。
  • 证据:community_evidence:github | cevd_cf07c5d467e44c168f2650a3c4404f46 | https://github.com/OpenBB-finance/OpenBB/releases/tag/Open-Data-Platform-v1.0.2 | 来源讨论提到 windows 相关条件,需在安装/试用前复核。

8. 维护坑 · 维护活跃度未知

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:未记录 last_activity_observed。
  • 对用户的影响:新项目、停更项目和活跃项目会被混在一起,推荐信任度下降。
  • 建议检查:补 GitHub 最近 commit、release、issue/PR 响应信号。
  • 防护动作:维护活跃度未知时,推荐强度不能标为高信任。
  • 证据:evidence.maintainer_signals | github_repo:323048702 | https://github.com/OpenBB-finance/OpenBB | last_activity_observed missing

9. 安全/权限坑 · 下游验证发现风险项

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:no_demo
  • 对用户的影响:下游已经要求复核,不能在页面中弱化。
  • 建议检查:进入安全/权限治理复核队列。
  • 防护动作:下游风险存在时必须保持 review/recommendation 降级。
  • 证据:downstream_validation.risk_items | github_repo:323048702 | https://github.com/OpenBB-finance/OpenBB | no_demo; severity=medium

10. 安全/权限坑 · 存在评分风险

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:no_demo
  • 对用户的影响:风险会影响是否适合普通用户安装。
  • 建议检查:把风险写入边界卡,并确认是否需要人工复核。
  • 防护动作:评分风险必须进入边界卡,不能只作为内部分数。
  • 证据:risks.scoring_risks | github_repo:323048702 | https://github.com/OpenBB-finance/OpenBB | no_demo; severity=medium

11. 安全/权限坑 · 来源证据:ODP Desktop v1.0.1

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题:ODP Desktop v1.0.1
  • 对用户的影响:可能增加新用户试用和生产接入成本。
  • 建议检查:来源显示可能已有修复、规避或版本变化,说明书中必须标注适用版本。
  • 防护动作:不得脱离来源链接放大为确定性结论;需要标注适用版本和复核状态。
  • 证据:community_evidence:github | cevd_b5b0cf96b9b1456e8192a80e8c9fbcfd | https://github.com/OpenBB-finance/OpenBB/releases/tag/Open-Data-Platform-v1.0.1 | 来源讨论提到 windows 相关条件,需在安装/试用前复核。

12. 安全/权限坑 · 来源证据:OpenBB Platform v4.5.0

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题:OpenBB Platform v4.5.0
  • 对用户的影响:可能影响升级、迁移或版本选择。
  • 建议检查:来源显示可能已有修复、规避或版本变化,说明书中必须标注适用版本。
  • 防护动作:不得脱离来源链接放大为确定性结论;需要标注适用版本和复核状态。
  • 证据:community_evidence:github | cevd_ff4708f0690c485c9453a90b7b1f926a | https://github.com/OpenBB-finance/OpenBB/releases/tag/v4.5.0 | 来源讨论提到 python 相关条件,需在安装/试用前复核。

13. 安全/权限坑 · 来源证据:OpenBB Platform v4.6.0

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题:OpenBB Platform v4.6.0
  • 对用户的影响:可能影响升级、迁移或版本选择。
  • 建议检查:来源显示可能已有修复、规避或版本变化,说明书中必须标注适用版本。
  • 防护动作:不得脱离来源链接放大为确定性结论;需要标注适用版本和复核状态。
  • 证据:community_evidence:github | cevd_58ecf0b5c49441d7818b4f384f522024 | https://github.com/OpenBB-finance/OpenBB/releases/tag/v4.6.0 | 来源讨论提到 python 相关条件,需在安装/试用前复核。

14. 安全/权限坑 · 来源证据:OpenBB V4.7.0

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题:OpenBB V4.7.0
  • 对用户的影响:可能影响升级、迁移或版本选择。
  • 建议检查:来源显示可能已有修复、规避或版本变化,说明书中必须标注适用版本。
  • 防护动作:不得脱离来源链接放大为确定性结论;需要标注适用版本和复核状态。
  • 证据:community_evidence:github | cevd_487435c8c60a497092f647438af74f89 | https://github.com/OpenBB-finance/OpenBB/releases/tag/v4.7.0 | 来源讨论提到 python 相关条件,需在安装/试用前复核。

15. 安全/权限坑 · 来源证据:[Bug] Openbb 4.5.0 cannot import name 'OBBject_EquityInfo' from 'openbb_core.app.provider_interface'

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题:[Bug] Openbb 4.5.0 cannot import name 'OBBject_EquityInfo' from 'openbb_core.app.provider_interface'
  • 对用户的影响:可能影响授权、密钥配置或安全边界。
  • 建议检查:来源显示可能已有修复、规避或版本变化,说明书中必须标注适用版本。
  • 防护动作:不得脱离来源链接放大为确定性结论;需要标注适用版本和复核状态。
  • 证据:community_evidence:github | cevd_95461e0340ed4ee5a724d3d6966b0bcf | https://github.com/OpenBB-finance/OpenBB/issues/7279 | 来源讨论提到 python 相关条件,需在安装/试用前复核。

16. 维护坑 · issue/PR 响应质量未知

  • 严重度:low
  • 证据强度:source_linked
  • 发现:issue_or_pr_quality=unknown。
  • 对用户的影响:用户无法判断遇到问题后是否有人维护。
  • 建议检查:抽样最近 issue/PR,判断是否长期无人处理。
  • 防护动作:issue/PR 响应未知时,必须提示维护风险。
  • 证据:evidence.maintainer_signals | github_repo:323048702 | https://github.com/OpenBB-finance/OpenBB | issue_or_pr_quality=unknown

17. 维护坑 · 发布节奏不明确

  • 严重度:low
  • 证据强度:source_linked
  • 发现:release_recency=unknown。
  • 对用户的影响:安装命令和文档可能落后于代码,用户踩坑概率升高。
  • 建议检查:确认最近 release/tag 和 README 安装命令是否一致。
  • 防护动作:发布节奏未知或过期时,安装说明必须标注可能漂移。
  • 证据:evidence.maintainer_signals | github_repo:323048702 | https://github.com/OpenBB-finance/OpenBB | release_recency=unknown

来源:Doramagic 发现、验证与编译记录