# 富贵系统重构改造报告

> 生成日期：2026-06-02
> 改造范围：代码重构 + 模块化管理 + Cron优化 + 快捷命令

---

## 一、改造背景

对富贵系统进行全局审视后，发现以下问题：

1. **master_selector.py 1908行** — 单文件过大，包含两套引擎逻辑（旧引擎函数 + 共识模式），维护成本高
2. **代码重复** — `master_selector.py` 和 `fusion_consensus.py` 各有一套 `calc_position_percentile` / `band_detector` / 引擎逻辑
3. **模块间无隔离** — 一个模块崩溃可能影响整个系统
4. **无模块注册表** — 不知道系统有哪些模块、各自什么版本、健康状况如何
5. **无用Cron** — note-extractor(3:00) 和 memory-maintainer(4:00) 无人查看
6. **新模块未接入** — 6个新模块建成后未配置定时任务

---

## 二、改造内容

### P0：代码重构（去重+拆分）

| 操作 | 文件 | 之前 | 之后 |
|:-----|:-----|:-----|:-----|
| **提取公用函数** | `position_utils.py`(新) | 无 | 315行，含位置/波段/K线解码/多维度编码 |
| **删除旧引擎** | `master_selector.py` | 1908行，含4个旧引擎函数 | 1423行，删掉 `zhaolaoge_engine`/`geweidong_engine`/`zhangmengzhu_engine`/`chanlun_engine` |
| **改引用** | `fusion_consensus.py` | 引用 `master_selector` | 改为引用 `position_utils` |
| **改引用** | `master_selector.py` | 内置 `calc_position_percentile` | 改为 `from position_utils import ...` |

### P0：数据库初始化

| 操作 | 详情 |
|:-----|:------|
| **agent_memory表** | CREATE IF NOT EXISTS — 存储每笔分析的引擎投票 |
| **agent_engine_weights表** | CREATE IF NOT EXISTS — 存储5引擎默认权重 |
| **默认权重** | 赵老哥0.8, 章盟主0.7, 葛卫东0.6, 缠论0.5, 因子0.4 |

### 模块化管理框架（新架构核心）

| 文件 | 功能 |
|:-----|:------|
| **`fugui_registry.py`** | 模块注册表。`register()`/`safe_call()`/`isolate()`/`health()` |
| **`bootstrap.py`** | 启动引导。一次性注册9个模块 |
| **`health_check.py`** | 全模块健康检查。8项覆盖注册表→引擎→风控→数据→知识库 |

模块隔离机制：
```
调用 → 检查注册 → 检查隔离 → 检查启用 → try/except执行 → 正常返回
                                                      → 异常返回默认值
```

验证通过：隔离因子引擎后，赵老哥/章盟主/葛卫东/缠论 4引擎正常输出。

### Cron优化

| 操作 | 名称 | 时间 | 说明 |
|:-----|:-----|:-----|:------|
| ❌ 删除 | note-extractor | 03:00 | 无人查看 |
| ❌ 删除 | memory-maintainer | 04:00 | 无人查看，且曾报错 |
| ✅ 新增 | agent-daily-review | 工作日18:30 | 每日Agent复盘 |
| ✅ 新增 | agent-monitor | 工作日09:30 | 行为异常检测 |
| ✅ 新增 | backtest-review | 周一10:00 | 引擎准确率统计 |
| ✅ 新增 | health-check | 工作日09:00 | 全模块健康检查 |
| ✅ 保留 | 其余8个 | — | 数据预热/日复盘/周复盘/盘中预警/每日总结等 |

### 快捷命令

```bash
# stock/ 下新模块
alias consensus='cd ~/stock && python3 master_selector.py --consensus'
alias risk='cd ~/stock && python3 risk_agent.py'
alias env='cd ~/stock && python3 env_agent.py'
alias portfolio='cd ~/stock && python3 portfolio_agent.py'
alias memory='cd ~/stock && python3 agent_memory.py'
alias tf='cd ~/stock && python3 multi_tf_analyzer.py'
alias monitor='cd ~/stock && python3 agent_monitor.py'

# stock_workspace/ 下旧模块
alias research='cd ~/stock_workspace && source .venv/bin/activate && python3 deep_research.py'
alias state='cd ~/stock_workspace && source .venv/bin/activate && python3 market_state.py'
alias rank='cd ~/stock_workspace && source .venv/bin/activate && python3 lambda_rank.py'
alias ta='cd ~/stock_workspace && source .venv/bin/activate && python3 transformer_sector_attention.py'
alias sector='cd ~/stock_workspace && source .venv/bin/activate && python3 sector_scan.py'
```

---

## 三、当前系统状态

### 文件清单（~/stock/）

```
20个.py文件  +  17个.md知识库
```

