# MoFin Cron 完全手册

> 版本: v1 | 最后更新: 2026-06-27
> 用途: 所有定时任务的完整文档，含设计意图、实现方式、数据流、代码结构、依赖关系。

## 一、系统健康

| 脚本 | 调度 | 设计意图 | 数据流 | 关键代码 |
|------|------|---------|--------|---------|
| `morning_health_check.py` | 交易日8:00 | 开盘前全面体检8类48项，发现异常→auto_fix/TODO | 读：checklist.json/DB/进程/端口/API → 写：health_check_log表+todos表 | main() → run_check() → write_todos_for_issues() → auto_fix_issue() |
| `intraday_health_check.py` | 交易日每15分 9-15 | 盘中轻量自检，XMPP/Gateway/Scanner/价格/信号管道 | 读：DB/进程/API/macro_risk_state.json → 写：todos表 | main() → check_bots/gateways/xiaoguo/price_monitor/signal_pipeline → write_todos() |
| `system_health_check.py` | 每日9:00 | 传统系统检查（进程/端口/文件/数据新鲜度）——被morning_health_check替代 | 读：系统状态 → stdout | run() |
| `system_audit.py` | 交易日17:30 | 7维度审计（信号/股票/策略/建议/组合/数据管道/服务） | 读：DB+JSON → 写：audit_report.json | audit_signals/stocks/strategies/advice/portfolio/pipeline/services() |
| `memory_guardian.py` | 每日7:00 | 按SOUL记忆规则检查并清理共享memory | 读：MEMORY.md+gateway → 调gateway清理 + report | check_memory_md() → cleanup_memory() |

## 二、数据采集

| 脚本 | 调度 | 设计意图 | 数据流 | 关键代码 |
|------|------|---------|--------|---------|
| `price_monitor.py` | 交易日每2分 9-16 | 腾讯API实时价→更新portfolio.json+price_events表 | 腾讯API→price_events表+portfolio.json(price更新) | main() → fetch_quote() → write_price_event() → update_portfolio() |
| `macro_context_collector.py` | 工作日每30分 8-15 + 周末 | 宏观新闻采集+实时红绿灯检测+指数采集 | akshare→macro_raw_news表+signal_news(macro_watch)+macro_risk_state.json+macro_context_log表 | main() → fetch_news() → detect_risk() → write_risk_signal() → 指数→DB |
| `divergence_detector.py` | 工作日每30分 8-15 + 周末 | 跨市场5项背离检测→风险信号 | 腾讯API→计算背离→signal_news(macro_watch) | main() → check_divergences() → write_signal() |
| `refresh_mtf_cache.py` | 交易日9:00 | 开盘前预填多周期K线缓存 | 腾讯API→multi_tf_cache.json | main() → batch_update_all() |
| `collect_evaluation_data.py` | 交易日20:30 | 六维评估原始数据采集 | 各API→evaluation_input.json | main() → collect_index/sector/fundamental/money_flow() |

## 三、策略与交易

| 脚本 | 调度 | 设计意图 | 数据流 | 关键代码 |
|------|------|---------|--------|---------|
| `stale_push_wlin.py` | 交易日每30分 9-15 | 自选买入区提醒+自动重评+换仓评估+T+2前瞻 | 读：decisions.json+portfolio.json+code_data → 推XMPP | main() → evaluate_swap() → check_tplus2() → push_to_xmpp() |
| `stale_detector.py` | 每30分（被stale_push_wlin调用） | 检测价格偏离/策略过期/RR<1.5→标记STALE | 读：decisions.json → stdout(WL_IN/DRIFT/STALE等) | main() → check_entries() |
| `per_stock_reassess.py` | 交易日9:00/12:00 + 盘中触发 | 个股策略重评（技术面→止损/止盈/买入区） | 读：decisions.json+腾讯API → 写：decisions.json | main() → reassess_strategy() for each code |
| `strategy-staleness-check.py` | 交易日9:00 | 策略时效性扫描→staleness_report.json | 读：decisions.json → 写：strategy_staleness_report.json | main() → check_age/drift/invalid() |
| `strategy_evaluator.py` | 每周六21:00 | 双维度策略评估 | 读：evaluation_input.json+decisions.json → evaluation结果+accuracy_stats | main() → evaluate_holdings/watchlist() |
| `advice_reconciliation.py` | 每周六20:00 | 建议对账：追踪建议执行情况 | 读：advice_timeline表+portfolio.json → 报告 | main() → reconcile() |
| `strategy_review.py` | 交易日20:00 | 三层复盘（信号/执行/综合），失败模式归因 | 读：decisions.json+腾讯API → 写：accuracy_stats表 | review() → evaluate_strategy() → classify_outcome() |
| `data_governance.py` | 每周六10:00 | holding_strategies去重+缺失策略检查+深套统计 | 读：DB+decisions.json → 归档+报告 | clean_holding_strategies() → check_missing_strategies() |

