# 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 开发组