| 分类 | 文件 | 行数 | 功能 |
|:-----|:-----|:----:|:-----|
| **核心引擎** | fusion_consensus.py | 636 | 5引擎并行+共识投票+辩论裁判 |
| | position_utils.py | 315 | 位置/波段/K线解码（公用） |
| | master_selector.py | 1423 | 主入口（默认consensus模式） |
| **模块管理** | fugui_registry.py | 340 | 模块注册表+隔离层 |
| | bootstrap.py | 240 | 启动引导（注册9个模块） |
| | health_check.py | 200 | 8项全模块健康检查 |
| **风控/组合/环境** | risk_agent.py | 334 | 6大检查+一票否决 |
| | portfolio_agent.py | 267 | 集中度+流动性+轮动 |
| | env_agent.py | 251 | 大盘约束+策略建议 |
| **记忆/反馈** | agent_memory.py | 335 | SQLite记忆共享池 |
| | agent_daily_review.py | 302 | 每日自动复盘 |
| | agent_monitor.py | 400 | 行为异常检测 |
| | backtest_review.py | 311 | 引擎准确率统计 |
| | feedback_loop.py | 497 | 用户反馈闭环（待数据） |
| **多时间框架** | multi_tf_analyzer.py | 489 | 周/日/30分三框架 |
| **执行** | execution_agent.py | 433 | 实时行情+交易计划 |
| **数据底座** | data_hub.py | 741 | MX/Tushare/Mootdx/Sina统一 |
| | sina_source.py | 259 | 新浪财经数据源 |
| | data_maintainer.py | 419 | 数据预热+修复 |
| **因子** | fusion.py | 492 | FactorFusionEngine |
| **板块** | tree_scanner.py | 720 | 板块排行+首期龙候选 |
| **知识库** | wiki_query.py | 353 | FTS5全文搜索+引擎分区 |

### Cron 定时任务（12条）

| 时间 | 名称 | 功能 |
|:-----|:-----|:------|
| 09:00 工作日 | health-check | 全模块健康检查 ✓ |
| 09:30 工作日 | agent-monitor | 行为异常检测 ✓ |
| 08:00 工作日 | fugui-kline-warmup | 数据预热 |
| 09-16/10分 工作日 | 盘中预警 | 实时监控 |
| 11:00/23:00 | notify轮询 | DeepSeek协作通道 |
| 15:30 工作日 | 日复盘 | 收盘复盘 |
| 18:00 工作日 | 盘后复盘 | 详细复盘 |
| 18:30 工作日 | agent-daily-review | Agent每日复盘 ✓ |
| 每天12小时 | self-evolution审计 | 代码审计 |
| 23:30 | 每日总结 | 老板画像+日报 |
| 周六16:00 | 周复盘 | 周度总结 |
| 周一10:00 | backtest-review | 引擎准确率 ✓ |

### 健康检查结果

```
全部8项通过 ✅

模块注册表: 9个模块（5引擎+风控+环境+组合+数据）
核心引擎:   5个（赵老哥/章盟主/葛卫东/缠论/因子）
风控模块:   1个（风控Agent）
数据底座:   5525只股票
行情数据:   5930行（茅台）
知识库:     搜索正常
数据库:     6张表
position_utils: 自测通过
```

---

## 四、文件大小对比（重构前后）

| 指标 | 重构前 | 重构后 |
|:-----|:------:|:------:|
| master_selector.py | 1908行 | 1423行 |
| fusion_consensus.py | 636行 | 636行 |
| position_utils.py | — | 315行 ✅ 新增公用 |
| 总代码量(分析引擎) | 2544行 | 2374行 |
| 重复代码 | 有（位置/波段两套） | 无 ✅ |
| 模块注册 | 无 | 9个模块注册表 ✅ |
| 健康检查 | 无 | 8项自动化 ✅ |
| cron(有用) | 8条 | 12条（删除2条无用+新增4条有用） ✅ |
| 快捷命令 | 5个 | 12个 ✅ |

---

## 五、架构示意图

```
bootstrap.py
    │
    ▼
fugui_registry.py (注册表)
    ├── 赵老哥 ──┐
    ├── 章盟主 ──┤
    ├── 葛卫东 ──┤
    ├── 缠论   ──┤──► fusion_consensus.py (共识投票)
    ├── 因子   ──┘          │
    ├── 风控Agent ───► risk_agent.py (一票否决)
    ├── 环境Agent ───► env_agent.py (约束)
    ├── 组合Agent ───► portfolio_agent.py (组合管理)
    └── DataHub  ───► data_hub.py (数据底座)
                            │
                    ┌───────┼───────┐
                    ▼       ▼       ▼
                Tushare  Mootdx   Sina

health_check.py ──► 每天早上9:00监控所有模块状态
```

**核心保障**：任何一个模块通过注册表调用，try/except 隔离。因子引擎挂了→其他4引擎正常工作。隔离不隔断。

---

## 六、本次改造前 vs 后对比

| 维度 | 改造前 | 改造后 |
|:-----|:-------|:-------|
| 代码重复 | 两套引擎逻辑 | 统一 position_utils |
| 模块隔离 | 无，一个异常影响全系统 | 注册表 try/except 隔离 |
| 健康感知 | 无 | 8项自动健康检查 |
| Cron维护 | 2个无用定时 | 清除+4个有用新增 |
| 快捷命令 | 5个 | 12个 |
| 启动入口 | 分散 | bootstrap() 统一 |
| 数据库 | 表未初始化 | agent_memory + weights 已建 |
| 可用性验证 | 无 | ✅ 隔离验证通过 |
