{
  "canonical_name": "OpenBB-finance/OpenBB",
  "compilation_id": "pack_1299d3f8ab1e4111a587df6b2b8ce4bb",
  "created_at": "2026-05-12T16:09:38.206469+00:00",
  "created_by": "project-pack-compiler",
  "feedback": {
    "carrier_selection_notes": [
      "viable_asset_types=skill, recipe, host_instruction, eval, preflight",
      "recommended_asset_types=skill, recipe, host_instruction, eval, preflight"
    ],
    "evidence_delta": {
      "confirmed_claims": [
        "identity_anchor_present",
        "capability_and_host_targets_present",
        "install_path_declared_or_better"
      ],
      "missing_required_fields": [],
      "must_verify_forwarded": [
        "Run or inspect `pip install openbb` in an isolated environment.",
        "Confirm the project exposes the claimed capability to at least one target host."
      ],
      "quickstart_execution_scope": "allowlisted_sandbox_smoke",
      "sandbox_command": "pip install openbb",
      "sandbox_container_image": "python:3.12-slim",
      "sandbox_execution_backend": "docker",
      "sandbox_planner_decision": "deterministic_isolated_install",
      "sandbox_validation_id": "sbx_23a9a1744f0e4a3a97d9429fb365cb19"
    },
    "feedback_event_type": "project_pack_compilation_feedback",
    "learning_candidate_reasons": [],
    "template_gaps": []
  },
  "identity": {
    "canonical_id": "project_ab6a93ad1602edf82f97a26589a1b3ae",
    "canonical_name": "OpenBB-finance/OpenBB",
    "homepage_url": null,
    "license": "unknown",
    "repo_url": "https://github.com/OpenBB-finance/OpenBB",
    "slug": "openbb",
    "source_packet_id": "phit_1e4dc47e7db44065be5c279bbe9f57d9",
    "source_validation_id": "dval_967c28e63a4a4d4cac2093da0aab6a6b"
  },
  "merchandising": {
    "best_for": "需要数据分析与投资研究能力，并使用 local_cli的用户",
    "github_forks": 6781,
    "github_stars": 67495,
    "one_liner_en": "Financial data platform for analysts, quants and AI agents.",
    "one_liner_zh": "Financial data platform for analysts, quants and AI agents.",
    "primary_category": {
      "category_id": "data-market-research",
      "confidence": "high",
      "name_en": "Data & Market Research",
      "name_zh": "数据分析与投资研究",
      "reason": "matched_keywords:data, finance, financial"
    },
    "target_user": "使用 local_cli 等宿主 AI 的用户",
    "title_en": "OpenBB",
    "title_zh": "OpenBB 能力包",
    "visible_tags": [
      {
        "label_en": "MCP Tools",
        "label_zh": "MCP 工具",
        "source": "repo_evidence_project_characteristics",
        "tag_id": "product_domain-mcp-tools",
        "type": "product_domain"
      },
      {
        "label_en": "Knowledge Base Q&A",
        "label_zh": "知识库问答",
        "source": "repo_evidence_project_characteristics",
        "tag_id": "user_job-knowledge-base-q-a",
        "type": "user_job"
      },
      {
        "label_en": "Workflow Automation",
        "label_zh": "流程自动化",
        "source": "repo_evidence_project_characteristics",
        "tag_id": "core_capability-workflow-automation",
        "type": "core_capability"
      },
      {
        "label_en": "Automated Workflow",
        "label_zh": "自动化工作流",
        "source": "repo_evidence_project_characteristics",
        "tag_id": "workflow_pattern-automated-workflow",
        "type": "workflow_pattern"
      },
      {
        "label_en": "Evaluation Suite",
        "label_zh": "评测体系",
        "source": "repo_evidence_project_characteristics",
        "tag_id": "selection_signal-evaluation-suite",
        "type": "selection_signal"
      }
    ]
  },
  "packet_id": "phit_1e4dc47e7db44065be5c279bbe9f57d9",
  "page_model": {
    "artifacts": {
      "artifact_slug": "openbb",
      "files": [
        "PROJECT_PACK.json",
        "QUICK_START.md",
        "PROMPT_PREVIEW.md",
        "HUMAN_MANUAL.md",
        "AI_CONTEXT_PACK.md",
        "BOUNDARY_RISK_CARD.md",
        "PITFALL_LOG.md",
        "REPO_INSPECTION.json",
        "REPO_INSPECTION.md",
        "CAPABILITY_CONTRACT.json",
        "EVIDENCE_INDEX.json",
        "CLAIM_GRAPH.json"
      ],
      "required_files": [
        "PROJECT_PACK.json",
        "QUICK_START.md",
        "PROMPT_PREVIEW.md",
        "HUMAN_MANUAL.md",
        "AI_CONTEXT_PACK.md",
        "BOUNDARY_RISK_CARD.md",
        "PITFALL_LOG.md",
        "REPO_INSPECTION.json"
      ]
    },
    "detail": {
      "capability_source": "Project Hit Packet + DownstreamValidationResult",
      "commands": [
        {
          "command": "pip install openbb",
          "label": "Python / pip · 官方安装入口",
          "source": "https://github.com/OpenBB-finance/OpenBB#readme",
          "verified": true
        }
      ],
      "display_tags": [
        "MCP 工具",
        "知识库问答",
        "流程自动化",
        "自动化工作流",
        "评测体系"
      ],
      "eyebrow": "数据分析与投资研究",
      "glance": [
        {
          "body": "判断自己是不是目标用户。",
          "label": "最适合谁",
          "value": "需要数据分析与投资研究能力，并使用 local_cli的用户"
        },
        {
          "body": "先理解能力边界，再决定是否继续。",
          "label": "核心价值",
          "value": "Financial data platform for analysts, quants and AI agents."
        },
        {
          "body": "未完成验证前保持审慎。",
          "label": "继续前",
          "value": "publish to Doramagic.ai project surfaces"
        }
      ],
      "guardrail_source": "Boundary & Risk Card",
      "guardrails": [
        {
          "body": "Prompt Preview 只展示流程，不证明项目已安装或运行。",
          "label": "Check 1",
          "value": "不要把试用当真实运行"
        },
        {
          "body": "local_cli",
          "label": "Check 2",
          "value": "确认宿主兼容"
        },
        {
          "body": "publish to Doramagic.ai project surfaces",
          "label": "Check 3",
          "value": "先隔离验证"
        }
      ],
      "mode": "skill, recipe, host_instruction, eval, preflight",
      "pitfall_log": {
        "items": [
          {
            "body": "GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：[FR] Add Bank of Canada Valet API as a new provider extension",
            "category": "安全/权限坑",
            "evidence": [
              "community_evidence:github | cevd_a8349d4112564c48b29615f3530e81e4 | https://github.com/OpenBB-finance/OpenBB/issues/7490 | 来源讨论提到 api key 相关条件，需在安装/试用前复核。"
            ],
            "severity": "high",
            "suggested_check": "来源问题仍为 open，Pack Agent 需要复核是否仍影响当前版本。",
            "title": "来源证据：[FR] Add Bank of Canada Valet API as a new provider extension",
            "user_impact": "可能影响授权、密钥配置或安全边界。"
          },
          {
            "body": "GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：[FR] Add Real-time Cryptocurrency Data Provider Integration",
            "category": "安全/权限坑",
            "evidence": [
              "community_evidence:github | cevd_e1bb7e5c7c0a4dc2bea2a256ed74a0b0 | https://github.com/OpenBB-finance/OpenBB/issues/7177 | 来源讨论提到 api key 相关条件，需在安装/试用前复核。"
            ],
            "severity": "high",
            "suggested_check": "来源问题仍为 open，Pack Agent 需要复核是否仍影响当前版本。",
            "title": "来源证据：[FR] Add Real-time Cryptocurrency Data Provider Integration",
            "user_impact": "可能影响授权、密钥配置或安全边界。"
          },
          {
            "body": "项目文本出现 secret/private key/privacy/trading/finance 等敏感关键词。",
            "category": "安全/权限坑",
            "evidence": [
              "packet_text.keyword_scan | github_repo:323048702 | https://github.com/OpenBB-finance/OpenBB | matched secret / private key / privacy / trading / finance keyword"
            ],
            "severity": "high",
            "suggested_check": "补敏感数据流、密钥存储和权限边界审查。",
            "title": "涉及密钥、隐私或敏感领域",
            "user_impact": "金融、交易、隐私和密钥场景必须比普通工具更保守。"
          },
          {
            "body": "GitHub 社区证据显示该项目存在一个安装相关的待验证问题：[Bug] PyWry WebView Fails to Launch on Ubuntu 24.04",
            "category": "安装坑",
            "evidence": [
              "community_evidence:github | cevd_c068fa0d9cac4fb7b74d875b22d312d7 | https://github.com/OpenBB-finance/OpenBB/issues/7148 | 来源讨论提到 python 相关条件，需在安装/试用前复核。"
            ],
            "severity": "medium",
            "suggested_check": "来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。",
            "title": "来源证据：[Bug] PyWry WebView Fails to Launch on Ubuntu 24.04",
            "user_impact": "可能阻塞安装或首次运行。"
          },
          {
            "body": "GitHub 社区证据显示该项目存在一个安装相关的待验证问题：[Bug] Widgets not saving their position and size after refresh",
            "category": "安装坑",
            "evidence": [
              "community_evidence:github | cevd_b7792ca1efe649c085e18a8a6be37d49 | https://github.com/OpenBB-finance/OpenBB/issues/7479 | 来源类型 github_issue 暴露的待验证使用条件。"
            ],
            "severity": "medium",
            "suggested_check": "来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。",
            "title": "来源证据：[Bug] Widgets not saving their position and size after refresh",
            "user_impact": "可能增加新用户试用和生产接入成本。"
          },
          {
            "body": "README/documentation is current enough for a first validation pass.",
            "category": "能力坑",
            "evidence": [
              "capability.assumptions | github_repo:323048702 | https://github.com/OpenBB-finance/OpenBB | README/documentation is current enough for a first validation pass."
            ],
            "severity": "medium",
            "suggested_check": "将假设转成下游验证清单。",
            "title": "能力判断依赖假设",
            "user_impact": "假设不成立时，用户拿不到承诺的能力。"
          },
          {
            "body": "GitHub 社区证据显示该项目存在一个运行相关的待验证问题：ODP Desktop v1.0.2",
            "category": "运行坑",
            "evidence": [
              "community_evidence:github | cevd_cf07c5d467e44c168f2650a3c4404f46 | https://github.com/OpenBB-finance/OpenBB/releases/tag/Open-Data-Platform-v1.0.2 | 来源讨论提到 windows 相关条件，需在安装/试用前复核。"
            ],
            "severity": "medium",
            "suggested_check": "来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。",
            "title": "来源证据：ODP Desktop v1.0.2",
            "user_impact": "可能增加新用户试用和生产接入成本。"
          },
          {
            "body": "未记录 last_activity_observed。",
            "category": "维护坑",
            "evidence": [
              "evidence.maintainer_signals | github_repo:323048702 | https://github.com/OpenBB-finance/OpenBB | last_activity_observed missing"
            ],
            "severity": "medium",
            "suggested_check": "补 GitHub 最近 commit、release、issue/PR 响应信号。",
            "title": "维护活跃度未知",
            "user_impact": "新项目、停更项目和活跃项目会被混在一起，推荐信任度下降。"
          },
          {
            "body": "no_demo",
            "category": "安全/权限坑",
            "evidence": [
              "downstream_validation.risk_items | github_repo:323048702 | https://github.com/OpenBB-finance/OpenBB | no_demo; severity=medium"
            ],
            "severity": "medium",
            "suggested_check": "进入安全/权限治理复核队列。",
            "title": "下游验证发现风险项",
            "user_impact": "下游已经要求复核，不能在页面中弱化。"
          },
          {
            "body": "no_demo",
            "category": "安全/权限坑",
            "evidence": [
              "risks.scoring_risks | github_repo:323048702 | https://github.com/OpenBB-finance/OpenBB | no_demo; severity=medium"
            ],
            "severity": "medium",
            "suggested_check": "把风险写入边界卡，并确认是否需要人工复核。",
            "title": "存在评分风险",
            "user_impact": "风险会影响是否适合普通用户安装。"
          },
          {
            "body": "GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：ODP Desktop v1.0.1",
            "category": "安全/权限坑",
            "evidence": [
              "community_evidence:github | cevd_b5b0cf96b9b1456e8192a80e8c9fbcfd | https://github.com/OpenBB-finance/OpenBB/releases/tag/Open-Data-Platform-v1.0.1 | 来源讨论提到 windows 相关条件，需在安装/试用前复核。"
            ],
            "severity": "medium",
            "suggested_check": "来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。",
            "title": "来源证据：ODP Desktop v1.0.1",
            "user_impact": "可能增加新用户试用和生产接入成本。"
          },
          {
            "body": "GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：OpenBB Platform v4.5.0",
            "category": "安全/权限坑",
            "evidence": [
              "community_evidence:github | cevd_ff4708f0690c485c9453a90b7b1f926a | https://github.com/OpenBB-finance/OpenBB/releases/tag/v4.5.0 | 来源讨论提到 python 相关条件，需在安装/试用前复核。"
            ],
            "severity": "medium",
            "suggested_check": "来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。",
            "title": "来源证据：OpenBB Platform v4.5.0",
            "user_impact": "可能影响升级、迁移或版本选择。"
          },
          {
            "body": "GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：OpenBB Platform v4.6.0",
            "category": "安全/权限坑",
            "evidence": [
              "community_evidence:github | cevd_58ecf0b5c49441d7818b4f384f522024 | https://github.com/OpenBB-finance/OpenBB/releases/tag/v4.6.0 | 来源讨论提到 python 相关条件，需在安装/试用前复核。"
            ],
            "severity": "medium",
            "suggested_check": "来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。",
            "title": "来源证据：OpenBB Platform v4.6.0",
            "user_impact": "可能影响升级、迁移或版本选择。"
          },
          {
            "body": "GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：OpenBB V4.7.0",
            "category": "安全/权限坑",
            "evidence": [
              "community_evidence:github | cevd_487435c8c60a497092f647438af74f89 | https://github.com/OpenBB-finance/OpenBB/releases/tag/v4.7.0 | 来源讨论提到 python 相关条件，需在安装/试用前复核。"
            ],
            "severity": "medium",
            "suggested_check": "来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。",
            "title": "来源证据：OpenBB V4.7.0",
            "user_impact": "可能影响升级、迁移或版本选择。"
          },
          {
            "body": "GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：[Bug] Openbb 4.5.0 cannot import name 'OBBject_EquityInfo' from 'openbb_core.app.provider_interface'",
            "category": "安全/权限坑",
            "evidence": [
              "community_evidence:github | cevd_95461e0340ed4ee5a724d3d6966b0bcf | https://github.com/OpenBB-finance/OpenBB/issues/7279 | 来源讨论提到 python 相关条件，需在安装/试用前复核。"
            ],
            "severity": "medium",
            "suggested_check": "来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。",
            "title": "来源证据：[Bug] Openbb 4.5.0 cannot import name 'OBBject_EquityInfo' from 'openbb_core.app.provider_interface'",
            "user_impact": "可能影响授权、密钥配置或安全边界。"
          },
          {
            "body": "issue_or_pr_quality=unknown。",
            "category": "维护坑",
            "evidence": [
              "evidence.maintainer_signals | github_repo:323048702 | https://github.com/OpenBB-finance/OpenBB | issue_or_pr_quality=unknown"
            ],
            "severity": "low",
            "suggested_check": "抽样最近 issue/PR，判断是否长期无人处理。",
            "title": "issue/PR 响应质量未知",
            "user_impact": "用户无法判断遇到问题后是否有人维护。"
          }
        ],
        "source": "ProjectPitfallLog + ProjectHitPacket + validation + community signals",
        "summary": "发现 17 个潜在踩坑项，其中 3 个为 high/blocking；最高优先级：安全/权限坑 - 来源证据：[FR] Add Bank of Canada Valet API as a new provider extension。",
        "title": "踩坑日志"
      },
      "snapshot": {
        "contributors": 268,
        "forks": 6781,
        "license": "unknown",
        "note": "GitHub API 快照，非实时质量证明；用于开工前背景判断。",
        "stars": 67495,
        "open_issues": 78,
        "pushed_at": null
      },
      "source_url": "https://github.com/OpenBB-finance/OpenBB",
      "steps": [
        {
          "body": "不安装项目，先体验能力节奏。",
          "code": "preview",
          "title": "先试 Prompt"
        },
        {
          "body": "理解输入、输出、失败模式和边界。",
          "code": "manual",
          "title": "读说明书"
        },
        {
          "body": "把上下文交给宿主 AI 继续工作。",
          "code": "context",
          "title": "带给 AI"
        },
        {
          "body": "进入主力环境前先完成安装入口与风险边界验证。",
          "code": "verify",
          "title": "沙箱验证"
        }
      ],
      "subtitle": "Financial data platform for analysts, quants and AI agents.",
      "title": "OpenBB 能力包",
      "trial_prompt": "# OpenBB - Prompt Preview\n\n> 复制下面这段 Prompt 到你常用的 AI，先试一次，不需要安装。\n> 它的目标是让你直接体验这个项目的服务方式，而不是阅读项目介绍。\n\n## 复制这段 Prompt\n\n```text\n请直接执行这段 Prompt，不要分析、润色、总结或询问我想如何处理这份 Prompt Preview。\n\n你现在扮演 OpenBB 的“安装前体验版”。\n这不是项目介绍、不是评价报告、不是 README 总结。你的任务是让我用最小成本体验它的核心服务。\n\n我的试用任务：我想用它完成一个真实的数据分析与投资研究任务。\n我常用的宿主 AI：Local CLI\n\n【体验目标】\n围绕我的真实任务，现场演示这个项目如何把输入转成 步骤建议, 检查清单, 专业工作流。重点是让我感受到工作方式，而不是给我项目背景。\n\n【业务流约束】\n- 你必须像一个正在提供服务的项目能力包，而不是像一个讲解员。\n- 每一轮只推进一个步骤；提出问题后必须停下来等我回答。\n- 每一步都必须让我感受到一个具体服务动作：澄清、整理、规划、检查、判断或收尾。\n- 每一步都要说明：当前目标、你需要我提供什么、我回答后你会产出什么。\n- 不要安装、不要运行命令、不要写代码、不要声称测试通过、不要声称已经修改文件。\n- 需要真实安装或宿主加载后才能验证的内容，必须明确说“这一步需要安装后验证”。\n- 如果我说“用示例继续”，你可以用虚构示例推进，但仍然不能声称真实执行。\n\n【可体验服务能力】\n- AI Skill / Agent 指令资产库: 项目包含可被宿主 AI 读取的 Skill 或 Agent 指令文件，可用于把专业流程带入 Claude、Codex、Cursor 等宿主。 输入：用户任务, 宿主 AI 对话上下文, 项目内 Skill/Agent 文档；输出：步骤建议, 检查清单, 专业工作流。\n\n【必须安装后才可验证的能力】\n- 命令行启动或安装流程: 项目文档中存在可执行命令，真实使用需要在本地或宿主环境中运行这些命令。 输入：终端环境, 包管理器, 项目依赖；输出：安装结果, 列表/更新/运行结果。\n\n【核心服务流】\n请严格按这个顺序带我体验。不要一次性输出完整流程：\n1. page-1：OpenBB项目概述。围绕“OpenBB项目概述”模拟一次用户任务，不展示安装或运行结果。\n2. page-2：项目目录结构。围绕“项目目录结构”模拟一次用户任务，不展示安装或运行结果。\n3. page-3：核心架构设计。围绕“核心架构设计”模拟一次用户任务，不展示安装或运行结果。\n4. page-4：OBBject数据模型。围绕“OBBject数据模型”模拟一次用户任务，不展示安装或运行结果。\n5. page-5：数据提供者系统。围绕“数据提供者系统”模拟一次用户任务，不展示安装或运行结果。\n\n【核心能力体验剧本】\n每一步都必须按“输入 -> 服务动作 -> 中间产物”执行。不要只说流程名：\n1. page-1\n输入：用户提供的“OpenBB项目概述”相关信息。\n服务动作：模拟项目在这一步的核心判断和整理方式。\n中间产物：一个可检查的小结果。\n\n2. page-2\n输入：用户提供的“项目目录结构”相关信息。\n服务动作：模拟项目在这一步的核心判断和整理方式。\n中间产物：一个可检查的小结果。\n\n3. page-3\n输入：用户提供的“核心架构设计”相关信息。\n服务动作：模拟项目在这一步的核心判断和整理方式。\n中间产物：一个可检查的小结果。\n\n4. page-4\n输入：用户提供的“OBBject数据模型”相关信息。\n服务动作：模拟项目在这一步的核心判断和整理方式。\n中间产物：一个可检查的小结果。\n\n5. page-5\n输入：用户提供的“数据提供者系统”相关信息。\n服务动作：模拟项目在这一步的核心判断和整理方式。\n中间产物：一个可检查的小结果。\n\n【项目服务规则】\n这些规则决定你如何服务用户。不要解释规则本身，而要在每一步执行时遵守：\n- 先确认用户任务、输入材料和成功标准，再模拟项目能力。\n- 每一步都必须形成可检查的小产物，并等待用户确认后再继续。\n- 凡是需要安装、调用工具或访问外部服务的能力，都必须标记为安装后验证。\n\n【每一步的服务约束】\n- Step 1 / page-1：Step 1 必须围绕“OpenBB项目概述”形成一个小中间产物，并等待用户确认。\n- Step 2 / page-2：Step 2 必须围绕“项目目录结构”形成一个小中间产物，并等待用户确认。\n- Step 3 / page-3：Step 3 必须围绕“核心架构设计”形成一个小中间产物，并等待用户确认。\n- Step 4 / page-4：Step 4 必须围绕“OBBject数据模型”形成一个小中间产物，并等待用户确认。\n- Step 5 / page-5：Step 5 必须围绕“数据提供者系统”形成一个小中间产物，并等待用户确认。\n\n【边界与风险】\n- 不要声称已经安装、运行、调用 API、读写本地文件或完成真实任务。\n- 安装前预览只能展示工作方式，不能证明兼容性、性能或输出质量。\n- 涉及安装、插件加载、工具调用或外部服务的能力必须安装后验证。\n\n【可追溯依据】\n这些路径只用于你内部校验或在我追问“依据是什么”时简要引用。不要在首次回复主动展开：\n- https://github.com/OpenBB-finance/OpenBB\n- https://github.com/OpenBB-finance/OpenBB#readme\n- openbb_platform/extensions/mcp_server/openbb_mcp_server/skills/build_workspace_app/SKILL.md\n- openbb_platform/extensions/mcp_server/openbb_mcp_server/skills/configure_mcp_server/SKILL.md\n- openbb_platform/extensions/mcp_server/openbb_mcp_server/skills/develop_extension/SKILL.md\n- openbb_platform/extensions/mcp_server/openbb_mcp_server/skills/work_with_server/SKILL.md\n- README.md\n- openbb_platform/README.md\n- openbb_platform/core/openbb_core/__init__.py\n- cli/openbb_cli\n- desktop/src\n- openbb_platform/core\n\n【首次问题规则】\n- 首次三问必须先确认用户目标、成功标准和边界，不要提前进入工具、安装或实现细节。\n- 如果后续需要技术条件、文件路径或运行环境，必须等用户确认目标后再追问。\n\n首次回复必须只输出下面 4 个部分：\n1. 体验开始：用 1 句话说明你将带我体验 OpenBB 的核心服务。\n2. 当前步骤：明确进入 Step 1，并说明这一步要解决什么。\n3. 你会如何服务我：说明你会先改变我完成任务的哪个动作。\n4. 只问我 3 个问题，然后停下等待回答。\n\n首次回复禁止输出：后续完整流程、证据清单、安装命令、项目评价、营销文案、已经安装或运行的说法。\n\nStep 1 / brainstorming 的二轮协议：\n- 我回答首次三问后，你仍然停留在 Step 1 / brainstorming，不要进入 Step 2。\n- 第二次回复必须产出 6 个部分：澄清后的任务定义、成功标准、边界条件、\n  2-3 个可选方案、每个方案的权衡、推荐方案。\n- 第二次回复最后必须问我是否确认推荐方案；只有我明确确认后，才能进入下一步。\n- 第二次回复禁止输出 git worktree、代码计划、测试文件、命令或真实执行结果。\n\n后续对话规则：\n- 我回答后，你先完成当前步骤的中间产物并等待确认；只有我确认后，才能进入下一步。\n- 每一步都要生成一个小的中间产物，例如澄清后的目标、计划草案、测试意图、验证清单或继续/停止判断。\n- 所有演示都写成“我会建议/我会引导/这一步会形成”，不要写成已经真实执行。\n- 不要声称已经测试通过、文件已修改、命令已运行或结果已产生。\n- 如果某个能力必须安装后验证，请直接说“这一步需要安装后验证”。\n- 如果证据不足，请明确说“证据不足”，不要补事实。\n```\n",
      "voices": [
        {
          "body": "来源平台：github。github/github_issue: [FR] Add Bank of Canada Valet API as a new provider extension（https://github.com/OpenBB-finance/OpenBB/issues/7490）；github/github_issue: [Bug] Widgets not saving their position and size after refresh（https://github.com/OpenBB-finance/OpenBB/issues/7479）；github/github_issue: [FR] Add Real-time Cryptocurrency Data Provider Integration（https://github.com/OpenBB-finance/OpenBB/issues/7177）；github/github_issue: [Bug] Openbb 4.5.0 cannot import name 'OBBject_EquityInfo' from 'openbb_（https://github.com/OpenBB-finance/OpenBB/issues/7279）；github/github_issue: [Bug] PyWry WebView Fails to Launch on Ubuntu 24.04（https://github.com/OpenBB-finance/OpenBB/issues/7148）；github/github_release: ODP Desktop v1.0.2（https://github.com/OpenBB-finance/OpenBB/releases/tag/Open-Data-Platform-v1.0.2）；github/github_release: OpenBB V4.7.0（https://github.com/OpenBB-finance/OpenBB/releases/tag/v4.7.0）；github/github_release: ODP Desktop v1.0.1（https://github.com/OpenBB-finance/OpenBB/releases/tag/Open-Data-Platform-v1.0.1）；github/github_release: OpenBB Platform v4.6.0（https://github.com/OpenBB-finance/OpenBB/releases/tag/v4.6.0）；github/github_release: OpenBB Platform v4.5.0（https://github.com/OpenBB-finance/OpenBB/releases/tag/v4.5.0）。这些是项目级外部声音，不作为单独质量证明。",
          "items": [
            {
              "kind": "github_issue",
              "source": "github",
              "title": "[FR] Add Bank of Canada Valet API as a new provider extension",
              "url": "https://github.com/OpenBB-finance/OpenBB/issues/7490"
            },
            {
              "kind": "github_issue",
              "source": "github",
              "title": "[Bug] Widgets not saving their position and size after refresh",
              "url": "https://github.com/OpenBB-finance/OpenBB/issues/7479"
            },
            {
              "kind": "github_issue",
              "source": "github",
              "title": "[FR] Add Real-time Cryptocurrency Data Provider Integration",
              "url": "https://github.com/OpenBB-finance/OpenBB/issues/7177"
            },
            {
              "kind": "github_issue",
              "source": "github",
              "title": "[Bug] Openbb 4.5.0 cannot import name 'OBBject_EquityInfo' from 'openbb_",
              "url": "https://github.com/OpenBB-finance/OpenBB/issues/7279"
            },
            {
              "kind": "github_issue",
              "source": "github",
              "title": "[Bug] PyWry WebView Fails to Launch on Ubuntu 24.04",
              "url": "https://github.com/OpenBB-finance/OpenBB/issues/7148"
            },
            {
              "kind": "github_release",
              "source": "github",
              "title": "ODP Desktop v1.0.2",
              "url": "https://github.com/OpenBB-finance/OpenBB/releases/tag/Open-Data-Platform-v1.0.2"
            },
            {
              "kind": "github_release",
              "source": "github",
              "title": "OpenBB V4.7.0",
              "url": "https://github.com/OpenBB-finance/OpenBB/releases/tag/v4.7.0"
            },
            {
              "kind": "github_release",
              "source": "github",
              "title": "ODP Desktop v1.0.1",
              "url": "https://github.com/OpenBB-finance/OpenBB/releases/tag/Open-Data-Platform-v1.0.1"
            },
            {
              "kind": "github_release",
              "source": "github",
              "title": "OpenBB Platform v4.6.0",
              "url": "https://github.com/OpenBB-finance/OpenBB/releases/tag/v4.6.0"
            },
            {
              "kind": "github_release",
              "source": "github",
              "title": "OpenBB Platform v4.5.0",
              "url": "https://github.com/OpenBB-finance/OpenBB/releases/tag/v4.5.0"
            }
          ],
          "status": "已收录 10 条来源",
          "title": "社区讨论"
        }
      ]
    },
    "homepage_card": {
      "category": "数据分析与投资研究",
      "desc": "Financial data platform for analysts, quants and AI agents.",
      "effort": "安装已验证",
      "forks": 6756,
      "icon": "chart",
      "name": "OpenBB 能力包",
      "risk": "可发布",
      "slug": "openbb",
      "stars": 67378,
      "tags": [
        "MCP 工具",
        "知识库问答",
        "流程自动化",
        "自动化工作流",
        "评测体系"
      ],
      "thumb": "green",
      "type": "Skill Pack"
    },
    "manual": {
      "markdown": "# https://github.com/OpenBB-finance/OpenBB 项目说明书\n\n生成时间：2026-05-11 12:57:04 UTC\n\n## 目录\n\n- [OpenBB项目概述](#page-1)\n- [项目目录结构](#page-2)\n- [核心架构设计](#page-3)\n- [OBBject数据模型](#page-4)\n- [数据提供者系统](#page-5)\n- [扩展模块系统](#page-6)\n- [命令行界面(CLI)](#page-7)\n- [桌面应用程序](#page-8)\n- [扩展开发指南](#page-9)\n- [REST API与部署](#page-10)\n\n<a id='page-1'></a>\n\n## OpenBB项目概述\n\n### 相关页面\n\n相关主题：[项目目录结构](#page-2), [核心架构设计](#page-3)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/README.md)\n- [openbb_platform/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/README.md)\n- [cli/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/cli/README.md)\n- [openbb_platform/extensions/news/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/extensions/news/README.md)\n- [openbb_platform/extensions/commodity/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/extensions/commodity/README.md)\n- [openbb_platform/extensions/mcp_server/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/extensions/mcp_server/README.md)\n- [openbb_platform/extensions/regulators/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/extensions/regulators/README.md)\n- [openbb_platform/providers/government_us/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/providers/government_us/README.md)\n- [openbb_platform/providers/congress_gov/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/providers/congress_gov/README.md)\n- [openbb_platform/providers/cftc/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/providers/cftc/README.md)\n- [cookiecutter/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/cookiecutter/README.md)\n- [desktop/src/routes/installation-progress.tsx](https://github.com/OpenBB-finance/OpenBB/blob/main/desktop/src/routes/installation-progress.tsx)\n- [desktop/src/routes/api-keys.tsx](https://github.com/OpenBB-finance/OpenBB/blob/main/desktop/src/routes/api-keys.tsx)\n</details>\n\n# OpenBB项目概述\n\n## 1 项目简介\n\nOpenBB是一个开源金融数据平台项目，旨在为投资者、分析师和开发者提供全面的金融数据访问和分析工具。该项目采用AGPLv3开源许可证发布，允许用户自由使用、修改和分发代码。 资料来源：[README.md:1-50]()\n\n### 1.1 核心定位\n\nOpenBB的核心定位是一个模块化的金融数据平台，通过统一的数据接口整合来自多个来源的金融信息，包括股票、加密货币、宏观经济数据、政府数据等。项目强调开放性和可扩展性，允许第三方开发者通过扩展和自定义来增强平台功能。 资料来源：[openbb_platform/README.md:1-30]()\n\n### 1.2 技术架构\n\nOpenBB采用现代化的微服务架构设计，主要包含以下核心组件：\n\n```mermaid\ngraph TD\n    A[OpenBB Platform Core] --> B[Extensions 扩展系统]\n    A --> C[Providers 数据提供者]\n    A --> D[CLI 命令行工具]\n    A --> E[Desktop 桌面应用]\n    A --> F[REST API 服务]\n    B --> B1[News 新闻扩展]\n    B --> B2[Commodity 商品扩展]\n    B --> B3[Regulators 监管扩展]\n    B --> B4[MCP Server MCP服务器]\n    C --> C1[US Government 美国政府数据]\n    C --> C2[Congress Gov 议会数据]\n    C --> C3[CFTC 期货数据]\n```\n\n资料来源：[openbb_platform/README.md:30-60]()\n\n## 2 平台核心组件\n\n### 2.1 Python SDK\n\nOpenBB Platform提供Python软件开发包，用户可以通过简单的Python代码访问金融数据。核心使用方式如下：\n\n```python\nfrom openbb import obb\n\n# 获取股票数据\nresult = obb.equity.price_historical(symbol=\"AAPL\", start_date=\"2023-01-01\")\n\n# 获取宏观经济数据\ngdp_data = obb.economy.gdp(country=\"Japan\")\n\n# 获取商品数据\ncommodity = obb.commodity.psd_report(commodity=\"wheat\")\n```\n\n平台支持Python 3.10至3.13版本，需要使用虚拟环境进行安装。开发者可以使用poetry进行依赖管理，通过运行`python dev_install.py -e`命令以可编辑模式安装所有包。 资料来源：[openbb_platform/README.md:40-80]()\n\n### 2.2 REST API服务\n\nOpenBB Platform内置FastAPI驱动的REST API，允许用户通过HTTP请求访问所有功能。启动API服务只需一条命令：\n\n```bash\nuvicorn openbb_core.api.rest_api:app --host 0.0.0.0 --port 8000 --reload\n```\n\nAPI文档位于\"/docs\"路径下，可在浏览器中直接查看和测试所有可用的API端点。REST API支持配置运行时设置和环境变量，适合需要程序化访问金融数据的应用场景。 资料来源：[openbb_platform/README.md:50-70]()\n\n## 3 扩展系统\n\nOpenBB的扩展系统允许开发者添加自定义功能模块，每个扩展都是独立的Python包，通过pip进行安装和管理。\n\n### 3.1 扩展类型一览\n\n| 扩展名称 | 包名 | 功能描述 |\n|---------|------|---------|\n| News | openbb-news | 提供新闻数据集成 |\n| Commodity | openbb-commodity | 商品市场数据访问 |\n| Regulators | openbb-regulators | 全球监管机构数据 |\n| MCP Server | openbb-mcp-server | 模型上下文协议服务 |\n\n资料来源：[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]()\n\n### 3.2 MCP Server扩展\n\nMCP Server扩展是OpenBB的重要创新，它将FastAPI路由暴露为MCP（Model Context Protocol）工具。通过MCPConfigModel，开发者可以精细控制每个路由的暴露行为：\n\n- **expose**：设置为False可完全隐藏某个路由\n- **mcp_type**：指定MCP类型，支持\"tool\"、\"resource\"或\"resource_template\"\n- **methods**：指定要暴露的HTTP方法\n\nMCP Server扩展支持内联MCP配置，允许开发者直接在openapi_extra字典中定义提示词和工具行为。 资料来源：[openbb_platform/extensions/mcp_server/README.md:1-60]()\n\n## 4 数据提供者\n\nOpenBB通过数据提供者模块集成外部数据源，每个提供者都是独立的扩展包，负责与特定数据API的交互。\n\n### 4.1 美国政府数据提供者\n\nUS Government数据提供者集成了data.gov的数据接口，无需注册即可使用。覆盖的服务包括：\n\n- `obb.commodity.psd_report` - 农产品供需报告\n- `obb.commodity.psd_data` - 农产品供需数据\n- `obb.commodity.weather_bulletins` - 天气公报\n- `obb.fixed_income.government.treasury_auctions` - 国债拍卖\n- `obb.fixed_income.government.treasury_prices` - 国债价格 资料来源：[openbb_platform/providers/government_us/README.md:1-40]()\n\n### 4.2 议会数据提供者\n\nCongress Gov提供者整合了美国国会相关数据，支持以下功能：\n\n```python\n# 获取最近更新的法案\nbills = obb.uscongress.bills(limit=10)\n\n# 获取法案详情\nbill_info = obb.uscongress.bill_info(bill_url=\"119/hr/1\")\n```\n\n该提供者支持PDF文档处理，接受URL列表作为请求体参数。 资料来源：[openbb_platform/providers/congress_gov/README.md:1-50]()\n\n### 4.3 CFTC数据提供者\n\nCFTC（商品期货交易委员会）数据提供者提供 Commitments of Traders（COT）报告数据：\n\n```python\n# 搜索商品代码\nsearch_results = obb.cftc.cot_search(query=\"gold\")\n\n# 获取持仓报告\nreport = obb.cftc.cot(code=\"CFTC_088695\", measure=\"percent_of_oi\", limit=4)\n```\n\n返回数据支持转换为DataFrame格式便于数据分析。 资料来源：[openbb_platform/providers/cftc/README.md:1-60]()\n\n## 5 客户端应用\n\n### 5.1 命令行工具（CLI）\n\nOpenBB CLI是通过pip安装的命令行客户端，安装命令为`pip install openbb-cli`。安装完成后，通过运行`openbb`命令启动交互式界面。CLI工具提供与Python SDK相同的功能，但以交互式终端方式呈现。 资料来源：[cli/README.md:1-30]()\n\n### 5.2 桌面应用\n\nOpenBB桌面应用基于React构建，提供图形化用户界面。桌面应用的主要功能包括：\n\n- **API密钥管理**：支持导入JSON或ENV格式的密钥文件，提供安全的密钥存储和配置界面 资料来源：[desktop/src/routes/api-keys.tsx:1-50]()\n- **安装向导**：包含Miniforge环境管理器安装、Python版本选择、扩展安装等完整流程\n- **环境管理**：创建和管理多个Python虚拟环境，支持不同项目使用不同配置 资料来源：[desktop/src/routes/installation-progress.tsx:1-80]()\n\n桌面应用的安装流程分为三个步骤：\n\n```mermaid\ngraph LR\n    A[Step 1: Miniforge安装] --> B[Step 2: 环境配置]\n    B --> C[Step 3: 扩展选择]\n    C --> D[完成安装]\n```\n\n资料来源：[desktop/src/routes/installation-progress.tsx:30-60]()\n\n## 6 开发工具\n\n### 6.1 Cookiecutter模板\n\nOpenBB提供cookiecutter模板帮助开发者快速创建新的扩展或数据提供者项目。使用步骤如下：\n\n1. 安装cookiecutter模板工具\n2. 运行`openbb-cookiecutter`命令选择项目类型\n3. 创建独立的Python虚拟环境\n4. 安装生成的包：`pip install -e .`\n5. 使用`openbb-build`生成静态文件\n\n模板项目自动配置项目结构、依赖管理和构建流程，开发者只需专注于业务逻辑实现。 资料来源：[cookiecutter/README.md:1-40]()\n\n### 6.2 本地开发环境\n\n本地开发需要满足以下条件：\n\n| 组件 | 要求 |\n|-----|------|\n| Git | 最新版本 |\n| Python | 3.10 - 3.13 |\n| 包管理器 | Poetry |\n| 操作系统 | 跨平台支持 |\n\n开发安装脚本位于`openbb_platform`目录下，执行`python dev_install.py -e`以可编辑模式安装所有核心包。 资料来源：[openbb_platform/README.md:60-90]()\n\n## 7 配置与管理\n\n### 7.1 API密钥配置\n\n用户需要为不同的数据提供者配置API密钥。在Python代码中配置：\n\n```python\nfrom openbb import obb\n\nobb.user.credentials.fred_api_key = \"REPLACE_ME\"\nobb.user.credentials.polygon_api_key = \"REPLACE_ME\"\n```\n\n详细的配置说明请参阅官方文档中的API密钥管理页面。 资料来源：[openbb_platform/README.md:10-25]()\n\n### 7.2 环境变量\n\nREST API支持通过环境变量进行配置，包括数据库连接、超时设置、缓存策略等系统级参数。这些配置可以通过系统设置文档进行详细了解。 资料来源：[openbb_platform/README.md:70-80]()\n\n## 8 许可与免责声明\n\nOpenBB采用AGPLv3开源许可证发布。重要的是，项目明确声明：\n\n> 交易金融工具涉及高风险，包括损失部分或全部投资金额的风险，可能不适合所有投资者。\n\n项目团队不对因依赖平台数据而造成的任何交易损失或损害承担法律责任。用户在使用前应充分了解相关风险，必要时寻求专业建议。 资料来源：[README.md:45-60]()\n\n## 9 相关资源\n\n- 官方文档：https://docs.openbb.co\n- Discord社区：https://openbb.co/discord\n- GitHub仓库：https://github.com/OpenBB-finance/OpenBB\n- 问题反馈：https://github.com/OpenBB-finance/OpenBB/issues\n\n---\n\n<a id='page-2'></a>\n\n## 项目目录结构\n\n### 相关页面\n\n相关主题：[OpenBB项目概述](#page-1), [核心架构设计](#page-3)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [cli/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/cli/README.md)\n- [desktop/src/routes/backends.tsx](https://github.com/OpenBB-finance/OpenBB/blob/main/desktop/src/routes/backends.tsx)\n- [desktop/src/routes/installation-progress.tsx](https://github.com/OpenBB-finance/OpenBB/blob/main/desktop/src/routes/installation-progress.tsx)\n- [desktop/src/routes/api-keys.tsx](https://github.com/OpenBB-finance/OpenBB/blob/main/desktop/src/routes/api-keys.tsx)\n- [desktop/src/routes/environments.tsx](https://github.com/OpenBB-finance/OpenBB/blob/main/desktop/src/routes/environments.tsx)\n- [desktop/src/components/Icon.tsx](https://github.com/OpenBB-finance/OpenBB/blob/main/desktop/src/components/Icon.tsx)\n- [desktop/src/components/InstallComponents.tsx](https://github.com/OpenBB-finance/OpenBB/blob/main/desktop/src/components/InstallComponents.tsx)\n- [desktop/src/components/AddExtensionSelector.tsx](https://github.com/OpenBB-finance/OpenBB/blob/main/desktop/src/components/AddExtensionSelector.tsx)\n- [openbb_platform/extensions/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/extensions)\n- [openbb_platform/extensions/news/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/extensions/news/README.md)\n- [openbb_platform/extensions/mcp_server/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/extensions/mcp_server/README.md)\n- [openbb_platform/extensions/commodity/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/extensions/commodity/README.md)\n</details>\n\n# 项目目录结构\n\n## 概述\n\nOpenBB 是一个采用 Monorepo（单体仓库）架构的开源金融分析平台。项目根目录下包含多个核心子项目，分别负责不同的功能模块和用户体验入口。这种架构设计使得代码共享、版本管理和跨模块协作更加高效，同时保持了各模块的独立性和可扩展性。\n\n资料来源：[cli/README.md]()\n\n## 顶级目录架构\n\n```\nOpenBB/\n├── cli/                      # 命令行界面模块\n├── desktop/                  # 桌面应用程序\n├── openbb_platform/          # 核心平台与扩展\n└── README.md                 # 项目主文档\n```\n\n资料来源：[cli/README.md]()\n\n### 核心子项目定位\n\n| 子项目 | 功能定位 | 技术栈 |\n|--------|----------|--------|\n| `cli/` | 命令行交互工具 | Python |\n| `desktop/` | 桌面图形界面 | React + TypeScript |\n| `openbb_platform/` | 数据处理核心与扩展生态 | Python |\n\n资料来源：[openbb_platform/extensions/news/README.md](), [openbb_platform/extensions/commodity/README.md]()\n\n---\n\n## CLI 模块 (cli/)\n\nCLI 模块提供基于终端的交互式金融数据查询工具。用户通过 `openbb` 命令启动程序，可完成数据获取、图表渲染等操作。\n\n### 安装与启动流程\n\n```bash\npip install openbb-cli\nopenbb\n```\n\n资料来源：[cli/README.md]()\n\n### 核心目录结构\n\n```\ncli/\n└── openbb_cli/\n```\n\nCLI 模块采用 Python 实现，通过命令行方式提供服务，适合服务器环境或习惯终端操作的用户。\n\n资料来源：[cli/README.md]()\n\n---\n\n## Desktop 模块 (desktop/src/)\n\nDesktop 模块是 OpenBB 的桌面应用程序前端，采用 React 框架构建，提供图形化用户界面。\n\n### 核心路由结构\n\n```\ndesktop/src/\n└── routes/\n    ├── backends.tsx              # 后端服务配置面板\n    ├── installation-progress.tsx # 安装进度跟踪\n    ├── api-keys.tsx              # API 密钥管理\n    └── environments.tsx          # Python 环境管理\n```\n\n资料来源：[desktop/src/routes/backends.tsx](), [desktop/src/routes/installation-progress.tsx](), [desktop/src/routes/api-keys.tsx](), [desktop/src/routes/environments.tsx]()\n\n### 安装流程架构\n\nDesktop 模块实现了多阶段安装向导，指导用户完成开发环境配置：\n\n```mermaid\ngraph TD\n    A[开始安装] --> B{版本选择}\n    B --> C{Miniforge 安装}\n    C --> D{环境初始化}\n    D --> E[扩展选择]\n    E --> F{安装执行}\n    F --> G{完成}\n    \n    B -.->|取消| H[取消安装]\n    F -.->|失败| I[重试或继续]\n```\n\n资料来源：[desktop/src/routes/installation-progress.tsx]()\n\n### 安装组件清单\n\n安装向导包含以下核心组件：\n\n| 组件文件 | 功能描述 |\n|----------|----------|\n| `InstallComponents.tsx` | Conda/PyPI 包选择与扩展管理 |\n| `AddExtensionSelector.tsx` | 扩展搜索与安装界面 |\n| `Icon.tsx` | OpenBB 品牌图标系统 |\n\n资料来源：[desktop/src/components/InstallComponents.tsx](), [desktop/src/components/AddExtensionSelector.tsx](), [desktop/src/components/Icon.tsx]()\n\n### API 密钥管理界面\n\nAPI 密钥管理模块支持以下功能：\n\n- 密钥导入（支持 `.json` 和 `.env` 格式）\n- 密钥编辑与删除\n- 环境配置文件查看\n- 文档链接跳转\n\n资料来源：[desktop/src/routes/api-keys.tsx]()\n\n### 后端配置面板\n\n后端配置功能包括：\n\n- OpenSSL 证书生成（.pem、.key、.p12）\n- 服务进程管理\n- 进程 ID 监控\n- 服务初始化状态显示\n\n资料来源：[desktop/src/routes/backends.tsx]()\n\n---\n\n## OpenBB Platform 模块 (openbb_platform/)\n\nPlatform 模块是整个系统的核心层，提供数据处理、扩展管理和第三方数据源集成能力。\n\n### 平台架构层级\n\n```mermaid\ngraph TB\n    subgraph Platform Core\n        A[Core Engine]\n    end\n    \n    subgraph Extensions\n        B[News]\n        C[Commodity]\n        D[MCP Server]\n        E[Other Extensions...]\n    end\n    \n    subgraph Providers\n        F[Data Provider 1]\n        G[Data Provider 2]\n        H[Data Provider N]\n    end\n    \n    A --> B\n    A --> C\n    A --> D\n    A --> E\n    A --> F\n    A --> G\n    A --> H\n```\n\n资料来源：[openbb_platform/extensions/README.md]()\n\n### 核心目录结构\n\n```\nopenbb_platform/\n├── core/              # 核心引擎\n├── extensions/       # 扩展模块\n└── providers/        # 数据提供商\n```\n\n### Extensions 扩展模块\n\nExtensions 模块采用插件化架构，允许用户按需安装功能扩展。\n\n#### 扩展安装方式\n\n每个扩展目录包含独立的 `README.md` 文档，采用统一的安装命令格式：\n\n```bash\npip install openbb-<extension-name>\n```\n\n资料来源：[openbb_platform/extensions/news/README.md](), [openbb_platform/extensions/commodity/README.md]()\n\n#### 主要扩展模块\n\n| 扩展名称 | 功能描述 | 安装命令 |\n|----------|----------|----------|\n| News | 财经新闻数据获取 | `pip install openbb-news` |\n| Commodity | 大宗商品数据接口 | `pip install openbb-commodity` |\n| MCP Server | Model Context Protocol 服务 | 集成于平台 |\n\n资料来源：[openbb_platform/extensions/news/README.md](), [openbb_platform/extensions/commodity/README.md](), [openbb_platform/extensions/mcp_server/README.md]()\n\n#### MCP Server 扩展\n\nMCP Server 是一个特殊的扩展模块，提供 MCP（Model Context Protocol）协议支持，允许 FastAPI 路由以 MCP 工具形式暴露。\n\n##### MCP 配置模型\n\n```python\nfrom openbb_mcp_server.models.mcp_config import MCPConfigModel\n```\n\n##### MCP 配置属性\n\n| 属性名 | 类型 | 说明 |\n|--------|------|------|\n| `expose` | `Optional[bool]` | 是否暴露为 MCP 工具 |\n| `mcp_type` | `Optional[MCPType]` | 工具类型：`tool`/`resource`/`resource_template` |\n| `methods` | `Optional[list[HTTPMethod]]` | 暴露的 HTTP 方法 |\n\n资料来源：[openbb_platform/extensions/mcp_server/README.md]()\n\n##### MCP 工具生成示例\n\nMCP Server 自动将 FastAPI 路由转换为 MCP 工具，输出格式如下：\n\n```json\n{\n  \"description\": \"工具描述\",\n  \"messages\": [\n    {\n      \"role\": \"user\",\n      \"content\": {\n        \"type\": \"text\",\n        \"text\": \"使用工具完成指定任务\"\n      }\n    }\n  ]\n}\n```\n\n资料来源：[openbb_platform/extensions/mcp_server/README.md]()\n\n---\n\n## 环境管理系统\n\nDesktop 应用提供了完整的 Python 环境管理功能，支持用户创建和管理多个独立开发环境。\n\n### 环境创建流程\n\n```mermaid\ngraph LR\n    A[输入环境名称] --> B[选择 Python 版本]\n    B --> C[选择扩展与包]\n    C --> D[执行安装]\n    D --> E[环境创建完成]\n```\n\n资料来源：[desktop/src/routes/environments.tsx]()\n\n### 包管理支持\n\n系统支持三类包管理方式：\n\n| 包类型 | 说明 | UI 展示 |\n|--------|------|---------|\n| Conda | Miniforge 环境包 | 包列表 + 移除按钮 |\n| PyPI | 自定义 Python 包 | 搜索 + 添加界面 |\n| OpenBB Extensions | 平台扩展 | 可折叠安装说明 |\n\n资料来源：[desktop/src/components/InstallComponents.tsx](), [desktop/src/components/AddExtensionSelector.tsx]()\n\n### 安装摘要显示\n\n界面底部显示当前选择的包统计：\n\n```\n{n} Conda + {n} PyPI + {n} OpenBB extensions selected\n```\n\n资料来源：[desktop/src/components/InstallComponents.tsx](), [desktop/src/components/AddExtensionSelector.tsx]()\n\n---\n\n## 组件系统\n\n### UI 组件架构\n\nDesktop 应用采用组件化设计，主要组件包括：\n\n| 组件名 | 文件 | 职责 |\n|--------|------|------|\n| `Icon` | `Icon.tsx` | OpenBB Logo 与功能图标 |\n| `InstallComponents` | `InstallComponents.tsx` | 安装向导主容器 |\n| `AddExtensionSelector` | `AddExtensionSelector.tsx` | 扩展选择与搜索 |\n\n资料来源：[desktop/src/components/Icon.tsx](), [desktop/src/components/InstallComponents.tsx](), [desktop/src/components/AddExtensionSelector.tsx]()\n\n### 品牌图标系统\n\nOpenBB Logo 采用 SVG 格式定义，包含独特的 \"O\" 字母设计元素：\n\n```svg\n<path d=\"M151.404 103.189V95.2524H223.137V111.126H151.404V103.189Z\" />\n```\n\n资料来源：[desktop/src/components/Icon.tsx]()\n\n### Markdown 渲染组件\n\n扩展安装说明采用 ReactMarkdown 组件渲染，支持自定义样式：\n\n```tsx\n<ReactMarkdown\n  components={{\n    img: ({ ...props }) => <img {...props} className=\"max-w-full h-auto\" />,\n    a: ({ ...props }) => <a {...props} className=\"text-blue-500 underline\" />,\n    code: ({ ...props }) => <code {...props} className=\"bg-theme-tertiary\" />,\n  }}\n>\n  {extension.instructions}\n</ReactMarkdown>\n```\n\n资料来源：[desktop/src/components/InstallComponents.tsx](), [desktop/src/routes/installation-progress.tsx]()\n\n---\n\n## 数据流向架构\n\n```mermaid\ngraph TD\n    subgraph 用户层\n        A[CLI 命令]\n        B[Desktop GUI]\n    end\n    \n    subgraph 平台层\n        C[Extensions]\n        D[Core Engine]\n    end\n    \n    subgraph 数据层\n        E[Providers]\n        F[External APIs]\n    end\n    \n    A --> D\n    B --> D\n    D --> C\n    D --> E\n    E --> F\n    \n    style F fill:#ff9999\n    style D fill:#99ff99\n```\n\n---\n\n## 开发文档入口\n\n| 模块 | 文档链接 |\n|------|----------|\n| CLI | https://docs.openbb.co/cli |\n| Desktop | https://docs.openbb.co/desktop |\n| Platform | https://docs.openbb.co/platform |\n| 故障排除 | https://docs.openbb.co/odp/desktop/troubleshooting |\n\n资料来源：[desktop/src/routes/installation-progress.tsx](), [cli/README.md]()\n\n---\n\n## 总结\n\nOpenBB 项目采用清晰的 Monorepo 架构，将命令行工具、桌面应用和核心平台分离在独立目录中。`openbb_platform/` 目录下的插件化设计允许功能扩展，而 `desktop/` 目录则提供了完整的用户交互界面和环境管理能力。这种架构既保证了代码复用，又为不同使用场景提供了最优的交互方式。\n\n---\n\n<a id='page-3'></a>\n\n## 核心架构设计\n\n### 相关页面\n\n相关主题：[OBBject数据模型](#page-4), [数据提供者系统](#page-5), [扩展模块系统](#page-6)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [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)\n- [openbb_platform/extensions/platform_api/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/extensions/platform_api/README.md)\n- [openbb_platform/extensions/mcp_server/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/extensions/mcp_server/README.md)\n- [openbb_platform/providers/cftc/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/providers/cftc/README.md)\n- [openbb_platform/providers/imf/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/providers/imf/README.md)\n- [desktop/src/routes/installation-progress.tsx](https://github.com/OpenBB-finance/OpenBB/blob/main/desktop/src/routes/installation-progress.tsx)\n- [cli/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/cli/README.md)\n- [openbb_platform/extensions/commodity/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/extensions/commodity/README.md)\n</details>\n\n# 核心架构设计\n\n## 概述\n\nOpenBB 是一个开源的投资研究平台，旨在为全球用户提供投资研究和分析工具。该平台采用模块化架构设计，支持通过多种接口访问核心功能，包括命令行界面（CLI）、桌面应用程序和 REST API。\n\n平台的技术栈涵盖了从前端界面到后端数据处理的完整生态系统，核心架构围绕数据提供者（Provider）、扩展（Extension）和统一入口点（OpenBB Bridge，简称 obb）构建。\n\n资料来源：[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)\n\n---\n\n## 系统架构层次\n\nOpenBB 平台采用分层架构设计，各层之间通过清晰的接口进行通信：\n\n| 层次 | 名称 | 描述 |\n|------|------|------|\n| 表现层 | Presentation Layer | CLI、桌面应用、Workspace、Web UI |\n| 网关层 | Gateway Layer | REST API、MCP Server |\n| 核心层 | Core Layer | 命令路由、扩展加载、认证服务 |\n| 数据层 | Data Layer | Provider 注册表、查询执行器 |\n\n资料来源：[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)\n\n---\n\n## 核心组件\n\n### 2.1 OpenBB Bridge（obb）\n\nOpenBB Bridge 是平台的核心入口点，提供统一的 Python 接口供用户调用所有功能。用户通过 `obb` 对象访问不同的数据模块：\n\n```python\nfrom openbb import obb\n\n# 访问宏观经济数据\nobb.economy.gdp(country=\"Japan\")\n\n# 访问商品数据\nobb.commodity.price(\"gold\")\n\n# 访问期货数据\nobb.cftc.cot(code=\"CFTC_088695\")\n```\n\n资料来源：[openbb_platform/providers/cftc/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/providers/cftc/README.md)\n\n### 2.2 REST API 服务\n\nOpenBB Platform API 基于 FastAPI 构建，提供完整的 RESTful 接口。API 服务支持灵活的配置选项，包括服务器设置、CORS 策略、认证和授权等。\n\n#### API 配置参数\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| title | str | API 标题 |\n| description | str | API 描述 |\n| version | str | API 版本号 |\n| servers | list | 可用服务器列表 |\n| cors.allow_origins | list | 允许的源域名 |\n| cors.allow_methods | list | 允许的 HTTP 方法 |\n| cors.allow_headers | list | 允许的请求头 |\n\n资料来源：[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)\n\n### 2.3 Provider 体系\n\n数据提供者是平台获取各类金融数据的关键组件。每个 Provider 负责从特定数据源获取数据并将其标准化。\n\n#### Provider 端点示例\n\n| Provider | 主要端点 | 功能描述 |\n|----------|----------|----------|\n| CFTC | obb.cftc.cot, obb.cftc.cot_search | 商品期货交易委员会报告 |\n| IMF | obb.economy.*, obb.imf_utils.* | 国际货币基金组织数据 |\n\n资料来源：[openbb_platform/providers/cftc/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/providers/cftc/README.md)，[openbb_platform/providers/imf/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/providers/imf/README.md)\n\n---\n\n## 扩展机制\n\n### 3.1 扩展架构\n\nOpenBB 采用插件化架构，允许开发者通过扩展（Extension）来添加新功能。扩展可以是数据源、工具或服务。\n\n#### 扩展类型\n\n- **数据扩展**：提供新的数据源，如 news、commodity\n- **服务扩展**：提供额外服务，如 MCP Server、Platform API\n- **工具扩展**：提供分析工具和实用函数\n\n```bash\n# 安装扩展示例\npip install openbb-news\npip install openbb-commodity\n```\n\n资料来源：[openbb_platform/extensions/news/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/extensions/news/README.md)，[openbb_platform/extensions/commodity/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/extensions/commodity/README.md)\n\n### 3.2 MCP Server 扩展\n\nModel Context Protocol (MCP) Server 扩展允许将 OpenBB 平台的功能暴露为 MCP 工具，供 AI 助手使用。\n\n#### MCP 配置选项\n\n| 配置项 | 类型 | 说明 |\n|--------|------|------|\n| expose | Optional[bool] | 是否暴露为 MCP 工具 |\n| mcp_type | Optional[MCPType] | 工具类型：tool/resource/resource_template |\n| methods | Optional[list] | 暴露的 HTTP 方法 |\n\n资料来源：[openbb_platform/extensions/mcp_server/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/extensions/mcp_server/README.md)\n\n---\n\n## API 启动与配置\n\n### 4.1 启动方式\n\nOpenBB Platform API 可以通过多种方式启动：\n\n```bash\n# 标准启动\nopenbb-api\n\n# 可编辑模式（加载本地修改）\nopenbb-api --editable\n\n# 不构建 widgets.json\nopenbb-api --editable --no-build\n\n# 指定自定义 widgets.json 路径\nopenbb-api --widgets-json /path/to/widgets.json\n```\n\n资料来源：[openbb_platform/extensions/platform_api/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/extensions/platform_api/README.md)\n\n### 4.2 命令行参数\n\n| 参数 | 说明 |\n|------|------|\n| --app | 指定 FastAPI 实例文件路径 |\n| --name | FastAPI 实例名称，默认 'app' |\n| --factory | 标记实例为工厂函数 |\n| --editable | 可编辑模式 |\n| --build | 构建策略：overwrite/append/ignore |\n| --no-build | 不构建 widgets.json |\n| --exclude | 排除的 API 路径列表 |\n| --no-filter | 不过滤 widgets |\n| --widgets-json | 自定义 widgets.json 路径 |\n| --apps-json | 自定义 workspace_apps.json 路径 |\n\n资料来源：[openbb_platform/extensions/platform_api/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/extensions/platform_api/README.md)\n\n---\n\n## 桌面应用架构\n\n### 5.1 应用组件\n\n桌面应用程序基于 Tauri 框架构建，使用 React 作为前端框架，实现跨平台支持。\n\n#### 安装流程阶段\n\n| 阶段 | 步骤 | 描述 |\n|------|------|------|\n| version_select | Python 版本选择 | 用户选择 Python 环境版本 |\n| Miniforge 安装 | 环境管理器安装 | 安装 Miniforge 用于环境管理 |\n| 核心依赖 | OpenBB 环境 | 安装核心库和依赖项 |\n| extension_select | 扩展选择 | 用户选择需要安装的扩展 |\n\n资料来源：[desktop/src/routes/installation-progress.tsx](https://github.com/OpenBB-finance/OpenBB/blob/main/desktop/src/routes/installation-progress.tsx)\n\n### 5.2 后端处理\n\n桌面应用通过 Rust 后端处理敏感操作，包括证书生成和凭据管理：\n\n- OpenSSL 证书生成（.pem、.key、.p12）\n- 环境变量文件（.env）管理\n- Conda 配置文件（.condarc）\n\n资料来源：[desktop/src-tauri/src/tauri_handlers/credentials.rs](https://github.com/OpenBB-finance/OpenBB/blob/main/desktop/src-tauri/src/tauri_handlers/credentials.rs)\n\n---\n\n## CLI 架构\n\nOpenBB CLI 提供命令行界面的访问方式，用户通过交互式命令执行各类金融分析任务。\n\n### 主要功能模块\n\n| 模块 | 功能 |\n|------|------|\n| exe | 执行自动化脚本和例程 |\n| 自定义参数 | 支持通过 --input 传递多个参数 |\n\n```bash\n# 执行本地脚本\nopenbb exe -f /path/to/script.openbb\n\n# 执行远程脚本\nopenbb exe --url https://example.com/script.openbb\n\n# 带参数执行\nopenbb exe -f routine.openbb -i GME,AMC,BTC-USD\n```\n\n资料来源：[cli/openbb_cli/controllers/cli_controller.py](https://github.com/OpenBB-finance/OpenBB/blob/main/cli/openbb_cli/controllers/cli_controller.py)\n\n---\n\n## 数据流架构\n\n```mermaid\ngraph TD\n    A[用户请求] --> B{CLI / API / Desktop}\n    B --> C[OpenBB Bridge - obb]\n    C --> D[Router 路由层]\n    D --> E[Extension Loader 扩展加载]\n    D --> F[Provider Registry 提供者注册表]\n    F --> G[Query Executor 查询执行器]\n    G --> H[数据源 API]\n    H --> I[标准化数据返回]\n    I --> C\n```\n\n---\n\n## 安全与配置\n\n### 7.1 CORS 配置\n\nAPI 支持细粒度的跨域资源共享配置：\n\n```python\napp.add_middleware(\n    CORSMiddleware,\n    allow_origins=system.api_settings.cors.allow_origins,\n    allow_methods=system.api_settings.cors.allow_methods,\n    allow_headers=system.api_settings.cors.allow_headers,\n)\n```\n\n### 7.2 认证服务\n\n在开发模式下，系统包含认证服务路由：\n\n```python\nAppLoader.add_routers(\n    app=app,\n    routers=(\n        [AuthService().router, router_system, router_coverage, router_commands]\n        if Env().DEV_MODE\n        else (\n            [router_commands, router_coverage]\n            # 生产模式路由配置\n        )\n    ),\n)\n```\n\n资料来源：[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)\n\n---\n\n## 总结\n\nOpenBB 平台的核心架构围绕模块化、可扩展和统一入口三个原则设计。通过清晰的分层架构、灵活的扩展机制和完善的 API 服务，平台能够支持多种使用场景：\n\n- **数据消费者**：通过 CLI 或 Python API 获取金融数据\n- **开发者**：通过扩展机制添加新的数据源和工具\n- **企业用户**：通过 REST API 集成到现有系统\n- **AI 应用**：通过 MCP Server 集成 AI 助手能力\n\n这种架构设计确保了平台的高可用性、可维护性和可扩展性。\n\n---\n\n<a id='page-4'></a>\n\n## OBBject数据模型\n\n### 相关页面\n\n相关主题：[核心架构设计](#page-3), [数据提供者系统](#page-5)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [openbb_platform/core/openbb_core/app/model/obbject.py](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/core/openbb_core/app/model/obbject.py)\n- [openbb_platform/core/openbb_core/app/model/abstract/results.py](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/core/openbb_core/app/model/abstract/results.py)\n- [openbb_platform/core/openbb_core/provider/abstract/annotated_result.py](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/core/openbb_core/provider/abstract/annotated_result.py)\n- [openbb_platform/core/openbb_core/provider/abstract/data.py](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/core/openbb_core/provider/abstract/data.py)\n- [openbb_platform/core/openbb_core/provider/abstract/fetcher.py](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/core/openbb_core/provider/abstract/fetcher.py)\n</details>\n\n# OBBject数据模型\n\n## 概述\n\nOBBject是OpenBB Platform的核心数据模型，扮演着整个平台数据交互的中枢角色。作为一个统一的响应包装器，OBBject将各种数据源返回的原始数据封装为结构化的、可操作的对象，使得用户能够以一致的方式处理来自不同provider的金融数据。OBBject的设计遵循了类型安全和可扩展性的原则，通过泛型注解和抽象基类实现了高度灵活的查询-结果映射机制。\n\n在OpenBB Platform的架构中，OBBject位于应用层与provider层之间的关键位置。当用户通过`obb`对象发起数据请求时，底层会调用相应的fetcher获取数据，这些数据随后被封装为OBBject实例返回给用户。这种设计使得数据获取、数据转换和数据展示三个环节得以有效分离，从而提高了代码的可维护性和可测试性。\n\n## 核心组件架构\n\n### 类继承体系\n\nOBBject数据模型采用了多层次的类继承结构，以支持不同类型的数据处理需求。整个体系从基础的抽象结果类开始，逐步演化为最终的OBBject类，每一层都承担着特定的数据处理职责。这种层次化的设计允许开发者根据具体的业务需求创建专门化的数据模型，同时保持与核心框架的兼容性。\n\n抽象结果类定义了数据序列化的基本接口和属性转换机制，确保所有派生的数据模型都能以统一的方式进行数据导出和格式化。OBBject在此基础上进一步扩展，添加了与OpenBB生态系统交互所需的所有功能，包括元数据管理、参数跟踪和结果缓存等能力。\n\n### 数据流架构图\n\n```mermaid\ngraph TD\n    A[用户请求 obb.provider.endpoint] --> B[Fetcher获取原始数据]\n    B --> C[AbstractData模型验证]\n    C --> D[AnnotatedResult注解处理]\n    D --> E[Results基类封装]\n    E --> F[OBBject实例化]\n    F --> G[返回给用户]\n    \n    H[OBBject属性] --> F\n    H --> I[results 数据载荷]\n    H --> J[metadata 元信息]\n    H --> K[provider 来源标识]\n    H --> L[warnings 警告信息]\n```\n\n## OBBject类详解\n\n### 主要属性\n\nOBBject类封装了数据查询和响应所需的所有关键信息。这些属性共同构成了一个完整的数据响应单元，使用户能够全面了解数据的来源、状态和内容。属性设计遵循了最小惊讶原则，每个属性都有明确的语义定义和使用场景。\n\n| 属性名称 | 类型 | 说明 | 资料来源 |\n|:---------|:-----|:-----|:---------|\n| results | List[Model] | 查询返回的数据模型列表 | `obbject.py` |\n| provider | str | 数据提供者的唯一标识符 | `obbject.py` |\n| params | dict | 触发此结果的查询参数 | `obbject.py` |\n| metadata | dict | 附加的元数据信息 | `obbject.py` |\n| warnings | List[str] | 处理过程中的警告信息 | `obbject.py` |\n| chart | Optional[dict] | 图表配置数据 | `obbject.py` |\n\nresults属性是OBBject中最核心的数据载体，它包含了实际查询结果的列表。每个结果都是一个经过验证的数据模型实例，遵循Pydantic的数据校验规则。provider属性标识了数据的原始来源，这对于数据溯源和质量问题追踪至关重要。params属性完整记录了生成此结果所使用所有参数，便于结果复现和调试。\n\n### 数据转换方法\n\nOBBject提供了丰富的数据转换方法，使用户能够将内部数据模型转换为各种常用的数据格式。这些方法的设计充分考虑了易用性和性能，既支持简单的单行调用，也支持复杂的数据处理流水线操作。\n\nto_df方法是使用频率最高的数据转换接口，它将results列表转换为Pandas DataFrame对象，便于进行进一步的数据分析和可视化。该方法支持多种输出格式，包括标准宽格式和转置格式，用户可以通过参数控制是否包含索引列和如何处理嵌套数据结构。当结果包含时间序列数据时，to_df会自动设置时间索引，为后续的时间序列分析提供便利。\n\nto_dict方法提供了将数据导出为字典格式的能力，这对于需要JSON序列化的场景非常重要。该方法支持不同的字典结构选项，包括记录导向的列表结构、列导向的字典结构以及面向编程使用的面向对象结构。\n\n## Abstract Results抽象基类\n\n### results.py的设计理念\n\n抽象结果类定义在`openbb_core/app/model/abstract/results.py`中，它是所有具体结果模型的基类。这个抽象层承担着数据标准化的职责，确保来自不同数据源的数据能够以一致的方式被处理和使用。抽象结果类的设计遵循了组合优于继承的原则，通过组合各种数据处理功能模块来实现灵活的数据转换能力。\n\n该基类定义了一组标准化的数据处理方法，包括数据验证、格式转换、聚合计算等。这些方法的具体实现由派生类根据数据特性来完成，基类只定义调用接口和通用逻辑。这种设计使得新的数据模型可以快速获得完整的数据处理能力，而无需重复实现基础功能。\n\n```mermaid\nclassDiagram\n    class AbstractResults {\n        <<abstract>>\n        +results: List[Model]\n        +to_df()* Method\n        +to_dict()* Method\n        +validate()* Method\n        #_format_results() Method\n        #_process_warnings() Method\n    }\n    class OBBject {\n        +provider: str\n        +params: dict\n        +metadata: dict\n        +chart: Optional[dict]\n        +to_chart() Method\n        +to_excel() Method\n    }\n    AbstractResults <|-- OBBject\n```\n\n### 数据验证机制\n\n数据验证是Abstract Results层的核心功能之一。通过集成Pydantic的数据校验能力，OBBject确保所有返回给用户的都符合预定义的数据模型规范。验证过程在数据进入OBBject实例之前就会触发，任何不符合规范的数据都会被拒绝并抛出详细的验证错误信息。\n\n验证规则不仅检查数据类型和必填字段，还包括业务逻辑层面的约束验证。例如，对于股票价格数据，系统会验证价格不能为负数；对于日期范围查询，系统会验证结束日期不能早于开始日期。这种多层次的验证机制确保了数据的可靠性和一致性。\n\n## Provider数据抽象层\n\n### Annotated Result注解系统\n\nannotated_result.py中定义的注解系统为数据模型提供了元数据附加能力。这个系统允许开发者在定义数据模型时通过装饰器语法添加额外的元信息，如字段描述、单位信息、数据来源等。这些注解信息会在数据处理和展示过程中被自动提取和使用，提升了数据的可读性和可用性。\n\n注解系统支持多种类型的元数据定义。字段级别的注解可以指定单个数据字段的显示名称、单位、格式化规则等信息。模型级别的注解则定义了整个数据模型的元信息，包括数据来源、更新频率、数据质量评级等。这种多层次的注解设计使得数据模型既保持了清晰的代码结构，又包含了丰富的语义信息。\n\n### Abstract Data基类\n\n`openbb_core/provider/abstract/data.py`中定义的AbstractData是所有provider数据模型的基类。它封装了与底层数据源交互所需的基础功能，包括连接管理、请求构建、响应解析等。这个基类使用泛型参数来指定具体的数据模型类型，实现了类型安全的数据处理流程。\n\nAbstractData的设计充分考虑了扩展性。新的数据provider只需要继承这个基类并实现特定的接口方法，就可以快速接入OpenBB Platform的数据生态系统。基类提供了默认的错误处理机制、重试策略和日志记录功能，这些都可以通过配置进行自定义。\n\n## Fetcher抽象层\n\n### fetcher.py的作用\n\n`openbb_core/provider/abstract/fetcher.py`中定义的Fetcher是数据获取的核心抽象层。它封装了从原始数据源到标准化OBBject之间的所有转换逻辑。Fetcher的设计遵循了单一职责原则，每个fetcher实例只负责处理一个特定的数据endpoint，这种设计使得系统具有优秀的可维护性和可测试性。\n\nFetcher的工作流程包括参数验证、请求构建、响应获取、数据解析、模型验证和结果封装六个主要阶段。每个阶段都有明确的输入输出定义和错误处理策略。当任何一个阶段出现异常时，Fetcher会捕获异常并进行适当的处理，最终返回一个包含错误信息的OBBject实例，而不是直接抛出异常。\n\n### 请求-响应生命周期\n\n```mermaid\nsequenceDiagram\n    participant U as 用户\n    participant O as OBBject\n    participant F as Fetcher\n    participant P as Provider API\n    participant D as Data Model\n    \n    U->>O: 发起查询请求\n    O->>F: 传递参数\n    F->>F: 参数验证\n    F->>P: 构建并发送HTTP请求\n    P-->>F: 返回原始数据\n    F->>D: 创建Data Model实例\n    D->>D: 数据验证\n    F->>O: 封装为OBBject\n    O-->>U: 返回结果\n```\n\n## 使用示例\n\n### 基础数据查询\n\n```python\nfrom openbb import obb\n\n# 查询标准普尔500相关数据\nresult = obb.index.sp500_multiples(limit=10)\n\n# 转换为DataFrame进行分析\ndf = result.to_df()\n\n# 查看元数据信息\nprint(f\"数据来源: {result.provider}\")\nprint(f\"查询参数: {result.params}\")\nprint(f\"更新时间: {result.metadata}\")\n```\n\n### 数据导出操作\n\nOBBject支持多种数据导出格式，满足不同场景的使用需求。to_excel方法可以将数据导出为Excel文件，同时支持多个工作表的创建和格式化。to_csv方法提供了轻量级的CSV导出功能，适用于数据备份和迁移场景。\n\n```python\n# 导出为Excel\nresult.to_excel(\"output.xlsx\", sheet_name=\"data\")\n\n# 导出为CSV\nresult.to_csv(\"output.csv\", index=False)\n\n# 获取字典格式\ndata_dict = result.to_dict(orientation=\"records\")\n```\n\n## 最佳实践\n\n### 参数管理\n\n在使用OBBject时，合理管理查询参数是确保结果可复现的关键。建议在发起查询前显式声明所有非默认参数，并将这些参数与结果一起保存。这样做不仅便于后续的问题排查，也为自动化测试提供了可验证的输入输出对。\n\n### 错误处理\n\n虽然OBBject会尝试封装所有错误信息，但在编写健壮的应用程序时，仍建议实现额外的错误处理逻辑。通过检查warnings属性和验证results列表的非空性，可以优雅地处理各种异常情况。\n\n### 性能优化\n\n对于大量数据的查询和处理，应当注意OBBject的内存占用情况。to_df等转换方法会创建新的数据副本，在处理大规模数据集时可能带来显著的性能开销。在这种情况下，可以考虑使用流式处理或分页查询的方式减少内存压力。\n\n---\n\n<a id='page-5'></a>\n\n## 数据提供者系统\n\n### 相关页面\n\n相关主题：[核心架构设计](#page-3), [OBBject数据模型](#page-4), [扩展模块系统](#page-6)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [openbb_platform/providers](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/providers)\n- [openbb_platform/core/openbb_core/provider/registry_map.py](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/core/openbb_core/provider/registry_map.py)\n- [openbb_platform/core/openbb_core/provider/provider_interface.py](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/core/openbb_core/provider/provider_interface.py)\n- [openbb_platform/core/openbb_core/provider/standard_models](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/core/openbb_core/provider/standard_models)\n- [openbb_platform/providers/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/providers/README.md)\n- [openbb_platform/providers/fmp/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/providers/fmp/README.md)\n- [openbb_platform/providers/government_us/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/providers/government_us/README.md)\n- [openbb_platform/providers/tmx/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/providers/tmx/README.md)\n- [openbb_platform/providers/cftc/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/providers/cftc/README.md)\n</details>\n\n# 数据提供者系统\n\n## 概述\n\nOpenBB Platform 的数据提供者系统（Provider System）是平台的核心架构组件之一，负责集成和管理来自多个外部数据源的市场数据、金融信息和经济指标。该系统采用模块化设计，允许开发者通过实现标准化的接口来添加新的数据提供者，同时保证上层应用代码的稳定性和一致性。\n\n数据提供者系统的设计目标包括：\n\n- **多数据源集成**：支持从多个第三方金融数据提供商获取数据\n- **统一数据格式**：通过标准模型（Standard Models）规范数据结构\n- **灵活的扩展机制**：允许社区贡献新的提供者\n- **透明的数据路由**：根据配置和可用性自动选择数据源\n\n资料来源：[openbb_platform/providers/README.md]()\n\n## 架构设计\n\n### 系统层次结构\n\n```mermaid\ngraph TB\n    subgraph \"应用层 (Application Layer)\"\n        CLI[CLI 客户端]\n        REST_API[REST API 服务]\n        MCP[MCP 服务器]\n        DESKTOP[桌面应用]\n    end\n    \n    subgraph \"核心层 (Core Layer)\"\n        OBB[openbb 模块]\n        STANDARD_MODELS[标准模型]\n        REGISTRY[提供者注册表]\n        INTERFACE[提供者接口]\n    end\n    \n    subgraph \"提供者层 (Provider Layer)\"\n        FMP[Financial Modeling Prep]\n        TMX[TMX Provider]\n        CFTC[CFTC Provider]\n        GOV_US[US Government]\n        CUSTOM[自定义提供者]\n    end\n    \n    CLI --> OBB\n    REST_API --> OBB\n    MCP --> OBB\n    DESKTOP --> OBB\n    \n    OBB --> STANDARD_MODELS\n    OBB --> REGISTRY\n    OBB --> INTERFACE\n    \n    INTERFACE --> FMP\n    INTERFACE --> TMX\n    INTERFACE --> CFTC\n    INTERFACE --> GOV_US\n    INTERFACE --> CUSTOM\n```\n\n### 目录结构规范\n\n每个数据提供者应遵循统一的目录结构：\n\n```\nopenbb_platform\n└───providers\n    └───<provider_name>\n        ├── README.md              # 提供者说明文档\n        ├── pyproject.toml        # Python 项目配置\n        ├── poetry.lock           # 依赖锁定文件\n        ├── tests/                 # 测试目录\n        └── openbb_<provider_name>\n            ├── __init__.py\n            ├── models/\n            │   ├── <some_model>.py\n            │   └── ...\n            └── utils/\n                ├── <some_helper>.py\n                └── ...\n            └── routines/\n                └── <routine_files>.py\n```\n\n资料来源：[openbb_platform/providers/README.md]()\n\n## 提供者注册机制\n\n### 注册表映射\n\nOpenBB 使用 `registry_map.py` 维护所有已注册提供者的映射关系。注册表负责：\n\n- 追踪可用提供者及其能力\n- 管理提供者与端点的关联\n- 处理提供者的加载和初始化\n\n### 提供者接口\n\n所有数据提供者必须实现 `provider_interface.py` 中定义的标准接口：\n\n```python\n# 伪代码示例\nclass ProviderInterface:\n    def __init__(self):\n        self.name: str\n        self.description: str\n        self.credentials: List[str]\n        self.endpoints: Dict[str, Endpoint]\n    \n    def get_data(self, endpoint: str, **kwargs) -> Any:\n        \"\"\"获取数据的主方法\"\"\"\n        pass\n    \n    def validate_credentials(self) -> bool:\n        \"\"\"验证 API 凭证\"\"\"\n        pass\n```\n\n资料来源：[openbb_platform/core/openbb_core/provider/provider_interface.py]()\n\n## 标准模型系统\n\n### 标准模型定义\n\n标准模型（Standard Models）位于 `openbb_platform/core/openbb_core/provider/standard_models` 目录，定义了平台通用的数据结构：\n\n| 模型类别 | 说明 | 示例 |\n|---------|------|------|\n| Equity Models | 股票相关数据 | 股价、财报、估值 |\n| Fixed Income | 固定收益数据 | 国债收益率、债券价格 |\n| Commodity | 商品数据 | 期货价格、供需报告 |\n| Derivatives | 衍生品数据 | 期权链、期货合约 |\n| Macroeconomic | 宏观经济数据 | GDP、CPI、利率 |\n\n### 数据转换流程\n\n```mermaid\ngraph LR\n    A[原始 API 响应] --> B[Provider Model]\n    B --> C[数据清洗验证]\n    C --> D[Standard Model]\n    D --> E[用户端数据]\n    \n    style A fill:#ffcccc\n    style D fill:#ccffcc\n    style E fill:#ccccff\n```\n\n## 现有提供者一览\n\n### 官方提供者\n\n#### Financial Modeling Prep (FMP)\n\nFMP 提供者集成 Financial Modeling Prep 数据服务：\n\n```bash\npip install openbb-fmp\n```\n\n覆盖功能：\n- 股票报价和历史数据\n- 财务报表分析\n- 估值指标\n- 内部人交易\n\n资料来源：[openbb_platform/providers/fmp/README.md]()\n\n#### US Government\n\nUS Government 提供者整合美国政府公开数据：\n\n```bash\npip install openbb-us-government\n```\n\n覆盖服务：\n- `obb.commodity.psd_report` - 供需报告\n- `obb.commodity.psd_data` - 供需数据\n- `obb.fixed_income.government.treasury_auctions` - 国债拍卖\n- `obb.fixed_income.government.treasury_prices` - 国债价格\n\n此提供者无需注册即可使用。\n\n资料来源：[openbb_platform/providers/government_us/README.md]()\n\n#### CFTC (商品期货交易委员会)\n\nCFTC 提供者获取美国商品期货交易委员会报告：\n\n```python\nfrom openbb import obb\n\n# 搜索合约\nsearch_results = obb.cftc.cot_search(query=\"gold\")\nprint(search_results.to_df())\n\n# 获取持仓报告\nreport = obb.cftc.cot(code=\"CFTC_088695\", measure=\"percent_of_oi\", limit=4)\nprint(report.to_df().T)\n```\n\n覆盖端点：\n- `obb.cftc.cot` - COT 报告\n- `obb.cftc.cot_search` - COT 搜索\n\n资料来源：[openbb_platform/providers/cftc/README.md]()\n\n#### TMX Provider\n\nTMX 提供者由社区维护，提供加拿大金融市场数据：\n\n```bash\npip install openbb-tmx\n```\n\n覆盖功能：\n- `.derivatives.options.chains` - 期权链\n- `.equity.calendar.earnings` - 财报日历\n- `.equity.estimates.consensus` - 共识预期\n- `.equity.discovery.gainers` - 涨跌幅榜\n- `.equity.fundamental.dividends` - 股息数据\n- `.equity.price.historical` - 历史价格（日/周/月/分钟）\n- `.equity.search` - 股票搜索\n\n资料来源：[openbb_platform/providers/tmx/README.md]()\n\n### 社区提供者\n\n社区开发者可以创建和发布自定义提供者，标准扩展名格式为 `openbb-<provider_name>`。\n\n## 扩展集成\n\n### 扩展与提供者的关系\n\n```mermaid\ngraph TD\n    EXT[OpenBB Extension] --> DEP[声明 Provider 依赖]\n    DEP --> LOAD[动态加载]\n    LOAD --> REGISTRY[注册到 Registry]\n    REGISTRY --> AVAILABLE[可用端点]\n```\n\n### MCP 服务器集成\n\n通过 `openapi_extra.mcp_config` 字典可以精细控制 MCP 工具暴露：\n\n| 配置项 | 类型 | 说明 |\n|-------|------|------|\n| `expose` | `Optional[bool]` | 设为 False 完全隐藏路由 |\n| `mcp_type` | `Optional[MCPType]` | 工具类型：`\"tool\"`, `\"resource\"`, `\"resource_template\"` |\n| `methods` | `Optional[list[HTTPMethod]]` | 暴露的 HTTP 方法列表 |\n\n资料来源：[openbb_platform/extensions/mcp_server/README.md]()\n\n## 使用方式\n\n### Python 直接调用\n\n```python\nfrom openbb import obb\n\n# 使用默认提供者获取数据\nresult = obb.equity.price.historical(symbol=\"AAPL\", start_date=\"2024-01-01\")\n\n# 转换为 DataFrame\ndf = result.to_df()\n```\n\n### REST API 访问\n\n启动本地 API 服务器：\n\n```bash\nopenbb-api\n```\n\nAPI 端点格式：`GET /api/v1/<provider>/<endpoint>`\n\n### MCP 工具调用\n\n在 MCP 配置中定义提示后，可通过工具调用数据端点：\n\n```json\n{\n  \"description\": \"Generate a brief summary of GDP for a country.\",\n  \"messages\": [\n    {\n      \"role\": \"user\",\n      \"content\": {\n        \"type\": \"text\",\n        \"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.\"\n      }\n    }\n  ]\n}\n```\n\n资料来源：[openbb_platform/extensions/mcp_server/README.md]()\n\n## 配置与凭证管理\n\n### API 密钥设置\n\n桌面应用提供可视化界面管理 API 密钥：\n\n```typescript\n// 支持导入格式\naccept=\".json,.env\"\n```\n\n凭证文件示例（JSON 格式）：\n```json\n{\n  \"FMP_API_KEY\": \"your_api_key_here\"\n}\n```\n\n### 环境变量配置\n\n部分提供者支持通过环境变量配置：\n\n```bash\nexport FMP_API_KEY=\"your_api_key\"\nexport TMX_API_KEY=\"your_api_key\"\n```\n\n## 开发新提供者\n\n### 开发步骤\n\n1. **创建目录结构**：遵循标准目录布局\n2. **实现 Provider 类**：继承标准 Provider 接口\n3. **定义数据模型**：使用 Pydantic 定义请求/响应模型\n4. **实现工具函数**：处理 API 调用和数据转换\n5. **编写 README**：提供安装和使用说明\n6. **添加测试**：覆盖主要功能路径\n\n### 模型定义规范\n\n```python\nfrom pydantic import BaseModel, Field\nfrom typing import Optional, List\nfrom datetime import date\n\nclass EquityHistoricalData(BaseModel):\n    symbol: str = Field(description=\"股票代码\")\n    date: date = Field(description=\"交易日期\")\n    open: float = Field(description=\"开盘价\")\n    high: float = Field(description=\"最高价\")\n    low: float = Field(description=\"最低价\")\n    close: float = Field(description=\"收盘价\")\n    volume: int = Field(description=\"成交量\")\n```\n\n### 注册提供者\n\n新提供者需在安装后注册到系统：\n\n```python\nfrom openbb_core.provider.registry import Registry\n\nRegistry.register(\"my_provider\", MyProviderClass)\n```\n\n## 技术限制与注意事项\n\n### 数据质量\n\n- 平台数据平台中包含的数据**未必完全准确**\n- 交易金融工具存在高风险，包括损失全部投资金额的可能\n- 数据使用需自行承担风险\n\n### 许可与免责\n\nOpenBB 和任何数据提供者不对以下损失承担责任：\n- 交易活动导致的损失\n- 对信息内容的依赖导致的损失\n\n所有第三方商标、品牌归各自所有者所有。\n\n资料来源：[README.md]()\n\n## 相关资源\n\n| 资源类型 | 链接 |\n|---------|------|\n| 官方文档 | https://docs.openbb.co/ |\n| 平台参考 | https://docs.openbb.co/python/reference |\n| 问题反馈 | https://github.com/OpenBB-finance/OpenBB/issues |\n| Discord 社区 | https://openbb.co/discord |\n\n---\n\n<a id='page-6'></a>\n\n## 扩展模块系统\n\n### 相关页面\n\n相关主题：[核心架构设计](#page-3), [扩展开发指南](#page-9)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [openbb_platform/extensions/equity/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/extensions/equity)\n- [openbb_platform/extensions/news/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/extensions/news)\n- [openbb_platform/extensions/mcp_server/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/extensions/mcp_server)\n- [openbb_platform/extensions/commodity/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/extensions/commodity)\n- [openbb_platform/extensions/regulators/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/extensions/regulators)\n- [openbb_platform/providers/government_us/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/providers/government_us)\n- [openbb_platform/providers/fmp/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/providers/fmp)\n- [openbb_platform/providers/tmx/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/providers/tmx)\n- [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)\n</details>\n\n# 扩展模块系统\n\n## 概述\n\nOpenBB Platform 采用模块化的扩展系统架构，允许通过安装扩展包来增强平台功能。扩展模块是独立的 Python 包，可向平台添加特定领域的数据源、工具和功能。这种设计使平台核心保持精简，同时支持灵活的功能扩展。\n\n扩展系统分为两大类别：\n\n| 类别 | 说明 | 示例 |\n|------|------|------|\n| **扩展（Extensions）** | 提供功能模块和子模块 | equity、crypto、fixedincome、technical、economy |\n| **数据提供者（Providers）** | 集成外部数据源 | fmp、tmx、government_us、multpl |\n\n资料来源：[openbb_platform/extensions/equity/README.md]()\n\n## 系统架构\n\n### 扩展与提供者关系\n\n```mermaid\ngraph TD\n    A[\"OpenBB Platform Core<br/>openbb_core\"] --> B[\"扩展模块<br/>Extensions\"]\n    A --> C[\"数据提供者<br/>Providers\"]\n    B --> B1[\"equity<br/>股票\"] \n    B --> B2[\"crypto<br/>加密货币\"]\n    B --> B3[\"fixedincome<br/>固定收益\"]\n    B --> B4[\"technical<br/>技术分析\"]\n    B --> B5[\"economy<br/>宏观经济\"]\n    B --> B6[\"news<br/>新闻\"]\n    B --> B7[\"commodity<br/>大宗商品\"]\n    B --> B8[\"regulators<br/>监管机构\"]\n    C --> C1[\"fmp<br/>Financial Modeling Prep\"]\n    C --> C2[\"tmx<br/>TMX/tsx\"]\n    C --> C3[\"government_us<br/>美国政府数据\"]\n    C --> C4[\"multpl<br/>Multpl数据\"]\n```\n\n### 安装机制\n\n扩展模块通过 pip 包管理器安装，安装命令统一为 `pip install openbb-<模块名>`。\n\n| 扩展名称 | 安装命令 | 功能说明 |\n|----------|----------|----------|\n| equity | `pip install openbb-equity` | 股票市场数据工具 |\n| crypto | `pip install openbb-crypto` | 加密货币数据 |\n| fixedincome | `pip install openbb-fixedincome` | 固定收益市场数据 |\n| technical | `pip install openbb-technical` | 技术分析指标 |\n| economy | `pip install openbb-economy` | 宏观经济数据 |\n| news | `pip install openbb-news` | 新闻数据 |\n| commodity | `pip install openbb-commodity` | 大宗商品数据 |\n| regulators | `pip install openbb-regulators` | 全球市场监管数据 |\n\n资料来源：[openbb_platform/extensions/commodity/README.md]()\n\n## 扩展模块详细说明\n\n### Equity 扩展\n\nEquity 扩展提供股票市场数据工具，是平台最核心的扩展之一。\n\n**子模块结构：**\n\n| 子模块 | 功能 |\n|--------|------|\n| `calendar` | 股票特定事件日历 |\n| `compare` | 同业公司对比分析 |\n| `darkpool` | 暗池空头数据 |\n| `discovery` | 股票发现/筛选 |\n| `estimates` | 分析师预测 |\n| `fundamental` | 基本面分析 |\n| `options` | 期权数据 |\n| `ownership` | 内部和外部所有权 |\n| `price` | 历史价格数据 |\n| `shorts` | 做空数据 |\n\n资料来源：[openbb_platform/extensions/equity/README.md]()\n\n### News 扩展\n\nNews 扩展为平台提供新闻数据接口，支持获取金融新闻和市场资讯。\n\n资料来源：[openbb_platform/extensions/news/README.md]()\n\n### Commodity 扩展\n\nCommodity 扩展提供大宗商品相关的命令和数据接口。\n\n资料来源：[openbb_platform/extensions/commodity/README.md]()\n\n### Regulators 扩展\n\nRegulators 扩展提供来自全球市场监管机构的数据结构，用于查询各市场的监管信息。\n\n资料来源：[openbb_platform/extensions/regulators/README.md]()\n\n## 数据提供者\n\n数据提供者是扩展系统的核心组件，负责与外部数据源集成。\n\n### Provider 安装模式\n\n所有数据提供者遵循统一的安装模式：\n\n```bash\npip install openbb-<provider-name>\n```\n\n### 主要数据提供者\n\n#### Financial Modeling Prep (fmp)\n\n集成 [Financial Modeling Prep](https://site.financialmodelingprep.com/) 数据源。\n\n资料来源：[openbb_platform/providers/fmp/README.md]()\n\n#### TMX Provider\n\n集成 TMX（多伦多证券交易所）数据，提供加拿大市场数据。\n\n**覆盖的命令：**\n\n- `.derivatives.options.chains` - 期权链数据（历史EOD数据从2009年开始）\n- `.equity.calendar.earnings` - 财报日历\n- `.equity.estimates.consensus` - 一致预期\n- `.equity.discovery.gainers` - 涨幅榜\n- `.equity.fundamental.dividends` - 分红数据\n- `.equity.fundamental.filings` - 监管文件\n- `.equity.ownership.insider_trading` - 内部人交易\n- `.equity.price.quote` - 当前报价\n- `.equity.price.historical` - 历史价格（日/周/月及任意分钟间隔）\n\n资料来源：[openbb_platform/providers/tmx/README.md]()\n\n#### Government US Provider\n\n集成美国政府数据（来自 [data.gov](https://data.gov)），提供无需注册的服务数据。\n\n**覆盖的命令：**\n\n| 命令 | 说明 |\n|------|------|\n| `obb.commodity.psd_report` | 供需报告 |\n| `obb.commodity.psd_data` | 供需数据 |\n| `obb.commodity.weather_bulletins` | 天气公报 |\n| `obb.commodity.weather_bulletins_download` | 天气公报下载 |\n| `obb.fixed_income.government.treasury_auctions` | 国债拍卖 |\n| `obb.fixed_income.government.treasury_prices` | 国债价格 |\n\n资料来源：[openbb_platform/providers/government_us/README.md]()\n\n#### Multpl Provider\n\n集成 [multpl.com](https://multpl.com) 数据源。\n\n**覆盖的命令：**\n\n- `obb.index.sp500_multiples` - S&P 500 估值倍数\n\n资料来源：[openbb_platform/providers/multpl/README.md]()\n\n## MCP 服务器集成\n\n扩展系统支持通过 MCP（Model Context Protocol）协议将 API 路由暴露为 MCP 工具。\n\n### MCP 配置模型\n\n使用 `MCPConfigModel` 进行细粒度控制：\n\n```python\nfrom openbb_mcp_server.models.mcp_config import MCPConfigModel\n```\n\n**配置属性：**\n\n| 属性 | 类型 | 说明 |\n|------|------|------|\n| `expose` | `Optional[bool]` | 设为 `False` 可完全隐藏路由 |\n| `mcp_type` | `Optional[MCPType]` | 类型：`\"tool\"`、`\"resource\"` 或 `\"resource_template\"` |\n| `methods` | `Optional[list[HTTPMethod]]` | 指定要暴露的 HTTP 方法 |\n\n资料来源：[openbb_platform/extensions/mcp_server/README.md]()\n\n### MCP 配置使用流程\n\n```mermaid\ngraph LR\n    A[\"FastAPI Route<br/>openapi_extra\"] --> B[\"MCPConfigModel<br/>验证配置\"]\n    B --> C{\"expose=True?\"}\n    C -->|是| D[\"MCP Server<br/>暴露为工具\"]\n    C -->|否| E[\"隐藏路由\"]\n    D --> F[\"MCP 客户端调用\"]\n```\n\n## REST API 集成\n\n扩展模块通过 `openbb_core` 的 REST API 与平台集成。API 使用 FastAPI 框架构建。\n\n### API 配置\n\n```python\napp = FastAPI(\n    title=system.api_settings.title,\n    description=system.api_settings.description,\n    version=system.api_settings.version,\n    servers=[\n        {\"url\": s.url, \"description\": s.description}\n        for s in system.api_settings.servers\n    ],\n)\n```\n\n### CORS 中间件\n\n平台启用 CORS 中间件，允许跨域请求：\n\n```python\napp.add_middleware(\n    CORSMiddleware,\n    allow_origins=system.api_settings.cors.allow_origins,\n    allow_methods=system.api_settings.cors.allow_methods,\n    allow_headers=system.api_settings.cors.allow_headers,\n)\n```\n\n### 路由注册\n\n扩展通过 `AppLoader.add_routers()` 注册路由：\n\n```python\nAppLoader.add_routers(\n    app=app,\n    routers=(\n        [AuthService().router, router_system, router_coverage, router_commands]\n        if Env().DEV_MODE\n        else ([router_commands, router_coverage] if ...)\n    ),\n)\n```\n\n资料来源：[openbb_platform/core/openbb_core/api/rest_api.py]()\n\n## 开发指南\n\n### 创建新扩展\n\n1. 在 `openbb_platform/extensions/` 目录下创建扩展目录\n2. 创建 `README.md` 文档\n3. 实现扩展功能模块\n4. 使用标准安装命令发布\n\n### 扩展命名规范\n\n| 扩展类型 | 包名格式 | 示例 |\n|----------|----------|------|\n| 官方扩展 | `openbb-<name>` | `openbb-equity` |\n| 第三方扩展 | `openbb-<name>` | `openbb-tmx` |\n\n### 依赖管理\n\n扩展应声明所有必要依赖，并通过 `requirements.txt` 或 `pyproject.toml` 管理。\n\n## 总结\n\nOpenBB Platform 的扩展模块系统提供了高度模块化和可扩展的架构：\n\n- **核心分离**：平台核心与功能扩展解耦\n- **统一安装**：通过 pip 统一管理\n- **多数据源**：支持多种外部数据提供者\n- **协议支持**：通过 MCP 协议暴露工具\n- **RESTful API**：通过 FastAPI 提供标准接口\n\n扩展系统使 OpenBB 能够持续添加新功能，同时保持核心框架的稳定性和可维护性。\n\n---\n\n<a id='page-7'></a>\n\n## 命令行界面(CLI)\n\n### 相关页面\n\n相关主题：[桌面应用程序](#page-8), [REST API与部署](#page-10)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [cli/openbb_cli/cli.py](https://github.com/OpenBB-finance/OpenBB/blob/main/cli/openbb_cli/cli.py) - **未在当前上下文中提供**\n- [cli/openbb_cli/controllers/cli_controller.py](https://github.com/OpenBB-finance/OpenBB/blob/main/cli/openbb_cli/controllers/cli_controller.py) - **未在当前上下文中提供**\n- [cli/openbb_cli/controllers/base_controller.py](https://github.com/OpenBB-finance/OpenBB/blob/main/cli/openbb_cli/controllers/base_controller.py) - **未在当前上下文中提供**\n- [cli/openbb_cli/argparse_translator](https://github.com/OpenBB-finance/OpenBB/blob/main/cli/openbb_cli/argparse_translator) - **未在当前上下文中提供**\n- [cli/openbb_cli/session.py](https://github.com/OpenBB-finance/OpenBB/blob/main/cli/openbb_cli/session.py) - **未在当前上下文中提供**\n\n</details>\n\n# 命令行界面(CLI)\n\n> ⚠️ **文档状态**: 当前上下文中未包含 CLI 源码文件的实际内容。以下文档基于已知的 OpenBB CLI 架构信息生成，实际实现细节可能与描述有所不同。建议查阅实际源码以获取准确信息。\n\n## 概述\n\nOpenBB CLI 是 OpenBB 平台的终端用户界面，为金融数据分析提供了命令行操作方式。该界面基于 Python 开发，通过控制器架构实现了模块化的命令处理系统。CLI 作为 OpenBB 平台的三大入口之一（其他两者为桌面应用和 API），为专业用户提供了高效、灵活的交互方式。\n\n## 核心架构\n\nOpenBB CLI 采用分层控制器架构，主要由以下几个核心组件构成：\n\n| 组件 | 文件位置 | 职责 |\n|------|----------|------|\n| CLI 入口 | `cli.py` | 应用初始化、主循环、命令路由 |\n| 主控制器 | `cli_controller.py` | 顶层命令处理、菜单导航 |\n| 基类控制器 | `base_controller.py` | 通用控制器功能、命令注册机制 |\n| 参数解析 | `argparse_translator` | 命令行参数到内部调用的转换 |\n| 会话管理 | `session.py` | 用户会话状态、上下文维护 |\n\n## 命令解析流程\n\nCLI 的命令解析采用多层级转发机制：\n\n```mermaid\ngraph TD\n    A[用户输入命令] --> B[cli.py 主循环]\n    B --> C[argparse_translator 参数解析]\n    C --> D[cli_controller 路由分发]\n    D --> E{命令类型判断}\n    E -->|主命令| F[主控制器处理]\n    E -->|功能模块| G[子控制器处理]\n    F --> H[执行对应功能]\n    G --> I[调用 Platform API]\n    H --> J[返回结果到终端]\n    I --> J\n```\n\n## 会话管理\n\n会话模块负责维护用户在 CLI 会话期间的状态信息，包括：\n\n- 当前工作目录和路径上下文\n- 用户偏好设置\n- 命令历史记录\n- 缓存的数据和查询结果\n\n## 命令控制器\n\n### 主控制器 (cli_controller)\n\n主控制器负责处理顶级命令，包括帮助信息显示、系统设置、以及各功能模块的入口导航。\n\n### 基类控制器 (base_controller)\n\n所有功能模块控制器继承自基类控制器，基类提供了：\n\n- 动态命令注册\n- 参数验证和转换\n- 输出格式化\n- 错误处理和提示\n\n## 安装与使用\n\nCLI 通过 pip 或 conda 安装：\n\n```bash\npip install openbb\n# 或\nconda install openbb-cli\n```\n\n启动 CLI：\n\n```bash\nopenbb\n```\n\n## 相关资料\n\n由于当前上下文未包含 CLI 源码文件的具体内容，建议直接查阅以下源码文件以获取准确的实现细节：\n\n- `cli/openbb_cli/cli.py` - CLI 主入口\n- `cli/openbb_cli/controllers/cli_controller.py` - 主控制器实现\n- `cli/openbb_cli/controllers/base_controller.py` - 基类控制器\n- `cli/openbb_cli/argparse_translator/` - 参数解析模块\n- `cli/openbb_cli/session.py` - 会话管理\n\n---\n\n<a id='page-8'></a>\n\n## 桌面应用程序\n\n### 相关页面\n\n相关主题：[命令行界面(CLI)](#page-7), [REST API与部署](#page-10)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [desktop/src-tauri/src/main.rs](https://github.com/OpenBB-finance/OpenBB/blob/main/desktop/src-tauri/src/main.rs)\n- [desktop/src-tauri/src/tauri_handlers](https://github.com/OpenBB-finance/OpenBB/blob/main/desktop/src-tauri/src/tauri_handlers)\n- [desktop/src/main.tsx](https://github.com/OpenBB-finance/OpenBB/blob/main/desktop/src/main.tsx)\n- [desktop/src/routes](https://github.com/OpenBB-finance/OpenBB/blob/main/desktop/src/routes)\n- [desktop/src-tauri/tauri.conf.json](https://github.com/OpenBB-finance/OpenBB/blob/main/desktop/src-tauri/tauri.conf.json)\n</details>\n\n# 桌面应用程序\n\n## 概述\n\nOpenBB 桌面应用程序是一个基于 Tauri 框架构建的跨平台桌面客户端，采用 React + TypeScript 作为前端技术栈，后端使用 Rust 实现高性能的系统级交互。该应用程序为用户提供了一个功能完整的图形界面，用于管理 OpenBB 环境、安装扩展、配置 API 密钥以及启动和管理后端服务。\n\n桌面应用程序的核心职责包括：环境生命周期管理、Python 版本选择、扩展安装与卸载、API 密钥安全存储、后端进程控制以及 OpenSSL 证书生成等功能。\n\n## 技术架构\n\n### 框架技术栈\n\n| 层级 | 技术 | 职责 |\n|------|------|------|\n| 前端框架 | React 18 + TypeScript | 用户界面渲染与交互逻辑 |\n| 状态管理 | React Hooks | 组件状态与副作用管理 |\n| UI 组件库 | Tailwind CSS + 自定义组件 | 样式与交互设计 |\n| 桌面框架 | Tauri 2.x | 原生系统集成与窗口管理 |\n| 后端运行时 | Rust | 高性能系统调用与 IPC |\n| Python 环境 | Miniforge | Python 环境隔离与管理 |\n\n### 架构层次图\n\n```mermaid\ngraph TD\n    A[用户界面层] --> B[路由层 desktop/src/routes]\n    B --> C[组件层 desktop/src/components]\n    C --> D[Tauri IPC 层]\n    D --> E[Rust 后端 desktop/src-tauri/src]\n    E --> F[Miniforge Python 环境]\n    E --> G[系统文件系统]\n    E --> H[进程管理]\n```\n\n## 核心模块\n\n### 1. 路由系统\n\n应用程序使用 React Router 进行路由管理，主要路由包括：\n\n| 路由路径 | 组件文件 | 功能描述 |\n|----------|----------|----------|\n| `/setup` | setup.tsx | 初始安装配置 |\n| `/installation-progress` | installation-progress.tsx | 安装进度展示 |\n| `/environments` | environments.tsx | 环境管理 |\n| `/backends` | backends.tsx | 后端服务配置 |\n| `/api-keys` | api-keys.tsx | API 密钥管理 |\n\n资料来源：[desktop/src/routes/setup.tsx](https://github.com/OpenBB-finance/OpenBB/blob/main/desktop/src/routes/setup.tsx)\n资料来源：[desktop/src/routes/environments.tsx](https://github.com/OpenBB-finance/OpenBB/blob/main/desktop/src/routes/environments.tsx)\n资料来源：[desktop/src/routes/backends.tsx](https://github.com/OpenBB-finance/OpenBB/blob/main/desktop/src/routes/backends.tsx)\n资料来源：[desktop/src/routes/api-keys.tsx](https://github.com/OpenBB-finance/OpenBB/blob/main/desktop/src/routes/api-keys.tsx)\n\n### 2. 安装与设置流程\n\n初始设置流程（setup.tsx）负责收集用户配置信息：\n\n```mermaid\ngraph LR\n    A[选择安装目录] --> B[选择用户数据目录]\n    B --> C[验证目录路径]\n    C --> D[初始化安装进程]\n```\n\n**关键配置项：**\n\n| 配置项 | 标识符 | 说明 |\n|--------|--------|------|\n| 安装目录 | installDir | Miniforge、环境的安装位置 |\n| 用户数据目录 | userDataDir | 用户配置与数据存储位置 |\n\n资料来源：[desktop/src/routes/setup.tsx](https://github.com/OpenBB-finance/OpenBB/blob/main/desktop/src/routes/setup.tsx)\n\n### 3. 环境管理系统\n\n环境管理模块（environments.tsx）提供完整的 Python 环境生命周期管理功能：\n\n#### 3.1 环境创建流程\n\n```mermaid\ngraph TD\n    A[输入环境名称] --> B[选择 Python 版本]\n    B --> C[选择扩展]\n    C --> D{创建环境}\n    D --> E[后台安装进程]\n    E --> F{成功?}\n    F -->|是| G[显示环境列表]\n    F -->|否| H[显示错误信息]\n    H --> I[重试或取消]\n```\n\n#### 3.2 环境名称验证规则\n\n```typescript\n/^[a-z0-9-]+$/\n```\n\n环境名称必须满足以下条件：\n\n- 仅使用小写字母\n- 仅使用数字\n- 仅使用连字符 `-`\n- 不允许使用空格或特殊字符\n\n资料来源：[desktop/src/routes/environments.tsx](https://github.com/OpenBB-finance/OpenBB/blob/main/desktop/src/routes/environments.tsx)\n\n#### 3.3 环境管理功能列表\n\n| 功能 | 描述 | 触发方式 |\n|------|------|----------|\n| 创建环境 | 从 requirements.txt 创建新环境 | `createEnvironmentFromRequirements` |\n| 删除环境 | 移除现有环境及其文件 | 环境卡片删除按钮 |\n| 安装扩展 | 向环境添加 OpenBB 扩展 | AddExtensionSelector 组件 |\n| 搜索扩展 | 实时过滤扩展列表 | 搜索输入框 |\n| 查看包列表 | 显示环境中已安装的包 | 环境详情展开 |\n\n### 4. 后端服务管理\n\n后端管理模块（backends.tsx）负责控制 OpenBB 后端服务的启动、运行与监控：\n\n#### 4.1 后端状态流转\n\n```mermaid\ngraph TD\n    A[idle] --> B{启动后端}\n    B --> C[starting]\n    C --> D{服务初始化}\n    D -->|成功| E[running]\n    D -->|失败| F[error]\n    E --> F{发生错误}\n    F --> G[停止服务]\n    G --> A\n    E --> H{用户停止}\n    H --> A\n```\n\n#### 4.2 后端配置参数\n\n| 参数 | 说明 | 默认值 |\n|------|------|--------|\n| command | 启动命令 | `openbb-api` |\n| workingDir | 工作目录 | `{installation_directory}/backends` |\n| extractedPid | 进程 ID | 自动分配 |\n\n资料来源：[desktop/src/routes/backends.tsx](https://github.com/OpenBB-finance/OpenBB/blob/main/desktop/src/routes/backends.tsx)\n\n#### 4.3 进程状态显示\n\n```tsx\n{extractedPid && isRunning && (\n    <div className=\"body-xs-regular text-theme-secondary mt-1\">\n        <span className=\"body-xs-bold\">Process ID:</span> {extractedPid}\n    </div>\n)}\n```\n\n### 5. 扩展安装系统\n\n扩展管理由 `AddExtensionSelector.tsx` 和 `InstallComponents.tsx` 组件实现：\n\n#### 5.1 支持的包类型\n\n| 类型 | 计数变量 | 安装方式 |\n|------|----------|----------|\n| Conda 包 | `condaPackages.length` | `addCondaPackage()` |\n| PyPI 包 | `customPackages.length` | `addCustomPackage()` |\n| OpenBB 扩展 | `selectedExtensions.length` | 复选框选择 |\n\n资料来源：[desktop/src/components/AddExtensionSelector.tsx](https://github.com/OpenBB-finance/OpenBB/blob/main/desktop/src/components/AddExtensionSelector.tsx)\n资料来源：[desktop/src/components/InstallComponents.tsx](https://github.com/OpenBB-finance/OpenBB/blob/main/desktop/src/components/InstallComponents.tsx)\n\n#### 5.2 扩展安装状态摘要\n\n```tsx\n{condaPackages.length} Conda + {customPackages.length} PyPI + {selectedExtensions.length} OpenBB extensions selected\n```\n\n#### 5.3 Conda 包添加流程\n\n```mermaid\ngraph LR\n    A[输入包名] --> B{按 Enter?}\n    B -->|是| C[addCondaPackage]\n    B -->|否| D[等待]\n    C --> E[添加到列表]\n    E --> F[清空输入框]\n```\n\n### 6. API 密钥管理\n\nAPI 密钥管理模块（api-keys.tsx）提供密钥的添加、编辑、删除与导入功能：\n\n#### 6.1 支持的密钥格式\n\n| 格式 | 文件扩展名 | 导入方式 |\n|------|------------|----------|\n| JSON | `.json` | 文件选择器 |\n| 环境变量 | `.env` | 文件选择器 |\n\n#### 6.2 密钥操作模式\n\n| 模式 | 模态框标题 | 操作 |\n|------|------------|------|\n| `add` | 添加 API 密钥 | 创建新密钥 |\n| `edit` | 编辑 API 密钥 | 修改现有密钥 |\n\n资料来源：[desktop/src/routes/api-keys.tsx](https://github.com/OpenBB-finance/OpenBB/blob/main/desktop/src/routes/api-keys.tsx)\n\n### 7. 安装进度管理\n\n安装进度模块（installation-progress.tsx）跟踪并展示安装过程的各个阶段：\n\n#### 7.1 安装阶段划分\n\n| 阶段标识 | 阶段名称 | 包含组件 |\n|----------|----------|----------|\n| `extension_select` | 扩展选择 | 扩展复选框、PyPI 输入 |\n| `version_select` | Python 版本选择 | PythonVersionSelector |\n| `cancelled` | 已取消 | 错误信息、重试按钮 |\n\n#### 7.2 进度指示器\n\n```tsx\nSTEP <span className=\"text-theme-accent\">1</span> OF <span className=\"text-theme-accent\">3</span>\n```\n\n初始安装包含三个步骤：\n\n1. Miniforge（Python 环境管理器）\n2. OpenBB 环境及核心依赖\n3. iPython 与 Jupyter Lab\n\n资料来源：[desktop/src/routes/installation-progress.tsx](https://github.com/OpenBB-finance/OpenBB/blob/main/desktop/src/routes/installation-progress.tsx)\n\n## 用户界面组件\n\n### 1. 通用 UI 组件\n\n| 组件 | 文件 | 用途 |\n|------|------|------|\n| Icon | Icon.tsx | OpenBB Logo、文件图标等 |\n| Button | 共享组件 | 操作按钮 |\n| Tooltip | 共享组件 | 悬停提示 |\n| ReactMarkdown | 共享组件 | Markdown 内容渲染 |\n\n### 2. 自定义图标系统\n\n```tsx\n<CustomIcon id=\"close\" className=\"h-6 w-6\" />\n<CustomIcon id=\"search\" className=\"h-4 w-4\" />\n```\n\n图标系统支持通过 `id` 属性动态加载不同图标，适用于关闭按钮、搜索图标等场景。\n\n资料来源：[desktop/src/components/Icon.tsx](https://github.com/OpenBB-finance/OpenBB/blob/main/desktop/src/components/Icon.tsx)\n\n### 3. 主题系统\n\n应用程序采用深色主题设计，关键颜色变量包括：\n\n| CSS 变量 | 用途 |\n|----------|------|\n| `text-theme-primary` | 主文本颜色 |\n| `text-theme-secondary` | 次要文本颜色 |\n| `text-theme-muted` | 弱化文本颜色 |\n| `bg-theme-primary` | 主背景色 |\n| `bg-theme-secondary` | 次要背景色 |\n| `accent-color` | 强调色/高亮色 |\n\n### 4. ReactMarkdown 配置\n\n扩展安装说明使用 ReactMarkdown 组件渲染，支持自定义渲染器：\n\n```tsx\n<ReactMarkdown\n    components={{\n        img: ({ ...props }) => (\n            <img {...props} className=\"max-w-full h-auto\" style={{ maxHeight: \"300px\" }} />\n        ),\n        a: ({ ...props }) => (\n            <a {...props} className=\"text-blue-500 underline\" target=\"_blank\" />\n        ),\n        code: ({ ...props }) => (\n            <code {...props} className=\"bg-theme-tertiary px-1 py-0.5 rounded\" />\n        ),\n    }}\n>\n    {extension.instructions}\n</ReactMarkdown>\n```\n\n资料来源：[desktop/src/components/InstallComponents.tsx](https://github.com/OpenBB-finance/OpenBB/blob/main/desktop/src/components/InstallComponents.tsx)\n\n## 配置与数据管理\n\n### 1. 用户数据存储\n\n用户数据目录结构由 `userDataDir` 配置项控制，包含：\n\n- 配置文件存储\n- 环境信息缓存\n- API 密钥加密存储\n- 安装日志\n\n### 2. Tauri 配置\n\nTauri 配置文件定义应用程序的窗口属性、权限与构建选项：\n\n```json\n{\n  \"productName\": \"OpenBB\",\n  \"identifier\": \"finance.openbb.desktop\",\n  \"build\": {\n    \"devtools\": true\n  }\n}\n```\n\n## 错误处理\n\n### 1. 错误显示组件\n\n```tsx\n{error && (\n    <div className=\"p-3 bg-theme-secondary border border-red-500/50 rounded text-red-500\">\n        <p>{error}</p>\n    </div>\n)}\n```\n\n### 2. 错误恢复选项\n\n| 错误类型 | 恢复方式 |\n|----------|----------|\n| 环境创建失败 | 重试（Retry）或取消 |\n| 后端启动失败 | 自动重试或手动重启 |\n| 安装错误 | 显示 stderr 日志 |\n\n### 3. 创建环境错误展示\n\n```tsx\n{createEnvironmentError && (\n    <div className=\"p-3 bg-theme-secondary border border-red-500 rounded-md\">\n        <p className=\"text-theme-secondary font-mono whitespace-pre-wrap\">\n            {extractStderr(createEnvironmentError)}\n        </p>\n    </div>\n)}\n```\n\n资料来源：[desktop/src/routes/environments.tsx](https://github.com/OpenBB-finance/OpenBB/blob/main/desktop/src/routes/environments.tsx)\n\n## 工作目录管理\n\n后端服务的工作目录可通过用户界面配置：\n\n```tsx\n<input\n    id=\"working-dir-input\"\n    type=\"text\"\n    value={workingDirInput}\n    onChange={e => setWorkingDirInput(e.target.value)}\n    onBlur={handleDirectoryInputSubmit}\n    onKeyDown={handleDirectoryInputKeyPress}\n    placeholder=\"Select or enter path (defaults to '{installation_directory}/backends')\"\n/>\n```\n\n用户可以选择目录或手动输入路径，系统会在失焦时验证并保存输入。\n\n## 总结\n\nOpenBB 桌面应用程序通过 Tauri 框架将现代 Web 前端技术与原生系统能力相结合，提供了一个功能丰富、界面友好的 Python 环境管理工具。应用程序的核心优势包括：\n\n1. **统一的环境管理**：支持多个 Python 环境的创建、切换与删除\n2. **灵活的扩展系统**：支持 Conda、PyPI 和 OpenBB 原生扩展\n3. **安全的密钥存储**：支持加密存储 API 密钥\n4. **直观的状态监控**：实时显示后端服务状态与进程信息\n5. **完整的安装向导**：引导用户完成初始配置与依赖安装\n\n---\n\n<a id='page-9'></a>\n\n## 扩展开发指南\n\n### 相关页面\n\n相关主题：[核心架构设计](#page-3), [扩展模块系统](#page-6)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [openbb_platform/extensions/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/extensions/README.md)\n- [openbb_platform/extensions/mcp_server/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/extensions/mcp_server/README.md)\n- [openbb_platform/extensions/news/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/extensions/news/README.md)\n- [openbb_platform/CONTRIBUTING.md](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/CONTRIBUTING.md)\n- [openbb_platform/providers/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/providers/README.md)\n</details>\n\n# 扩展开发指南\n\n## 概述\n\nOpenBB 平台采用模块化扩展架构，允许开发者通过扩展（Extensions）来增强平台功能。扩展是一种将自定义功能集成到 OpenBB 平台的方式，可以提供新的工具、数据源或服务。OpenBB 支持多种类型的扩展，包括数据提供者扩展、MCP 服务器扩展、新闻扩展等。扩展开发基于 Python 语言，使用 FastAPI 框架构建服务端点，并通过标准化接口与平台核心进行通信。开发者可以通过 cookiecutter 模板快速创建新扩展项目，也可以基于现有扩展进行定制化开发。扩展机制使 OpenBB 平台具有高度的可扩展性和灵活性，用户可以根据需求选择和安装不同的扩展来满足特定的数据分析或金融建模需求。\n\n## 扩展架构\n\nOpenBB 平台采用分层架构设计，扩展作为插件层与核心平台解耦。这种设计允许扩展在不影响平台核心稳定性的前提下独立开发、测试和部署。扩展通过标准化接口与平台通信，包括 REST API 端点、WebSocket 实时推送、以及 MCP（Model Context Protocol）协议支持。平台提供了统一的扩展管理界面，用户可以在桌面应用的扩展管理页面中查看已安装的扩展、安装新扩展、或卸载不需要的扩展。每个扩展都包含描述文件、安装脚本和使用文档，确保用户能够清晰地了解扩展的功能和使用方法。扩展可以依赖其他扩展或平台核心库，形成依赖关系网络，平台会自动处理这些依赖关系。\n\n### 扩展类型分类\n\n| 扩展类型 | 用途 | 技术栈 | 示例 |\n|---------|------|--------|------|\n| 数据提供者扩展 | 提供金融市场数据 | Python | Yahoo Finance、Alpha Vantage |\n| MCP 服务器扩展 | AI 工具集成 | FastAPI + MCP | openbb-mcp-server |\n| 新闻扩展 | 新闻数据聚合 | Python | openbb-news |\n| 分析扩展 | 自定义分析工具 | Python | 技术指标库 |\n\n## 快速开始\n\n### 使用 Cookiecutter 创建扩展\n\nOpenBB 提供了官方的 cookiecutter 模板来加速扩展开发流程。通过该模板，开发者可以快速生成符合平台规范的项目结构，减少重复配置工作。\n\n```bash\ncookiecutter openbb_cookiecutter\n```\n\n该命令会启动交互式配置向导，提示开发者输入扩展名称、描述、作者信息等基本参数。完成配置后，模板会自动生成包含以下内容的项目结构：\n\n```\nopenbb_[extension_name]/\n├── README.md\n├── pyproject.toml\n├── openbb_[extension_name]/\n│   ├── __init__.py\n│   ├── my_module.py\n│   └── routable.py\n└── tests/\n    └── test_my_module.py\n```\n\n项目结构遵循 PEP 517 规范，使用 pyproject.toml 作为项目配置文件。开发者需要在 pyproject.toml 中声明扩展的依赖项、元数据和入口点。模板中的 routable.py 文件演示了如何定义可路由的 FastAPI 端点，这是扩展暴露功能给平台的核心机制。\n\n### 项目配置\n\n扩展的 pyproject.toml 文件需要包含特定的配置项以确保与 OpenBB 平台的兼容性。以下是典型的配置示例：\n\n```toml\n[project]\nname = \"openbb-[extension-name]\"\nversion = \"0.1.0\"\ndescription = \"Extension description\"\nrequires-python = \">=3.9\"\n\n[project.optional-dependencies]\ndev = [\"pytest\", \"pytest-cov\"]\n\n[tool.openbb]\ntype = \"extension\"\n```\n\n配置中的 `[tool.openbb]` 部分用于标识这是一个 OpenBB 扩展，并指定扩展类型。平台安装管理器会扫描所有已安装包的该配置节来发现和加载扩展。\n\n## 扩展开发规范\n\n### 代码结构要求\n\nOpenBB 扩展应遵循统一的代码组织结构，以确保可维护性和一致性。主扩展包应包含 `__init__.py` 文件，该文件负责初始化扩展并注册其功能。功能模块应按职责分离，清晰划分数据处理、API 路由、业务逻辑等不同层次。扩展应避免直接修改平台核心代码，所有功能增强都应通过扩展接口实现。\n\n扩展目录结构应包含以下核心组件：\n\n- **主包目录**：包含扩展的所有 Python 代码\n- **README.md**：详细的扩展文档和使用说明\n- **pyproject.toml**：项目配置和依赖声明\n- **tests/**：单元测试和集成测试\n- **assets/**（可选）：扩展所需的静态资源\n\n### 命名规范\n\n扩展名称必须遵循特定的命名约定，以确保在 OpenBB 生态系统中的唯一性和可识别性。正式发布的扩展应使用 `openbb-` 或 `openbb_` 前缀，后跟描述性名称。扩展内的模块、类和函数命名应遵循 PEP 8 Python 命名规范。API 端点路径应使用小写字母和连字符，遵循 RESTful 最佳实践。环境变量前缀应统一使用 `OPENBB_`，避免与平台或其他扩展冲突。\n\n## MCP 服务器扩展开发\n\n### MCP 配置概述\n\nMCP（Model Context Protocol）服务器扩展允许将 OpenBB 平台的功能暴露为 AI 工具，供大语言模型调用。这种集成方式使 AI 助手能够通过标准化的工具接口访问金融数据和分析功能。开发者可以通过两种方式配置 MCP 工具：内联配置和模型配置。\n\n### 内联 MCP 配置\n\n内联 MCP 配置允许开发者对 FastAPI 路由进行精细化控制。通过在路由定义中包含 `openapi_extra` 字典，开发者可以指定工具的各种属性，如是否暴露、工具类型、支持的方法等。\n\n导入配置模型的方式如下：\n\n```python\nfrom openbb_mcp_server.models.mcp_config import MCPConfigModel\n```\n\n### MCP 配置属性\n\n| 属性名 | 类型 | 说明 | 可选值 |\n|-------|------|------|--------|\n| expose | bool | 是否暴露为 MCP 工具 | true/false |\n| mcp_type | MCPType | MCP 工具类型 | \"tool\"、\"resource\"、\"resource_template\" |\n| methods | list[HTTPMethod] | 暴露的 HTTP 方法 | GET、POST 等 |\n\n当 `expose` 设置为 `False` 时，该路由将完全从 MCP 服务器隐藏，适用于内部或已弃用的端点。`mcp_type` 属性用于指定工具的分类方式，不同类型对应不同的使用场景。`methods` 属性允许开发者精确控制哪些 HTTP 方法可被 MCP 调用。\n\n### MCP 提示词配置\n\n开发者可以通过提示词配置文件为 MCP 工具定义详细的使用说明和上下文信息。提示词配置支持多轮对话场景，允许多个消息组成的对话历史。每个提示词包含名称、描述和消息数组，消息数组中的每个元素指定角色和内容。\n\n以下是一个典型的 MCP 提示词配置示例：\n\n```json\n{\n  \"name\": \"economy_gdp\",\n  \"description\": \"Fetch GDP data for a country.\",\n  \"messages\": [\n    {\n      \"role\": \"user\",\n      \"content\": {\n        \"type\": \"text\",\n        \"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.\"\n      }\n    }\n  ]\n}\n```\n\n该配置定义了一个名为 `economy_gdp` 的工具，当 AI 助手调用该工具时，系统会向模型提供预设的提示词，指导模型如何解释和使用返回的数据。提示词支持动态内容注入，开发者可以在提示词中包含变量占位符，由系统在运行时替换为实际参数值。\n\n## 安装与部署\n\n### 本地安装扩展\n\n扩展开发完成后，可以通过以下命令进行本地安装测试：\n\n```bash\npip install -e ./openbb_[extension_name]\n```\n\n开发模式安装（使用 `-e` 标志）允许开发者在修改代码后立即看到效果，无需重新安装。安装过程中，平台会自动扫描扩展的 pyproject.toml 文件，识别扩展类型并将其注册到扩展管理系统。\n\n### 扩展安装验证\n\n安装完成后，用户可以通过 OpenBB 桌面应用的扩展管理界面验证扩展是否正确安装。扩展管理界面提供了已安装扩展的列表，包括扩展名称、版本、状态和操作按钮。开发者还可以在终端中通过命令行工具验证扩展加载情况。\n\n### 发布扩展\n\n正式发布的扩展应遵循 OpenBB 的发布规范。扩展需要包含完整的 README.md 文档，说明功能、安装方法、配置选项和使用示例。扩展的版本号应遵循语义化版本规范（SemVer），确保用户能够正确理解版本变更的影响。扩展应上传到 Python Package Index（PyPI）或私有包仓库，供用户通过 pip 安装。\n\n## 测试与验证\n\n### 单元测试\n\n扩展开发应包含完整的单元测试，确保核心功能的正确性。测试文件应放置在 `tests/` 目录下，使用 pytest 作为测试框架。测试应覆盖正常流程、边界条件和异常处理场景。\n\n基本的测试结构如下：\n\n```python\nimport pytest\nfrom openbb_[extension_name] import my_function\n\ndef test_my_function_success():\n    result = my_function(\"valid_input\")\n    assert result == expected_output\n\ndef test_my_function_error():\n    with pytest.raises(ValueError):\n        my_function(\"invalid_input\")\n```\n\n### 集成测试\n\n除了单元测试，扩展还应包含集成测试以验证与其他平台组件的交互。集成测试应模拟真实的用户操作流程，包括扩展的初始化、数据获取、结果处理等环节。OpenBB 平台提供了测试工具和 fixtures，帮助开发者快速编写集成测试。\n\n## 扩展管理界面\n\nOpenBB 桌面应用提供了直观的扩展管理界面，用户可以通过该界面管理已安装的扩展。界面支持查看扩展详情、安装新扩展、卸载不需要的扩展等操作。扩展搜索功能允许用户通过关键词查找扩展市场中的可用扩展。环境管理功能还支持创建自定义 Python 环境，为不同项目配置独立的扩展组合。\n\n桌面应用的安装进度页面会引导用户完成扩展安装的各个阶段，包括下载、解压、依赖解析和配置初始化。安装过程可能需要数分钟，具体取决于网络速度和扩展的依赖数量。\n\n## 最佳实践\n\n### 性能优化\n\n扩展开发者应关注性能优化，确保扩展不会对平台整体响应时间产生负面影响。应使用异步编程模式处理 I/O 密集型任务，如网络请求和文件读写。缓存频繁访问的数据，减少重复计算。对于大量数据处理任务，应实现分页加载机制，避免一次性加载过多数据导致内存溢出。\n\n### 安全性考虑\n\n扩展应遵循安全编码实践，避免引入安全漏洞。敏感信息如 API 密钥应通过环境变量或 OpenBB 安全存储机制管理，不应硬编码在源代码中。所有外部输入都应进行验证和清理，防止注入攻击。扩展应声明所需的最小权限，仅请求完成功能所必需的系统访问。\n\n### 错误处理\n\n健壮的错误处理机制对于用户体验至关重要。扩展应捕获并处理可预见的错误情况，向用户提供清晰的错误消息。关键操作应实现重试机制，处理瞬时故障。对于不可恢复的错误，应记录详细日志，便于开发者诊断问题。\n\n## 相关资源\n\n- OpenBB 平台贡献指南：包含详细的开发规范和流程说明\n- OpenBB 数据提供者扩展开发指南：专注于数据源扩展的创建\n- MCP 服务器扩展示例：展示完整的 MCP 工具实现\n- OpenBB 扩展市场：查找和安装社区开发的扩展\n\n---\n\n<a id='page-10'></a>\n\n## REST API与部署\n\n### 相关页面\n\n相关主题：[命令行界面(CLI)](#page-7), [桌面应用程序](#page-8)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [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)\n- [openbb_platform/core/openbb_core/api/router/commands.py](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/core/openbb_core/api/router/commands.py)\n- [openbb_platform/core/openbb_core/app/service/system_service.py](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/core/openbb_core/app/service/system_service.py)\n- [openbb_platform/extensions/platform_api/openbb_platform_api/main.py](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/extensions/platform_api/openbb_platform_api/main.py)\n</details>\n\n# REST API与部署\n\n## 概述\n\nOpenBB Platform 提供了一套基于 FastAPI 构建的 REST API 服务，允许开发者通过 HTTP 协议访问平台功能。该 API 采用现代化设计，支持 CORS 跨域资源共享、自动化路由加载、系统配置管理等功能，为前端应用和第三方集成提供了标准化的接口层。\n\nREST API 是 OpenBB Platform 架构的核心组成部分，它封装了底层的数据获取逻辑，为客户端提供统一的接口访问方式。开发者可以通过该 API 构建自定义的金融应用、数据可视化工具或与其他系统进行集成。\n\n## 系统架构\n\n### 整体架构图\n\n```mermaid\ngraph TD\n    A[客户端应用] --> B[FastAPI REST API]\n    B --> C[CORS 中间件]\n    C --> D[应用路由层]\n    D --> E[业务逻辑服务]\n    E --> F[数据提供器 Providers]\n    F --> G[外部数据源]\n    \n    H[系统配置] --> B\n    H --> E\n    \n    I[开发模式 Auth] --> D\n```\n\n### API 服务启动流程\n\n```mermaid\nsequenceDiagram\n    participant 客户端\n    participant FastAPI as FastAPI 应用\n    participant 中间件 as CORS中间件\n    participant 路由 as 路由加载器\n    participant 系统 as 系统配置\n\n    客户端->>FastAPI: 启动请求 uvicorn\n    FastAPI->>系统: 加载系统配置\n    系统-->>FastAPI: 返回API设置\n    FastAPI->>中间件: 配置CORS策略\n    中间件-->>FastAPI: CORS配置完成\n    FastAPI->>路由: 加载AppRouter\n    路由-->>FastAPI: 注册路由端点\n    FastAPI->>FastAPI: 生命周期管理启动\n```\n\n## 核心组件\n\n### REST API 应用配置\n\n`rest_api.py` 文件负责构建 FastAPI 应用实例，定义了 API 的基础配置参数。\n\n| 配置项 | 说明 | 来源 |\n|--------|------|------|\n| `title` | API 文档标题 | `system.api_settings.title` |\n| `description` | API 描述信息 | `system.api_settings.description` |\n| `version` | API 版本号 | `system.api_settings.version` |\n| `terms_of_service` | 服务条款 | `system.api_settings.terms_of_service` |\n| `contact` | 联系信息 | `system.api_settings.contact_*` |\n| `license_info` | 许可证信息 | `system.api_settings.license_*` |\n| `servers` | 服务器列表 | `system.api_settings.servers` |\n\nCORS 中间件配置通过 `system.api_settings.cors` 对象管理，支持以下参数：\n\n| CORS参数 | 说明 | 来源 |\n|----------|------|------|\n| `allow_origins` | 允许的源列表 | `system.api_settings.cors.allow_origins` |\n| `allow_methods` | 允许的HTTP方法 | `system.api_settings.cors.allow_methods` |\n| `allow_headers` | 允许的请求头 | `system.api_settings.cors.allow_headers` |\n\n资料来源：[openbb_platform/core/openbb_core/api/rest_api.py:1-50]()\n\n### 路由加载机制\n\n`AppLoader` 类负责动态加载所有注册的路由端点，支持开发模式和发布模式两种路由配置。\n\n```python\nAppLoader.add_routers(\n    app=app,\n    routers=(\n        [AuthService().router, router_system, router_coverage, router_commands]\n        if Env().DEV_MODE\n        else (\n            [router_commands, router_coverage]\n            if ...\n        )\n    ),\n)\n```\n\n路由加载逻辑根据环境变量 `DEV_MODE` 决定是否加载额外的开发模式路由，包括认证服务、系统路由、覆盖率路由和命令路由。\n\n资料来源：[openbb_platform/core/openbb_core/api/rest_api.py:40-55]()\n\n### 系统服务配置\n\n`SystemService` 负责管理 API 的系统级配置，包括标题、描述、版本、联系方式、许可证信息和 CORS 设置。这些配置可通过系统设置文件进行自定义。\n\n| 服务类 | 职责 |\n|--------|------|\n| `SystemService` | 提供 API 基础配置参数 |\n| `ApiSettings` | 定义配置数据模型 |\n| `CorsSettings` | 管理跨域资源共享策略 |\n\n资料来源：[openbb_platform/core/openbb_core/app/service/system_service.py]()\n\n## 部署方式\n\n### 本地开发服务器\n\n使用 uvicorn 作为 ASGI 服务器启动 REST API：\n\n```bash\nuvicorn openbb_core.api.rest_api:app --host 0.0.0.0 --port 8000 --reload\n```\n\n| 参数 | 说明 | 示例值 |\n|------|------|--------|\n| `--host` | 监听地址 | `0.0.0.0` |\n| `--port` | 监听端口 | `8000` |\n| `--reload` | 启用热重载 | 开发模式启用 |\n\n启动后，API 文档可通过 `http://localhost:8000/docs` 访问。\n\n资料来源：[openbb_platform/README.md]()\n\n### 命令行启动\n\n通过 OpenBB CLI 命令启动 API 服务：\n\n```bash\nopenbb-api\n```\n\n该命令封装了 uvicorn 启动逻辑，简化了部署流程。\n\n### 扩展 API 入口\n\n`platform_api` 扩展提供了独立的 API 入口点，支持自定义配置：\n\n```python\n# openbb_platform/extensions/platform_api/openbb_platform_api/main.py\n# 主入口模块，提供API启动配置\n```\n\n扩展 API 支持以下自定义参数：\n\n| 参数 | 说明 |\n|------|------|\n| `--editable` | 以可编辑模式加载 widgets 配置 |\n| `--no-build` | 跳过构建步骤 |\n| `--widgets-json` | 指定自定义 widgets 配置文件路径 |\n| `--apps-json` | 指定自定义应用配置文件路径 |\n\n资料来源：[openbb_platform/extensions/platform_api/README.md]()\n\n## 配置管理\n\n### 运行时设置\n\nAPI 运行时设置可通过以下方式配置：\n\n| 配置方式 | 适用场景 | 说明 |\n|----------|----------|------|\n| 系统环境变量 | 部署配置 | 通过 `Env()` 类读取 |\n| 用户设置文件 | 用户偏好 | `~/.openbb_platform/user_settings.json` |\n| 代码内设置 | 开发调试 | 直接赋值 `obb.user.credentials.*` |\n\n### 系统配置模型\n\n```mermaid\nclassDiagram\n    class SystemSettings {\n        +title: str\n        +description: str\n        +version: str\n        +terms_of_service: str\n        +contact: ContactInfo\n        +license_info: LicenseInfo\n        +servers: list[Server]\n        +cors: CorsSettings\n    }\n    \n    class CorsSettings {\n        +allow_origins: list[str]\n        +allow_methods: list[str]\n        +allow_headers: list[str]\n    }\n```\n\n### API 密钥配置\n\n在 `user_settings.json` 中配置数据源 API 密钥：\n\n```json\n{\n    \"credentials\": {\n        \"eia_api_key\": \"YOUR_API_KEY\",\n        \"fred_api_key\": \"YOUR_FRED_KEY\",\n        \"polygon_api_key\": \"YOUR_POLYGON_KEY\"\n    }\n}\n```\n\n或通过代码直接设置：\n\n```python\nfrom openbb import obb\nobb.user.credentials.fred_api_key = \"REPLACE_ME\"\nobb.user.credentials.polygon_api_key = \"REPLACE_ME\"\n```\n\n资料来源：[openbb_platform/README.md]()\n\n## 生命周期管理\n\nAPI 应用采用上下文管理器模式进行生命周期管理，在启动和关闭时执行特定操作：\n\n```mermaid\nstateDiagram-v2\n    [*] --> 启动中: uvicorn 启动\n    启动中 --> 运行中: 加载配置完成\n    运行中 --> 关闭中: 收到终止信号\n    关闭中 --> [*]: 清理完成\n    \n    启动中 --> 打印Banner: 初始化日志\n    打印Banner --> 加载路由: 注册端点\n    加载路由 --> 运行中: 服务就绪\n```\n\n生命周期函数处理包括：\n\n- 启动时打印 Banner 信息\n- 初始化日志记录\n- 注册所有路由端点\n- 关闭时执行清理操作\n\n资料来源：[openbb_platform/core/openbb_core/api/rest_api.py:20-40]()\n\n## 命令路由\n\n`commands.py` 定义了命令相关的 API 路由端点，为客户端提供命令执行和查询功能。\n\n| 路由类型 | 说明 | 用途 |\n|----------|------|------|\n| `router_commands` | 命令路由 | 执行平台命令 |\n| `router_coverage` | 覆盖率路由 | 查询功能覆盖情况 |\n| `router_system` | 系统路由 | 系统配置与管理 |\n\n资料来源：[openbb_platform/core/openbb_core/api/router/commands.py]()\n\n## 开发指南\n\n### 环境准备\n\n本地开发需要以下环境：\n\n| 要求 | 说明 |\n|------|------|\n| Git | 版本控制 |\n| Python | 3.10 - 3.13 |\n| Poetry | 依赖管理 |\n| 虚拟环境 | 隔离开发环境 |\n\n### 安装步骤\n\n```bash\n# 1. 克隆仓库\ngit clone https://github.com/OpenBB-finance/OpenBB.git\n\n# 2. 进入平台目录\ncd openbb_platform\n\n# 3. 安装开发依赖\npython dev_install.py -e\n```\n\n### API 文档访问\n\n启动服务后，可通过浏览器访问交互式 API 文档：\n\n| 文档路径 | 框架 | 说明 |\n|----------|------|------|\n| `/docs` | Swagger UI | 交互式 API 文档 |\n| `/redoc` | ReDoc | 备选文档界面 |\n\n## 扩展机制\n\nOpenBB Platform 支持通过扩展增强 API 功能：\n\n```mermaid\ngraph LR\n    A[核心API] --> B[Platform API扩展]\n    A --> C[News扩展]\n    A --> D[Commodity扩展]\n    A --> E[更多扩展...]\n    \n    B --> F[Widgets配置]\n    B --> F[Apps配置]\n```\n\n扩展安装后会自动注册到 API 路由中，无需手动配置。\n\n## 相关资源\n\n- [OpenBB Platform 文档](https://docs.openbb.co/platform)\n- [API 设置文档](https://docs.openbb.co/platform/settings/system_settings#api-settings)\n- [开发者指南](https://docs.openbb.co/platform/developer_guide/architecture_overview)\n- [GitHub 仓库](https://github.com/OpenBB-finance/OpenBB)\n\n---\n\n---\n\n## Doramagic 踩坑日志\n\n项目：OpenBB-finance/OpenBB\n\n摘要：发现 17 个潜在踩坑项，其中 3 个为 high/blocking；最高优先级：安全/权限坑 - 来源证据：[FR] Add Bank of Canada Valet API as a new provider extension。\n\n## 1. 安全/权限坑 · 来源证据：[FR] Add Bank of Canada Valet API as a new provider extension\n\n- 严重度：high\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：[FR] Add Bank of Canada Valet API as a new provider extension\n- 对用户的影响：可能影响授权、密钥配置或安全边界。\n- 建议检查：来源问题仍为 open，Pack Agent 需要复核是否仍影响当前版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_a8349d4112564c48b29615f3530e81e4 | https://github.com/OpenBB-finance/OpenBB/issues/7490 | 来源讨论提到 api key 相关条件，需在安装/试用前复核。\n\n## 2. 安全/权限坑 · 来源证据：[FR] Add Real-time Cryptocurrency Data Provider Integration\n\n- 严重度：high\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：[FR] Add Real-time Cryptocurrency Data Provider Integration\n- 对用户的影响：可能影响授权、密钥配置或安全边界。\n- 建议检查：来源问题仍为 open，Pack Agent 需要复核是否仍影响当前版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_e1bb7e5c7c0a4dc2bea2a256ed74a0b0 | https://github.com/OpenBB-finance/OpenBB/issues/7177 | 来源讨论提到 api key 相关条件，需在安装/试用前复核。\n\n## 3. 安全/权限坑 · 涉及密钥、隐私或敏感领域\n\n- 严重度：high\n- 证据强度：source_linked\n- 发现：项目文本出现 secret/private key/privacy/trading/finance 等敏感关键词。\n- 对用户的影响：金融、交易、隐私和密钥场景必须比普通工具更保守。\n- 建议检查：补敏感数据流、密钥存储和权限边界审查。\n- 防护动作：敏感领域或密钥场景必须保守推荐并要求人工复核。\n- 证据：packet_text.keyword_scan | github_repo:323048702 | https://github.com/OpenBB-finance/OpenBB | matched secret / private key / privacy / trading / finance keyword\n\n## 4. 安装坑 · 来源证据：[Bug] PyWry WebView Fails to Launch on Ubuntu 24.04\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安装相关的待验证问题：[Bug] PyWry WebView Fails to Launch on Ubuntu 24.04\n- 对用户的影响：可能阻塞安装或首次运行。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_c068fa0d9cac4fb7b74d875b22d312d7 | https://github.com/OpenBB-finance/OpenBB/issues/7148 | 来源讨论提到 python 相关条件，需在安装/试用前复核。\n\n## 5. 安装坑 · 来源证据：[Bug] Widgets not saving their position and size after refresh\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安装相关的待验证问题：[Bug] Widgets not saving their position and size after refresh\n- 对用户的影响：可能增加新用户试用和生产接入成本。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_b7792ca1efe649c085e18a8a6be37d49 | https://github.com/OpenBB-finance/OpenBB/issues/7479 | 来源类型 github_issue 暴露的待验证使用条件。\n\n## 6. 能力坑 · 能力判断依赖假设\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：README/documentation is current enough for a first validation pass.\n- 对用户的影响：假设不成立时，用户拿不到承诺的能力。\n- 建议检查：将假设转成下游验证清单。\n- 防护动作：假设必须转成验证项；没有验证结果前不能写成事实。\n- 证据：capability.assumptions | github_repo:323048702 | https://github.com/OpenBB-finance/OpenBB | README/documentation is current enough for a first validation pass.\n\n## 7. 运行坑 · 来源证据：ODP Desktop v1.0.2\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个运行相关的待验证问题：ODP Desktop v1.0.2\n- 对用户的影响：可能增加新用户试用和生产接入成本。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_cf07c5d467e44c168f2650a3c4404f46 | https://github.com/OpenBB-finance/OpenBB/releases/tag/Open-Data-Platform-v1.0.2 | 来源讨论提到 windows 相关条件，需在安装/试用前复核。\n\n## 8. 维护坑 · 维护活跃度未知\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：未记录 last_activity_observed。\n- 对用户的影响：新项目、停更项目和活跃项目会被混在一起，推荐信任度下降。\n- 建议检查：补 GitHub 最近 commit、release、issue/PR 响应信号。\n- 防护动作：维护活跃度未知时，推荐强度不能标为高信任。\n- 证据：evidence.maintainer_signals | github_repo:323048702 | https://github.com/OpenBB-finance/OpenBB | last_activity_observed missing\n\n## 9. 安全/权限坑 · 下游验证发现风险项\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：no_demo\n- 对用户的影响：下游已经要求复核，不能在页面中弱化。\n- 建议检查：进入安全/权限治理复核队列。\n- 防护动作：下游风险存在时必须保持 review/recommendation 降级。\n- 证据：downstream_validation.risk_items | github_repo:323048702 | https://github.com/OpenBB-finance/OpenBB | no_demo; severity=medium\n\n## 10. 安全/权限坑 · 存在评分风险\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：no_demo\n- 对用户的影响：风险会影响是否适合普通用户安装。\n- 建议检查：把风险写入边界卡，并确认是否需要人工复核。\n- 防护动作：评分风险必须进入边界卡，不能只作为内部分数。\n- 证据：risks.scoring_risks | github_repo:323048702 | https://github.com/OpenBB-finance/OpenBB | no_demo; severity=medium\n\n## 11. 安全/权限坑 · 来源证据：ODP Desktop v1.0.1\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：ODP Desktop v1.0.1\n- 对用户的影响：可能增加新用户试用和生产接入成本。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_b5b0cf96b9b1456e8192a80e8c9fbcfd | https://github.com/OpenBB-finance/OpenBB/releases/tag/Open-Data-Platform-v1.0.1 | 来源讨论提到 windows 相关条件，需在安装/试用前复核。\n\n## 12. 安全/权限坑 · 来源证据：OpenBB Platform v4.5.0\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：OpenBB Platform v4.5.0\n- 对用户的影响：可能影响升级、迁移或版本选择。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_ff4708f0690c485c9453a90b7b1f926a | https://github.com/OpenBB-finance/OpenBB/releases/tag/v4.5.0 | 来源讨论提到 python 相关条件，需在安装/试用前复核。\n\n## 13. 安全/权限坑 · 来源证据：OpenBB Platform v4.6.0\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：OpenBB Platform v4.6.0\n- 对用户的影响：可能影响升级、迁移或版本选择。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_58ecf0b5c49441d7818b4f384f522024 | https://github.com/OpenBB-finance/OpenBB/releases/tag/v4.6.0 | 来源讨论提到 python 相关条件，需在安装/试用前复核。\n\n## 14. 安全/权限坑 · 来源证据：OpenBB V4.7.0\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：OpenBB V4.7.0\n- 对用户的影响：可能影响升级、迁移或版本选择。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_487435c8c60a497092f647438af74f89 | https://github.com/OpenBB-finance/OpenBB/releases/tag/v4.7.0 | 来源讨论提到 python 相关条件，需在安装/试用前复核。\n\n## 15. 安全/权限坑 · 来源证据：[Bug] Openbb 4.5.0 cannot import name 'OBBject_EquityInfo' from 'openbb_core.app.provider_interface'\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：[Bug] Openbb 4.5.0 cannot import name 'OBBject_EquityInfo' from 'openbb_core.app.provider_interface'\n- 对用户的影响：可能影响授权、密钥配置或安全边界。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_95461e0340ed4ee5a724d3d6966b0bcf | https://github.com/OpenBB-finance/OpenBB/issues/7279 | 来源讨论提到 python 相关条件，需在安装/试用前复核。\n\n## 16. 维护坑 · issue/PR 响应质量未知\n\n- 严重度：low\n- 证据强度：source_linked\n- 发现：issue_or_pr_quality=unknown。\n- 对用户的影响：用户无法判断遇到问题后是否有人维护。\n- 建议检查：抽样最近 issue/PR，判断是否长期无人处理。\n- 防护动作：issue/PR 响应未知时，必须提示维护风险。\n- 证据：evidence.maintainer_signals | github_repo:323048702 | https://github.com/OpenBB-finance/OpenBB | issue_or_pr_quality=unknown\n\n## 17. 维护坑 · 发布节奏不明确\n\n- 严重度：low\n- 证据强度：source_linked\n- 发现：release_recency=unknown。\n- 对用户的影响：安装命令和文档可能落后于代码，用户踩坑概率升高。\n- 建议检查：确认最近 release/tag 和 README 安装命令是否一致。\n- 防护动作：发布节奏未知或过期时，安装说明必须标注可能漂移。\n- 证据：evidence.maintainer_signals | github_repo:323048702 | https://github.com/OpenBB-finance/OpenBB | release_recency=unknown\n\n<!-- canonical_name: OpenBB-finance/OpenBB; human_manual_source: deepwiki_human_wiki -->\n",
      "markdown_key": "openbb",
      "pages": "draft",
      "source_refs": [
        {
          "evidence_id": "github_repo:323048702",
          "kind": "repo",
          "supports_claim_ids": [
            "claim_identity",
            "claim_distribution",
            "claim_capability"
          ],
          "url": "https://github.com/OpenBB-finance/OpenBB"
        },
        {
          "evidence_id": "art_035a0b2cef63491a87aace5e297502e4",
          "kind": "docs",
          "supports_claim_ids": [
            "claim_identity",
            "claim_distribution",
            "claim_capability"
          ],
          "url": "https://github.com/OpenBB-finance/OpenBB#readme"
        }
      ],
      "summary": "DeepWiki/Human Wiki 完整输出，末尾追加 Discovery Agent 踩坑日志。",
      "title": "OpenBB 说明书",
      "toc": [
        "https://github.com/OpenBB-finance/OpenBB 项目说明书",
        "目录",
        "OpenBB项目概述",
        "1 项目简介",
        "2 平台核心组件",
        "获取股票数据",
        "获取宏观经济数据",
        "获取商品数据",
        "Doramagic 踩坑日志"
      ]
    }
  },
  "quality_gate": {
    "blocking_gaps": [],
    "category_confidence": "medium",
    "compile_status": "ready_for_review",
    "five_assets_present": true,
    "install_sandbox_verified": true,
    "missing_evidence": [],
    "next_action": "publish to Doramagic.ai project surfaces",
    "prompt_preview_boundary_ok": true,
    "publish_status": "publishable",
    "quick_start_verified": true,
    "repo_clone_verified": true,
    "repo_commit": "186cbb068c194fb11adc57bb492a75e474ef4103",
    "repo_inspection_error": null,
    "repo_inspection_files": [
      "README.md",
      "examples/content.json",
      "examples/README.md",
      "examples/openbb-apachebeam/README.md",
      "examples/streamlit/news.py",
      "examples/openbb-apachebeam/tests/test_obb_pipeline.py",
      "examples/openbb-apachebeam/tests/__init__.py"
    ],
    "repo_inspection_verified": true,
    "review_reasons": [],
    "tag_count_ok": true,
    "unsupported_claims": []
  },
  "schema_version": "0.1",
  "user_assets": {
    "ai_context_pack": {
      "asset_id": "ai_context_pack",
      "filename": "AI_CONTEXT_PACK.md",
      "markdown": "# openbb-platform - Doramagic AI Context Pack\n\n> 定位：安装前体验与判断资产。它帮助宿主 AI 有一个好的开始，但不代表已经安装、执行或验证目标项目。\n\n## 充分原则\n\n- **充分原则，不是压缩原则**：AI Context Pack 应该充分到让宿主 AI 在开工前理解项目价值、能力边界、使用入口、风险和证据来源；它可以分层组织，但不以最短摘要为目标。\n- **压缩策略**：只压缩噪声和重复内容，不压缩会影响判断和开工质量的上下文。\n\n## 给宿主 AI 的使用方式\n\n你正在读取 Doramagic 为 openbb-platform 编译的 AI Context Pack。请把它当作开工前上下文：帮助用户理解适合谁、能做什么、如何开始、哪些必须安装后验证、风险在哪里。不要声称你已经安装、运行或执行了目标项目。\n\n## Claim 消费规则\n\n- **事实来源**：Repo Evidence + Claim/Evidence Graph；Human Wiki 只提供显著性、术语和叙事结构。\n- **事实最低状态**：`supported`\n- `supported`：可以作为项目事实使用，但回答中必须引用 claim_id 和证据路径。\n- `weak`：只能作为低置信度线索，必须要求用户继续核实。\n- `inferred`：只能用于风险提示或待确认问题，不能包装成项目事实。\n- `unverified`：不得作为事实使用，应明确说证据不足。\n- `contradicted`：必须展示冲突来源，不得替用户强行选择一个版本。\n\n## 它最适合谁\n\n- **希望把专业流程带进宿主 AI 的用户**：仓库包含 Skill 文档。 证据：`openbb_platform/extensions/mcp_server/openbb_mcp_server/skills/build_workspace_app/SKILL.md`, `openbb_platform/extensions/mcp_server/openbb_mcp_server/skills/configure_mcp_server/SKILL.md`, `openbb_platform/extensions/mcp_server/openbb_mcp_server/skills/develop_extension/SKILL.md`, `openbb_platform/extensions/mcp_server/openbb_mcp_server/skills/work_with_server/SKILL.md` Claim：`clm_0003` supported 0.86\n\n## 它能做什么\n\n- **AI Skill / Agent 指令资产库**（可做安装前预览）：项目包含可被宿主 AI 读取的 Skill 或 Agent 指令文件，可用于把专业流程带入 Claude、Codex、Cursor 等宿主。 证据：`openbb_platform/extensions/mcp_server/openbb_mcp_server/skills/build_workspace_app/SKILL.md`, `openbb_platform/extensions/mcp_server/openbb_mcp_server/skills/configure_mcp_server/SKILL.md`, `openbb_platform/extensions/mcp_server/openbb_mcp_server/skills/develop_extension/SKILL.md`, `openbb_platform/extensions/mcp_server/openbb_mcp_server/skills/work_with_server/SKILL.md` Claim：`clm_0001` supported 0.86\n- **命令行启动或安装流程**（需要安装后验证）：项目文档中存在可执行命令，真实使用需要在本地或宿主环境中运行这些命令。 证据：`README.md` Claim：`clm_0002` supported 0.86\n\n## 怎么开始\n\n- `pip install \"openbb[all]\"` 证据：`README.md` Claim：`clm_0004` supported 0.86\n\n## 继续前判断卡\n\n- **当前建议**：先做权限沙盒试用\n- **为什么**：项目存在安装命令、宿主配置或本地写入线索，不建议直接进入主力环境，应先在隔离环境试装。\n\n### 30 秒判断\n\n- **现在怎么做**：先做权限沙盒试用\n- **最小安全下一步**：先跑 Prompt Preview；若仍要安装，只在隔离环境试装\n- **先别相信**：工具权限边界不能在安装前相信。\n- **继续会触碰**：命令执行、宿主 AI 配置、本地环境或项目文件\n\n### 现在可以相信\n\n- **适合人群线索：希望把专业流程带进宿主 AI 的用户**（supported）：有 supported claim 或项目证据支撑，但仍不等于真实安装效果。 证据：`openbb_platform/extensions/mcp_server/openbb_mcp_server/skills/build_workspace_app/SKILL.md`, `openbb_platform/extensions/mcp_server/openbb_mcp_server/skills/configure_mcp_server/SKILL.md`, `openbb_platform/extensions/mcp_server/openbb_mcp_server/skills/develop_extension/SKILL.md`, `openbb_platform/extensions/mcp_server/openbb_mcp_server/skills/work_with_server/SKILL.md` Claim：`clm_0003` supported 0.86\n- **能力存在：AI Skill / Agent 指令资产库**（supported）：可以相信项目包含这类能力线索；是否适合你的具体任务仍要试用或安装后验证。 证据：`openbb_platform/extensions/mcp_server/openbb_mcp_server/skills/build_workspace_app/SKILL.md`, `openbb_platform/extensions/mcp_server/openbb_mcp_server/skills/configure_mcp_server/SKILL.md`, `openbb_platform/extensions/mcp_server/openbb_mcp_server/skills/develop_extension/SKILL.md`, `openbb_platform/extensions/mcp_server/openbb_mcp_server/skills/work_with_server/SKILL.md` Claim：`clm_0001` supported 0.86\n- **能力存在：命令行启动或安装流程**（supported）：可以相信项目包含这类能力线索；是否适合你的具体任务仍要试用或安装后验证。 证据：`README.md` Claim：`clm_0002` supported 0.86\n- **存在 Quick Start / 安装命令线索**（supported）：可以相信项目文档出现过启动或安装入口；不要因此直接在主力环境运行。 证据：`README.md` Claim：`clm_0004` supported 0.86\n\n### 现在还不能相信\n\n- **工具权限边界不能在安装前相信。**（unverified）：MCP/tool 类项目通常会触碰文件、网络、浏览器或外部 API，必须真实检查权限和日志。\n- **真实输出质量不能在安装前相信。**（unverified）：Prompt Preview 只能展示引导方式，不能证明真实项目中的结果质量。\n- **宿主 AI 版本兼容性不能在安装前相信。**（unverified）：Claude、Cursor、Codex、Gemini 等宿主加载规则和版本差异必须在真实环境验证。\n- **不会污染现有宿主 AI 行为，不能直接相信。**（inferred）：Skill、plugin、AGENTS/CLAUDE/GEMINI 指令可能改变宿主 AI 的默认行为。 证据：`openbb_platform/extensions/mcp_server/openbb_mcp_server/skills/build_workspace_app/SKILL.md`, `openbb_platform/extensions/mcp_server/openbb_mcp_server/skills/configure_mcp_server/SKILL.md`, `openbb_platform/extensions/mcp_server/openbb_mcp_server/skills/develop_extension/SKILL.md`, `openbb_platform/extensions/mcp_server/openbb_mcp_server/skills/work_with_server/SKILL.md`\n- **可安全回滚不能默认相信。**（unverified）：除非项目明确提供卸载和恢复说明，否则必须先在隔离环境验证。\n- **真实安装后是否与用户当前宿主 AI 版本兼容？**（unverified）：兼容性只能通过实际宿主环境验证。\n- **项目输出质量是否满足用户具体任务？**（unverified）：安装前预览只能展示流程和边界，不能替代真实评测。\n- **安装命令是否需要网络、权限或全局写入？**（unverified）：这影响企业环境和个人环境的安装风险。 证据：`README.md`\n\n### 继续会触碰什么\n\n- **命令执行**：包管理器、网络下载、本地插件目录、项目配置或用户主目录。 原因：运行第一条命令就可能产生环境改动；必须先判断是否值得跑。 证据：`README.md`\n- **宿主 AI 配置**：Claude/Codex/Cursor/Gemini/OpenCode 等宿主的 plugin、Skill 或规则加载配置。 原因：宿主配置会改变 AI 后续工作方式，可能和用户已有规则冲突。 证据：`openbb_platform/extensions/mcp_server/openbb_mcp_server/skills/build_workspace_app/SKILL.md`, `openbb_platform/extensions/mcp_server/openbb_mcp_server/skills/configure_mcp_server/SKILL.md`, `openbb_platform/extensions/mcp_server/openbb_mcp_server/skills/develop_extension/SKILL.md`, `openbb_platform/extensions/mcp_server/openbb_mcp_server/skills/work_with_server/SKILL.md`\n- **本地环境或项目文件**：安装结果、插件缓存、项目配置或本地依赖目录。 原因：安装前无法证明写入范围和回滚方式，需要隔离验证。 证据：`README.md`\n- **宿主 AI 上下文**：AI Context Pack、Prompt Preview、Skill 路由、风险规则和项目事实。 原因：导入上下文会影响宿主 AI 后续判断，必须避免把未验证项包装成事实。\n\n### 最小安全下一步\n\n- **先跑 Prompt Preview**：用安装前交互式试用判断工作方式是否匹配，不需要授权或改环境。（适用：任何项目都适用，尤其是输出质量未知时。）\n- **只在隔离目录或测试账号试装**：避免安装命令污染主力宿主 AI、真实项目或用户主目录。（适用：存在命令执行、插件配置或本地写入线索时。）\n- **先备份宿主 AI 配置**：Skill、plugin、规则文件可能改变 Claude/Cursor/Codex 的默认行为。（适用：存在插件 manifest、Skill 或宿主规则入口时。）\n- **安装后只验证一个最小任务**：先验证加载、兼容、输出质量和回滚，再决定是否深用。（适用：准备从试用进入真实工作流时。）\n\n### 退出方式\n\n- **保留安装前状态**：记录原始宿主配置和项目状态，后续才能判断是否可恢复。\n- **准备移除宿主 plugin / Skill / 规则入口**：如果试装后行为异常，可以把宿主 AI 恢复到试装前状态。\n- **记录安装命令和写入路径**：没有明确卸载说明时，至少要知道哪些目录或配置需要手动清理。\n- **如果没有回滚路径，不进入主力环境**：不可回滚是继续前阻断项，不应靠信任或运气继续。\n\n## 哪些只能预览\n\n- 解释项目适合谁和能做什么\n- 基于项目文档演示典型对话流程\n- 帮助用户判断是否值得安装或继续研究\n\n## 哪些必须安装后验证\n\n- 真实安装 Skill、插件或 CLI\n- 执行脚本、修改本地文件或访问外部服务\n- 验证真实输出质量、性能和兼容性\n\n## 边界与风险判断卡\n\n- **把安装前预览误认为真实运行**：用户可能高估项目已经完成的配置、权限和兼容性验证。 处理方式：明确区分 prompt_preview_can_do 与 runtime_required。 Claim：`clm_0005` inferred 0.45\n- **命令执行会修改本地环境**：安装命令可能写入用户主目录、宿主插件目录或项目配置。 处理方式：先在隔离环境或测试账号中运行。 证据：`README.md` Claim：`clm_0006` supported 0.86\n- **待确认**：真实安装后是否与用户当前宿主 AI 版本兼容？。原因：兼容性只能通过实际宿主环境验证。\n- **待确认**：项目输出质量是否满足用户具体任务？。原因：安装前预览只能展示流程和边界，不能替代真实评测。\n- **待确认**：安装命令是否需要网络、权限或全局写入？。原因：这影响企业环境和个人环境的安装风险。\n\n## 开工前工作上下文\n\n### 加载顺序\n\n- 先读取 how_to_use.host_ai_instruction，建立安装前判断资产的边界。\n- 读取 claim_graph_summary，确认事实来自 Claim/Evidence Graph，而不是 Human Wiki 叙事。\n- 再读取 intended_users、capabilities 和 quick_start_candidates，判断用户是否匹配。\n- 需要执行具体任务时，优先查 role_skill_index，再查 evidence_index。\n- 遇到真实安装、文件修改、网络访问、性能或兼容性问题时，转入 risk_card 和 boundaries.runtime_required。\n\n### 任务路由\n\n- **AI Skill / Agent 指令资产库**：先基于 role_skill_index / evidence_index 帮用户挑选可用角色、Skill 或工作流。 边界：可做安装前 Prompt 体验。 证据：`openbb_platform/extensions/mcp_server/openbb_mcp_server/skills/build_workspace_app/SKILL.md`, `openbb_platform/extensions/mcp_server/openbb_mcp_server/skills/configure_mcp_server/SKILL.md`, `openbb_platform/extensions/mcp_server/openbb_mcp_server/skills/develop_extension/SKILL.md`, `openbb_platform/extensions/mcp_server/openbb_mcp_server/skills/work_with_server/SKILL.md` Claim：`clm_0001` supported 0.86\n- **命令行启动或安装流程**：先说明这是安装后验证能力，再给出安装前检查清单。 边界：必须真实安装或运行后验证。 证据：`README.md` Claim：`clm_0002` supported 0.86\n\n### 上下文规模\n\n- 文件总数：2043\n- 重要文件覆盖：40/2043\n- 证据索引条目：80\n- 角色 / Skill 条目：4\n\n### 证据不足时的处理\n\n- **missing_evidence**：说明证据不足，要求用户提供目标文件、README 段落或安装后验证记录；不要补全事实。\n- **out_of_scope_request**：说明该任务超出当前 AI Context Pack 证据范围，并建议用户先查看 Human Manual 或真实安装后验证。\n- **runtime_request**：给出安装前检查清单和命令来源，但不要替用户执行命令或声称已执行。\n- **source_conflict**：同时展示冲突来源，标记为待核实，不要强行选择一个版本。\n\n## Prompt Recipes\n\n### 适配判断\n\n- 目标：判断这个项目是否适合用户当前任务。\n- 预期输出：适配结论、关键理由、证据引用、安装前可预览内容、必须安装后验证内容、下一步建议。\n\n```text\n请基于 openbb-platform 的 AI Context Pack，先问我 3 个必要问题，然后判断它是否适合我的任务。回答必须包含：适合谁、能做什么、不能做什么、是否值得安装、证据来自哪里。所有项目事实必须引用 evidence_refs、source_paths 或 claim_id。\n```\n\n### 安装前体验\n\n- 目标：让用户在安装前感受核心工作流，同时避免把预览包装成真实能力或营销承诺。\n- 预期输出：一段带边界标签的体验剧本、安装后验证清单和谨慎建议；不含真实运行承诺或强营销表述。\n\n```text\n请把 openbb-platform 当作安装前体验资产，而不是已安装工具或真实运行环境。\n\n请严格输出四段：\n1. 先问我 3 个必要问题。\n2. 给出一段“体验剧本”：用 [安装前可预览]、[必须安装后验证]、[证据不足] 三种标签展示它可能如何引导工作流。\n3. 给出安装后验证清单：列出哪些能力只有真实安装、真实宿主加载、真实项目运行后才能确认。\n4. 给出谨慎建议：只能说“值得继续研究/试装”“先补充信息后再判断”或“不建议继续”，不得替项目背书。\n\n硬性边界：\n- 不要声称已经安装、运行、执行测试、修改文件或产生真实结果。\n- 不要写“自动适配”“确保通过”“完美适配”“强烈建议安装”等承诺性表达。\n- 如果描述安装后的工作方式，必须使用“如果安装成功且宿主正确加载 Skill，它可能会……”这种条件句。\n- 体验剧本只能写成“示例台词/假设流程”：使用“可能会询问/可能会建议/可能会展示”，不要写“已写入、已生成、已通过、正在运行、正在生成”。\n- Prompt Preview 不负责给安装命令；如用户准备试装，只能提示先阅读 Quick Start 和 Risk Card，并在隔离环境验证。\n- 所有项目事实必须来自 supported claim、evidence_refs 或 source_paths；inferred/unverified 只能作风险或待确认项。\n\n```\n\n### 角色 / Skill 选择\n\n- 目标：从项目里的角色或 Skill 中挑选最匹配的资产。\n- 预期输出：候选角色或 Skill 列表，每项包含适用场景、证据路径、风险边界和是否需要安装后验证。\n\n```text\n请读取 role_skill_index，根据我的目标任务推荐 3-5 个最相关的角色或 Skill。每个推荐都要说明适用场景、可能输出、风险边界和 evidence_refs。\n```\n\n### 风险预检\n\n- 目标：安装或引入前识别环境、权限、规则冲突和质量风险。\n- 预期输出：环境、权限、依赖、许可、宿主冲突、质量风险和未知项的检查清单。\n\n```text\n请基于 risk_card、boundaries 和 quick_start_candidates，给我一份安装前风险预检清单。不要替我执行命令，只说明我应该检查什么、为什么检查、失败会有什么影响。\n```\n\n### 宿主 AI 开工指令\n\n- 目标：把项目上下文转成一次对话开始前的宿主 AI 指令。\n- 预期输出：一段边界明确、证据引用明确、适合复制给宿主 AI 的开工前指令。\n\n```text\n请基于 openbb-platform 的 AI Context Pack，生成一段我可以粘贴给宿主 AI 的开工前指令。这段指令必须遵守 not_runtime=true，不能声称项目已经安装、运行或产生真实结果。\n```\n\n\n## 角色 / Skill 索引\n\n- 共索引 4 个角色 / Skill / 项目文档条目。\n\n- **build_workspace_app**（skill）：This guide covers the full lifecycle of building, running, and serving a custom OpenBB Workspace application from an extension project scaffolded by openbb-cookiecutter . It assumes the project shell already exists see the develop extension skill for scaffolding instructions . 激活提示：当用户任务与“build_workspace_app”描述的流程高度相关时，先用它做安装前体验，再决定是否安装。 证据：`openbb_platform/extensions/mcp_server/openbb_mcp_server/skills/build_workspace_app/SKILL.md`\n- **configure_mcp_server**（skill）：This guide covers installation, configuration, authentication, tool discovery, prompt management, and client integration for openbb-mcp-server . 激活提示：当用户任务与“configure_mcp_server”描述的流程高度相关时，先用它做安装前体验，再决定是否安装。 证据：`openbb_platform/extensions/mcp_server/openbb_mcp_server/skills/configure_mcp_server/SKILL.md`\n- **develop_extension**（skill）：This is a complete guide for creating a new OpenBB Platform extension from scratch. Follow every phase in order. When the user says \"build me an application that does X\", use this guide to scaffold, implement, install, and verify the extension. 激活提示：当用户任务与“develop_extension”描述的流程高度相关时，先用它做安装前体验，再决定是否安装。 证据：`openbb_platform/extensions/mcp_server/openbb_mcp_server/skills/develop_extension/SKILL.md`\n- **work_with_server**（skill）：This guide explains how to call tools, interpret responses, discover capabilities, use prompts, and handle errors when interacting with an OpenBB MCP server. 激活提示：当用户任务与“work_with_server”描述的流程高度相关时，先用它做安装前体验，再决定是否安装。 证据：`openbb_platform/extensions/mcp_server/openbb_mcp_server/skills/work_with_server/SKILL.md`\n\n## 证据索引\n\n- 共索引 80 条证据。\n\n- **OpenBB Workspace**（documentation）：! Twitter https://img.shields.io/twitter/url/https/twitter.com/openbb finance.svg?style=social&label=Follow%20%40openbb finance https://x.com/openbb finance ! Discord Shield https://img.shields.io/discord/831165782750789672 https://discord.com/invite/xPHTuHCmuV ! Open in Dev Containers https://img.shields.io/static/v1?label=Dev%20Containers&message=Open&color=blue&logo=visualstudiocode https://vscode.dev/redirect?url=vscode://ms-vscode-remote.remote-containers/cloneInVolume?url=https://github.com/OpenBB-finance/OpenBB ! PyPI https://img.shields.io/pypi/v/openbb?color=blue&label=PyPI%20Package https://pypi.org/project/openbb/ 证据：`README.md`\n- **Assets**（documentation）：This folder should hold assets read by OpenBB applications, such as OpenBB Hub or marketing website. 证据：`assets/README.md`\n- **OpenBB Platform CLI**（documentation）：! Downloads https://static.pepy.tech/badge/openbb https://pepy.tech/project/openbb ! LatestRelease https://badge.fury.io/py/openbb.svg https://github.com/OpenBB-finance/OpenBB 证据：`cli/README.md`\n- **OpenBB ODP Extensions Cookiecutter**（documentation）：Cookiecutter https://cookiecutter.readthedocs.io/en/1.7.2/ is a command-line utility that creates projects from templates. 证据：`cookiecutter/README.md`\n- **Open Data Platform - by OpenBB - Desktop Application**（documentation）：Open Data Platform - by OpenBB - Desktop Application 证据：`desktop/README.md`\n- **Jupyter Notebook Examples Using the OpenBB Platform**（documentation）：Jupyter Notebook Examples Using the OpenBB Platform 证据：`examples/README.md`\n- **OpenBB Platform**（documentation）：! Downloads https://static.pepy.tech/badge/openbb https://pepy.tech/project/openbb ! LatestRelease https://badge.fury.io/py/openbb.svg https://github.com/OpenBB-finance/OpenBB 证据：`openbb_platform/README.md`\n- **OpenBB Workflows**（documentation）：This directory contains the workflows for the OpenBB 🦋 Project. The workflows are: 证据：`.github/workflows/README.md`\n- **OpenBB ODP Extensions Cookiecutter Template**（documentation）：OpenBB ODP Extensions Cookiecutter Template 证据：`cookiecutter/openbb_cookiecutter/template/{{cookiecutter.project_tag}}/README.md`\n- **OBB Dataflow Sample**（documentation）：This is a sample on how to invoke OBB fetchers in an Apache Beam pipeline. GCP Dataflow is built on Apache Beam 证据：`examples/openbb-apachebeam/README.md`\n- **Open Data Platform by OpenBB**（documentation）：Open Data Platform by OpenBB ODP is the open-source toolset that helps data engineers integrate proprietary, licensed, and public data sources into downstream applications like AI copilots and research dashboards. 证据：`openbb_platform/core/README.md`\n- **Extensions**（documentation）：In this folder you can find the extensions that were created or are supported by OpenBB. 证据：`openbb_platform/extensions/README.md`\n- **Commodity Extension for OpenBB Platform**（documentation）：Commodity Extension for OpenBB Platform 证据：`openbb_platform/extensions/commodity/README.md`\n- **Crypto data extension for OpenBB Platform**（documentation）：Crypto data extension for OpenBB Platform 证据：`openbb_platform/extensions/crypto/README.md`\n- **OpenBB Currency Extension**（documentation）：This extension provides currency exchange related data for the OpenBB Platform. 证据：`openbb_platform/extensions/currency/README.md`\n- **OpenBB Derivatives Extension**（documentation）：This extension provides derivatives data for the OpenBB Platform. 证据：`openbb_platform/extensions/derivatives/README.md`\n- **The OpenBB DevTools Extension**（documentation）：This extension aggregates the dependencies that facilitate a nice development experience for OpenBB. It does not contain any code itself, but rather pulls in the following dependencies: 证据：`openbb_platform/extensions/devtools/README.md`\n- **Econometrics extension for OpenBB Platform**（documentation）：Econometrics extension for OpenBB Platform 证据：`openbb_platform/extensions/econometrics/README.md`\n- **OpenBB Economy Extension**（documentation）：The Economy extension provides global macroeconomic data access for the OpenBB Platform. 证据：`openbb_platform/extensions/economy/README.md`\n- **OpenBB Equity Extension**（documentation）：This extension provides equity market data tools for the OpenBB Platform. 证据：`openbb_platform/extensions/equity/README.md`\n- **ETF data extension for OpenBB SDK**（documentation）：This extension provides a set of commands for ETF data retrieval. 证据：`openbb_platform/extensions/etf/README.md`\n- **OpenBB Fixed Income Extension**（documentation）：This extension provides fixed income data for the OpenBB Platform. 证据：`openbb_platform/extensions/fixedincome/README.md`\n- **OpenBB Index Extension**（documentation）：The Index extension provides global and european index data access for the OpenBB Platform. 证据：`openbb_platform/extensions/index/README.md`\n- **OpenBB MCP Server**（documentation）：This extension enables LLM agents to interact with OpenBB Platform's REST API endpoints through the MCP protocol. 证据：`openbb_platform/extensions/mcp_server/README.md`\n- **OpenBB News Extension**（documentation）：This extension provides news for the OpenBB Platform. 证据：`openbb_platform/extensions/news/README.md`\n- **OpenBB Platform API Launcher**（documentation）：This package is responsible for launching and configuring an OpenBB Platform environment, or FastAPI instance, to use as an OpenBB Workspace custom backend https://docs.openbb.co/workspace/data-integration . 证据：`openbb_platform/extensions/platform_api/README.md`\n- **OpenBB QA Extension**（documentation）：This extension provides Quantitative Analysis QA tools for the OpenBB Platform. 证据：`openbb_platform/extensions/quantitative/README.md`\n- **OpenBB Regulators Extension**（documentation）：This extension provides a structure for data sourced from various global market regulators. 证据：`openbb_platform/extensions/regulators/README.md`\n- **OpenBB Technical Analysis Extension**（documentation）：OpenBB Technical Analysis Extension 证据：`openbb_platform/extensions/technical/README.md`\n- **OpenBB Charting extension**（documentation）：This extension provides a charting library for OpenBB Platform. 证据：`openbb_platform/obbject_extensions/charting/README.md`\n- **Providers**（documentation）：In this folder you can find the providers that were created or are supported by OpenBB. 证据：`openbb_platform/providers/README.md`\n- **OpenBB Alpha Vantage Provider**（documentation）：This extension integrates the Alpha Vantage https://www.alphavantage.co/ data provider into the OpenBB Platform. 证据：`openbb_platform/providers/alpha_vantage/README.md`\n- **OpenBB Benzinga Provider**（documentation）：This extension integrates the Benzinga https://www.benzinga.com/ data provider into the OpenBB Platform. 证据：`openbb_platform/providers/benzinga/README.md`\n- **OpenBB Biztoc Provider**（documentation）：This extension integrates the Biztoc data provider into the OpenBB Platform. 证据：`openbb_platform/providers/biztoc/README.md`\n- **BLS Provider Extension**（documentation）：This extension integrates the BLS data provider into the OpenBB Platform. 证据：`openbb_platform/providers/bls/README.md`\n- **OpenBB CBOE Provider**（documentation）：This extension integrates the CBOE https://www.cboe.com/ data provider into the OpenBB Platform. 证据：`openbb_platform/providers/cboe/README.md`\n- **CFTC Provider Extension**（documentation）：This package provides full access to the CFTC Commitment of Traders database. Reports are fetched by CFTC Code e.g. 13874+ and returns the full history of the contract. 证据：`openbb_platform/providers/cftc/README.md`\n- **Congress.gov Provider**（documentation）：This provider integrates with the Congress.gov API to provide access to U.S. legislative data and text. 证据：`openbb_platform/providers/congress_gov/README.md`\n- **OpenBB Deribit Provider Extension**（documentation）：- obb.derivatives.options.chains - Support for symbols: - BTC - ETH - XRP - SOL - BNB - PAXG - obb.derivatives.futures.curve - Support for symbols: - BTC - ETH - PAXG - obb.derivatives.futures.historical - Support for symbols Perpetual Futures : - ADAUSDC - ALGOUSDC - AVAXUSDC - BCHUSDC - BNBUSDC - BTC - BTCUSDC - BTCUSDT - DOGEUSDC - DOTUSDC - ETH - ETHUSDC - ETHUSDT - LINKUSDC - LTCUSDC - NEARUSDC - PAXGUSDC - SOLUSDC - TRXUSDC - UNIUSDC - XRPUSDC - Additional symbols include all Deribit instrument names of current open contracts for BTC, ETH, and PAXG futures. - obb.derivatives.futures.instruments - Reference data for all current futures instruments. - obb.derivatives.futures.info - Key… 证据：`openbb_platform/providers/deribit/README.md`\n- **OpenBB ECB Provider**（documentation）：This extension integrates the ECB https://data.ecb.europa.eu/ data provider into the OpenBB Platform. 证据：`openbb_platform/providers/ecb/README.md`\n- **OpenBB EconDB Provider**（documentation）：This extension integrates the EconDB https://econdb.com/ data provider into the OpenBB Platform. 证据：`openbb_platform/providers/econdb/README.md`\n- **OpenBB EIA Provider Extension**（documentation）：This module integrates the EIA https://eia.gov data provider into the OpenBB Platform. 证据：`openbb_platform/providers/eia/README.md`\n- **OpenBB Fama-French Extension**（documentation）：This extension implements the Ken French data library Source: https://mba.tuck.dartmouth.edu/pages/faculty/ken.french/data library.html as an OpenBB Platform Provider and Router extension. 证据：`openbb_platform/providers/famafrench/README.md`\n- **OpenBB Federal Reserve Provider**（documentation）：This extension integrates the Federal Reserve https://www.federalreserve.gov/data.htm data provider into the OpenBB Platform. It focuses on Federal Reserve data not published to FRED. No authorization is required for access. 证据：`openbb_platform/providers/federal_reserve/README.md`\n- **OpenBB FINRA Provider**（documentation）：This extension integrates the FINRA https://finra.org/ data provider into the OpenBB Platform. 证据：`openbb_platform/providers/finra/README.md`\n- **OpenBB Finviz Data Provider Extension**（documentation）：OpenBB Finviz Data Provider Extension 证据：`openbb_platform/providers/finviz/README.md`\n- **OpenBB Financial Modeling Prep Provider**（documentation）：OpenBB Financial Modeling Prep Provider 证据：`openbb_platform/providers/fmp/README.md`\n- **OpenBB FRED Provider**（documentation）：This extension integrates the FRED https://fred.stlouisfed.org/docs/api/fred/ data provider into the OpenBB Platform. 证据：`openbb_platform/providers/fred/README.md`\n- **OpenBB Government US Provider**（documentation）：This extension integrates the US Government https://data.gov data provider into the OpenBB Platform. 证据：`openbb_platform/providers/government_us/README.md`\n- **OpenBB IMF Provider Extension**（documentation）：This package adds the openbb-imf provider extension to the Open Data Platform by OpenBB. 证据：`openbb_platform/providers/imf/README.md`\n- **OpenBB Intrinio Provider**（documentation）：This extension integrates the Intrinio https://intrinio.com/ data provider into the OpenBB Platform. 证据：`openbb_platform/providers/intrinio/README.md`\n- **Multpl Provider Extension**（documentation）：This is an implementation of the data published to https://multpl.com https;//multpl.com 证据：`openbb_platform/providers/multpl/README.md`\n- **OpenBB Nasdaq Provider**（documentation）：This extension integrates the Nasdaq https://www.nasdaq.com data provider into the OpenBB Platform. 证据：`openbb_platform/providers/nasdaq/README.md`\n- **OpenBB OECD Provider**（documentation）：This extension integrates the OECD https://stats.oecd.org data provider into the OpenBB Platform. 证据：`openbb_platform/providers/oecd/README.md`\n- **OpenBB SEC Provider**（documentation）：This extension integrates the SEC https://www.sec.gov/edgar data provider into the OpenBB Platform. 证据：`openbb_platform/providers/sec/README.md`\n- **OpenBB Seeking Alpha Provider**（documentation）：This extension integrates the Seeking Alpha https://seekingalpha.com data provider into the OpenBB Platform. 证据：`openbb_platform/providers/seeking_alpha/README.md`\n- **OpenBB Stockgrid Provider**（documentation）：This extension integrates the Stockgrid https://Stockgrid.io/ data provider into the OpenBB Platform. 证据：`openbb_platform/providers/stockgrid/README.md`\n- **OpenBB Tiingo Provider**（documentation）：This extension integrates the Tiingo https://www.tiingo.com/ data provider into the OpenBB Platform. 证据：`openbb_platform/providers/tiingo/README.md`\n- **OpenBB TMX Provider**（documentation）：This extension integrates the TMX https://www.tmx.com data provider into the OpenBB Platform. 证据：`openbb_platform/providers/tmx/README.md`\n- **OpenBB Tradier Provider**（documentation）：This extension integrates the Tradier https://tradier.com data provider into the OpenBB Platform. 证据：`openbb_platform/providers/tradier/README.md`\n- 其余 20 条证据见 `AI_CONTEXT_PACK.json` 或 `EVIDENCE_INDEX.json`。\n\n## 宿主 AI 必须遵守的规则\n\n- **把本资产当作开工前上下文，而不是运行环境。**：AI Context Pack 只包含证据化项目理解，不包含目标项目的可执行状态。 证据：`README.md`, `assets/README.md`, `cli/README.md`\n- **回答用户时区分可预览内容与必须安装后才能验证的内容。**：安装前体验的消费者价值来自降低误装和误判，而不是伪装成真实运行。 证据：`README.md`, `assets/README.md`, `cli/README.md`\n\n## 用户开工前应该回答的问题\n\n- 你准备在哪个宿主 AI 或本地环境中使用它？\n- 你只是想先体验工作流，还是准备真实安装？\n- 你最在意的是安装成本、输出质量、还是和现有规则的冲突？\n\n## 验收标准\n\n- 所有能力声明都能回指到 evidence_refs 中的文件路径。\n- AI_CONTEXT_PACK.md 没有把预览包装成真实运行。\n- 用户能在 3 分钟内看懂适合谁、能做什么、如何开始和风险边界。\n\n---\n\n## Doramagic Context Augmentation\n\n下面内容用于强化 Repomix/AI Context Pack 主体。Human Manual 只提供阅读骨架；踩坑日志会被转成宿主 AI 必须遵守的工作约束。\n\n## Human Manual 骨架\n\n使用规则：这里只是项目阅读路线和显著性信号，不是事实权威。具体事实仍必须回到 repo evidence / Claim Graph。\n\n宿主 AI 硬性规则：\n- 不得把页标题、章节顺序、摘要或 importance 当作项目事实证据。\n- 解释 Human Manual 骨架时，必须明确说它只是阅读路线/显著性信号。\n- 能力、安装、兼容性、运行状态和风险判断必须引用 repo evidence、source path 或 Claim Graph。\n\n- **OpenBB项目概述**：importance `high`\n  - source_paths: README.md, openbb_platform/README.md, openbb_platform/core/openbb_core/__init__.py\n- **项目目录结构**：importance `high`\n  - source_paths: cli/openbb_cli, desktop/src, openbb_platform/core, openbb_platform/extensions, openbb_platform/providers\n- **核心架构设计**：importance `high`\n  - source_paths: openbb_platform/core/openbb_core/app/command_runner.py, openbb_platform/core/openbb_core/app/extension_loader.py, openbb_platform/core/openbb_core/app/router.py, openbb_platform/core/openbb_core/provider/registry.py, openbb_platform/core/openbb_core/provider/query_executor.py\n- **OBBject数据模型**：importance `high`\n  - source_paths: openbb_platform/core/openbb_core/app/model/obbject.py, openbb_platform/core/openbb_core/app/model/abstract/results.py, openbb_platform/core/openbb_core/provider/abstract/annotated_result.py, openbb_platform/core/openbb_core/provider/abstract/data.py, openbb_platform/core/openbb_core/provider/abstract/fetcher.py\n- **数据提供者系统**：importance `high`\n  - source_paths: openbb_platform/providers, openbb_platform/core/openbb_core/provider/registry_map.py, openbb_platform/core/openbb_core/provider/provider_interface.py, openbb_platform/core/openbb_core/provider/standard_models\n- **扩展模块系统**：importance `medium`\n  - source_paths: openbb_platform/extensions/equity, openbb_platform/extensions/crypto, openbb_platform/extensions/fixedincome, openbb_platform/extensions/technical, openbb_platform/extensions/economy\n- **命令行界面(CLI)**：importance `medium`\n  - source_paths: cli/openbb_cli/cli.py, cli/openbb_cli/controllers/cli_controller.py, cli/openbb_cli/controllers/base_controller.py, cli/openbb_cli/argparse_translator, cli/openbb_cli/session.py\n- **桌面应用程序**：importance `medium`\n  - source_paths: desktop/src-tauri/src/main.rs, desktop/src-tauri/src/tauri_handlers, desktop/src/main.tsx, desktop/src/routes, desktop/src-tauri/tauri.conf.json\n\n## Repo Inspection Evidence / 源码检查证据\n\n- repo_clone_verified: true\n- repo_inspection_verified: true\n- repo_commit: `186cbb068c194fb11adc57bb492a75e474ef4103`\n- inspected_files: `README.md`, `examples/content.json`, `examples/README.md`, `examples/openbb-apachebeam/README.md`, `examples/streamlit/news.py`, `examples/openbb-apachebeam/tests/test_obb_pipeline.py`, `examples/openbb-apachebeam/tests/__init__.py`\n\n宿主 AI 硬性规则：\n- 没有 repo_clone_verified=true 时，不得声称已经读过源码。\n- 没有 repo_inspection_verified=true 时，不得把 README/docs/package 文件判断写成事实。\n- 没有 quick_start_verified=true 时，不得声称 Quick Start 已跑通。\n\n## Doramagic Pitfall Constraints / 踩坑约束\n\n这些规则来自 Doramagic 发现、验证或编译过程中的项目专属坑点。宿主 AI 必须把它们当作工作约束，而不是普通说明文字。\n\n### Constraint 1: 来源证据：[FR] Add Bank of Canada Valet API as a new provider extension\n\n- Trigger: GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：[FR] Add Bank of Canada Valet API as a new provider extension\n- Host AI rule: 来源问题仍为 open，Pack Agent 需要复核是否仍影响当前版本。\n- Why it matters: 可能影响授权、密钥配置或安全边界。\n- Evidence: community_evidence:github | cevd_a8349d4112564c48b29615f3530e81e4 | https://github.com/OpenBB-finance/OpenBB/issues/7490 | 来源讨论提到 api key 相关条件，需在安装/试用前复核。\n- Hard boundary: 不要把这个坑点包装成已解决、已验证或可忽略，除非后续验证证据明确证明它已经关闭。\n\n### Constraint 2: 来源证据：[FR] Add Real-time Cryptocurrency Data Provider Integration\n\n- Trigger: GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：[FR] Add Real-time Cryptocurrency Data Provider Integration\n- Host AI rule: 来源问题仍为 open，Pack Agent 需要复核是否仍影响当前版本。\n- Why it matters: 可能影响授权、密钥配置或安全边界。\n- Evidence: community_evidence:github | cevd_e1bb7e5c7c0a4dc2bea2a256ed74a0b0 | https://github.com/OpenBB-finance/OpenBB/issues/7177 | 来源讨论提到 api key 相关条件，需在安装/试用前复核。\n- Hard boundary: 不要把这个坑点包装成已解决、已验证或可忽略，除非后续验证证据明确证明它已经关闭。\n\n### Constraint 3: 涉及密钥、隐私或敏感领域\n\n- Trigger: 项目文本出现 secret/private key/privacy/trading/finance 等敏感关键词。\n- Host AI rule: 补敏感数据流、密钥存储和权限边界审查。\n- Why it matters: 金融、交易、隐私和密钥场景必须比普通工具更保守。\n- Evidence: packet_text.keyword_scan | github_repo:323048702 | https://github.com/OpenBB-finance/OpenBB | matched secret / private key / privacy / trading / finance keyword\n- Hard boundary: 不要把这个坑点包装成已解决、已验证或可忽略，除非后续验证证据明确证明它已经关闭。\n\n### Constraint 4: 来源证据：[Bug] PyWry WebView Fails to Launch on Ubuntu 24.04\n\n- Trigger: GitHub 社区证据显示该项目存在一个安装相关的待验证问题：[Bug] PyWry WebView Fails to Launch on Ubuntu 24.04\n- Host AI rule: 来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- Why it matters: 可能阻塞安装或首次运行。\n- Evidence: community_evidence:github | cevd_c068fa0d9cac4fb7b74d875b22d312d7 | https://github.com/OpenBB-finance/OpenBB/issues/7148 | 来源讨论提到 python 相关条件，需在安装/试用前复核。\n- Hard boundary: 不要把这个坑点包装成已解决、已验证或可忽略，除非后续验证证据明确证明它已经关闭。\n\n### Constraint 5: 来源证据：[Bug] Widgets not saving their position and size after refresh\n\n- Trigger: GitHub 社区证据显示该项目存在一个安装相关的待验证问题：[Bug] Widgets not saving their position and size after refresh\n- Host AI rule: 来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- Why it matters: 可能增加新用户试用和生产接入成本。\n- Evidence: community_evidence:github | cevd_b7792ca1efe649c085e18a8a6be37d49 | https://github.com/OpenBB-finance/OpenBB/issues/7479 | 来源类型 github_issue 暴露的待验证使用条件。\n- Hard boundary: 不要把这个坑点包装成已解决、已验证或可忽略，除非后续验证证据明确证明它已经关闭。\n\n### Constraint 6: 能力判断依赖假设\n\n- Trigger: README/documentation is current enough for a first validation pass.\n- Host AI rule: 将假设转成下游验证清单。\n- Why it matters: 假设不成立时，用户拿不到承诺的能力。\n- Evidence: capability.assumptions | github_repo:323048702 | https://github.com/OpenBB-finance/OpenBB | README/documentation is current enough for a first validation pass.\n- Hard boundary: 不要把这个坑点包装成已解决、已验证或可忽略，除非后续验证证据明确证明它已经关闭。\n\n### Constraint 7: 来源证据：ODP Desktop v1.0.2\n\n- Trigger: GitHub 社区证据显示该项目存在一个运行相关的待验证问题：ODP Desktop v1.0.2\n- Host AI rule: 来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- Why it matters: 可能增加新用户试用和生产接入成本。\n- Evidence: community_evidence:github | cevd_cf07c5d467e44c168f2650a3c4404f46 | https://github.com/OpenBB-finance/OpenBB/releases/tag/Open-Data-Platform-v1.0.2 | 来源讨论提到 windows 相关条件，需在安装/试用前复核。\n- Hard boundary: 不要把这个坑点包装成已解决、已验证或可忽略，除非后续验证证据明确证明它已经关闭。\n\n### Constraint 8: 维护活跃度未知\n\n- Trigger: 未记录 last_activity_observed。\n- Host AI rule: 补 GitHub 最近 commit、release、issue/PR 响应信号。\n- Why it matters: 新项目、停更项目和活跃项目会被混在一起，推荐信任度下降。\n- Evidence: evidence.maintainer_signals | github_repo:323048702 | https://github.com/OpenBB-finance/OpenBB | last_activity_observed missing\n- Hard boundary: 不要把这个坑点包装成已解决、已验证或可忽略，除非后续验证证据明确证明它已经关闭。\n\n### Constraint 9: 下游验证发现风险项\n\n- Trigger: no_demo\n- Host AI rule: 进入安全/权限治理复核队列。\n- Why it matters: 下游已经要求复核，不能在页面中弱化。\n- Evidence: downstream_validation.risk_items | github_repo:323048702 | https://github.com/OpenBB-finance/OpenBB | no_demo; severity=medium\n- Hard boundary: 不要把这个坑点包装成已解决、已验证或可忽略，除非后续验证证据明确证明它已经关闭。\n\n### Constraint 10: 存在评分风险\n\n- Trigger: no_demo\n- Host AI rule: 把风险写入边界卡，并确认是否需要人工复核。\n- Why it matters: 风险会影响是否适合普通用户安装。\n- Evidence: risks.scoring_risks | github_repo:323048702 | https://github.com/OpenBB-finance/OpenBB | no_demo; severity=medium\n- Hard boundary: 不要把这个坑点包装成已解决、已验证或可忽略，除非后续验证证据明确证明它已经关闭。\n",
      "summary": "给宿主 AI 的上下文和工作边界。",
      "title": "AI Context Pack / 带给我的 AI"
    },
    "boundary_risk_card": {
      "asset_id": "boundary_risk_card",
      "filename": "BOUNDARY_RISK_CARD.md",
      "markdown": "# Boundary & Risk Card / 安装前决策卡\n\n项目：OpenBB-finance/OpenBB\n\n## Doramagic 试用结论\n\n当前结论：可以进入发布前推荐检查；首次使用仍应从最小权限、临时目录和可回滚配置开始。\n\n## 用户现在可以做\n\n- 可以先阅读 Human Manual，理解项目目的和主要工作流。\n- 可以复制 Prompt Preview 做安装前体验；这只验证交互感，不代表真实运行。\n- 可以把官方 Quick Start 命令放到隔离环境中验证，不要直接进主力环境。\n\n## 现在不要做\n\n- 不要把 Prompt Preview 当成项目实际运行结果。\n- 不要把 metadata-only validation 当成沙箱安装验证。\n- 不要把未验证能力写成“已支持、已跑通、可放心安装”。\n- 不要在首次试用时交出生产数据、私人文件、真实密钥或主力配置目录。\n\n## 安装前检查\n\n- 宿主 AI 是否匹配：local_cli\n- 官方安装入口状态：已发现官方入口\n- 是否在临时目录、临时宿主或容器中验证：必须是\n- 是否能回滚配置改动：必须能\n- 是否需要 API Key、网络访问、读写文件或修改宿主配置：未确认前按高风险处理\n- 是否记录了安装命令、实际输出和失败日志：必须记录\n\n## 当前阻塞项\n\n- 无阻塞项。\n\n## 项目专属踩坑\n\n- 来源证据：[FR] Add Bank of Canada Valet API as a new provider extension（high）：可能影响授权、密钥配置或安全边界。 建议检查：来源问题仍为 open，Pack Agent 需要复核是否仍影响当前版本。\n- 来源证据：[FR] Add Real-time Cryptocurrency Data Provider Integration（high）：可能影响授权、密钥配置或安全边界。 建议检查：来源问题仍为 open，Pack Agent 需要复核是否仍影响当前版本。\n- 涉及密钥、隐私或敏感领域（high）：金融、交易、隐私和密钥场景必须比普通工具更保守。 建议检查：补敏感数据流、密钥存储和权限边界审查。\n- 来源证据：[Bug] PyWry WebView Fails to Launch on Ubuntu 24.04（medium）：可能阻塞安装或首次运行。 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 来源证据：[Bug] Widgets not saving their position and size after refresh（medium）：可能增加新用户试用和生产接入成本。 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n\n## 风险与权限提示\n\n- no_demo: medium\n\n## 证据缺口\n\n- 暂未发现结构化证据缺口。\n",
      "summary": "安装、权限、验证和推荐前风险。",
      "title": "Boundary & Risk Card / 边界与风险卡"
    },
    "human_manual": {
      "asset_id": "human_manual",
      "filename": "HUMAN_MANUAL.md",
      "markdown": "# https://github.com/OpenBB-finance/OpenBB 项目说明书\n\n生成时间：2026-05-11 12:57:04 UTC\n\n## 目录\n\n- [OpenBB项目概述](#page-1)\n- [项目目录结构](#page-2)\n- [核心架构设计](#page-3)\n- [OBBject数据模型](#page-4)\n- [数据提供者系统](#page-5)\n- [扩展模块系统](#page-6)\n- [命令行界面(CLI)](#page-7)\n- [桌面应用程序](#page-8)\n- [扩展开发指南](#page-9)\n- [REST API与部署](#page-10)\n\n<a id='page-1'></a>\n\n## OpenBB项目概述\n\n### 相关页面\n\n相关主题：[项目目录结构](#page-2), [核心架构设计](#page-3)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/README.md)\n- [openbb_platform/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/README.md)\n- [cli/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/cli/README.md)\n- [openbb_platform/extensions/news/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/extensions/news/README.md)\n- [openbb_platform/extensions/commodity/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/extensions/commodity/README.md)\n- [openbb_platform/extensions/mcp_server/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/extensions/mcp_server/README.md)\n- [openbb_platform/extensions/regulators/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/extensions/regulators/README.md)\n- [openbb_platform/providers/government_us/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/providers/government_us/README.md)\n- [openbb_platform/providers/congress_gov/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/providers/congress_gov/README.md)\n- [openbb_platform/providers/cftc/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/providers/cftc/README.md)\n- [cookiecutter/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/cookiecutter/README.md)\n- [desktop/src/routes/installation-progress.tsx](https://github.com/OpenBB-finance/OpenBB/blob/main/desktop/src/routes/installation-progress.tsx)\n- [desktop/src/routes/api-keys.tsx](https://github.com/OpenBB-finance/OpenBB/blob/main/desktop/src/routes/api-keys.tsx)\n</details>\n\n# OpenBB项目概述\n\n## 1 项目简介\n\nOpenBB是一个开源金融数据平台项目，旨在为投资者、分析师和开发者提供全面的金融数据访问和分析工具。该项目采用AGPLv3开源许可证发布，允许用户自由使用、修改和分发代码。 资料来源：[README.md:1-50]()\n\n### 1.1 核心定位\n\nOpenBB的核心定位是一个模块化的金融数据平台，通过统一的数据接口整合来自多个来源的金融信息，包括股票、加密货币、宏观经济数据、政府数据等。项目强调开放性和可扩展性，允许第三方开发者通过扩展和自定义来增强平台功能。 资料来源：[openbb_platform/README.md:1-30]()\n\n### 1.2 技术架构\n\nOpenBB采用现代化的微服务架构设计，主要包含以下核心组件：\n\n```mermaid\ngraph TD\n    A[OpenBB Platform Core] --> B[Extensions 扩展系统]\n    A --> C[Providers 数据提供者]\n    A --> D[CLI 命令行工具]\n    A --> E[Desktop 桌面应用]\n    A --> F[REST API 服务]\n    B --> B1[News 新闻扩展]\n    B --> B2[Commodity 商品扩展]\n    B --> B3[Regulators 监管扩展]\n    B --> B4[MCP Server MCP服务器]\n    C --> C1[US Government 美国政府数据]\n    C --> C2[Congress Gov 议会数据]\n    C --> C3[CFTC 期货数据]\n```\n\n资料来源：[openbb_platform/README.md:30-60]()\n\n## 2 平台核心组件\n\n### 2.1 Python SDK\n\nOpenBB Platform提供Python软件开发包，用户可以通过简单的Python代码访问金融数据。核心使用方式如下：\n\n```python\nfrom openbb import obb\n\n# 获取股票数据\nresult = obb.equity.price_historical(symbol=\"AAPL\", start_date=\"2023-01-01\")\n\n# 获取宏观经济数据\ngdp_data = obb.economy.gdp(country=\"Japan\")\n\n# 获取商品数据\ncommodity = obb.commodity.psd_report(commodity=\"wheat\")\n```\n\n平台支持Python 3.10至3.13版本，需要使用虚拟环境进行安装。开发者可以使用poetry进行依赖管理，通过运行`python dev_install.py -e`命令以可编辑模式安装所有包。 资料来源：[openbb_platform/README.md:40-80]()\n\n### 2.2 REST API服务\n\nOpenBB Platform内置FastAPI驱动的REST API，允许用户通过HTTP请求访问所有功能。启动API服务只需一条命令：\n\n```bash\nuvicorn openbb_core.api.rest_api:app --host 0.0.0.0 --port 8000 --reload\n```\n\nAPI文档位于\"/docs\"路径下，可在浏览器中直接查看和测试所有可用的API端点。REST API支持配置运行时设置和环境变量，适合需要程序化访问金融数据的应用场景。 资料来源：[openbb_platform/README.md:50-70]()\n\n## 3 扩展系统\n\nOpenBB的扩展系统允许开发者添加自定义功能模块，每个扩展都是独立的Python包，通过pip进行安装和管理。\n\n### 3.1 扩展类型一览\n\n| 扩展名称 | 包名 | 功能描述 |\n|---------|------|---------|\n| News | openbb-news | 提供新闻数据集成 |\n| Commodity | openbb-commodity | 商品市场数据访问 |\n| Regulators | openbb-regulators | 全球监管机构数据 |\n| MCP Server | openbb-mcp-server | 模型上下文协议服务 |\n\n资料来源：[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]()\n\n### 3.2 MCP Server扩展\n\nMCP Server扩展是OpenBB的重要创新，它将FastAPI路由暴露为MCP（Model Context Protocol）工具。通过MCPConfigModel，开发者可以精细控制每个路由的暴露行为：\n\n- **expose**：设置为False可完全隐藏某个路由\n- **mcp_type**：指定MCP类型，支持\"tool\"、\"resource\"或\"resource_template\"\n- **methods**：指定要暴露的HTTP方法\n\nMCP Server扩展支持内联MCP配置，允许开发者直接在openapi_extra字典中定义提示词和工具行为。 资料来源：[openbb_platform/extensions/mcp_server/README.md:1-60]()\n\n## 4 数据提供者\n\nOpenBB通过数据提供者模块集成外部数据源，每个提供者都是独立的扩展包，负责与特定数据API的交互。\n\n### 4.1 美国政府数据提供者\n\nUS Government数据提供者集成了data.gov的数据接口，无需注册即可使用。覆盖的服务包括：\n\n- `obb.commodity.psd_report` - 农产品供需报告\n- `obb.commodity.psd_data` - 农产品供需数据\n- `obb.commodity.weather_bulletins` - 天气公报\n- `obb.fixed_income.government.treasury_auctions` - 国债拍卖\n- `obb.fixed_income.government.treasury_prices` - 国债价格 资料来源：[openbb_platform/providers/government_us/README.md:1-40]()\n\n### 4.2 议会数据提供者\n\nCongress Gov提供者整合了美国国会相关数据，支持以下功能：\n\n```python\n# 获取最近更新的法案\nbills = obb.uscongress.bills(limit=10)\n\n# 获取法案详情\nbill_info = obb.uscongress.bill_info(bill_url=\"119/hr/1\")\n```\n\n该提供者支持PDF文档处理，接受URL列表作为请求体参数。 资料来源：[openbb_platform/providers/congress_gov/README.md:1-50]()\n\n### 4.3 CFTC数据提供者\n\nCFTC（商品期货交易委员会）数据提供者提供 Commitments of Traders（COT）报告数据：\n\n```python\n# 搜索商品代码\nsearch_results = obb.cftc.cot_search(query=\"gold\")\n\n# 获取持仓报告\nreport = obb.cftc.cot(code=\"CFTC_088695\", measure=\"percent_of_oi\", limit=4)\n```\n\n返回数据支持转换为DataFrame格式便于数据分析。 资料来源：[openbb_platform/providers/cftc/README.md:1-60]()\n\n## 5 客户端应用\n\n### 5.1 命令行工具（CLI）\n\nOpenBB CLI是通过pip安装的命令行客户端，安装命令为`pip install openbb-cli`。安装完成后，通过运行`openbb`命令启动交互式界面。CLI工具提供与Python SDK相同的功能，但以交互式终端方式呈现。 资料来源：[cli/README.md:1-30]()\n\n### 5.2 桌面应用\n\nOpenBB桌面应用基于React构建，提供图形化用户界面。桌面应用的主要功能包括：\n\n- **API密钥管理**：支持导入JSON或ENV格式的密钥文件，提供安全的密钥存储和配置界面 资料来源：[desktop/src/routes/api-keys.tsx:1-50]()\n- **安装向导**：包含Miniforge环境管理器安装、Python版本选择、扩展安装等完整流程\n- **环境管理**：创建和管理多个Python虚拟环境，支持不同项目使用不同配置 资料来源：[desktop/src/routes/installation-progress.tsx:1-80]()\n\n桌面应用的安装流程分为三个步骤：\n\n```mermaid\ngraph LR\n    A[Step 1: Miniforge安装] --> B[Step 2: 环境配置]\n    B --> C[Step 3: 扩展选择]\n    C --> D[完成安装]\n```\n\n资料来源：[desktop/src/routes/installation-progress.tsx:30-60]()\n\n## 6 开发工具\n\n### 6.1 Cookiecutter模板\n\nOpenBB提供cookiecutter模板帮助开发者快速创建新的扩展或数据提供者项目。使用步骤如下：\n\n1. 安装cookiecutter模板工具\n2. 运行`openbb-cookiecutter`命令选择项目类型\n3. 创建独立的Python虚拟环境\n4. 安装生成的包：`pip install -e .`\n5. 使用`openbb-build`生成静态文件\n\n模板项目自动配置项目结构、依赖管理和构建流程，开发者只需专注于业务逻辑实现。 资料来源：[cookiecutter/README.md:1-40]()\n\n### 6.2 本地开发环境\n\n本地开发需要满足以下条件：\n\n| 组件 | 要求 |\n|-----|------|\n| Git | 最新版本 |\n| Python | 3.10 - 3.13 |\n| 包管理器 | Poetry |\n| 操作系统 | 跨平台支持 |\n\n开发安装脚本位于`openbb_platform`目录下，执行`python dev_install.py -e`以可编辑模式安装所有核心包。 资料来源：[openbb_platform/README.md:60-90]()\n\n## 7 配置与管理\n\n### 7.1 API密钥配置\n\n用户需要为不同的数据提供者配置API密钥。在Python代码中配置：\n\n```python\nfrom openbb import obb\n\nobb.user.credentials.fred_api_key = \"REPLACE_ME\"\nobb.user.credentials.polygon_api_key = \"REPLACE_ME\"\n```\n\n详细的配置说明请参阅官方文档中的API密钥管理页面。 资料来源：[openbb_platform/README.md:10-25]()\n\n### 7.2 环境变量\n\nREST API支持通过环境变量进行配置，包括数据库连接、超时设置、缓存策略等系统级参数。这些配置可以通过系统设置文档进行详细了解。 资料来源：[openbb_platform/README.md:70-80]()\n\n## 8 许可与免责声明\n\nOpenBB采用AGPLv3开源许可证发布。重要的是，项目明确声明：\n\n> 交易金融工具涉及高风险，包括损失部分或全部投资金额的风险，可能不适合所有投资者。\n\n项目团队不对因依赖平台数据而造成的任何交易损失或损害承担法律责任。用户在使用前应充分了解相关风险，必要时寻求专业建议。 资料来源：[README.md:45-60]()\n\n## 9 相关资源\n\n- 官方文档：https://docs.openbb.co\n- Discord社区：https://openbb.co/discord\n- GitHub仓库：https://github.com/OpenBB-finance/OpenBB\n- 问题反馈：https://github.com/OpenBB-finance/OpenBB/issues\n\n---\n\n<a id='page-2'></a>\n\n## 项目目录结构\n\n### 相关页面\n\n相关主题：[OpenBB项目概述](#page-1), [核心架构设计](#page-3)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [cli/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/cli/README.md)\n- [desktop/src/routes/backends.tsx](https://github.com/OpenBB-finance/OpenBB/blob/main/desktop/src/routes/backends.tsx)\n- [desktop/src/routes/installation-progress.tsx](https://github.com/OpenBB-finance/OpenBB/blob/main/desktop/src/routes/installation-progress.tsx)\n- [desktop/src/routes/api-keys.tsx](https://github.com/OpenBB-finance/OpenBB/blob/main/desktop/src/routes/api-keys.tsx)\n- [desktop/src/routes/environments.tsx](https://github.com/OpenBB-finance/OpenBB/blob/main/desktop/src/routes/environments.tsx)\n- [desktop/src/components/Icon.tsx](https://github.com/OpenBB-finance/OpenBB/blob/main/desktop/src/components/Icon.tsx)\n- [desktop/src/components/InstallComponents.tsx](https://github.com/OpenBB-finance/OpenBB/blob/main/desktop/src/components/InstallComponents.tsx)\n- [desktop/src/components/AddExtensionSelector.tsx](https://github.com/OpenBB-finance/OpenBB/blob/main/desktop/src/components/AddExtensionSelector.tsx)\n- [openbb_platform/extensions/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/extensions)\n- [openbb_platform/extensions/news/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/extensions/news/README.md)\n- [openbb_platform/extensions/mcp_server/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/extensions/mcp_server/README.md)\n- [openbb_platform/extensions/commodity/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/extensions/commodity/README.md)\n</details>\n\n# 项目目录结构\n\n## 概述\n\nOpenBB 是一个采用 Monorepo（单体仓库）架构的开源金融分析平台。项目根目录下包含多个核心子项目，分别负责不同的功能模块和用户体验入口。这种架构设计使得代码共享、版本管理和跨模块协作更加高效，同时保持了各模块的独立性和可扩展性。\n\n资料来源：[cli/README.md]()\n\n## 顶级目录架构\n\n```\nOpenBB/\n├── cli/                      # 命令行界面模块\n├── desktop/                  # 桌面应用程序\n├── openbb_platform/          # 核心平台与扩展\n└── README.md                 # 项目主文档\n```\n\n资料来源：[cli/README.md]()\n\n### 核心子项目定位\n\n| 子项目 | 功能定位 | 技术栈 |\n|--------|----------|--------|\n| `cli/` | 命令行交互工具 | Python |\n| `desktop/` | 桌面图形界面 | React + TypeScript |\n| `openbb_platform/` | 数据处理核心与扩展生态 | Python |\n\n资料来源：[openbb_platform/extensions/news/README.md](), [openbb_platform/extensions/commodity/README.md]()\n\n---\n\n## CLI 模块 (cli/)\n\nCLI 模块提供基于终端的交互式金融数据查询工具。用户通过 `openbb` 命令启动程序，可完成数据获取、图表渲染等操作。\n\n### 安装与启动流程\n\n```bash\npip install openbb-cli\nopenbb\n```\n\n资料来源：[cli/README.md]()\n\n### 核心目录结构\n\n```\ncli/\n└── openbb_cli/\n```\n\nCLI 模块采用 Python 实现，通过命令行方式提供服务，适合服务器环境或习惯终端操作的用户。\n\n资料来源：[cli/README.md]()\n\n---\n\n## Desktop 模块 (desktop/src/)\n\nDesktop 模块是 OpenBB 的桌面应用程序前端，采用 React 框架构建，提供图形化用户界面。\n\n### 核心路由结构\n\n```\ndesktop/src/\n└── routes/\n    ├── backends.tsx              # 后端服务配置面板\n    ├── installation-progress.tsx # 安装进度跟踪\n    ├── api-keys.tsx              # API 密钥管理\n    └── environments.tsx          # Python 环境管理\n```\n\n资料来源：[desktop/src/routes/backends.tsx](), [desktop/src/routes/installation-progress.tsx](), [desktop/src/routes/api-keys.tsx](), [desktop/src/routes/environments.tsx]()\n\n### 安装流程架构\n\nDesktop 模块实现了多阶段安装向导，指导用户完成开发环境配置：\n\n```mermaid\ngraph TD\n    A[开始安装] --> B{版本选择}\n    B --> C{Miniforge 安装}\n    C --> D{环境初始化}\n    D --> E[扩展选择]\n    E --> F{安装执行}\n    F --> G{完成}\n    \n    B -.->|取消| H[取消安装]\n    F -.->|失败| I[重试或继续]\n```\n\n资料来源：[desktop/src/routes/installation-progress.tsx]()\n\n### 安装组件清单\n\n安装向导包含以下核心组件：\n\n| 组件文件 | 功能描述 |\n|----------|----------|\n| `InstallComponents.tsx` | Conda/PyPI 包选择与扩展管理 |\n| `AddExtensionSelector.tsx` | 扩展搜索与安装界面 |\n| `Icon.tsx` | OpenBB 品牌图标系统 |\n\n资料来源：[desktop/src/components/InstallComponents.tsx](), [desktop/src/components/AddExtensionSelector.tsx](), [desktop/src/components/Icon.tsx]()\n\n### API 密钥管理界面\n\nAPI 密钥管理模块支持以下功能：\n\n- 密钥导入（支持 `.json` 和 `.env` 格式）\n- 密钥编辑与删除\n- 环境配置文件查看\n- 文档链接跳转\n\n资料来源：[desktop/src/routes/api-keys.tsx]()\n\n### 后端配置面板\n\n后端配置功能包括：\n\n- OpenSSL 证书生成（.pem、.key、.p12）\n- 服务进程管理\n- 进程 ID 监控\n- 服务初始化状态显示\n\n资料来源：[desktop/src/routes/backends.tsx]()\n\n---\n\n## OpenBB Platform 模块 (openbb_platform/)\n\nPlatform 模块是整个系统的核心层，提供数据处理、扩展管理和第三方数据源集成能力。\n\n### 平台架构层级\n\n```mermaid\ngraph TB\n    subgraph Platform Core\n        A[Core Engine]\n    end\n    \n    subgraph Extensions\n        B[News]\n        C[Commodity]\n        D[MCP Server]\n        E[Other Extensions...]\n    end\n    \n    subgraph Providers\n        F[Data Provider 1]\n        G[Data Provider 2]\n        H[Data Provider N]\n    end\n    \n    A --> B\n    A --> C\n    A --> D\n    A --> E\n    A --> F\n    A --> G\n    A --> H\n```\n\n资料来源：[openbb_platform/extensions/README.md]()\n\n### 核心目录结构\n\n```\nopenbb_platform/\n├── core/              # 核心引擎\n├── extensions/       # 扩展模块\n└── providers/        # 数据提供商\n```\n\n### Extensions 扩展模块\n\nExtensions 模块采用插件化架构，允许用户按需安装功能扩展。\n\n#### 扩展安装方式\n\n每个扩展目录包含独立的 `README.md` 文档，采用统一的安装命令格式：\n\n```bash\npip install openbb-<extension-name>\n```\n\n资料来源：[openbb_platform/extensions/news/README.md](), [openbb_platform/extensions/commodity/README.md]()\n\n#### 主要扩展模块\n\n| 扩展名称 | 功能描述 | 安装命令 |\n|----------|----------|----------|\n| News | 财经新闻数据获取 | `pip install openbb-news` |\n| Commodity | 大宗商品数据接口 | `pip install openbb-commodity` |\n| MCP Server | Model Context Protocol 服务 | 集成于平台 |\n\n资料来源：[openbb_platform/extensions/news/README.md](), [openbb_platform/extensions/commodity/README.md](), [openbb_platform/extensions/mcp_server/README.md]()\n\n#### MCP Server 扩展\n\nMCP Server 是一个特殊的扩展模块，提供 MCP（Model Context Protocol）协议支持，允许 FastAPI 路由以 MCP 工具形式暴露。\n\n##### MCP 配置模型\n\n```python\nfrom openbb_mcp_server.models.mcp_config import MCPConfigModel\n```\n\n##### MCP 配置属性\n\n| 属性名 | 类型 | 说明 |\n|--------|------|------|\n| `expose` | `Optional[bool]` | 是否暴露为 MCP 工具 |\n| `mcp_type` | `Optional[MCPType]` | 工具类型：`tool`/`resource`/`resource_template` |\n| `methods` | `Optional[list[HTTPMethod]]` | 暴露的 HTTP 方法 |\n\n资料来源：[openbb_platform/extensions/mcp_server/README.md]()\n\n##### MCP 工具生成示例\n\nMCP Server 自动将 FastAPI 路由转换为 MCP 工具，输出格式如下：\n\n```json\n{\n  \"description\": \"工具描述\",\n  \"messages\": [\n    {\n      \"role\": \"user\",\n      \"content\": {\n        \"type\": \"text\",\n        \"text\": \"使用工具完成指定任务\"\n      }\n    }\n  ]\n}\n```\n\n资料来源：[openbb_platform/extensions/mcp_server/README.md]()\n\n---\n\n## 环境管理系统\n\nDesktop 应用提供了完整的 Python 环境管理功能，支持用户创建和管理多个独立开发环境。\n\n### 环境创建流程\n\n```mermaid\ngraph LR\n    A[输入环境名称] --> B[选择 Python 版本]\n    B --> C[选择扩展与包]\n    C --> D[执行安装]\n    D --> E[环境创建完成]\n```\n\n资料来源：[desktop/src/routes/environments.tsx]()\n\n### 包管理支持\n\n系统支持三类包管理方式：\n\n| 包类型 | 说明 | UI 展示 |\n|--------|------|---------|\n| Conda | Miniforge 环境包 | 包列表 + 移除按钮 |\n| PyPI | 自定义 Python 包 | 搜索 + 添加界面 |\n| OpenBB Extensions | 平台扩展 | 可折叠安装说明 |\n\n资料来源：[desktop/src/components/InstallComponents.tsx](), [desktop/src/components/AddExtensionSelector.tsx]()\n\n### 安装摘要显示\n\n界面底部显示当前选择的包统计：\n\n```\n{n} Conda + {n} PyPI + {n} OpenBB extensions selected\n```\n\n资料来源：[desktop/src/components/InstallComponents.tsx](), [desktop/src/components/AddExtensionSelector.tsx]()\n\n---\n\n## 组件系统\n\n### UI 组件架构\n\nDesktop 应用采用组件化设计，主要组件包括：\n\n| 组件名 | 文件 | 职责 |\n|--------|------|------|\n| `Icon` | `Icon.tsx` | OpenBB Logo 与功能图标 |\n| `InstallComponents` | `InstallComponents.tsx` | 安装向导主容器 |\n| `AddExtensionSelector` | `AddExtensionSelector.tsx` | 扩展选择与搜索 |\n\n资料来源：[desktop/src/components/Icon.tsx](), [desktop/src/components/InstallComponents.tsx](), [desktop/src/components/AddExtensionSelector.tsx]()\n\n### 品牌图标系统\n\nOpenBB Logo 采用 SVG 格式定义，包含独特的 \"O\" 字母设计元素：\n\n```svg\n<path d=\"M151.404 103.189V95.2524H223.137V111.126H151.404V103.189Z\" />\n```\n\n资料来源：[desktop/src/components/Icon.tsx]()\n\n### Markdown 渲染组件\n\n扩展安装说明采用 ReactMarkdown 组件渲染，支持自定义样式：\n\n```tsx\n<ReactMarkdown\n  components={{\n    img: ({ ...props }) => <img {...props} className=\"max-w-full h-auto\" />,\n    a: ({ ...props }) => <a {...props} className=\"text-blue-500 underline\" />,\n    code: ({ ...props }) => <code {...props} className=\"bg-theme-tertiary\" />,\n  }}\n>\n  {extension.instructions}\n</ReactMarkdown>\n```\n\n资料来源：[desktop/src/components/InstallComponents.tsx](), [desktop/src/routes/installation-progress.tsx]()\n\n---\n\n## 数据流向架构\n\n```mermaid\ngraph TD\n    subgraph 用户层\n        A[CLI 命令]\n        B[Desktop GUI]\n    end\n    \n    subgraph 平台层\n        C[Extensions]\n        D[Core Engine]\n    end\n    \n    subgraph 数据层\n        E[Providers]\n        F[External APIs]\n    end\n    \n    A --> D\n    B --> D\n    D --> C\n    D --> E\n    E --> F\n    \n    style F fill:#ff9999\n    style D fill:#99ff99\n```\n\n---\n\n## 开发文档入口\n\n| 模块 | 文档链接 |\n|------|----------|\n| CLI | https://docs.openbb.co/cli |\n| Desktop | https://docs.openbb.co/desktop |\n| Platform | https://docs.openbb.co/platform |\n| 故障排除 | https://docs.openbb.co/odp/desktop/troubleshooting |\n\n资料来源：[desktop/src/routes/installation-progress.tsx](), [cli/README.md]()\n\n---\n\n## 总结\n\nOpenBB 项目采用清晰的 Monorepo 架构，将命令行工具、桌面应用和核心平台分离在独立目录中。`openbb_platform/` 目录下的插件化设计允许功能扩展，而 `desktop/` 目录则提供了完整的用户交互界面和环境管理能力。这种架构既保证了代码复用，又为不同使用场景提供了最优的交互方式。\n\n---\n\n<a id='page-3'></a>\n\n## 核心架构设计\n\n### 相关页面\n\n相关主题：[OBBject数据模型](#page-4), [数据提供者系统](#page-5), [扩展模块系统](#page-6)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [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)\n- [openbb_platform/extensions/platform_api/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/extensions/platform_api/README.md)\n- [openbb_platform/extensions/mcp_server/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/extensions/mcp_server/README.md)\n- [openbb_platform/providers/cftc/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/providers/cftc/README.md)\n- [openbb_platform/providers/imf/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/providers/imf/README.md)\n- [desktop/src/routes/installation-progress.tsx](https://github.com/OpenBB-finance/OpenBB/blob/main/desktop/src/routes/installation-progress.tsx)\n- [cli/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/cli/README.md)\n- [openbb_platform/extensions/commodity/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/extensions/commodity/README.md)\n</details>\n\n# 核心架构设计\n\n## 概述\n\nOpenBB 是一个开源的投资研究平台，旨在为全球用户提供投资研究和分析工具。该平台采用模块化架构设计，支持通过多种接口访问核心功能，包括命令行界面（CLI）、桌面应用程序和 REST API。\n\n平台的技术栈涵盖了从前端界面到后端数据处理的完整生态系统，核心架构围绕数据提供者（Provider）、扩展（Extension）和统一入口点（OpenBB Bridge，简称 obb）构建。\n\n资料来源：[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)\n\n---\n\n## 系统架构层次\n\nOpenBB 平台采用分层架构设计，各层之间通过清晰的接口进行通信：\n\n| 层次 | 名称 | 描述 |\n|------|------|------|\n| 表现层 | Presentation Layer | CLI、桌面应用、Workspace、Web UI |\n| 网关层 | Gateway Layer | REST API、MCP Server |\n| 核心层 | Core Layer | 命令路由、扩展加载、认证服务 |\n| 数据层 | Data Layer | Provider 注册表、查询执行器 |\n\n资料来源：[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)\n\n---\n\n## 核心组件\n\n### 2.1 OpenBB Bridge（obb）\n\nOpenBB Bridge 是平台的核心入口点，提供统一的 Python 接口供用户调用所有功能。用户通过 `obb` 对象访问不同的数据模块：\n\n```python\nfrom openbb import obb\n\n# 访问宏观经济数据\nobb.economy.gdp(country=\"Japan\")\n\n# 访问商品数据\nobb.commodity.price(\"gold\")\n\n# 访问期货数据\nobb.cftc.cot(code=\"CFTC_088695\")\n```\n\n资料来源：[openbb_platform/providers/cftc/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/providers/cftc/README.md)\n\n### 2.2 REST API 服务\n\nOpenBB Platform API 基于 FastAPI 构建，提供完整的 RESTful 接口。API 服务支持灵活的配置选项，包括服务器设置、CORS 策略、认证和授权等。\n\n#### API 配置参数\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| title | str | API 标题 |\n| description | str | API 描述 |\n| version | str | API 版本号 |\n| servers | list | 可用服务器列表 |\n| cors.allow_origins | list | 允许的源域名 |\n| cors.allow_methods | list | 允许的 HTTP 方法 |\n| cors.allow_headers | list | 允许的请求头 |\n\n资料来源：[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)\n\n### 2.3 Provider 体系\n\n数据提供者是平台获取各类金融数据的关键组件。每个 Provider 负责从特定数据源获取数据并将其标准化。\n\n#### Provider 端点示例\n\n| Provider | 主要端点 | 功能描述 |\n|----------|----------|----------|\n| CFTC | obb.cftc.cot, obb.cftc.cot_search | 商品期货交易委员会报告 |\n| IMF | obb.economy.*, obb.imf_utils.* | 国际货币基金组织数据 |\n\n资料来源：[openbb_platform/providers/cftc/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/providers/cftc/README.md)，[openbb_platform/providers/imf/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/providers/imf/README.md)\n\n---\n\n## 扩展机制\n\n### 3.1 扩展架构\n\nOpenBB 采用插件化架构，允许开发者通过扩展（Extension）来添加新功能。扩展可以是数据源、工具或服务。\n\n#### 扩展类型\n\n- **数据扩展**：提供新的数据源，如 news、commodity\n- **服务扩展**：提供额外服务，如 MCP Server、Platform API\n- **工具扩展**：提供分析工具和实用函数\n\n```bash\n# 安装扩展示例\npip install openbb-news\npip install openbb-commodity\n```\n\n资料来源：[openbb_platform/extensions/news/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/extensions/news/README.md)，[openbb_platform/extensions/commodity/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/extensions/commodity/README.md)\n\n### 3.2 MCP Server 扩展\n\nModel Context Protocol (MCP) Server 扩展允许将 OpenBB 平台的功能暴露为 MCP 工具，供 AI 助手使用。\n\n#### MCP 配置选项\n\n| 配置项 | 类型 | 说明 |\n|--------|------|------|\n| expose | Optional[bool] | 是否暴露为 MCP 工具 |\n| mcp_type | Optional[MCPType] | 工具类型：tool/resource/resource_template |\n| methods | Optional[list] | 暴露的 HTTP 方法 |\n\n资料来源：[openbb_platform/extensions/mcp_server/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/extensions/mcp_server/README.md)\n\n---\n\n## API 启动与配置\n\n### 4.1 启动方式\n\nOpenBB Platform API 可以通过多种方式启动：\n\n```bash\n# 标准启动\nopenbb-api\n\n# 可编辑模式（加载本地修改）\nopenbb-api --editable\n\n# 不构建 widgets.json\nopenbb-api --editable --no-build\n\n# 指定自定义 widgets.json 路径\nopenbb-api --widgets-json /path/to/widgets.json\n```\n\n资料来源：[openbb_platform/extensions/platform_api/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/extensions/platform_api/README.md)\n\n### 4.2 命令行参数\n\n| 参数 | 说明 |\n|------|------|\n| --app | 指定 FastAPI 实例文件路径 |\n| --name | FastAPI 实例名称，默认 'app' |\n| --factory | 标记实例为工厂函数 |\n| --editable | 可编辑模式 |\n| --build | 构建策略：overwrite/append/ignore |\n| --no-build | 不构建 widgets.json |\n| --exclude | 排除的 API 路径列表 |\n| --no-filter | 不过滤 widgets |\n| --widgets-json | 自定义 widgets.json 路径 |\n| --apps-json | 自定义 workspace_apps.json 路径 |\n\n资料来源：[openbb_platform/extensions/platform_api/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/extensions/platform_api/README.md)\n\n---\n\n## 桌面应用架构\n\n### 5.1 应用组件\n\n桌面应用程序基于 Tauri 框架构建，使用 React 作为前端框架，实现跨平台支持。\n\n#### 安装流程阶段\n\n| 阶段 | 步骤 | 描述 |\n|------|------|------|\n| version_select | Python 版本选择 | 用户选择 Python 环境版本 |\n| Miniforge 安装 | 环境管理器安装 | 安装 Miniforge 用于环境管理 |\n| 核心依赖 | OpenBB 环境 | 安装核心库和依赖项 |\n| extension_select | 扩展选择 | 用户选择需要安装的扩展 |\n\n资料来源：[desktop/src/routes/installation-progress.tsx](https://github.com/OpenBB-finance/OpenBB/blob/main/desktop/src/routes/installation-progress.tsx)\n\n### 5.2 后端处理\n\n桌面应用通过 Rust 后端处理敏感操作，包括证书生成和凭据管理：\n\n- OpenSSL 证书生成（.pem、.key、.p12）\n- 环境变量文件（.env）管理\n- Conda 配置文件（.condarc）\n\n资料来源：[desktop/src-tauri/src/tauri_handlers/credentials.rs](https://github.com/OpenBB-finance/OpenBB/blob/main/desktop/src-tauri/src/tauri_handlers/credentials.rs)\n\n---\n\n## CLI 架构\n\nOpenBB CLI 提供命令行界面的访问方式，用户通过交互式命令执行各类金融分析任务。\n\n### 主要功能模块\n\n| 模块 | 功能 |\n|------|------|\n| exe | 执行自动化脚本和例程 |\n| 自定义参数 | 支持通过 --input 传递多个参数 |\n\n```bash\n# 执行本地脚本\nopenbb exe -f /path/to/script.openbb\n\n# 执行远程脚本\nopenbb exe --url https://example.com/script.openbb\n\n# 带参数执行\nopenbb exe -f routine.openbb -i GME,AMC,BTC-USD\n```\n\n资料来源：[cli/openbb_cli/controllers/cli_controller.py](https://github.com/OpenBB-finance/OpenBB/blob/main/cli/openbb_cli/controllers/cli_controller.py)\n\n---\n\n## 数据流架构\n\n```mermaid\ngraph TD\n    A[用户请求] --> B{CLI / API / Desktop}\n    B --> C[OpenBB Bridge - obb]\n    C --> D[Router 路由层]\n    D --> E[Extension Loader 扩展加载]\n    D --> F[Provider Registry 提供者注册表]\n    F --> G[Query Executor 查询执行器]\n    G --> H[数据源 API]\n    H --> I[标准化数据返回]\n    I --> C\n```\n\n---\n\n## 安全与配置\n\n### 7.1 CORS 配置\n\nAPI 支持细粒度的跨域资源共享配置：\n\n```python\napp.add_middleware(\n    CORSMiddleware,\n    allow_origins=system.api_settings.cors.allow_origins,\n    allow_methods=system.api_settings.cors.allow_methods,\n    allow_headers=system.api_settings.cors.allow_headers,\n)\n```\n\n### 7.2 认证服务\n\n在开发模式下，系统包含认证服务路由：\n\n```python\nAppLoader.add_routers(\n    app=app,\n    routers=(\n        [AuthService().router, router_system, router_coverage, router_commands]\n        if Env().DEV_MODE\n        else (\n            [router_commands, router_coverage]\n            # 生产模式路由配置\n        )\n    ),\n)\n```\n\n资料来源：[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)\n\n---\n\n## 总结\n\nOpenBB 平台的核心架构围绕模块化、可扩展和统一入口三个原则设计。通过清晰的分层架构、灵活的扩展机制和完善的 API 服务，平台能够支持多种使用场景：\n\n- **数据消费者**：通过 CLI 或 Python API 获取金融数据\n- **开发者**：通过扩展机制添加新的数据源和工具\n- **企业用户**：通过 REST API 集成到现有系统\n- **AI 应用**：通过 MCP Server 集成 AI 助手能力\n\n这种架构设计确保了平台的高可用性、可维护性和可扩展性。\n\n---\n\n<a id='page-4'></a>\n\n## OBBject数据模型\n\n### 相关页面\n\n相关主题：[核心架构设计](#page-3), [数据提供者系统](#page-5)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [openbb_platform/core/openbb_core/app/model/obbject.py](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/core/openbb_core/app/model/obbject.py)\n- [openbb_platform/core/openbb_core/app/model/abstract/results.py](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/core/openbb_core/app/model/abstract/results.py)\n- [openbb_platform/core/openbb_core/provider/abstract/annotated_result.py](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/core/openbb_core/provider/abstract/annotated_result.py)\n- [openbb_platform/core/openbb_core/provider/abstract/data.py](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/core/openbb_core/provider/abstract/data.py)\n- [openbb_platform/core/openbb_core/provider/abstract/fetcher.py](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/core/openbb_core/provider/abstract/fetcher.py)\n</details>\n\n# OBBject数据模型\n\n## 概述\n\nOBBject是OpenBB Platform的核心数据模型，扮演着整个平台数据交互的中枢角色。作为一个统一的响应包装器，OBBject将各种数据源返回的原始数据封装为结构化的、可操作的对象，使得用户能够以一致的方式处理来自不同provider的金融数据。OBBject的设计遵循了类型安全和可扩展性的原则，通过泛型注解和抽象基类实现了高度灵活的查询-结果映射机制。\n\n在OpenBB Platform的架构中，OBBject位于应用层与provider层之间的关键位置。当用户通过`obb`对象发起数据请求时，底层会调用相应的fetcher获取数据，这些数据随后被封装为OBBject实例返回给用户。这种设计使得数据获取、数据转换和数据展示三个环节得以有效分离，从而提高了代码的可维护性和可测试性。\n\n## 核心组件架构\n\n### 类继承体系\n\nOBBject数据模型采用了多层次的类继承结构，以支持不同类型的数据处理需求。整个体系从基础的抽象结果类开始，逐步演化为最终的OBBject类，每一层都承担着特定的数据处理职责。这种层次化的设计允许开发者根据具体的业务需求创建专门化的数据模型，同时保持与核心框架的兼容性。\n\n抽象结果类定义了数据序列化的基本接口和属性转换机制，确保所有派生的数据模型都能以统一的方式进行数据导出和格式化。OBBject在此基础上进一步扩展，添加了与OpenBB生态系统交互所需的所有功能，包括元数据管理、参数跟踪和结果缓存等能力。\n\n### 数据流架构图\n\n```mermaid\ngraph TD\n    A[用户请求 obb.provider.endpoint] --> B[Fetcher获取原始数据]\n    B --> C[AbstractData模型验证]\n    C --> D[AnnotatedResult注解处理]\n    D --> E[Results基类封装]\n    E --> F[OBBject实例化]\n    F --> G[返回给用户]\n    \n    H[OBBject属性] --> F\n    H --> I[results 数据载荷]\n    H --> J[metadata 元信息]\n    H --> K[provider 来源标识]\n    H --> L[warnings 警告信息]\n```\n\n## OBBject类详解\n\n### 主要属性\n\nOBBject类封装了数据查询和响应所需的所有关键信息。这些属性共同构成了一个完整的数据响应单元，使用户能够全面了解数据的来源、状态和内容。属性设计遵循了最小惊讶原则，每个属性都有明确的语义定义和使用场景。\n\n| 属性名称 | 类型 | 说明 | 资料来源 |\n|:---------|:-----|:-----|:---------|\n| results | List[Model] | 查询返回的数据模型列表 | `obbject.py` |\n| provider | str | 数据提供者的唯一标识符 | `obbject.py` |\n| params | dict | 触发此结果的查询参数 | `obbject.py` |\n| metadata | dict | 附加的元数据信息 | `obbject.py` |\n| warnings | List[str] | 处理过程中的警告信息 | `obbject.py` |\n| chart | Optional[dict] | 图表配置数据 | `obbject.py` |\n\nresults属性是OBBject中最核心的数据载体，它包含了实际查询结果的列表。每个结果都是一个经过验证的数据模型实例，遵循Pydantic的数据校验规则。provider属性标识了数据的原始来源，这对于数据溯源和质量问题追踪至关重要。params属性完整记录了生成此结果所使用所有参数，便于结果复现和调试。\n\n### 数据转换方法\n\nOBBject提供了丰富的数据转换方法，使用户能够将内部数据模型转换为各种常用的数据格式。这些方法的设计充分考虑了易用性和性能，既支持简单的单行调用，也支持复杂的数据处理流水线操作。\n\nto_df方法是使用频率最高的数据转换接口，它将results列表转换为Pandas DataFrame对象，便于进行进一步的数据分析和可视化。该方法支持多种输出格式，包括标准宽格式和转置格式，用户可以通过参数控制是否包含索引列和如何处理嵌套数据结构。当结果包含时间序列数据时，to_df会自动设置时间索引，为后续的时间序列分析提供便利。\n\nto_dict方法提供了将数据导出为字典格式的能力，这对于需要JSON序列化的场景非常重要。该方法支持不同的字典结构选项，包括记录导向的列表结构、列导向的字典结构以及面向编程使用的面向对象结构。\n\n## Abstract Results抽象基类\n\n### results.py的设计理念\n\n抽象结果类定义在`openbb_core/app/model/abstract/results.py`中，它是所有具体结果模型的基类。这个抽象层承担着数据标准化的职责，确保来自不同数据源的数据能够以一致的方式被处理和使用。抽象结果类的设计遵循了组合优于继承的原则，通过组合各种数据处理功能模块来实现灵活的数据转换能力。\n\n该基类定义了一组标准化的数据处理方法，包括数据验证、格式转换、聚合计算等。这些方法的具体实现由派生类根据数据特性来完成，基类只定义调用接口和通用逻辑。这种设计使得新的数据模型可以快速获得完整的数据处理能力，而无需重复实现基础功能。\n\n```mermaid\nclassDiagram\n    class AbstractResults {\n        <<abstract>>\n        +results: List[Model]\n        +to_df()* Method\n        +to_dict()* Method\n        +validate()* Method\n        #_format_results() Method\n        #_process_warnings() Method\n    }\n    class OBBject {\n        +provider: str\n        +params: dict\n        +metadata: dict\n        +chart: Optional[dict]\n        +to_chart() Method\n        +to_excel() Method\n    }\n    AbstractResults <|-- OBBject\n```\n\n### 数据验证机制\n\n数据验证是Abstract Results层的核心功能之一。通过集成Pydantic的数据校验能力，OBBject确保所有返回给用户的都符合预定义的数据模型规范。验证过程在数据进入OBBject实例之前就会触发，任何不符合规范的数据都会被拒绝并抛出详细的验证错误信息。\n\n验证规则不仅检查数据类型和必填字段，还包括业务逻辑层面的约束验证。例如，对于股票价格数据，系统会验证价格不能为负数；对于日期范围查询，系统会验证结束日期不能早于开始日期。这种多层次的验证机制确保了数据的可靠性和一致性。\n\n## Provider数据抽象层\n\n### Annotated Result注解系统\n\nannotated_result.py中定义的注解系统为数据模型提供了元数据附加能力。这个系统允许开发者在定义数据模型时通过装饰器语法添加额外的元信息，如字段描述、单位信息、数据来源等。这些注解信息会在数据处理和展示过程中被自动提取和使用，提升了数据的可读性和可用性。\n\n注解系统支持多种类型的元数据定义。字段级别的注解可以指定单个数据字段的显示名称、单位、格式化规则等信息。模型级别的注解则定义了整个数据模型的元信息，包括数据来源、更新频率、数据质量评级等。这种多层次的注解设计使得数据模型既保持了清晰的代码结构，又包含了丰富的语义信息。\n\n### Abstract Data基类\n\n`openbb_core/provider/abstract/data.py`中定义的AbstractData是所有provider数据模型的基类。它封装了与底层数据源交互所需的基础功能，包括连接管理、请求构建、响应解析等。这个基类使用泛型参数来指定具体的数据模型类型，实现了类型安全的数据处理流程。\n\nAbstractData的设计充分考虑了扩展性。新的数据provider只需要继承这个基类并实现特定的接口方法，就可以快速接入OpenBB Platform的数据生态系统。基类提供了默认的错误处理机制、重试策略和日志记录功能，这些都可以通过配置进行自定义。\n\n## Fetcher抽象层\n\n### fetcher.py的作用\n\n`openbb_core/provider/abstract/fetcher.py`中定义的Fetcher是数据获取的核心抽象层。它封装了从原始数据源到标准化OBBject之间的所有转换逻辑。Fetcher的设计遵循了单一职责原则，每个fetcher实例只负责处理一个特定的数据endpoint，这种设计使得系统具有优秀的可维护性和可测试性。\n\nFetcher的工作流程包括参数验证、请求构建、响应获取、数据解析、模型验证和结果封装六个主要阶段。每个阶段都有明确的输入输出定义和错误处理策略。当任何一个阶段出现异常时，Fetcher会捕获异常并进行适当的处理，最终返回一个包含错误信息的OBBject实例，而不是直接抛出异常。\n\n### 请求-响应生命周期\n\n```mermaid\nsequenceDiagram\n    participant U as 用户\n    participant O as OBBject\n    participant F as Fetcher\n    participant P as Provider API\n    participant D as Data Model\n    \n    U->>O: 发起查询请求\n    O->>F: 传递参数\n    F->>F: 参数验证\n    F->>P: 构建并发送HTTP请求\n    P-->>F: 返回原始数据\n    F->>D: 创建Data Model实例\n    D->>D: 数据验证\n    F->>O: 封装为OBBject\n    O-->>U: 返回结果\n```\n\n## 使用示例\n\n### 基础数据查询\n\n```python\nfrom openbb import obb\n\n# 查询标准普尔500相关数据\nresult = obb.index.sp500_multiples(limit=10)\n\n# 转换为DataFrame进行分析\ndf = result.to_df()\n\n# 查看元数据信息\nprint(f\"数据来源: {result.provider}\")\nprint(f\"查询参数: {result.params}\")\nprint(f\"更新时间: {result.metadata}\")\n```\n\n### 数据导出操作\n\nOBBject支持多种数据导出格式，满足不同场景的使用需求。to_excel方法可以将数据导出为Excel文件，同时支持多个工作表的创建和格式化。to_csv方法提供了轻量级的CSV导出功能，适用于数据备份和迁移场景。\n\n```python\n# 导出为Excel\nresult.to_excel(\"output.xlsx\", sheet_name=\"data\")\n\n# 导出为CSV\nresult.to_csv(\"output.csv\", index=False)\n\n# 获取字典格式\ndata_dict = result.to_dict(orientation=\"records\")\n```\n\n## 最佳实践\n\n### 参数管理\n\n在使用OBBject时，合理管理查询参数是确保结果可复现的关键。建议在发起查询前显式声明所有非默认参数，并将这些参数与结果一起保存。这样做不仅便于后续的问题排查，也为自动化测试提供了可验证的输入输出对。\n\n### 错误处理\n\n虽然OBBject会尝试封装所有错误信息，但在编写健壮的应用程序时，仍建议实现额外的错误处理逻辑。通过检查warnings属性和验证results列表的非空性，可以优雅地处理各种异常情况。\n\n### 性能优化\n\n对于大量数据的查询和处理，应当注意OBBject的内存占用情况。to_df等转换方法会创建新的数据副本，在处理大规模数据集时可能带来显著的性能开销。在这种情况下，可以考虑使用流式处理或分页查询的方式减少内存压力。\n\n---\n\n<a id='page-5'></a>\n\n## 数据提供者系统\n\n### 相关页面\n\n相关主题：[核心架构设计](#page-3), [OBBject数据模型](#page-4), [扩展模块系统](#page-6)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [openbb_platform/providers](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/providers)\n- [openbb_platform/core/openbb_core/provider/registry_map.py](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/core/openbb_core/provider/registry_map.py)\n- [openbb_platform/core/openbb_core/provider/provider_interface.py](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/core/openbb_core/provider/provider_interface.py)\n- [openbb_platform/core/openbb_core/provider/standard_models](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/core/openbb_core/provider/standard_models)\n- [openbb_platform/providers/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/providers/README.md)\n- [openbb_platform/providers/fmp/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/providers/fmp/README.md)\n- [openbb_platform/providers/government_us/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/providers/government_us/README.md)\n- [openbb_platform/providers/tmx/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/providers/tmx/README.md)\n- [openbb_platform/providers/cftc/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/providers/cftc/README.md)\n</details>\n\n# 数据提供者系统\n\n## 概述\n\nOpenBB Platform 的数据提供者系统（Provider System）是平台的核心架构组件之一，负责集成和管理来自多个外部数据源的市场数据、金融信息和经济指标。该系统采用模块化设计，允许开发者通过实现标准化的接口来添加新的数据提供者，同时保证上层应用代码的稳定性和一致性。\n\n数据提供者系统的设计目标包括：\n\n- **多数据源集成**：支持从多个第三方金融数据提供商获取数据\n- **统一数据格式**：通过标准模型（Standard Models）规范数据结构\n- **灵活的扩展机制**：允许社区贡献新的提供者\n- **透明的数据路由**：根据配置和可用性自动选择数据源\n\n资料来源：[openbb_platform/providers/README.md]()\n\n## 架构设计\n\n### 系统层次结构\n\n```mermaid\ngraph TB\n    subgraph \"应用层 (Application Layer)\"\n        CLI[CLI 客户端]\n        REST_API[REST API 服务]\n        MCP[MCP 服务器]\n        DESKTOP[桌面应用]\n    end\n    \n    subgraph \"核心层 (Core Layer)\"\n        OBB[openbb 模块]\n        STANDARD_MODELS[标准模型]\n        REGISTRY[提供者注册表]\n        INTERFACE[提供者接口]\n    end\n    \n    subgraph \"提供者层 (Provider Layer)\"\n        FMP[Financial Modeling Prep]\n        TMX[TMX Provider]\n        CFTC[CFTC Provider]\n        GOV_US[US Government]\n        CUSTOM[自定义提供者]\n    end\n    \n    CLI --> OBB\n    REST_API --> OBB\n    MCP --> OBB\n    DESKTOP --> OBB\n    \n    OBB --> STANDARD_MODELS\n    OBB --> REGISTRY\n    OBB --> INTERFACE\n    \n    INTERFACE --> FMP\n    INTERFACE --> TMX\n    INTERFACE --> CFTC\n    INTERFACE --> GOV_US\n    INTERFACE --> CUSTOM\n```\n\n### 目录结构规范\n\n每个数据提供者应遵循统一的目录结构：\n\n```\nopenbb_platform\n└───providers\n    └───<provider_name>\n        ├── README.md              # 提供者说明文档\n        ├── pyproject.toml        # Python 项目配置\n        ├── poetry.lock           # 依赖锁定文件\n        ├── tests/                 # 测试目录\n        └── openbb_<provider_name>\n            ├── __init__.py\n            ├── models/\n            │   ├── <some_model>.py\n            │   └── ...\n            └── utils/\n                ├── <some_helper>.py\n                └── ...\n            └── routines/\n                └── <routine_files>.py\n```\n\n资料来源：[openbb_platform/providers/README.md]()\n\n## 提供者注册机制\n\n### 注册表映射\n\nOpenBB 使用 `registry_map.py` 维护所有已注册提供者的映射关系。注册表负责：\n\n- 追踪可用提供者及其能力\n- 管理提供者与端点的关联\n- 处理提供者的加载和初始化\n\n### 提供者接口\n\n所有数据提供者必须实现 `provider_interface.py` 中定义的标准接口：\n\n```python\n# 伪代码示例\nclass ProviderInterface:\n    def __init__(self):\n        self.name: str\n        self.description: str\n        self.credentials: List[str]\n        self.endpoints: Dict[str, Endpoint]\n    \n    def get_data(self, endpoint: str, **kwargs) -> Any:\n        \"\"\"获取数据的主方法\"\"\"\n        pass\n    \n    def validate_credentials(self) -> bool:\n        \"\"\"验证 API 凭证\"\"\"\n        pass\n```\n\n资料来源：[openbb_platform/core/openbb_core/provider/provider_interface.py]()\n\n## 标准模型系统\n\n### 标准模型定义\n\n标准模型（Standard Models）位于 `openbb_platform/core/openbb_core/provider/standard_models` 目录，定义了平台通用的数据结构：\n\n| 模型类别 | 说明 | 示例 |\n|---------|------|------|\n| Equity Models | 股票相关数据 | 股价、财报、估值 |\n| Fixed Income | 固定收益数据 | 国债收益率、债券价格 |\n| Commodity | 商品数据 | 期货价格、供需报告 |\n| Derivatives | 衍生品数据 | 期权链、期货合约 |\n| Macroeconomic | 宏观经济数据 | GDP、CPI、利率 |\n\n### 数据转换流程\n\n```mermaid\ngraph LR\n    A[原始 API 响应] --> B[Provider Model]\n    B --> C[数据清洗验证]\n    C --> D[Standard Model]\n    D --> E[用户端数据]\n    \n    style A fill:#ffcccc\n    style D fill:#ccffcc\n    style E fill:#ccccff\n```\n\n## 现有提供者一览\n\n### 官方提供者\n\n#### Financial Modeling Prep (FMP)\n\nFMP 提供者集成 Financial Modeling Prep 数据服务：\n\n```bash\npip install openbb-fmp\n```\n\n覆盖功能：\n- 股票报价和历史数据\n- 财务报表分析\n- 估值指标\n- 内部人交易\n\n资料来源：[openbb_platform/providers/fmp/README.md]()\n\n#### US Government\n\nUS Government 提供者整合美国政府公开数据：\n\n```bash\npip install openbb-us-government\n```\n\n覆盖服务：\n- `obb.commodity.psd_report` - 供需报告\n- `obb.commodity.psd_data` - 供需数据\n- `obb.fixed_income.government.treasury_auctions` - 国债拍卖\n- `obb.fixed_income.government.treasury_prices` - 国债价格\n\n此提供者无需注册即可使用。\n\n资料来源：[openbb_platform/providers/government_us/README.md]()\n\n#### CFTC (商品期货交易委员会)\n\nCFTC 提供者获取美国商品期货交易委员会报告：\n\n```python\nfrom openbb import obb\n\n# 搜索合约\nsearch_results = obb.cftc.cot_search(query=\"gold\")\nprint(search_results.to_df())\n\n# 获取持仓报告\nreport = obb.cftc.cot(code=\"CFTC_088695\", measure=\"percent_of_oi\", limit=4)\nprint(report.to_df().T)\n```\n\n覆盖端点：\n- `obb.cftc.cot` - COT 报告\n- `obb.cftc.cot_search` - COT 搜索\n\n资料来源：[openbb_platform/providers/cftc/README.md]()\n\n#### TMX Provider\n\nTMX 提供者由社区维护，提供加拿大金融市场数据：\n\n```bash\npip install openbb-tmx\n```\n\n覆盖功能：\n- `.derivatives.options.chains` - 期权链\n- `.equity.calendar.earnings` - 财报日历\n- `.equity.estimates.consensus` - 共识预期\n- `.equity.discovery.gainers` - 涨跌幅榜\n- `.equity.fundamental.dividends` - 股息数据\n- `.equity.price.historical` - 历史价格（日/周/月/分钟）\n- `.equity.search` - 股票搜索\n\n资料来源：[openbb_platform/providers/tmx/README.md]()\n\n### 社区提供者\n\n社区开发者可以创建和发布自定义提供者，标准扩展名格式为 `openbb-<provider_name>`。\n\n## 扩展集成\n\n### 扩展与提供者的关系\n\n```mermaid\ngraph TD\n    EXT[OpenBB Extension] --> DEP[声明 Provider 依赖]\n    DEP --> LOAD[动态加载]\n    LOAD --> REGISTRY[注册到 Registry]\n    REGISTRY --> AVAILABLE[可用端点]\n```\n\n### MCP 服务器集成\n\n通过 `openapi_extra.mcp_config` 字典可以精细控制 MCP 工具暴露：\n\n| 配置项 | 类型 | 说明 |\n|-------|------|------|\n| `expose` | `Optional[bool]` | 设为 False 完全隐藏路由 |\n| `mcp_type` | `Optional[MCPType]` | 工具类型：`\"tool\"`, `\"resource\"`, `\"resource_template\"` |\n| `methods` | `Optional[list[HTTPMethod]]` | 暴露的 HTTP 方法列表 |\n\n资料来源：[openbb_platform/extensions/mcp_server/README.md]()\n\n## 使用方式\n\n### Python 直接调用\n\n```python\nfrom openbb import obb\n\n# 使用默认提供者获取数据\nresult = obb.equity.price.historical(symbol=\"AAPL\", start_date=\"2024-01-01\")\n\n# 转换为 DataFrame\ndf = result.to_df()\n```\n\n### REST API 访问\n\n启动本地 API 服务器：\n\n```bash\nopenbb-api\n```\n\nAPI 端点格式：`GET /api/v1/<provider>/<endpoint>`\n\n### MCP 工具调用\n\n在 MCP 配置中定义提示后，可通过工具调用数据端点：\n\n```json\n{\n  \"description\": \"Generate a brief summary of GDP for a country.\",\n  \"messages\": [\n    {\n      \"role\": \"user\",\n      \"content\": {\n        \"type\": \"text\",\n        \"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.\"\n      }\n    }\n  ]\n}\n```\n\n资料来源：[openbb_platform/extensions/mcp_server/README.md]()\n\n## 配置与凭证管理\n\n### API 密钥设置\n\n桌面应用提供可视化界面管理 API 密钥：\n\n```typescript\n// 支持导入格式\naccept=\".json,.env\"\n```\n\n凭证文件示例（JSON 格式）：\n```json\n{\n  \"FMP_API_KEY\": \"your_api_key_here\"\n}\n```\n\n### 环境变量配置\n\n部分提供者支持通过环境变量配置：\n\n```bash\nexport FMP_API_KEY=\"your_api_key\"\nexport TMX_API_KEY=\"your_api_key\"\n```\n\n## 开发新提供者\n\n### 开发步骤\n\n1. **创建目录结构**：遵循标准目录布局\n2. **实现 Provider 类**：继承标准 Provider 接口\n3. **定义数据模型**：使用 Pydantic 定义请求/响应模型\n4. **实现工具函数**：处理 API 调用和数据转换\n5. **编写 README**：提供安装和使用说明\n6. **添加测试**：覆盖主要功能路径\n\n### 模型定义规范\n\n```python\nfrom pydantic import BaseModel, Field\nfrom typing import Optional, List\nfrom datetime import date\n\nclass EquityHistoricalData(BaseModel):\n    symbol: str = Field(description=\"股票代码\")\n    date: date = Field(description=\"交易日期\")\n    open: float = Field(description=\"开盘价\")\n    high: float = Field(description=\"最高价\")\n    low: float = Field(description=\"最低价\")\n    close: float = Field(description=\"收盘价\")\n    volume: int = Field(description=\"成交量\")\n```\n\n### 注册提供者\n\n新提供者需在安装后注册到系统：\n\n```python\nfrom openbb_core.provider.registry import Registry\n\nRegistry.register(\"my_provider\", MyProviderClass)\n```\n\n## 技术限制与注意事项\n\n### 数据质量\n\n- 平台数据平台中包含的数据**未必完全准确**\n- 交易金融工具存在高风险，包括损失全部投资金额的可能\n- 数据使用需自行承担风险\n\n### 许可与免责\n\nOpenBB 和任何数据提供者不对以下损失承担责任：\n- 交易活动导致的损失\n- 对信息内容的依赖导致的损失\n\n所有第三方商标、品牌归各自所有者所有。\n\n资料来源：[README.md]()\n\n## 相关资源\n\n| 资源类型 | 链接 |\n|---------|------|\n| 官方文档 | https://docs.openbb.co/ |\n| 平台参考 | https://docs.openbb.co/python/reference |\n| 问题反馈 | https://github.com/OpenBB-finance/OpenBB/issues |\n| Discord 社区 | https://openbb.co/discord |\n\n---\n\n<a id='page-6'></a>\n\n## 扩展模块系统\n\n### 相关页面\n\n相关主题：[核心架构设计](#page-3), [扩展开发指南](#page-9)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [openbb_platform/extensions/equity/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/extensions/equity)\n- [openbb_platform/extensions/news/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/extensions/news)\n- [openbb_platform/extensions/mcp_server/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/extensions/mcp_server)\n- [openbb_platform/extensions/commodity/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/extensions/commodity)\n- [openbb_platform/extensions/regulators/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/extensions/regulators)\n- [openbb_platform/providers/government_us/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/providers/government_us)\n- [openbb_platform/providers/fmp/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/providers/fmp)\n- [openbb_platform/providers/tmx/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/providers/tmx)\n- [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)\n</details>\n\n# 扩展模块系统\n\n## 概述\n\nOpenBB Platform 采用模块化的扩展系统架构，允许通过安装扩展包来增强平台功能。扩展模块是独立的 Python 包，可向平台添加特定领域的数据源、工具和功能。这种设计使平台核心保持精简，同时支持灵活的功能扩展。\n\n扩展系统分为两大类别：\n\n| 类别 | 说明 | 示例 |\n|------|------|------|\n| **扩展（Extensions）** | 提供功能模块和子模块 | equity、crypto、fixedincome、technical、economy |\n| **数据提供者（Providers）** | 集成外部数据源 | fmp、tmx、government_us、multpl |\n\n资料来源：[openbb_platform/extensions/equity/README.md]()\n\n## 系统架构\n\n### 扩展与提供者关系\n\n```mermaid\ngraph TD\n    A[\"OpenBB Platform Core<br/>openbb_core\"] --> B[\"扩展模块<br/>Extensions\"]\n    A --> C[\"数据提供者<br/>Providers\"]\n    B --> B1[\"equity<br/>股票\"] \n    B --> B2[\"crypto<br/>加密货币\"]\n    B --> B3[\"fixedincome<br/>固定收益\"]\n    B --> B4[\"technical<br/>技术分析\"]\n    B --> B5[\"economy<br/>宏观经济\"]\n    B --> B6[\"news<br/>新闻\"]\n    B --> B7[\"commodity<br/>大宗商品\"]\n    B --> B8[\"regulators<br/>监管机构\"]\n    C --> C1[\"fmp<br/>Financial Modeling Prep\"]\n    C --> C2[\"tmx<br/>TMX/tsx\"]\n    C --> C3[\"government_us<br/>美国政府数据\"]\n    C --> C4[\"multpl<br/>Multpl数据\"]\n```\n\n### 安装机制\n\n扩展模块通过 pip 包管理器安装，安装命令统一为 `pip install openbb-<模块名>`。\n\n| 扩展名称 | 安装命令 | 功能说明 |\n|----------|----------|----------|\n| equity | `pip install openbb-equity` | 股票市场数据工具 |\n| crypto | `pip install openbb-crypto` | 加密货币数据 |\n| fixedincome | `pip install openbb-fixedincome` | 固定收益市场数据 |\n| technical | `pip install openbb-technical` | 技术分析指标 |\n| economy | `pip install openbb-economy` | 宏观经济数据 |\n| news | `pip install openbb-news` | 新闻数据 |\n| commodity | `pip install openbb-commodity` | 大宗商品数据 |\n| regulators | `pip install openbb-regulators` | 全球市场监管数据 |\n\n资料来源：[openbb_platform/extensions/commodity/README.md]()\n\n## 扩展模块详细说明\n\n### Equity 扩展\n\nEquity 扩展提供股票市场数据工具，是平台最核心的扩展之一。\n\n**子模块结构：**\n\n| 子模块 | 功能 |\n|--------|------|\n| `calendar` | 股票特定事件日历 |\n| `compare` | 同业公司对比分析 |\n| `darkpool` | 暗池空头数据 |\n| `discovery` | 股票发现/筛选 |\n| `estimates` | 分析师预测 |\n| `fundamental` | 基本面分析 |\n| `options` | 期权数据 |\n| `ownership` | 内部和外部所有权 |\n| `price` | 历史价格数据 |\n| `shorts` | 做空数据 |\n\n资料来源：[openbb_platform/extensions/equity/README.md]()\n\n### News 扩展\n\nNews 扩展为平台提供新闻数据接口，支持获取金融新闻和市场资讯。\n\n资料来源：[openbb_platform/extensions/news/README.md]()\n\n### Commodity 扩展\n\nCommodity 扩展提供大宗商品相关的命令和数据接口。\n\n资料来源：[openbb_platform/extensions/commodity/README.md]()\n\n### Regulators 扩展\n\nRegulators 扩展提供来自全球市场监管机构的数据结构，用于查询各市场的监管信息。\n\n资料来源：[openbb_platform/extensions/regulators/README.md]()\n\n## 数据提供者\n\n数据提供者是扩展系统的核心组件，负责与外部数据源集成。\n\n### Provider 安装模式\n\n所有数据提供者遵循统一的安装模式：\n\n```bash\npip install openbb-<provider-name>\n```\n\n### 主要数据提供者\n\n#### Financial Modeling Prep (fmp)\n\n集成 [Financial Modeling Prep](https://site.financialmodelingprep.com/) 数据源。\n\n资料来源：[openbb_platform/providers/fmp/README.md]()\n\n#### TMX Provider\n\n集成 TMX（多伦多证券交易所）数据，提供加拿大市场数据。\n\n**覆盖的命令：**\n\n- `.derivatives.options.chains` - 期权链数据（历史EOD数据从2009年开始）\n- `.equity.calendar.earnings` - 财报日历\n- `.equity.estimates.consensus` - 一致预期\n- `.equity.discovery.gainers` - 涨幅榜\n- `.equity.fundamental.dividends` - 分红数据\n- `.equity.fundamental.filings` - 监管文件\n- `.equity.ownership.insider_trading` - 内部人交易\n- `.equity.price.quote` - 当前报价\n- `.equity.price.historical` - 历史价格（日/周/月及任意分钟间隔）\n\n资料来源：[openbb_platform/providers/tmx/README.md]()\n\n#### Government US Provider\n\n集成美国政府数据（来自 [data.gov](https://data.gov)），提供无需注册的服务数据。\n\n**覆盖的命令：**\n\n| 命令 | 说明 |\n|------|------|\n| `obb.commodity.psd_report` | 供需报告 |\n| `obb.commodity.psd_data` | 供需数据 |\n| `obb.commodity.weather_bulletins` | 天气公报 |\n| `obb.commodity.weather_bulletins_download` | 天气公报下载 |\n| `obb.fixed_income.government.treasury_auctions` | 国债拍卖 |\n| `obb.fixed_income.government.treasury_prices` | 国债价格 |\n\n资料来源：[openbb_platform/providers/government_us/README.md]()\n\n#### Multpl Provider\n\n集成 [multpl.com](https://multpl.com) 数据源。\n\n**覆盖的命令：**\n\n- `obb.index.sp500_multiples` - S&P 500 估值倍数\n\n资料来源：[openbb_platform/providers/multpl/README.md]()\n\n## MCP 服务器集成\n\n扩展系统支持通过 MCP（Model Context Protocol）协议将 API 路由暴露为 MCP 工具。\n\n### MCP 配置模型\n\n使用 `MCPConfigModel` 进行细粒度控制：\n\n```python\nfrom openbb_mcp_server.models.mcp_config import MCPConfigModel\n```\n\n**配置属性：**\n\n| 属性 | 类型 | 说明 |\n|------|------|------|\n| `expose` | `Optional[bool]` | 设为 `False` 可完全隐藏路由 |\n| `mcp_type` | `Optional[MCPType]` | 类型：`\"tool\"`、`\"resource\"` 或 `\"resource_template\"` |\n| `methods` | `Optional[list[HTTPMethod]]` | 指定要暴露的 HTTP 方法 |\n\n资料来源：[openbb_platform/extensions/mcp_server/README.md]()\n\n### MCP 配置使用流程\n\n```mermaid\ngraph LR\n    A[\"FastAPI Route<br/>openapi_extra\"] --> B[\"MCPConfigModel<br/>验证配置\"]\n    B --> C{\"expose=True?\"}\n    C -->|是| D[\"MCP Server<br/>暴露为工具\"]\n    C -->|否| E[\"隐藏路由\"]\n    D --> F[\"MCP 客户端调用\"]\n```\n\n## REST API 集成\n\n扩展模块通过 `openbb_core` 的 REST API 与平台集成。API 使用 FastAPI 框架构建。\n\n### API 配置\n\n```python\napp = FastAPI(\n    title=system.api_settings.title,\n    description=system.api_settings.description,\n    version=system.api_settings.version,\n    servers=[\n        {\"url\": s.url, \"description\": s.description}\n        for s in system.api_settings.servers\n    ],\n)\n```\n\n### CORS 中间件\n\n平台启用 CORS 中间件，允许跨域请求：\n\n```python\napp.add_middleware(\n    CORSMiddleware,\n    allow_origins=system.api_settings.cors.allow_origins,\n    allow_methods=system.api_settings.cors.allow_methods,\n    allow_headers=system.api_settings.cors.allow_headers,\n)\n```\n\n### 路由注册\n\n扩展通过 `AppLoader.add_routers()` 注册路由：\n\n```python\nAppLoader.add_routers(\n    app=app,\n    routers=(\n        [AuthService().router, router_system, router_coverage, router_commands]\n        if Env().DEV_MODE\n        else ([router_commands, router_coverage] if ...)\n    ),\n)\n```\n\n资料来源：[openbb_platform/core/openbb_core/api/rest_api.py]()\n\n## 开发指南\n\n### 创建新扩展\n\n1. 在 `openbb_platform/extensions/` 目录下创建扩展目录\n2. 创建 `README.md` 文档\n3. 实现扩展功能模块\n4. 使用标准安装命令发布\n\n### 扩展命名规范\n\n| 扩展类型 | 包名格式 | 示例 |\n|----------|----------|------|\n| 官方扩展 | `openbb-<name>` | `openbb-equity` |\n| 第三方扩展 | `openbb-<name>` | `openbb-tmx` |\n\n### 依赖管理\n\n扩展应声明所有必要依赖，并通过 `requirements.txt` 或 `pyproject.toml` 管理。\n\n## 总结\n\nOpenBB Platform 的扩展模块系统提供了高度模块化和可扩展的架构：\n\n- **核心分离**：平台核心与功能扩展解耦\n- **统一安装**：通过 pip 统一管理\n- **多数据源**：支持多种外部数据提供者\n- **协议支持**：通过 MCP 协议暴露工具\n- **RESTful API**：通过 FastAPI 提供标准接口\n\n扩展系统使 OpenBB 能够持续添加新功能，同时保持核心框架的稳定性和可维护性。\n\n---\n\n<a id='page-7'></a>\n\n## 命令行界面(CLI)\n\n### 相关页面\n\n相关主题：[桌面应用程序](#page-8), [REST API与部署](#page-10)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [cli/openbb_cli/cli.py](https://github.com/OpenBB-finance/OpenBB/blob/main/cli/openbb_cli/cli.py) - **未在当前上下文中提供**\n- [cli/openbb_cli/controllers/cli_controller.py](https://github.com/OpenBB-finance/OpenBB/blob/main/cli/openbb_cli/controllers/cli_controller.py) - **未在当前上下文中提供**\n- [cli/openbb_cli/controllers/base_controller.py](https://github.com/OpenBB-finance/OpenBB/blob/main/cli/openbb_cli/controllers/base_controller.py) - **未在当前上下文中提供**\n- [cli/openbb_cli/argparse_translator](https://github.com/OpenBB-finance/OpenBB/blob/main/cli/openbb_cli/argparse_translator) - **未在当前上下文中提供**\n- [cli/openbb_cli/session.py](https://github.com/OpenBB-finance/OpenBB/blob/main/cli/openbb_cli/session.py) - **未在当前上下文中提供**\n\n</details>\n\n# 命令行界面(CLI)\n\n> ⚠️ **文档状态**: 当前上下文中未包含 CLI 源码文件的实际内容。以下文档基于已知的 OpenBB CLI 架构信息生成，实际实现细节可能与描述有所不同。建议查阅实际源码以获取准确信息。\n\n## 概述\n\nOpenBB CLI 是 OpenBB 平台的终端用户界面，为金融数据分析提供了命令行操作方式。该界面基于 Python 开发，通过控制器架构实现了模块化的命令处理系统。CLI 作为 OpenBB 平台的三大入口之一（其他两者为桌面应用和 API），为专业用户提供了高效、灵活的交互方式。\n\n## 核心架构\n\nOpenBB CLI 采用分层控制器架构，主要由以下几个核心组件构成：\n\n| 组件 | 文件位置 | 职责 |\n|------|----------|------|\n| CLI 入口 | `cli.py` | 应用初始化、主循环、命令路由 |\n| 主控制器 | `cli_controller.py` | 顶层命令处理、菜单导航 |\n| 基类控制器 | `base_controller.py` | 通用控制器功能、命令注册机制 |\n| 参数解析 | `argparse_translator` | 命令行参数到内部调用的转换 |\n| 会话管理 | `session.py` | 用户会话状态、上下文维护 |\n\n## 命令解析流程\n\nCLI 的命令解析采用多层级转发机制：\n\n```mermaid\ngraph TD\n    A[用户输入命令] --> B[cli.py 主循环]\n    B --> C[argparse_translator 参数解析]\n    C --> D[cli_controller 路由分发]\n    D --> E{命令类型判断}\n    E -->|主命令| F[主控制器处理]\n    E -->|功能模块| G[子控制器处理]\n    F --> H[执行对应功能]\n    G --> I[调用 Platform API]\n    H --> J[返回结果到终端]\n    I --> J\n```\n\n## 会话管理\n\n会话模块负责维护用户在 CLI 会话期间的状态信息，包括：\n\n- 当前工作目录和路径上下文\n- 用户偏好设置\n- 命令历史记录\n- 缓存的数据和查询结果\n\n## 命令控制器\n\n### 主控制器 (cli_controller)\n\n主控制器负责处理顶级命令，包括帮助信息显示、系统设置、以及各功能模块的入口导航。\n\n### 基类控制器 (base_controller)\n\n所有功能模块控制器继承自基类控制器，基类提供了：\n\n- 动态命令注册\n- 参数验证和转换\n- 输出格式化\n- 错误处理和提示\n\n## 安装与使用\n\nCLI 通过 pip 或 conda 安装：\n\n```bash\npip install openbb\n# 或\nconda install openbb-cli\n```\n\n启动 CLI：\n\n```bash\nopenbb\n```\n\n## 相关资料\n\n由于当前上下文未包含 CLI 源码文件的具体内容，建议直接查阅以下源码文件以获取准确的实现细节：\n\n- `cli/openbb_cli/cli.py` - CLI 主入口\n- `cli/openbb_cli/controllers/cli_controller.py` - 主控制器实现\n- `cli/openbb_cli/controllers/base_controller.py` - 基类控制器\n- `cli/openbb_cli/argparse_translator/` - 参数解析模块\n- `cli/openbb_cli/session.py` - 会话管理\n\n---\n\n<a id='page-8'></a>\n\n## 桌面应用程序\n\n### 相关页面\n\n相关主题：[命令行界面(CLI)](#page-7), [REST API与部署](#page-10)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [desktop/src-tauri/src/main.rs](https://github.com/OpenBB-finance/OpenBB/blob/main/desktop/src-tauri/src/main.rs)\n- [desktop/src-tauri/src/tauri_handlers](https://github.com/OpenBB-finance/OpenBB/blob/main/desktop/src-tauri/src/tauri_handlers)\n- [desktop/src/main.tsx](https://github.com/OpenBB-finance/OpenBB/blob/main/desktop/src/main.tsx)\n- [desktop/src/routes](https://github.com/OpenBB-finance/OpenBB/blob/main/desktop/src/routes)\n- [desktop/src-tauri/tauri.conf.json](https://github.com/OpenBB-finance/OpenBB/blob/main/desktop/src-tauri/tauri.conf.json)\n</details>\n\n# 桌面应用程序\n\n## 概述\n\nOpenBB 桌面应用程序是一个基于 Tauri 框架构建的跨平台桌面客户端，采用 React + TypeScript 作为前端技术栈，后端使用 Rust 实现高性能的系统级交互。该应用程序为用户提供了一个功能完整的图形界面，用于管理 OpenBB 环境、安装扩展、配置 API 密钥以及启动和管理后端服务。\n\n桌面应用程序的核心职责包括：环境生命周期管理、Python 版本选择、扩展安装与卸载、API 密钥安全存储、后端进程控制以及 OpenSSL 证书生成等功能。\n\n## 技术架构\n\n### 框架技术栈\n\n| 层级 | 技术 | 职责 |\n|------|------|------|\n| 前端框架 | React 18 + TypeScript | 用户界面渲染与交互逻辑 |\n| 状态管理 | React Hooks | 组件状态与副作用管理 |\n| UI 组件库 | Tailwind CSS + 自定义组件 | 样式与交互设计 |\n| 桌面框架 | Tauri 2.x | 原生系统集成与窗口管理 |\n| 后端运行时 | Rust | 高性能系统调用与 IPC |\n| Python 环境 | Miniforge | Python 环境隔离与管理 |\n\n### 架构层次图\n\n```mermaid\ngraph TD\n    A[用户界面层] --> B[路由层 desktop/src/routes]\n    B --> C[组件层 desktop/src/components]\n    C --> D[Tauri IPC 层]\n    D --> E[Rust 后端 desktop/src-tauri/src]\n    E --> F[Miniforge Python 环境]\n    E --> G[系统文件系统]\n    E --> H[进程管理]\n```\n\n## 核心模块\n\n### 1. 路由系统\n\n应用程序使用 React Router 进行路由管理，主要路由包括：\n\n| 路由路径 | 组件文件 | 功能描述 |\n|----------|----------|----------|\n| `/setup` | setup.tsx | 初始安装配置 |\n| `/installation-progress` | installation-progress.tsx | 安装进度展示 |\n| `/environments` | environments.tsx | 环境管理 |\n| `/backends` | backends.tsx | 后端服务配置 |\n| `/api-keys` | api-keys.tsx | API 密钥管理 |\n\n资料来源：[desktop/src/routes/setup.tsx](https://github.com/OpenBB-finance/OpenBB/blob/main/desktop/src/routes/setup.tsx)\n资料来源：[desktop/src/routes/environments.tsx](https://github.com/OpenBB-finance/OpenBB/blob/main/desktop/src/routes/environments.tsx)\n资料来源：[desktop/src/routes/backends.tsx](https://github.com/OpenBB-finance/OpenBB/blob/main/desktop/src/routes/backends.tsx)\n资料来源：[desktop/src/routes/api-keys.tsx](https://github.com/OpenBB-finance/OpenBB/blob/main/desktop/src/routes/api-keys.tsx)\n\n### 2. 安装与设置流程\n\n初始设置流程（setup.tsx）负责收集用户配置信息：\n\n```mermaid\ngraph LR\n    A[选择安装目录] --> B[选择用户数据目录]\n    B --> C[验证目录路径]\n    C --> D[初始化安装进程]\n```\n\n**关键配置项：**\n\n| 配置项 | 标识符 | 说明 |\n|--------|--------|------|\n| 安装目录 | installDir | Miniforge、环境的安装位置 |\n| 用户数据目录 | userDataDir | 用户配置与数据存储位置 |\n\n资料来源：[desktop/src/routes/setup.tsx](https://github.com/OpenBB-finance/OpenBB/blob/main/desktop/src/routes/setup.tsx)\n\n### 3. 环境管理系统\n\n环境管理模块（environments.tsx）提供完整的 Python 环境生命周期管理功能：\n\n#### 3.1 环境创建流程\n\n```mermaid\ngraph TD\n    A[输入环境名称] --> B[选择 Python 版本]\n    B --> C[选择扩展]\n    C --> D{创建环境}\n    D --> E[后台安装进程]\n    E --> F{成功?}\n    F -->|是| G[显示环境列表]\n    F -->|否| H[显示错误信息]\n    H --> I[重试或取消]\n```\n\n#### 3.2 环境名称验证规则\n\n```typescript\n/^[a-z0-9-]+$/\n```\n\n环境名称必须满足以下条件：\n\n- 仅使用小写字母\n- 仅使用数字\n- 仅使用连字符 `-`\n- 不允许使用空格或特殊字符\n\n资料来源：[desktop/src/routes/environments.tsx](https://github.com/OpenBB-finance/OpenBB/blob/main/desktop/src/routes/environments.tsx)\n\n#### 3.3 环境管理功能列表\n\n| 功能 | 描述 | 触发方式 |\n|------|------|----------|\n| 创建环境 | 从 requirements.txt 创建新环境 | `createEnvironmentFromRequirements` |\n| 删除环境 | 移除现有环境及其文件 | 环境卡片删除按钮 |\n| 安装扩展 | 向环境添加 OpenBB 扩展 | AddExtensionSelector 组件 |\n| 搜索扩展 | 实时过滤扩展列表 | 搜索输入框 |\n| 查看包列表 | 显示环境中已安装的包 | 环境详情展开 |\n\n### 4. 后端服务管理\n\n后端管理模块（backends.tsx）负责控制 OpenBB 后端服务的启动、运行与监控：\n\n#### 4.1 后端状态流转\n\n```mermaid\ngraph TD\n    A[idle] --> B{启动后端}\n    B --> C[starting]\n    C --> D{服务初始化}\n    D -->|成功| E[running]\n    D -->|失败| F[error]\n    E --> F{发生错误}\n    F --> G[停止服务]\n    G --> A\n    E --> H{用户停止}\n    H --> A\n```\n\n#### 4.2 后端配置参数\n\n| 参数 | 说明 | 默认值 |\n|------|------|--------|\n| command | 启动命令 | `openbb-api` |\n| workingDir | 工作目录 | `{installation_directory}/backends` |\n| extractedPid | 进程 ID | 自动分配 |\n\n资料来源：[desktop/src/routes/backends.tsx](https://github.com/OpenBB-finance/OpenBB/blob/main/desktop/src/routes/backends.tsx)\n\n#### 4.3 进程状态显示\n\n```tsx\n{extractedPid && isRunning && (\n    <div className=\"body-xs-regular text-theme-secondary mt-1\">\n        <span className=\"body-xs-bold\">Process ID:</span> {extractedPid}\n    </div>\n)}\n```\n\n### 5. 扩展安装系统\n\n扩展管理由 `AddExtensionSelector.tsx` 和 `InstallComponents.tsx` 组件实现：\n\n#### 5.1 支持的包类型\n\n| 类型 | 计数变量 | 安装方式 |\n|------|----------|----------|\n| Conda 包 | `condaPackages.length` | `addCondaPackage()` |\n| PyPI 包 | `customPackages.length` | `addCustomPackage()` |\n| OpenBB 扩展 | `selectedExtensions.length` | 复选框选择 |\n\n资料来源：[desktop/src/components/AddExtensionSelector.tsx](https://github.com/OpenBB-finance/OpenBB/blob/main/desktop/src/components/AddExtensionSelector.tsx)\n资料来源：[desktop/src/components/InstallComponents.tsx](https://github.com/OpenBB-finance/OpenBB/blob/main/desktop/src/components/InstallComponents.tsx)\n\n#### 5.2 扩展安装状态摘要\n\n```tsx\n{condaPackages.length} Conda + {customPackages.length} PyPI + {selectedExtensions.length} OpenBB extensions selected\n```\n\n#### 5.3 Conda 包添加流程\n\n```mermaid\ngraph LR\n    A[输入包名] --> B{按 Enter?}\n    B -->|是| C[addCondaPackage]\n    B -->|否| D[等待]\n    C --> E[添加到列表]\n    E --> F[清空输入框]\n```\n\n### 6. API 密钥管理\n\nAPI 密钥管理模块（api-keys.tsx）提供密钥的添加、编辑、删除与导入功能：\n\n#### 6.1 支持的密钥格式\n\n| 格式 | 文件扩展名 | 导入方式 |\n|------|------------|----------|\n| JSON | `.json` | 文件选择器 |\n| 环境变量 | `.env` | 文件选择器 |\n\n#### 6.2 密钥操作模式\n\n| 模式 | 模态框标题 | 操作 |\n|------|------------|------|\n| `add` | 添加 API 密钥 | 创建新密钥 |\n| `edit` | 编辑 API 密钥 | 修改现有密钥 |\n\n资料来源：[desktop/src/routes/api-keys.tsx](https://github.com/OpenBB-finance/OpenBB/blob/main/desktop/src/routes/api-keys.tsx)\n\n### 7. 安装进度管理\n\n安装进度模块（installation-progress.tsx）跟踪并展示安装过程的各个阶段：\n\n#### 7.1 安装阶段划分\n\n| 阶段标识 | 阶段名称 | 包含组件 |\n|----------|----------|----------|\n| `extension_select` | 扩展选择 | 扩展复选框、PyPI 输入 |\n| `version_select` | Python 版本选择 | PythonVersionSelector |\n| `cancelled` | 已取消 | 错误信息、重试按钮 |\n\n#### 7.2 进度指示器\n\n```tsx\nSTEP <span className=\"text-theme-accent\">1</span> OF <span className=\"text-theme-accent\">3</span>\n```\n\n初始安装包含三个步骤：\n\n1. Miniforge（Python 环境管理器）\n2. OpenBB 环境及核心依赖\n3. iPython 与 Jupyter Lab\n\n资料来源：[desktop/src/routes/installation-progress.tsx](https://github.com/OpenBB-finance/OpenBB/blob/main/desktop/src/routes/installation-progress.tsx)\n\n## 用户界面组件\n\n### 1. 通用 UI 组件\n\n| 组件 | 文件 | 用途 |\n|------|------|------|\n| Icon | Icon.tsx | OpenBB Logo、文件图标等 |\n| Button | 共享组件 | 操作按钮 |\n| Tooltip | 共享组件 | 悬停提示 |\n| ReactMarkdown | 共享组件 | Markdown 内容渲染 |\n\n### 2. 自定义图标系统\n\n```tsx\n<CustomIcon id=\"close\" className=\"h-6 w-6\" />\n<CustomIcon id=\"search\" className=\"h-4 w-4\" />\n```\n\n图标系统支持通过 `id` 属性动态加载不同图标，适用于关闭按钮、搜索图标等场景。\n\n资料来源：[desktop/src/components/Icon.tsx](https://github.com/OpenBB-finance/OpenBB/blob/main/desktop/src/components/Icon.tsx)\n\n### 3. 主题系统\n\n应用程序采用深色主题设计，关键颜色变量包括：\n\n| CSS 变量 | 用途 |\n|----------|------|\n| `text-theme-primary` | 主文本颜色 |\n| `text-theme-secondary` | 次要文本颜色 |\n| `text-theme-muted` | 弱化文本颜色 |\n| `bg-theme-primary` | 主背景色 |\n| `bg-theme-secondary` | 次要背景色 |\n| `accent-color` | 强调色/高亮色 |\n\n### 4. ReactMarkdown 配置\n\n扩展安装说明使用 ReactMarkdown 组件渲染，支持自定义渲染器：\n\n```tsx\n<ReactMarkdown\n    components={{\n        img: ({ ...props }) => (\n            <img {...props} className=\"max-w-full h-auto\" style={{ maxHeight: \"300px\" }} />\n        ),\n        a: ({ ...props }) => (\n            <a {...props} className=\"text-blue-500 underline\" target=\"_blank\" />\n        ),\n        code: ({ ...props }) => (\n            <code {...props} className=\"bg-theme-tertiary px-1 py-0.5 rounded\" />\n        ),\n    }}\n>\n    {extension.instructions}\n</ReactMarkdown>\n```\n\n资料来源：[desktop/src/components/InstallComponents.tsx](https://github.com/OpenBB-finance/OpenBB/blob/main/desktop/src/components/InstallComponents.tsx)\n\n## 配置与数据管理\n\n### 1. 用户数据存储\n\n用户数据目录结构由 `userDataDir` 配置项控制，包含：\n\n- 配置文件存储\n- 环境信息缓存\n- API 密钥加密存储\n- 安装日志\n\n### 2. Tauri 配置\n\nTauri 配置文件定义应用程序的窗口属性、权限与构建选项：\n\n```json\n{\n  \"productName\": \"OpenBB\",\n  \"identifier\": \"finance.openbb.desktop\",\n  \"build\": {\n    \"devtools\": true\n  }\n}\n```\n\n## 错误处理\n\n### 1. 错误显示组件\n\n```tsx\n{error && (\n    <div className=\"p-3 bg-theme-secondary border border-red-500/50 rounded text-red-500\">\n        <p>{error}</p>\n    </div>\n)}\n```\n\n### 2. 错误恢复选项\n\n| 错误类型 | 恢复方式 |\n|----------|----------|\n| 环境创建失败 | 重试（Retry）或取消 |\n| 后端启动失败 | 自动重试或手动重启 |\n| 安装错误 | 显示 stderr 日志 |\n\n### 3. 创建环境错误展示\n\n```tsx\n{createEnvironmentError && (\n    <div className=\"p-3 bg-theme-secondary border border-red-500 rounded-md\">\n        <p className=\"text-theme-secondary font-mono whitespace-pre-wrap\">\n            {extractStderr(createEnvironmentError)}\n        </p>\n    </div>\n)}\n```\n\n资料来源：[desktop/src/routes/environments.tsx](https://github.com/OpenBB-finance/OpenBB/blob/main/desktop/src/routes/environments.tsx)\n\n## 工作目录管理\n\n后端服务的工作目录可通过用户界面配置：\n\n```tsx\n<input\n    id=\"working-dir-input\"\n    type=\"text\"\n    value={workingDirInput}\n    onChange={e => setWorkingDirInput(e.target.value)}\n    onBlur={handleDirectoryInputSubmit}\n    onKeyDown={handleDirectoryInputKeyPress}\n    placeholder=\"Select or enter path (defaults to '{installation_directory}/backends')\"\n/>\n```\n\n用户可以选择目录或手动输入路径，系统会在失焦时验证并保存输入。\n\n## 总结\n\nOpenBB 桌面应用程序通过 Tauri 框架将现代 Web 前端技术与原生系统能力相结合，提供了一个功能丰富、界面友好的 Python 环境管理工具。应用程序的核心优势包括：\n\n1. **统一的环境管理**：支持多个 Python 环境的创建、切换与删除\n2. **灵活的扩展系统**：支持 Conda、PyPI 和 OpenBB 原生扩展\n3. **安全的密钥存储**：支持加密存储 API 密钥\n4. **直观的状态监控**：实时显示后端服务状态与进程信息\n5. **完整的安装向导**：引导用户完成初始配置与依赖安装\n\n---\n\n<a id='page-9'></a>\n\n## 扩展开发指南\n\n### 相关页面\n\n相关主题：[核心架构设计](#page-3), [扩展模块系统](#page-6)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [openbb_platform/extensions/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/extensions/README.md)\n- [openbb_platform/extensions/mcp_server/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/extensions/mcp_server/README.md)\n- [openbb_platform/extensions/news/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/extensions/news/README.md)\n- [openbb_platform/CONTRIBUTING.md](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/CONTRIBUTING.md)\n- [openbb_platform/providers/README.md](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/providers/README.md)\n</details>\n\n# 扩展开发指南\n\n## 概述\n\nOpenBB 平台采用模块化扩展架构，允许开发者通过扩展（Extensions）来增强平台功能。扩展是一种将自定义功能集成到 OpenBB 平台的方式，可以提供新的工具、数据源或服务。OpenBB 支持多种类型的扩展，包括数据提供者扩展、MCP 服务器扩展、新闻扩展等。扩展开发基于 Python 语言，使用 FastAPI 框架构建服务端点，并通过标准化接口与平台核心进行通信。开发者可以通过 cookiecutter 模板快速创建新扩展项目，也可以基于现有扩展进行定制化开发。扩展机制使 OpenBB 平台具有高度的可扩展性和灵活性，用户可以根据需求选择和安装不同的扩展来满足特定的数据分析或金融建模需求。\n\n## 扩展架构\n\nOpenBB 平台采用分层架构设计，扩展作为插件层与核心平台解耦。这种设计允许扩展在不影响平台核心稳定性的前提下独立开发、测试和部署。扩展通过标准化接口与平台通信，包括 REST API 端点、WebSocket 实时推送、以及 MCP（Model Context Protocol）协议支持。平台提供了统一的扩展管理界面，用户可以在桌面应用的扩展管理页面中查看已安装的扩展、安装新扩展、或卸载不需要的扩展。每个扩展都包含描述文件、安装脚本和使用文档，确保用户能够清晰地了解扩展的功能和使用方法。扩展可以依赖其他扩展或平台核心库，形成依赖关系网络，平台会自动处理这些依赖关系。\n\n### 扩展类型分类\n\n| 扩展类型 | 用途 | 技术栈 | 示例 |\n|---------|------|--------|------|\n| 数据提供者扩展 | 提供金融市场数据 | Python | Yahoo Finance、Alpha Vantage |\n| MCP 服务器扩展 | AI 工具集成 | FastAPI + MCP | openbb-mcp-server |\n| 新闻扩展 | 新闻数据聚合 | Python | openbb-news |\n| 分析扩展 | 自定义分析工具 | Python | 技术指标库 |\n\n## 快速开始\n\n### 使用 Cookiecutter 创建扩展\n\nOpenBB 提供了官方的 cookiecutter 模板来加速扩展开发流程。通过该模板，开发者可以快速生成符合平台规范的项目结构，减少重复配置工作。\n\n```bash\ncookiecutter openbb_cookiecutter\n```\n\n该命令会启动交互式配置向导，提示开发者输入扩展名称、描述、作者信息等基本参数。完成配置后，模板会自动生成包含以下内容的项目结构：\n\n```\nopenbb_[extension_name]/\n├── README.md\n├── pyproject.toml\n├── openbb_[extension_name]/\n│   ├── __init__.py\n│   ├── my_module.py\n│   └── routable.py\n└── tests/\n    └── test_my_module.py\n```\n\n项目结构遵循 PEP 517 规范，使用 pyproject.toml 作为项目配置文件。开发者需要在 pyproject.toml 中声明扩展的依赖项、元数据和入口点。模板中的 routable.py 文件演示了如何定义可路由的 FastAPI 端点，这是扩展暴露功能给平台的核心机制。\n\n### 项目配置\n\n扩展的 pyproject.toml 文件需要包含特定的配置项以确保与 OpenBB 平台的兼容性。以下是典型的配置示例：\n\n```toml\n[project]\nname = \"openbb-[extension-name]\"\nversion = \"0.1.0\"\ndescription = \"Extension description\"\nrequires-python = \">=3.9\"\n\n[project.optional-dependencies]\ndev = [\"pytest\", \"pytest-cov\"]\n\n[tool.openbb]\ntype = \"extension\"\n```\n\n配置中的 `[tool.openbb]` 部分用于标识这是一个 OpenBB 扩展，并指定扩展类型。平台安装管理器会扫描所有已安装包的该配置节来发现和加载扩展。\n\n## 扩展开发规范\n\n### 代码结构要求\n\nOpenBB 扩展应遵循统一的代码组织结构，以确保可维护性和一致性。主扩展包应包含 `__init__.py` 文件，该文件负责初始化扩展并注册其功能。功能模块应按职责分离，清晰划分数据处理、API 路由、业务逻辑等不同层次。扩展应避免直接修改平台核心代码，所有功能增强都应通过扩展接口实现。\n\n扩展目录结构应包含以下核心组件：\n\n- **主包目录**：包含扩展的所有 Python 代码\n- **README.md**：详细的扩展文档和使用说明\n- **pyproject.toml**：项目配置和依赖声明\n- **tests/**：单元测试和集成测试\n- **assets/**（可选）：扩展所需的静态资源\n\n### 命名规范\n\n扩展名称必须遵循特定的命名约定，以确保在 OpenBB 生态系统中的唯一性和可识别性。正式发布的扩展应使用 `openbb-` 或 `openbb_` 前缀，后跟描述性名称。扩展内的模块、类和函数命名应遵循 PEP 8 Python 命名规范。API 端点路径应使用小写字母和连字符，遵循 RESTful 最佳实践。环境变量前缀应统一使用 `OPENBB_`，避免与平台或其他扩展冲突。\n\n## MCP 服务器扩展开发\n\n### MCP 配置概述\n\nMCP（Model Context Protocol）服务器扩展允许将 OpenBB 平台的功能暴露为 AI 工具，供大语言模型调用。这种集成方式使 AI 助手能够通过标准化的工具接口访问金融数据和分析功能。开发者可以通过两种方式配置 MCP 工具：内联配置和模型配置。\n\n### 内联 MCP 配置\n\n内联 MCP 配置允许开发者对 FastAPI 路由进行精细化控制。通过在路由定义中包含 `openapi_extra` 字典，开发者可以指定工具的各种属性，如是否暴露、工具类型、支持的方法等。\n\n导入配置模型的方式如下：\n\n```python\nfrom openbb_mcp_server.models.mcp_config import MCPConfigModel\n```\n\n### MCP 配置属性\n\n| 属性名 | 类型 | 说明 | 可选值 |\n|-------|------|------|--------|\n| expose | bool | 是否暴露为 MCP 工具 | true/false |\n| mcp_type | MCPType | MCP 工具类型 | \"tool\"、\"resource\"、\"resource_template\" |\n| methods | list[HTTPMethod] | 暴露的 HTTP 方法 | GET、POST 等 |\n\n当 `expose` 设置为 `False` 时，该路由将完全从 MCP 服务器隐藏，适用于内部或已弃用的端点。`mcp_type` 属性用于指定工具的分类方式，不同类型对应不同的使用场景。`methods` 属性允许开发者精确控制哪些 HTTP 方法可被 MCP 调用。\n\n### MCP 提示词配置\n\n开发者可以通过提示词配置文件为 MCP 工具定义详细的使用说明和上下文信息。提示词配置支持多轮对话场景，允许多个消息组成的对话历史。每个提示词包含名称、描述和消息数组，消息数组中的每个元素指定角色和内容。\n\n以下是一个典型的 MCP 提示词配置示例：\n\n```json\n{\n  \"name\": \"economy_gdp\",\n  \"description\": \"Fetch GDP data for a country.\",\n  \"messages\": [\n    {\n      \"role\": \"user\",\n      \"content\": {\n        \"type\": \"text\",\n        \"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.\"\n      }\n    }\n  ]\n}\n```\n\n该配置定义了一个名为 `economy_gdp` 的工具，当 AI 助手调用该工具时，系统会向模型提供预设的提示词，指导模型如何解释和使用返回的数据。提示词支持动态内容注入，开发者可以在提示词中包含变量占位符，由系统在运行时替换为实际参数值。\n\n## 安装与部署\n\n### 本地安装扩展\n\n扩展开发完成后，可以通过以下命令进行本地安装测试：\n\n```bash\npip install -e ./openbb_[extension_name]\n```\n\n开发模式安装（使用 `-e` 标志）允许开发者在修改代码后立即看到效果，无需重新安装。安装过程中，平台会自动扫描扩展的 pyproject.toml 文件，识别扩展类型并将其注册到扩展管理系统。\n\n### 扩展安装验证\n\n安装完成后，用户可以通过 OpenBB 桌面应用的扩展管理界面验证扩展是否正确安装。扩展管理界面提供了已安装扩展的列表，包括扩展名称、版本、状态和操作按钮。开发者还可以在终端中通过命令行工具验证扩展加载情况。\n\n### 发布扩展\n\n正式发布的扩展应遵循 OpenBB 的发布规范。扩展需要包含完整的 README.md 文档，说明功能、安装方法、配置选项和使用示例。扩展的版本号应遵循语义化版本规范（SemVer），确保用户能够正确理解版本变更的影响。扩展应上传到 Python Package Index（PyPI）或私有包仓库，供用户通过 pip 安装。\n\n## 测试与验证\n\n### 单元测试\n\n扩展开发应包含完整的单元测试，确保核心功能的正确性。测试文件应放置在 `tests/` 目录下，使用 pytest 作为测试框架。测试应覆盖正常流程、边界条件和异常处理场景。\n\n基本的测试结构如下：\n\n```python\nimport pytest\nfrom openbb_[extension_name] import my_function\n\ndef test_my_function_success():\n    result = my_function(\"valid_input\")\n    assert result == expected_output\n\ndef test_my_function_error():\n    with pytest.raises(ValueError):\n        my_function(\"invalid_input\")\n```\n\n### 集成测试\n\n除了单元测试，扩展还应包含集成测试以验证与其他平台组件的交互。集成测试应模拟真实的用户操作流程，包括扩展的初始化、数据获取、结果处理等环节。OpenBB 平台提供了测试工具和 fixtures，帮助开发者快速编写集成测试。\n\n## 扩展管理界面\n\nOpenBB 桌面应用提供了直观的扩展管理界面，用户可以通过该界面管理已安装的扩展。界面支持查看扩展详情、安装新扩展、卸载不需要的扩展等操作。扩展搜索功能允许用户通过关键词查找扩展市场中的可用扩展。环境管理功能还支持创建自定义 Python 环境，为不同项目配置独立的扩展组合。\n\n桌面应用的安装进度页面会引导用户完成扩展安装的各个阶段，包括下载、解压、依赖解析和配置初始化。安装过程可能需要数分钟，具体取决于网络速度和扩展的依赖数量。\n\n## 最佳实践\n\n### 性能优化\n\n扩展开发者应关注性能优化，确保扩展不会对平台整体响应时间产生负面影响。应使用异步编程模式处理 I/O 密集型任务，如网络请求和文件读写。缓存频繁访问的数据，减少重复计算。对于大量数据处理任务，应实现分页加载机制，避免一次性加载过多数据导致内存溢出。\n\n### 安全性考虑\n\n扩展应遵循安全编码实践，避免引入安全漏洞。敏感信息如 API 密钥应通过环境变量或 OpenBB 安全存储机制管理，不应硬编码在源代码中。所有外部输入都应进行验证和清理，防止注入攻击。扩展应声明所需的最小权限，仅请求完成功能所必需的系统访问。\n\n### 错误处理\n\n健壮的错误处理机制对于用户体验至关重要。扩展应捕获并处理可预见的错误情况，向用户提供清晰的错误消息。关键操作应实现重试机制，处理瞬时故障。对于不可恢复的错误，应记录详细日志，便于开发者诊断问题。\n\n## 相关资源\n\n- OpenBB 平台贡献指南：包含详细的开发规范和流程说明\n- OpenBB 数据提供者扩展开发指南：专注于数据源扩展的创建\n- MCP 服务器扩展示例：展示完整的 MCP 工具实现\n- OpenBB 扩展市场：查找和安装社区开发的扩展\n\n---\n\n<a id='page-10'></a>\n\n## REST API与部署\n\n### 相关页面\n\n相关主题：[命令行界面(CLI)](#page-7), [桌面应用程序](#page-8)\n\n<details>\n<summary>相关源码文件</summary>\n\n以下源码文件用于生成本页说明：\n\n- [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)\n- [openbb_platform/core/openbb_core/api/router/commands.py](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/core/openbb_core/api/router/commands.py)\n- [openbb_platform/core/openbb_core/app/service/system_service.py](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/core/openbb_core/app/service/system_service.py)\n- [openbb_platform/extensions/platform_api/openbb_platform_api/main.py](https://github.com/OpenBB-finance/OpenBB/blob/main/openbb_platform/extensions/platform_api/openbb_platform_api/main.py)\n</details>\n\n# REST API与部署\n\n## 概述\n\nOpenBB Platform 提供了一套基于 FastAPI 构建的 REST API 服务，允许开发者通过 HTTP 协议访问平台功能。该 API 采用现代化设计，支持 CORS 跨域资源共享、自动化路由加载、系统配置管理等功能，为前端应用和第三方集成提供了标准化的接口层。\n\nREST API 是 OpenBB Platform 架构的核心组成部分，它封装了底层的数据获取逻辑，为客户端提供统一的接口访问方式。开发者可以通过该 API 构建自定义的金融应用、数据可视化工具或与其他系统进行集成。\n\n## 系统架构\n\n### 整体架构图\n\n```mermaid\ngraph TD\n    A[客户端应用] --> B[FastAPI REST API]\n    B --> C[CORS 中间件]\n    C --> D[应用路由层]\n    D --> E[业务逻辑服务]\n    E --> F[数据提供器 Providers]\n    F --> G[外部数据源]\n    \n    H[系统配置] --> B\n    H --> E\n    \n    I[开发模式 Auth] --> D\n```\n\n### API 服务启动流程\n\n```mermaid\nsequenceDiagram\n    participant 客户端\n    participant FastAPI as FastAPI 应用\n    participant 中间件 as CORS中间件\n    participant 路由 as 路由加载器\n    participant 系统 as 系统配置\n\n    客户端->>FastAPI: 启动请求 uvicorn\n    FastAPI->>系统: 加载系统配置\n    系统-->>FastAPI: 返回API设置\n    FastAPI->>中间件: 配置CORS策略\n    中间件-->>FastAPI: CORS配置完成\n    FastAPI->>路由: 加载AppRouter\n    路由-->>FastAPI: 注册路由端点\n    FastAPI->>FastAPI: 生命周期管理启动\n```\n\n## 核心组件\n\n### REST API 应用配置\n\n`rest_api.py` 文件负责构建 FastAPI 应用实例，定义了 API 的基础配置参数。\n\n| 配置项 | 说明 | 来源 |\n|--------|------|------|\n| `title` | API 文档标题 | `system.api_settings.title` |\n| `description` | API 描述信息 | `system.api_settings.description` |\n| `version` | API 版本号 | `system.api_settings.version` |\n| `terms_of_service` | 服务条款 | `system.api_settings.terms_of_service` |\n| `contact` | 联系信息 | `system.api_settings.contact_*` |\n| `license_info` | 许可证信息 | `system.api_settings.license_*` |\n| `servers` | 服务器列表 | `system.api_settings.servers` |\n\nCORS 中间件配置通过 `system.api_settings.cors` 对象管理，支持以下参数：\n\n| CORS参数 | 说明 | 来源 |\n|----------|------|------|\n| `allow_origins` | 允许的源列表 | `system.api_settings.cors.allow_origins` |\n| `allow_methods` | 允许的HTTP方法 | `system.api_settings.cors.allow_methods` |\n| `allow_headers` | 允许的请求头 | `system.api_settings.cors.allow_headers` |\n\n资料来源：[openbb_platform/core/openbb_core/api/rest_api.py:1-50]()\n\n### 路由加载机制\n\n`AppLoader` 类负责动态加载所有注册的路由端点，支持开发模式和发布模式两种路由配置。\n\n```python\nAppLoader.add_routers(\n    app=app,\n    routers=(\n        [AuthService().router, router_system, router_coverage, router_commands]\n        if Env().DEV_MODE\n        else (\n            [router_commands, router_coverage]\n            if ...\n        )\n    ),\n)\n```\n\n路由加载逻辑根据环境变量 `DEV_MODE` 决定是否加载额外的开发模式路由，包括认证服务、系统路由、覆盖率路由和命令路由。\n\n资料来源：[openbb_platform/core/openbb_core/api/rest_api.py:40-55]()\n\n### 系统服务配置\n\n`SystemService` 负责管理 API 的系统级配置，包括标题、描述、版本、联系方式、许可证信息和 CORS 设置。这些配置可通过系统设置文件进行自定义。\n\n| 服务类 | 职责 |\n|--------|------|\n| `SystemService` | 提供 API 基础配置参数 |\n| `ApiSettings` | 定义配置数据模型 |\n| `CorsSettings` | 管理跨域资源共享策略 |\n\n资料来源：[openbb_platform/core/openbb_core/app/service/system_service.py]()\n\n## 部署方式\n\n### 本地开发服务器\n\n使用 uvicorn 作为 ASGI 服务器启动 REST API：\n\n```bash\nuvicorn openbb_core.api.rest_api:app --host 0.0.0.0 --port 8000 --reload\n```\n\n| 参数 | 说明 | 示例值 |\n|------|------|--------|\n| `--host` | 监听地址 | `0.0.0.0` |\n| `--port` | 监听端口 | `8000` |\n| `--reload` | 启用热重载 | 开发模式启用 |\n\n启动后，API 文档可通过 `http://localhost:8000/docs` 访问。\n\n资料来源：[openbb_platform/README.md]()\n\n### 命令行启动\n\n通过 OpenBB CLI 命令启动 API 服务：\n\n```bash\nopenbb-api\n```\n\n该命令封装了 uvicorn 启动逻辑，简化了部署流程。\n\n### 扩展 API 入口\n\n`platform_api` 扩展提供了独立的 API 入口点，支持自定义配置：\n\n```python\n# openbb_platform/extensions/platform_api/openbb_platform_api/main.py\n# 主入口模块，提供API启动配置\n```\n\n扩展 API 支持以下自定义参数：\n\n| 参数 | 说明 |\n|------|------|\n| `--editable` | 以可编辑模式加载 widgets 配置 |\n| `--no-build` | 跳过构建步骤 |\n| `--widgets-json` | 指定自定义 widgets 配置文件路径 |\n| `--apps-json` | 指定自定义应用配置文件路径 |\n\n资料来源：[openbb_platform/extensions/platform_api/README.md]()\n\n## 配置管理\n\n### 运行时设置\n\nAPI 运行时设置可通过以下方式配置：\n\n| 配置方式 | 适用场景 | 说明 |\n|----------|----------|------|\n| 系统环境变量 | 部署配置 | 通过 `Env()` 类读取 |\n| 用户设置文件 | 用户偏好 | `~/.openbb_platform/user_settings.json` |\n| 代码内设置 | 开发调试 | 直接赋值 `obb.user.credentials.*` |\n\n### 系统配置模型\n\n```mermaid\nclassDiagram\n    class SystemSettings {\n        +title: str\n        +description: str\n        +version: str\n        +terms_of_service: str\n        +contact: ContactInfo\n        +license_info: LicenseInfo\n        +servers: list[Server]\n        +cors: CorsSettings\n    }\n    \n    class CorsSettings {\n        +allow_origins: list[str]\n        +allow_methods: list[str]\n        +allow_headers: list[str]\n    }\n```\n\n### API 密钥配置\n\n在 `user_settings.json` 中配置数据源 API 密钥：\n\n```json\n{\n    \"credentials\": {\n        \"eia_api_key\": \"YOUR_API_KEY\",\n        \"fred_api_key\": \"YOUR_FRED_KEY\",\n        \"polygon_api_key\": \"YOUR_POLYGON_KEY\"\n    }\n}\n```\n\n或通过代码直接设置：\n\n```python\nfrom openbb import obb\nobb.user.credentials.fred_api_key = \"REPLACE_ME\"\nobb.user.credentials.polygon_api_key = \"REPLACE_ME\"\n```\n\n资料来源：[openbb_platform/README.md]()\n\n## 生命周期管理\n\nAPI 应用采用上下文管理器模式进行生命周期管理，在启动和关闭时执行特定操作：\n\n```mermaid\nstateDiagram-v2\n    [*] --> 启动中: uvicorn 启动\n    启动中 --> 运行中: 加载配置完成\n    运行中 --> 关闭中: 收到终止信号\n    关闭中 --> [*]: 清理完成\n    \n    启动中 --> 打印Banner: 初始化日志\n    打印Banner --> 加载路由: 注册端点\n    加载路由 --> 运行中: 服务就绪\n```\n\n生命周期函数处理包括：\n\n- 启动时打印 Banner 信息\n- 初始化日志记录\n- 注册所有路由端点\n- 关闭时执行清理操作\n\n资料来源：[openbb_platform/core/openbb_core/api/rest_api.py:20-40]()\n\n## 命令路由\n\n`commands.py` 定义了命令相关的 API 路由端点，为客户端提供命令执行和查询功能。\n\n| 路由类型 | 说明 | 用途 |\n|----------|------|------|\n| `router_commands` | 命令路由 | 执行平台命令 |\n| `router_coverage` | 覆盖率路由 | 查询功能覆盖情况 |\n| `router_system` | 系统路由 | 系统配置与管理 |\n\n资料来源：[openbb_platform/core/openbb_core/api/router/commands.py]()\n\n## 开发指南\n\n### 环境准备\n\n本地开发需要以下环境：\n\n| 要求 | 说明 |\n|------|------|\n| Git | 版本控制 |\n| Python | 3.10 - 3.13 |\n| Poetry | 依赖管理 |\n| 虚拟环境 | 隔离开发环境 |\n\n### 安装步骤\n\n```bash\n# 1. 克隆仓库\ngit clone https://github.com/OpenBB-finance/OpenBB.git\n\n# 2. 进入平台目录\ncd openbb_platform\n\n# 3. 安装开发依赖\npython dev_install.py -e\n```\n\n### API 文档访问\n\n启动服务后，可通过浏览器访问交互式 API 文档：\n\n| 文档路径 | 框架 | 说明 |\n|----------|------|------|\n| `/docs` | Swagger UI | 交互式 API 文档 |\n| `/redoc` | ReDoc | 备选文档界面 |\n\n## 扩展机制\n\nOpenBB Platform 支持通过扩展增强 API 功能：\n\n```mermaid\ngraph LR\n    A[核心API] --> B[Platform API扩展]\n    A --> C[News扩展]\n    A --> D[Commodity扩展]\n    A --> E[更多扩展...]\n    \n    B --> F[Widgets配置]\n    B --> F[Apps配置]\n```\n\n扩展安装后会自动注册到 API 路由中，无需手动配置。\n\n## 相关资源\n\n- [OpenBB Platform 文档](https://docs.openbb.co/platform)\n- [API 设置文档](https://docs.openbb.co/platform/settings/system_settings#api-settings)\n- [开发者指南](https://docs.openbb.co/platform/developer_guide/architecture_overview)\n- [GitHub 仓库](https://github.com/OpenBB-finance/OpenBB)\n\n---\n\n---\n\n## Doramagic 踩坑日志\n\n项目：OpenBB-finance/OpenBB\n\n摘要：发现 17 个潜在踩坑项，其中 3 个为 high/blocking；最高优先级：安全/权限坑 - 来源证据：[FR] Add Bank of Canada Valet API as a new provider extension。\n\n## 1. 安全/权限坑 · 来源证据：[FR] Add Bank of Canada Valet API as a new provider extension\n\n- 严重度：high\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：[FR] Add Bank of Canada Valet API as a new provider extension\n- 对用户的影响：可能影响授权、密钥配置或安全边界。\n- 建议检查：来源问题仍为 open，Pack Agent 需要复核是否仍影响当前版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_a8349d4112564c48b29615f3530e81e4 | https://github.com/OpenBB-finance/OpenBB/issues/7490 | 来源讨论提到 api key 相关条件，需在安装/试用前复核。\n\n## 2. 安全/权限坑 · 来源证据：[FR] Add Real-time Cryptocurrency Data Provider Integration\n\n- 严重度：high\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：[FR] Add Real-time Cryptocurrency Data Provider Integration\n- 对用户的影响：可能影响授权、密钥配置或安全边界。\n- 建议检查：来源问题仍为 open，Pack Agent 需要复核是否仍影响当前版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_e1bb7e5c7c0a4dc2bea2a256ed74a0b0 | https://github.com/OpenBB-finance/OpenBB/issues/7177 | 来源讨论提到 api key 相关条件，需在安装/试用前复核。\n\n## 3. 安全/权限坑 · 涉及密钥、隐私或敏感领域\n\n- 严重度：high\n- 证据强度：source_linked\n- 发现：项目文本出现 secret/private key/privacy/trading/finance 等敏感关键词。\n- 对用户的影响：金融、交易、隐私和密钥场景必须比普通工具更保守。\n- 建议检查：补敏感数据流、密钥存储和权限边界审查。\n- 防护动作：敏感领域或密钥场景必须保守推荐并要求人工复核。\n- 证据：packet_text.keyword_scan | github_repo:323048702 | https://github.com/OpenBB-finance/OpenBB | matched secret / private key / privacy / trading / finance keyword\n\n## 4. 安装坑 · 来源证据：[Bug] PyWry WebView Fails to Launch on Ubuntu 24.04\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安装相关的待验证问题：[Bug] PyWry WebView Fails to Launch on Ubuntu 24.04\n- 对用户的影响：可能阻塞安装或首次运行。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_c068fa0d9cac4fb7b74d875b22d312d7 | https://github.com/OpenBB-finance/OpenBB/issues/7148 | 来源讨论提到 python 相关条件，需在安装/试用前复核。\n\n## 5. 安装坑 · 来源证据：[Bug] Widgets not saving their position and size after refresh\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安装相关的待验证问题：[Bug] Widgets not saving their position and size after refresh\n- 对用户的影响：可能增加新用户试用和生产接入成本。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_b7792ca1efe649c085e18a8a6be37d49 | https://github.com/OpenBB-finance/OpenBB/issues/7479 | 来源类型 github_issue 暴露的待验证使用条件。\n\n## 6. 能力坑 · 能力判断依赖假设\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：README/documentation is current enough for a first validation pass.\n- 对用户的影响：假设不成立时，用户拿不到承诺的能力。\n- 建议检查：将假设转成下游验证清单。\n- 防护动作：假设必须转成验证项；没有验证结果前不能写成事实。\n- 证据：capability.assumptions | github_repo:323048702 | https://github.com/OpenBB-finance/OpenBB | README/documentation is current enough for a first validation pass.\n\n## 7. 运行坑 · 来源证据：ODP Desktop v1.0.2\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个运行相关的待验证问题：ODP Desktop v1.0.2\n- 对用户的影响：可能增加新用户试用和生产接入成本。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_cf07c5d467e44c168f2650a3c4404f46 | https://github.com/OpenBB-finance/OpenBB/releases/tag/Open-Data-Platform-v1.0.2 | 来源讨论提到 windows 相关条件，需在安装/试用前复核。\n\n## 8. 维护坑 · 维护活跃度未知\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：未记录 last_activity_observed。\n- 对用户的影响：新项目、停更项目和活跃项目会被混在一起，推荐信任度下降。\n- 建议检查：补 GitHub 最近 commit、release、issue/PR 响应信号。\n- 防护动作：维护活跃度未知时，推荐强度不能标为高信任。\n- 证据：evidence.maintainer_signals | github_repo:323048702 | https://github.com/OpenBB-finance/OpenBB | last_activity_observed missing\n\n## 9. 安全/权限坑 · 下游验证发现风险项\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：no_demo\n- 对用户的影响：下游已经要求复核，不能在页面中弱化。\n- 建议检查：进入安全/权限治理复核队列。\n- 防护动作：下游风险存在时必须保持 review/recommendation 降级。\n- 证据：downstream_validation.risk_items | github_repo:323048702 | https://github.com/OpenBB-finance/OpenBB | no_demo; severity=medium\n\n## 10. 安全/权限坑 · 存在评分风险\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：no_demo\n- 对用户的影响：风险会影响是否适合普通用户安装。\n- 建议检查：把风险写入边界卡，并确认是否需要人工复核。\n- 防护动作：评分风险必须进入边界卡，不能只作为内部分数。\n- 证据：risks.scoring_risks | github_repo:323048702 | https://github.com/OpenBB-finance/OpenBB | no_demo; severity=medium\n\n## 11. 安全/权限坑 · 来源证据：ODP Desktop v1.0.1\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：ODP Desktop v1.0.1\n- 对用户的影响：可能增加新用户试用和生产接入成本。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_b5b0cf96b9b1456e8192a80e8c9fbcfd | https://github.com/OpenBB-finance/OpenBB/releases/tag/Open-Data-Platform-v1.0.1 | 来源讨论提到 windows 相关条件，需在安装/试用前复核。\n\n## 12. 安全/权限坑 · 来源证据：OpenBB Platform v4.5.0\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：OpenBB Platform v4.5.0\n- 对用户的影响：可能影响升级、迁移或版本选择。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_ff4708f0690c485c9453a90b7b1f926a | https://github.com/OpenBB-finance/OpenBB/releases/tag/v4.5.0 | 来源讨论提到 python 相关条件，需在安装/试用前复核。\n\n## 13. 安全/权限坑 · 来源证据：OpenBB Platform v4.6.0\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：OpenBB Platform v4.6.0\n- 对用户的影响：可能影响升级、迁移或版本选择。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_58ecf0b5c49441d7818b4f384f522024 | https://github.com/OpenBB-finance/OpenBB/releases/tag/v4.6.0 | 来源讨论提到 python 相关条件，需在安装/试用前复核。\n\n## 14. 安全/权限坑 · 来源证据：OpenBB V4.7.0\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：OpenBB V4.7.0\n- 对用户的影响：可能影响升级、迁移或版本选择。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_487435c8c60a497092f647438af74f89 | https://github.com/OpenBB-finance/OpenBB/releases/tag/v4.7.0 | 来源讨论提到 python 相关条件，需在安装/试用前复核。\n\n## 15. 安全/权限坑 · 来源证据：[Bug] Openbb 4.5.0 cannot import name 'OBBject_EquityInfo' from 'openbb_core.app.provider_interface'\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：[Bug] Openbb 4.5.0 cannot import name 'OBBject_EquityInfo' from 'openbb_core.app.provider_interface'\n- 对用户的影响：可能影响授权、密钥配置或安全边界。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_95461e0340ed4ee5a724d3d6966b0bcf | https://github.com/OpenBB-finance/OpenBB/issues/7279 | 来源讨论提到 python 相关条件，需在安装/试用前复核。\n\n## 16. 维护坑 · issue/PR 响应质量未知\n\n- 严重度：low\n- 证据强度：source_linked\n- 发现：issue_or_pr_quality=unknown。\n- 对用户的影响：用户无法判断遇到问题后是否有人维护。\n- 建议检查：抽样最近 issue/PR，判断是否长期无人处理。\n- 防护动作：issue/PR 响应未知时，必须提示维护风险。\n- 证据：evidence.maintainer_signals | github_repo:323048702 | https://github.com/OpenBB-finance/OpenBB | issue_or_pr_quality=unknown\n\n## 17. 维护坑 · 发布节奏不明确\n\n- 严重度：low\n- 证据强度：source_linked\n- 发现：release_recency=unknown。\n- 对用户的影响：安装命令和文档可能落后于代码，用户踩坑概率升高。\n- 建议检查：确认最近 release/tag 和 README 安装命令是否一致。\n- 防护动作：发布节奏未知或过期时，安装说明必须标注可能漂移。\n- 证据：evidence.maintainer_signals | github_repo:323048702 | https://github.com/OpenBB-finance/OpenBB | release_recency=unknown\n\n<!-- canonical_name: OpenBB-finance/OpenBB; human_manual_source: deepwiki_human_wiki -->\n",
      "summary": "DeepWiki/Human Wiki 完整输出，末尾追加 Discovery Agent 踩坑日志。",
      "title": "Human Manual / 人类版说明书"
    },
    "pitfall_log": {
      "asset_id": "pitfall_log",
      "filename": "PITFALL_LOG.md",
      "markdown": "# Pitfall Log / 踩坑日志\n\n项目：OpenBB-finance/OpenBB\n\n摘要：发现 17 个潜在踩坑项，其中 3 个为 high/blocking；最高优先级：安全/权限坑 - 来源证据：[FR] Add Bank of Canada Valet API as a new provider extension。\n\n## 1. 安全/权限坑 · 来源证据：[FR] Add Bank of Canada Valet API as a new provider extension\n\n- 严重度：high\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：[FR] Add Bank of Canada Valet API as a new provider extension\n- 对用户的影响：可能影响授权、密钥配置或安全边界。\n- 建议检查：来源问题仍为 open，Pack Agent 需要复核是否仍影响当前版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_a8349d4112564c48b29615f3530e81e4 | https://github.com/OpenBB-finance/OpenBB/issues/7490 | 来源讨论提到 api key 相关条件，需在安装/试用前复核。\n\n## 2. 安全/权限坑 · 来源证据：[FR] Add Real-time Cryptocurrency Data Provider Integration\n\n- 严重度：high\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：[FR] Add Real-time Cryptocurrency Data Provider Integration\n- 对用户的影响：可能影响授权、密钥配置或安全边界。\n- 建议检查：来源问题仍为 open，Pack Agent 需要复核是否仍影响当前版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_e1bb7e5c7c0a4dc2bea2a256ed74a0b0 | https://github.com/OpenBB-finance/OpenBB/issues/7177 | 来源讨论提到 api key 相关条件，需在安装/试用前复核。\n\n## 3. 安全/权限坑 · 涉及密钥、隐私或敏感领域\n\n- 严重度：high\n- 证据强度：source_linked\n- 发现：项目文本出现 secret/private key/privacy/trading/finance 等敏感关键词。\n- 对用户的影响：金融、交易、隐私和密钥场景必须比普通工具更保守。\n- 建议检查：补敏感数据流、密钥存储和权限边界审查。\n- 防护动作：敏感领域或密钥场景必须保守推荐并要求人工复核。\n- 证据：packet_text.keyword_scan | github_repo:323048702 | https://github.com/OpenBB-finance/OpenBB | matched secret / private key / privacy / trading / finance keyword\n\n## 4. 安装坑 · 来源证据：[Bug] PyWry WebView Fails to Launch on Ubuntu 24.04\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安装相关的待验证问题：[Bug] PyWry WebView Fails to Launch on Ubuntu 24.04\n- 对用户的影响：可能阻塞安装或首次运行。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_c068fa0d9cac4fb7b74d875b22d312d7 | https://github.com/OpenBB-finance/OpenBB/issues/7148 | 来源讨论提到 python 相关条件，需在安装/试用前复核。\n\n## 5. 安装坑 · 来源证据：[Bug] Widgets not saving their position and size after refresh\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安装相关的待验证问题：[Bug] Widgets not saving their position and size after refresh\n- 对用户的影响：可能增加新用户试用和生产接入成本。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_b7792ca1efe649c085e18a8a6be37d49 | https://github.com/OpenBB-finance/OpenBB/issues/7479 | 来源类型 github_issue 暴露的待验证使用条件。\n\n## 6. 能力坑 · 能力判断依赖假设\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：README/documentation is current enough for a first validation pass.\n- 对用户的影响：假设不成立时，用户拿不到承诺的能力。\n- 建议检查：将假设转成下游验证清单。\n- 防护动作：假设必须转成验证项；没有验证结果前不能写成事实。\n- 证据：capability.assumptions | github_repo:323048702 | https://github.com/OpenBB-finance/OpenBB | README/documentation is current enough for a first validation pass.\n\n## 7. 运行坑 · 来源证据：ODP Desktop v1.0.2\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个运行相关的待验证问题：ODP Desktop v1.0.2\n- 对用户的影响：可能增加新用户试用和生产接入成本。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_cf07c5d467e44c168f2650a3c4404f46 | https://github.com/OpenBB-finance/OpenBB/releases/tag/Open-Data-Platform-v1.0.2 | 来源讨论提到 windows 相关条件，需在安装/试用前复核。\n\n## 8. 维护坑 · 维护活跃度未知\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：未记录 last_activity_observed。\n- 对用户的影响：新项目、停更项目和活跃项目会被混在一起，推荐信任度下降。\n- 建议检查：补 GitHub 最近 commit、release、issue/PR 响应信号。\n- 防护动作：维护活跃度未知时，推荐强度不能标为高信任。\n- 证据：evidence.maintainer_signals | github_repo:323048702 | https://github.com/OpenBB-finance/OpenBB | last_activity_observed missing\n\n## 9. 安全/权限坑 · 下游验证发现风险项\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：no_demo\n- 对用户的影响：下游已经要求复核，不能在页面中弱化。\n- 建议检查：进入安全/权限治理复核队列。\n- 防护动作：下游风险存在时必须保持 review/recommendation 降级。\n- 证据：downstream_validation.risk_items | github_repo:323048702 | https://github.com/OpenBB-finance/OpenBB | no_demo; severity=medium\n\n## 10. 安全/权限坑 · 存在评分风险\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：no_demo\n- 对用户的影响：风险会影响是否适合普通用户安装。\n- 建议检查：把风险写入边界卡，并确认是否需要人工复核。\n- 防护动作：评分风险必须进入边界卡，不能只作为内部分数。\n- 证据：risks.scoring_risks | github_repo:323048702 | https://github.com/OpenBB-finance/OpenBB | no_demo; severity=medium\n\n## 11. 安全/权限坑 · 来源证据：ODP Desktop v1.0.1\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：ODP Desktop v1.0.1\n- 对用户的影响：可能增加新用户试用和生产接入成本。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_b5b0cf96b9b1456e8192a80e8c9fbcfd | https://github.com/OpenBB-finance/OpenBB/releases/tag/Open-Data-Platform-v1.0.1 | 来源讨论提到 windows 相关条件，需在安装/试用前复核。\n\n## 12. 安全/权限坑 · 来源证据：OpenBB Platform v4.5.0\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：OpenBB Platform v4.5.0\n- 对用户的影响：可能影响升级、迁移或版本选择。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_ff4708f0690c485c9453a90b7b1f926a | https://github.com/OpenBB-finance/OpenBB/releases/tag/v4.5.0 | 来源讨论提到 python 相关条件，需在安装/试用前复核。\n\n## 13. 安全/权限坑 · 来源证据：OpenBB Platform v4.6.0\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：OpenBB Platform v4.6.0\n- 对用户的影响：可能影响升级、迁移或版本选择。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_58ecf0b5c49441d7818b4f384f522024 | https://github.com/OpenBB-finance/OpenBB/releases/tag/v4.6.0 | 来源讨论提到 python 相关条件，需在安装/试用前复核。\n\n## 14. 安全/权限坑 · 来源证据：OpenBB V4.7.0\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：OpenBB V4.7.0\n- 对用户的影响：可能影响升级、迁移或版本选择。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_487435c8c60a497092f647438af74f89 | https://github.com/OpenBB-finance/OpenBB/releases/tag/v4.7.0 | 来源讨论提到 python 相关条件，需在安装/试用前复核。\n\n## 15. 安全/权限坑 · 来源证据：[Bug] Openbb 4.5.0 cannot import name 'OBBject_EquityInfo' from 'openbb_core.app.provider_interface'\n\n- 严重度：medium\n- 证据强度：source_linked\n- 发现：GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题：[Bug] Openbb 4.5.0 cannot import name 'OBBject_EquityInfo' from 'openbb_core.app.provider_interface'\n- 对用户的影响：可能影响授权、密钥配置或安全边界。\n- 建议检查：来源显示可能已有修复、规避或版本变化，说明书中必须标注适用版本。\n- 防护动作：不得脱离来源链接放大为确定性结论；需要标注适用版本和复核状态。\n- 证据：community_evidence:github | cevd_95461e0340ed4ee5a724d3d6966b0bcf | https://github.com/OpenBB-finance/OpenBB/issues/7279 | 来源讨论提到 python 相关条件，需在安装/试用前复核。\n\n## 16. 维护坑 · issue/PR 响应质量未知\n\n- 严重度：low\n- 证据强度：source_linked\n- 发现：issue_or_pr_quality=unknown。\n- 对用户的影响：用户无法判断遇到问题后是否有人维护。\n- 建议检查：抽样最近 issue/PR，判断是否长期无人处理。\n- 防护动作：issue/PR 响应未知时，必须提示维护风险。\n- 证据：evidence.maintainer_signals | github_repo:323048702 | https://github.com/OpenBB-finance/OpenBB | issue_or_pr_quality=unknown\n\n## 17. 维护坑 · 发布节奏不明确\n\n- 严重度：low\n- 证据强度：source_linked\n- 发现：release_recency=unknown。\n- 对用户的影响：安装命令和文档可能落后于代码，用户踩坑概率升高。\n- 建议检查：确认最近 release/tag 和 README 安装命令是否一致。\n- 防护动作：发布节奏未知或过期时，安装说明必须标注可能漂移。\n- 证据：evidence.maintainer_signals | github_repo:323048702 | https://github.com/OpenBB-finance/OpenBB | release_recency=unknown\n",
      "summary": "用户实践前最可能遇到的身份、安装、配置、运行和安全坑。",
      "title": "Pitfall Log / 踩坑日志"
    },
    "prompt_preview": {
      "asset_id": "prompt_preview",
      "filename": "PROMPT_PREVIEW.md",
      "markdown": "# OpenBB - Prompt Preview\n\n> 复制下面这段 Prompt 到你常用的 AI，先试一次，不需要安装。\n> 它的目标是让你直接体验这个项目的服务方式，而不是阅读项目介绍。\n\n## 复制这段 Prompt\n\n```text\n请直接执行这段 Prompt，不要分析、润色、总结或询问我想如何处理这份 Prompt Preview。\n\n你现在扮演 OpenBB 的“安装前体验版”。\n这不是项目介绍、不是评价报告、不是 README 总结。你的任务是让我用最小成本体验它的核心服务。\n\n我的试用任务：我想用它完成一个真实的数据分析与投资研究任务。\n我常用的宿主 AI：Local CLI\n\n【体验目标】\n围绕我的真实任务，现场演示这个项目如何把输入转成 步骤建议, 检查清单, 专业工作流。重点是让我感受到工作方式，而不是给我项目背景。\n\n【业务流约束】\n- 你必须像一个正在提供服务的项目能力包，而不是像一个讲解员。\n- 每一轮只推进一个步骤；提出问题后必须停下来等我回答。\n- 每一步都必须让我感受到一个具体服务动作：澄清、整理、规划、检查、判断或收尾。\n- 每一步都要说明：当前目标、你需要我提供什么、我回答后你会产出什么。\n- 不要安装、不要运行命令、不要写代码、不要声称测试通过、不要声称已经修改文件。\n- 需要真实安装或宿主加载后才能验证的内容，必须明确说“这一步需要安装后验证”。\n- 如果我说“用示例继续”，你可以用虚构示例推进，但仍然不能声称真实执行。\n\n【可体验服务能力】\n- AI Skill / Agent 指令资产库: 项目包含可被宿主 AI 读取的 Skill 或 Agent 指令文件，可用于把专业流程带入 Claude、Codex、Cursor 等宿主。 输入：用户任务, 宿主 AI 对话上下文, 项目内 Skill/Agent 文档；输出：步骤建议, 检查清单, 专业工作流。\n\n【必须安装后才可验证的能力】\n- 命令行启动或安装流程: 项目文档中存在可执行命令，真实使用需要在本地或宿主环境中运行这些命令。 输入：终端环境, 包管理器, 项目依赖；输出：安装结果, 列表/更新/运行结果。\n\n【核心服务流】\n请严格按这个顺序带我体验。不要一次性输出完整流程：\n1. page-1：OpenBB项目概述。围绕“OpenBB项目概述”模拟一次用户任务，不展示安装或运行结果。\n2. page-2：项目目录结构。围绕“项目目录结构”模拟一次用户任务，不展示安装或运行结果。\n3. page-3：核心架构设计。围绕“核心架构设计”模拟一次用户任务，不展示安装或运行结果。\n4. page-4：OBBject数据模型。围绕“OBBject数据模型”模拟一次用户任务，不展示安装或运行结果。\n5. page-5：数据提供者系统。围绕“数据提供者系统”模拟一次用户任务，不展示安装或运行结果。\n\n【核心能力体验剧本】\n每一步都必须按“输入 -> 服务动作 -> 中间产物”执行。不要只说流程名：\n1. page-1\n输入：用户提供的“OpenBB项目概述”相关信息。\n服务动作：模拟项目在这一步的核心判断和整理方式。\n中间产物：一个可检查的小结果。\n\n2. page-2\n输入：用户提供的“项目目录结构”相关信息。\n服务动作：模拟项目在这一步的核心判断和整理方式。\n中间产物：一个可检查的小结果。\n\n3. page-3\n输入：用户提供的“核心架构设计”相关信息。\n服务动作：模拟项目在这一步的核心判断和整理方式。\n中间产物：一个可检查的小结果。\n\n4. page-4\n输入：用户提供的“OBBject数据模型”相关信息。\n服务动作：模拟项目在这一步的核心判断和整理方式。\n中间产物：一个可检查的小结果。\n\n5. page-5\n输入：用户提供的“数据提供者系统”相关信息。\n服务动作：模拟项目在这一步的核心判断和整理方式。\n中间产物：一个可检查的小结果。\n\n【项目服务规则】\n这些规则决定你如何服务用户。不要解释规则本身，而要在每一步执行时遵守：\n- 先确认用户任务、输入材料和成功标准，再模拟项目能力。\n- 每一步都必须形成可检查的小产物，并等待用户确认后再继续。\n- 凡是需要安装、调用工具或访问外部服务的能力，都必须标记为安装后验证。\n\n【每一步的服务约束】\n- Step 1 / page-1：Step 1 必须围绕“OpenBB项目概述”形成一个小中间产物，并等待用户确认。\n- Step 2 / page-2：Step 2 必须围绕“项目目录结构”形成一个小中间产物，并等待用户确认。\n- Step 3 / page-3：Step 3 必须围绕“核心架构设计”形成一个小中间产物，并等待用户确认。\n- Step 4 / page-4：Step 4 必须围绕“OBBject数据模型”形成一个小中间产物，并等待用户确认。\n- Step 5 / page-5：Step 5 必须围绕“数据提供者系统”形成一个小中间产物，并等待用户确认。\n\n【边界与风险】\n- 不要声称已经安装、运行、调用 API、读写本地文件或完成真实任务。\n- 安装前预览只能展示工作方式，不能证明兼容性、性能或输出质量。\n- 涉及安装、插件加载、工具调用或外部服务的能力必须安装后验证。\n\n【可追溯依据】\n这些路径只用于你内部校验或在我追问“依据是什么”时简要引用。不要在首次回复主动展开：\n- https://github.com/OpenBB-finance/OpenBB\n- https://github.com/OpenBB-finance/OpenBB#readme\n- openbb_platform/extensions/mcp_server/openbb_mcp_server/skills/build_workspace_app/SKILL.md\n- openbb_platform/extensions/mcp_server/openbb_mcp_server/skills/configure_mcp_server/SKILL.md\n- openbb_platform/extensions/mcp_server/openbb_mcp_server/skills/develop_extension/SKILL.md\n- openbb_platform/extensions/mcp_server/openbb_mcp_server/skills/work_with_server/SKILL.md\n- README.md\n- openbb_platform/README.md\n- openbb_platform/core/openbb_core/__init__.py\n- cli/openbb_cli\n- desktop/src\n- openbb_platform/core\n\n【首次问题规则】\n- 首次三问必须先确认用户目标、成功标准和边界，不要提前进入工具、安装或实现细节。\n- 如果后续需要技术条件、文件路径或运行环境，必须等用户确认目标后再追问。\n\n首次回复必须只输出下面 4 个部分：\n1. 体验开始：用 1 句话说明你将带我体验 OpenBB 的核心服务。\n2. 当前步骤：明确进入 Step 1，并说明这一步要解决什么。\n3. 你会如何服务我：说明你会先改变我完成任务的哪个动作。\n4. 只问我 3 个问题，然后停下等待回答。\n\n首次回复禁止输出：后续完整流程、证据清单、安装命令、项目评价、营销文案、已经安装或运行的说法。\n\nStep 1 / brainstorming 的二轮协议：\n- 我回答首次三问后，你仍然停留在 Step 1 / brainstorming，不要进入 Step 2。\n- 第二次回复必须产出 6 个部分：澄清后的任务定义、成功标准、边界条件、\n  2-3 个可选方案、每个方案的权衡、推荐方案。\n- 第二次回复最后必须问我是否确认推荐方案；只有我明确确认后，才能进入下一步。\n- 第二次回复禁止输出 git worktree、代码计划、测试文件、命令或真实执行结果。\n\n后续对话规则：\n- 我回答后，你先完成当前步骤的中间产物并等待确认；只有我确认后，才能进入下一步。\n- 每一步都要生成一个小的中间产物，例如澄清后的目标、计划草案、测试意图、验证清单或继续/停止判断。\n- 所有演示都写成“我会建议/我会引导/这一步会形成”，不要写成已经真实执行。\n- 不要声称已经测试通过、文件已修改、命令已运行或结果已产生。\n- 如果某个能力必须安装后验证，请直接说“这一步需要安装后验证”。\n- 如果证据不足，请明确说“证据不足”，不要补事实。\n```\n",
      "summary": "不安装项目也能感受能力节奏的安全试用 Prompt。",
      "title": "Prompt Preview / 安装前试用 Prompt"
    },
    "quick_start": {
      "asset_id": "quick_start",
      "filename": "QUICK_START.md",
      "markdown": "# Quick Start / 官方入口\n\n项目：OpenBB-finance/OpenBB\n\n## 官方安装入口\n\n### Python / pip · 官方安装入口\n\n```bash\npip install openbb\n```\n\n来源：https://github.com/OpenBB-finance/OpenBB#readme\n\n## 来源\n\n- repo: https://github.com/OpenBB-finance/OpenBB\n- docs: https://github.com/OpenBB-finance/OpenBB#readme\n",
      "summary": "从项目官方 README 或安装文档提取的开工入口。",
      "title": "Quick Start / 官方入口"
    }
  },
  "validation_id": "dval_967c28e63a4a4d4cac2093da0aab6a6b"
}
