# MyStocks 开发工具链整合指南

来源: Trilium

# MyStocks 开发工具链整合指南

## 一、系统概述

这是一个整合了 Tmux、PM2 和 Lnav 的开发工具链方案,提供一键式开发环境启动、多服务管理和高级日志分析功能。

## 二、核心组件配置

### 1. Tmux 开发环境布局 (scripts/dev/start-dev.sh)

#### 布局结构


┌─────────────────┬─────────────────┐

│ 左上: Backend   │ 右上: Database  │

├─────────────────┼─────────────────┤

│ 左下: Frontend  │ 右下: Logs      │

└─────────────────┴─────────────────┘

#### 功能特性

  • *自动依赖检查*: 检测 tmux/pm2/lnav/node/npm/python3/psql 是否安装

  • *会话智能管理*: 存在同名会话时自动附加,支持 --new 参数强制新建

  • *彩色交互界面*: 启动进度条、组件状态色标

  • *快捷窗格跳转*: 支持 ./start-dev.sh backend 直接跳转到后端窗格

#### 使用方法


# 启动开发环境

./scripts/dev/start-dev.sh



# 强制新建会话

./scripts/dev/start-dev.sh --new



# 启动后直接跳转到指定窗格

./scripts/dev/start-dev.sh logs

### 2. PM2 进程管理 (ecosystem.config.js)

#### 服务组成

  • mystocks-backend: 后端 API 服务

  • mystocks-collector: 数据收集器

  • mystocks-gpu-worker: GPU 策略计算服务

#### 核心特性

  • *环境隔离*: NODE_ENV=dev 热重载,prod 资源限制

  • *智能重启*: 生产环境 max_restarts=10 防止无限重启

  • *健康检查*: 对 /health 接口每秒探测,3 次失败重启

  • *日志分级*: 开发环境终端+文件,生产环境仅文件

#### 使用方法


# 开发环境启动

pm2 start ecosystem.config.js



# 生产环境启动

pm2 start ecosystem.config.js --env production



# 查看状态

pm2 status



# 查看日志

pm2 logs backend



# 重启服务

pm2 restart ecosystem.config.js

### 3. Lnav 日志分析 (config/lnav/mystocks_log.json)

#### 解析字段

  • timestamp: 时间戳

  • level: 日志级别 (debug/info/warn/error/critical)

  • request_id: 请求 ID (全链路关联)

  • duration: 耗时 (ms)

  • path: 接口路径

  • status: HTTP 状态码

  • message: 详细信息

#### 预设查询

  • Top 10 慢接口

  • 500 错误统计

  • 请求耗时分布

  • 接口请求趋势

#### 使用方法


# 安装配置

./scripts/dev/setup_lnav.sh dev

./scripts/dev/setup_lnav.sh prod  # 生产环境精简配置



# 查看日志

lnav logs/*.log



# 执行预设查询 (在 lnav 中输入 :)

:run-query "Top 10 慢接口"

## 三、协同工作流


开发人员

    │

    ├─> 一键启动开发环境

    │   ./scripts/dev/start-dev.sh

    │

Tmux 创建 2×2 窗格布局

┌─────────┬─────────┐

│ Backend │ Database│

├─────────┼─────────┤

│ Frontend│ Logs    │

└─────────┴─────────┘

    │

    ├─> 后端窗格: pm2 start --env dev

    ├─> 前端窗格: npm run dev

    ├─> 数据库窗格: psql + 预设查询

    └─> 日志窗格: lnav + 自定义格式

    │

    ├─> 开发过程中...

    │   - 前端报错 → Logs 窗格用 request_id 关联后端

    │   - 服务崩溃 → PM2 自动重启 + 日志标记

    │   - 性能问题 → lnav 耗时分布分析

    │

    └─> 生产切换

        pm2 start --env prod

        tmux new -s prod 'pm2 monit'

## 四、快速参考

### Tmux 快捷键

| 快捷键 | 功能 |

|--------|------|

| Ctrl+b % | 垂直分割 |

| Ctrl+b " | 水平分割 |

| Ctrl+b 0-3 | 切换窗格 |

| Ctrl+b d | 分离会话 |

| Ctrl+b : | 命令模式 |

### PM2 常用命令


pm2 start <file>        # 启动服务

pm2 stop <name>        # 停止服务

pm2 restart <name>      # 重启服务

pm2 delete <name>       # 删除服务

pm2 logs <name>         # 查看日志

pm2 monit               # 监控状态

pm2 list                # 列出服务

pm2 save                # 保存当前配置

pm2 resurrect           # 恢复服务

### Lnav 高级用法


# 搜索特定请求 ID

:filter-in request_id=abc123



# SQL 查询日志

SELECT path, COUNT(*) FROM log WHERE level='ERROR' GROUP BY path;



# 生成柱状图

:histogram -f duration path=/api/strategy



# 查看日志统计

:stats

## 五、目录结构


/opt/claude/mystocks_spec/

├── scripts/

│   └── dev/

│       ├── start-dev.sh           # Tmux 会话启动脚本

│       ├── setup_lnav.sh          # Lnav 配置安装脚本

│       └── init_queries.sql       # 数据库预设查询

├── config/

│   └── lnav/

│       └── mystocks_log.json      # Lnav 日志格式

├── ecosystem.config.js            # PM2 配置

└── logs/

    ├── backend.log                # 后端日志

    ├── collector.log              # 数据收集器日志

    └── gpu_worker.log             # GPU 服务日志


*文档版本*: v1.0

*更新时间*: 2025-11-16

*维护团队*: MyStocks 开发组