量化交易系统开发工具链整合方案

来源: Trilium

以下是整合并优化后的方案,融合了两个方案的优势,补充了协同逻辑和细节,形成更完善的开发工具链体系:

🛠️ 量化交易系统开发工具链整合方案#### 一、核心组件配置(整合优化版)##### 1. Tmux 开发环境布局脚本(**scripts/dev/start-dev.sh**- 布局升级:2×2 四窗格标准化布局(兼容方案一的分区逻辑,复用方案二的组件划分)左上:后端服务(pm2 dev 模式启动,实时显示启动日志)

  • 右上:数据库客户端(自动连接开发库,预设常用查询语句)
  • 左下:前端服务(npm run dev 启动,监控编译日志)
  • 右下:lnav 日志中心(自动加载自定义格式,聚焦 logs/backend.log
  • 增强特性:自动依赖检查(检测 tmux/pm2/lnav 是否安装,缺失则提示安装命令)
  • 会话智能管理(存在同名会话时自动附加,无则创建;支持 --new 参数强制新建)
  • 彩色交互界面(添加启动进度条、组件状态色标,成功 / 失败用绿 / 红标识)
  • 一键进入指定窗格(支持 ./start-dev.sh backend 直接跳转到后端窗格)
2. PM2 进程管理配置(**ecosystem.config.js**- 多服务统一管理(融合方案二的多服务支持,强化方案一的资源控制)核心服务:后端 API 服务(src/main.py
  • 辅助服务:数据收集器(src/data/collector.py)、GPU 策略计算服务(src/strategy/gpu_worker.py
  • 增强特性:环境隔离:NODE_ENV=dev 时启用热重载,prod 时启用资源限制(内存 >1G 重启)
  • 智能重启策略:开发环境 watch: true(文件变更自动重启),生产环境 max_restarts: 10(防无限重启)
  • 健康检查:对 /health 接口每秒探测,3 次失败触发重启并发送告警到终端
  • 日志分级:开发环境日志输出到终端 + 文件,生产环境仅输出到文件(按天轮转)
3. Lnav 日志解析配置(**config/lnav/mystocks_log.json**- 格式统一与扩展(整合方案一的 SQL 支持和方案二的字段识别)核心字段解析:timestamp(自动转换为时间戳)、level(映射到 lnav 级别)、request_id(关联全链路)、duration(计算耗时分布)、path(接口路径)、status(HTTP 状态码)、error(异常信息)
  • 增强特性:预设查询模板:一键执行常用分析(如 top 10 慢接口500 错误统计
  • 自动安装与更新:scripts/dev/setup_lnav.sh 脚本支持 dev/prod 环境切换,自动覆盖旧配置
  • 多日志关联:同时加载 backend.logcollector.log,通过 request_idsymbol 跨文件关联

二、关键文件结构(标准化路径)

plaintext

/opt/claude/mystocks_spec/
├── scripts/
│   └── dev/
│       ├── start-dev.sh           # tmux会话启动入口
│       └── setup_lnav.sh          # lnav配置安装脚本
├── config/
│   └── lnav/
│       └── mystocks_log.json      # lnav日志格式定义
├── ecosystem.config.js            # PM2多服务配置
└── logs/
    ├── backend.log                # 后端主日志
    ├── collector.log              # 数据收集器日志
    └── gpu_worker.log             # GPU服务日志

三、协同工作流(工具链联动逻辑)-

开发环境一键启动执行 ./scripts/dev/start-dev.sh 后: Tmux 自动创建会话并分窗,依次启动:后端窗格:pm2 start ecosystem.config.js --env dev(开发模式启动所有服务) - 前端窗格:cd frontend && npm run dev - 数据库窗格:psql -U dev_user -d quant_dev -f scripts/dev/init_queries.sql(加载预设查询) - 日志窗格:lnav logs/*.log(自动应用 mystocks_log.json 格式) - 问题排查闭环 前端报错时,在日志窗格用 :filter-in request_id=xxx 定位对应后端请求日志 - 服务崩溃时,PM2 自动重启并在日志中标记 [PM2] Restarted service: backend,tmux 日志窗格实时显示 - 性能问题时,用 lnav 的 :histogram -f duration path=/api/strategy 分析策略接口耗时分布 - 生产环境切换 执行 pm2 start ecosystem.config.js --env prod 启动生产模式(自动启用资源限制和日志轮转) - 用 tmux new-session -s prod -n monitor 'pm2 monit' 单独创建生产监控会话

四、文档与快速指南-

核心文档docs/guides/DEV_TOOLCHAIN_GUIDE.md(整合两个方案的使用说明) 包含 tmux 窗格快捷键(如 Ctrl+b + 方向键 切换窗格) - PM2 常用命令(pm2 logs backend 查看后端日志、pm2 restart ecosystem.config.js 重启服务) - Lnav 高级用法(如用 SQL 查询:SELECT path, COUNT(*) FROM log WHERE level='ERROR' GROUP BY path) - 快速开始命令

bash

# 1. 一键启动开发环境(含tmux+pm2+lnav联动)
./scripts/dev/start-dev.sh

# 2. 单独安装lnav配置(支持开发/生产环境)
./scripts/dev/setup_lnav.sh dev   # 开发环境(含调试字段)
./scripts/dev/setup_lnav.sh prod  # 生产环境(精简字段,聚焦性能)

# 3. 生产环境服务管理
pm2 start ecosystem.config.js --env prod  # 启动生产服务
pm2 monit                                # 监控服务状态

优化亮点总结- 工具协同化:解决了两个方案中工具 “各自为战” 的问题,通过 start-dev.sh 实现 tmux 启动时自动联动 PM2 和 lnav,形成闭环工作流。

  • 环境差异化:开发 / 生产环境配置分离(如 PM2 的热重载 vs 资源限制、lnav 的调试字段 vs 精简字段),避免配置冲突。
  • 操作人性化:添加自动检查、彩色提示、快捷跳转等功能,降低新成员上手成本。
  • 扩展性预留:PM2 支持多服务配置,方便后续新增模块(如回测服务);lnav 支持多日志关联,适配系统复杂度增长。