本模块由三个相互独立的工具型子模块组成,均位于 agent/src 下,作为上层 UI/MCP/CLI 的共享能力层: - preflight.py:通过 run_preflight() 串行执行 LLM 提供商连通性、OKX/yfinance/Tushare/Akshare/CCXT 等外部依赖检查,每个检查封装为 _check_* 函数并返回冻结的 CheckResult dataclass;结果用 Rich Table 渲染,若存在 critical=True 且非 ready 则阻断启动。 - market_data.py:暴露 fetch_market_data() 作为统一入口,先用 _SOURCE_PATTERNS 正则表根据代码后缀(如 .SZ/.SH、.US、*.HK、*-USDT、EUR/USD 等)推断首选 source,再按 backtest.loaders.registry.FALLBACK_CHAINS 逐源尝试加载,支持 max_fallback_attempts 与自定义 loader_resolver;输出经 cap_rows 采样裁剪并以 _json_safe 处理 NaN/NaT 保证 JSON 可序列化。 - ui_services.py:面向 run detail 页面的纯函数式数据装配层,读取 runs/<id>/ 下的 req.json、planner_output.json、design_spec.json、state.json、artifacts/*.csv、logs/* 等文件,提供 load_run_context、infer_indicator_periods、build_run_analysis、load_price_series、reconstruct_price_series 等函数,后者在缺失持久化 OHLCV 时动态 import backtest.runner.fetch_data_map 重建行情。 - utils/media_decode.py:提供 save_base64_data_url(),基于 MIME→扩展名映射把 base64 data URL 解码落盘,用于 channel adapter 接收媒体附件。 依赖方向单向向外:本模块仅被 UI/MCP/CLI 调用,自身通过延迟 import(如 from backtest.loaders.registry、from src.providers.llm)避免冷启动耦合。