-
Notifications
You must be signed in to change notification settings - Fork 0
zh Architecture
Huang Anping edited this page Jun 2, 2026
·
1 revision
MOSAIC 是一个混合双进程系统。重逻辑/有状态部分留在 Python;编排、LLM 调用与用户界面在 TypeScript。两端通过行分隔 JSON-RPC over stdio 通信。
TypeScript 前端 (mosaic-ts/) JSON-RPC / stdio Python sidecar (mosaic/)
────────────────────────────── ─────────────── ────────────────────────────
CLI (commander) + TUI (Ink) bridge/ JSON-RPC 服务 + handlers/
LangGraph.js 4 层编排 ⇄ 行分隔 JSON ⇄ dataflows/ Tushare/akshare/FRED/qlib
L1 宏观(10) · L2 行业(7) scorecard/ · autoresearch/ · prism/
L3 投资哲学(4) · L4 决策(4) janus/ · mirofish/ · backtest/ · paper_trading/
LLM 客户端 · Scorecard 视图 持久化:SQLite + 一个 git 仓库
- 工具调用边界一律字符串/JSON —— 无跨语言 DataFrame 传输。TS 侧请求数据或动作,Python 返回 JSON。
- 重型 Python 库(pandas、numpy、pyqlib、tushare)无需 Node 绑定。
- LLM/agent 编排(LangGraph.js)与用户侧 CLI/TUI 同处一套 TypeScript 代码。
-
服务端:
mosaic/bridge/server.py从 stdin 读 JSON-RPC 请求,按方法名分发,向 stdout 写响应。导入mosaic.bridge.handlers会通过@method("namespace.verb")装饰器(mosaic/bridge/registry.py)注册每个 handler。 -
客户端:
mosaic-ts/src/bridge/client.ts(BridgeClient)spawn Python 进程、组帧请求、按 id 关联响应、把{error}信封映射为RpcError。mosaic-ts/src/bridge/types.ts(BridgeApi)把每个 RPC 封装为类型化方法。 -
解释器发现(
mosaic-ts/src/bridge/python.ts):MOSAIC_PYTHON环境变量 →<repo>/.venv/bin/python→ fail-loud。 - 完整方法表见桥 RPC。
MOSAIC-Agents/
├── mosaic/ # 🐍 Python sidecar
│ ├── bridge/ # JSON-RPC 服务 + handlers/(每命名空间一个模块)
│ ├── dataflows/ # Tushare / akshare / yfinance / FRED + qlib 本地读取 + ingest
│ │ └── collectors/ # vendored qlib + tushare/ETF 采集器(见数据层)
│ ├── scorecard/ # SQLite 存储 · forward-return 评分 · Darwinian 权重
│ ├── autoresearch/ # git_ops · 约束 · 评估器 · keep/revert 决策器
│ ├── prism/ # 7-cohort 训练编排
│ ├── janus/ # 跨 cohort 元加权
│ ├── mirofish/ # 反身性情景模拟(swarm 引擎 · path-aware 评分)
│ ├── backtest/ # qlib 两段式向量化回测
│ └── paper_trading/ # 自建纸上交易引擎(T+1、佣金、持仓)
├── mosaic-ts/ # 🟦 TypeScript 前端
│ └── src/
│ ├── bridge/ # BridgeClient + 类型化 RPC 封装 (BridgeApi)
│ ├── llm/ # 多 provider LLM 工厂
│ ├── agents/ # macro/sector/superinvestor/decision + helpers + prompts
│ ├── graph/ # daily_cycle LangGraph.js 装配
│ ├── autoresearch/ · prism/ · mirofish/
│ ├── cli/commands/ # CLI 子命令
│ └── tui/ # Ink 仪表盘
├── prompts/mosaic/ # 📝 双语提示词仓库(cohort_default + 7 cohorts)
├── tests/ # ✅ Python 测试 (pytest / unittest)
├── pyproject.toml · mosaic-tsplan.md · .github/workflows/ci.yml
- 评分器把「今天」回退到最后一个已完成交易日,只给前向窗口已成熟的行评分(
mosaic/scorecard/scorer.py)。 - MiroFish 上下文注入与上下文读取接受
as_of_date边界,使回测永不看见未来情景数据。