## 四、信号消费

| 脚本 | 调度 | 设计意图 | 数据流 | 关键代码 |
|------|------|---------|--------|---------|
| `xiaoguo_scanner.py` | 交易日每5分 9-15 | 全市场排行榜→新闻搜索→情感判断→signal_news | akshare→小果LLM→signal_news(xiaoguo) | main() → fetch_hot_board/rotating_board/sector_leaders() → check_stock() |
| `xiaoguo_signal_consumer.py` | 交易日每30分 9-15 | 消费xiaoguo信号→五维评估→加自选/关注/跳过 | 读：signal_news(xiaoguo)+腾讯行情 → 写：watchlist.json+标记processed | main() → quick_assess() → evaluate_and_act() |
| `macro_signal_consumer.py` | 交易日每15分 9-15 | 消费宏观风险信号→macro_risk_state.json | 读：signal_news(macro_watch) → 写：macro_risk_state.json+标记processed | main() → read_signals() → update_risk_state() |

## 五、自成长

| 脚本 | 调度 | 设计意图 | 数据流 | 关键代码 |
|------|------|---------|--------|---------|
| `branch_scanner.py` | 交易日每15分 9-15 | 分支状态变化检测→触发计数+剪枝候选 | 读：decisions.json+strategy_tree+当前情景 → 写：trigger_count+scanner_state.json | main() → evaluate_branches() → detect_changes() |
| `prune_branches.py` | 交易日21:00 | 低效分支剪枝（触发≥5次+成功率<50%） | 读：strategy_tree.branches → 移入pruned_branches | main() → prune() |
| `hardcode_scanner.py` | 交易日17:25 | 扫描.py中大额数字硬编码 | 读：所有.py → 写：audit JSON | main() → scan_files() |
| `meta_growth.py` | 每个交易日12:45+0:45 | 分析git log修复模式→扩展hardcode_scanner规则 | 读：git log+growth_registry → 写：hardcode_scanner扩展点+growth_registry | main() → analyze_fixes() → extend_rules() |

## 六、LLM Cron（调度LLM分析，非纯脚本）

| 任务 | 调度 | 设计意图 | 加载skill |
|------|------|---------|-----------|
| 开盘简报 | 9:35 | 简短开盘简报（需操作票+分支理由+其他不变） | cron-report-format, analyst-knowledge |
| 收盘简报 | 16:10 | 当日回顾+明日关注+情景判断 | cron-report-format, analyst-knowledge |
| 策略评估-每日 | 21:00 | 六维分析+三阶段递进判断 | analyst-knowledge, strategy-reassessment, strategy-evaluation |
| 策略评估-每周 | 周六21:00 | 周度回顾 | (no_agent: strategy_evaluator.py) |
| 知识萃取-盘后 | 16:30 | 当日经验沉淀 | analyst-knowledge |
| 系统全局审计 | 17:30 | 审计报告解读 | analyst-knowledge |
| 宏观风险扫描 | 8:30/11:30 + 周末 | 宏观新闻→系统性风险评估 | macro-risk-scanner |
| 小果情感分析 | 16:00 | 持仓+自选新闻情感分析 | (LLM cron, 调xiaoguo API) |

## 七、暂停/废弃

| 脚本 | 原因 | 替代 |
|------|------|------|
| MoFin 盘前中/午后监控 | Dad说不需要盘中推 | intraday_health_check(静默采集) |
| 核心区间维护 | 被高频价格监控替代 | price_monitor |
| 知微洞察生成 | 被每日评估替代 | strategy_evaluation |
| 小果市场筛选-全市场 | 小果LLM不可靠 | xiaoguo_scanner(降级版) |
| 市场数据采集 | 整合到macro_context_collector | macro_context_collector |
| 市场精选推荐-每日 | Dad不需要 | — |

## 八、cron数量统计

| 分类 | 启用 | 暂停 | 合计 |
|------|------|------|------|
| 系统健康 | 5 | 0 | 5 |
| 数据采集 | 5 | 0 | 5 |
| 策略与交易 | 8 | 0 | 8 |
| 信号消费 | 3 | 0 | 3 |
| 自成长 | 4 | 0 | 4 |
| LLM Cron | 8 | 0 | 8 |
| 暂停/废弃 | 0 | 5 | 5 |
| **合计** | **33** | **5** | **38** |
