Commit Graph

184 Commits

Author SHA1 Message Date
知微 4477b06f12 Watchlist↔Holdings双向自动迁移
regenerate_all() 每次全量重评时自动:
① 自选股变成持仓(>0股) → 从watchlist移除
② 持仓清仓(股数归零) → 自动加回watchlist(有买入区才加)
Dad要求的双向自动同步,避免手动清理遗忘
2026-06-28 00:15:37 +08:00
知微 91d2957ab0 自选清理+新增策略
1. 13只已持仓自选股移除(watchlist 32→19)
2. 贵州茅台(600519) 买入区1101~1184 止损1068 止盈1300 RR=1.3
3. 中国平安(601318) 买入区43~46.8 止损41.4 止盈58.9 RR=2.0
4. 两股均空头排列,信号=等待企稳
2026-06-28 00:12:31 +08:00
知微 8474effcad feat: --verify-new-cron模式 + MEMORY.md流程
- 新增 --verify-new-cron 参数:创建cron后立即验证文档+注册完整性
- 自动检查cron-catalog.md和pipeline_registry.json
- 缺失时读脚本docstring自动补全
- MEMORY.md更新新增组件流程,强调"趁上下文还热"验证
2026-06-27 02:31:18 +08:00
知微 2912b127e3 docs: 38个cron完全手册
- 全部32个脚本+8个LLM cron的设计意图/数据流/代码结构
- 暂停/废弃说明
- 每个cron关联脚本和调用链
- 自动注册脚本时参考此文档推断数据流

新增cron时应该在此文档追加条目,否则注册表审计只能推断不能确认
2026-06-27 02:26:34 +08:00
知微 c3c1895896 fix: 自动注册读脚本docstring推算数据流,不再是"未知" 2026-06-27 02:22:34 +08:00
知微 d89351fbfe fix: 管道注册表自动修复——新组件自动登记占位
未注册脚本不再只报警——体检自动在pipeline_registry.json中
添加占位记录(verified=false, gap=自动发现待确认)。
Dad不需要做任何事,系统自愈。
2026-06-27 02:19:12 +08:00
知微 10caef1853 fix: 管道审计改为动态读jobs.json,无需手动维护脚本列表 2026-06-27 02:16:46 +08:00
知微 44d0a435a0 fix: 管道注册表自发现+未登记组件报警
- 自动发现:对比重要脚本列表和管道注册表
- 漏登记的不但要手动注册,体检会报"N个组件未注册管道"
- 逼着新增组件时把数据流定义进pipeline_registry.json
2026-06-27 02:08:21 +08:00
知微 120f35671d feat: 数据管道注册表+宏观风险集成+管道完整性审计
1. 新增 data/pipeline_registry.json — 数据管道注册表
   - 记录每条数据流的source→consumer→end_user
   - verified字段标记是否验证通过
   - 新增组件时必须在此注册,否则体检会报未验证

2. 宏观预警集成(修复管道缺口)
   - intraday_health_check: 读macro_risk_state.json,HIGH风险时报警
   - morning_health_check: 新增管道注册表审计项
     读pipeline_registry.json,未验证的管道标为异常

3. 管道完整性自发现机制
   注册表中verified=false的管道会在每日体检中标记
   逼迫新增组件时注册管道,否则睡不好觉
2026-06-27 02:04:22 +08:00
知微 b4f957f80d fix: guardian每日调gateway清理memory, 花token但省心 2026-06-27 01:37:18 +08:00
知微 56249428fe fix: MEMORY.md补全现金铁律+报告规则, guardian支持模式清理 2026-06-27 01:34:48 +08:00
知微 2bda688a30 feat: 记忆守卫每日cron(按SOUL规则自检memory)
- memory_guardian.py: 每日7:00检查MEMORY.md存在/容量/共享memory健康
- 有问题推报告给Dad,没问题SILENT
- 配合SOUL记忆规则,防止profile专属内容污染共享memory
2026-06-27 01:30:27 +08:00
知微 cb779b692c revert: 去掉我误建的macro_index_collector(莫荷的macro_context_collector已覆盖)
爹在XMPP里和我(知微)商量的宏观预警系统就是这3个文件:
  macro_context_collector.py — 宏观新闻采集+指数采集+红绿灯
  divergence_detector.py — 跨市场背离
  macro_signal_consumer.py — 风险信号消费
我不该另建macro_index_collector,现已删除,cron已恢复指向原文件
2026-06-27 01:16:22 +08:00
知微 54915e9b7e feat: 宏观指数采集独立(macro_index_collector) + 莫荷宏观预警系统入库
- 重建 macro_index_collector.py: 原macro_context_collector(index采集)独立
  避免与莫荷的 macro_context_collector(宏观新闻采集)冲突
- 纳入莫荷的宏观预警系统:
  divergence_detector.py — 跨市场背离监测
  macro_context_collector.py — 宏观新闻采集+红绿灯(莫荷版)
  macro_signal_consumer.py — 宏观风险信号消费
- cron修正: 宏观采集-早/午间 → macro_index_collector.py
2026-06-27 01:14:00 +08:00
知微 8b5705beae fix: 私聊回复去重(去掉send_stanza双发) 2026-06-26 23:23:38 +08:00
知微 40d74f89ff feat: xmpp bot最终修复版+skill文档同步
xmpp_agent_core.py 当前工作配置记录:
1. send_presence() — presence = available, 否则私聊进离线
2. 入站消息队列(_inbound_queue) — 崩了不丢, 重试3次
3. 出站队列(_outbound_queue) — 崩了自动重启
4. XMPP心跳检测(xep_0199 ping) — run_filters死后15s内重连
5. 私聊回复双通道: send_message(指定resource) + send_stanza(裸JID)
6. AGENT_MENTION动态解析(群聊@知微识别)
7. session_id保持xmpp-zhiwei-v2不变(不因重启换session)
8. 断线重连2秒延迟(防资源冲突)
2026-06-26 23:17:21 +08:00
知微 ef7c83a3ed feat: 换仓策略整合深套解套+T+2前瞻
- T+2前瞻: 扫描自选股中价格距买入区5%以内的A股
  - 提前评估现金是否足够
  - 不足则评分港股持仓,推荐提前卖出最低评分港股
  - T+2到账后目标股入买区时现金已到位
- 深套股在换仓评估中自然排后(score_future_outlook)
  - 不需专门解套方案,通过换仓机制逐步清理
- 数据治理: holding_strategies去重+中际旭创补策略
  每周六cron自动检查
2026-06-25 21:32:01 +08:00
知微 fa3fc93f25 feat: 数据治理+深套解套方案
- data_governance.py: holding_strategies去重(1642→345)
  - 检查缺失策略的持仓(中际旭创已补)
  - 深套持仓统计
- 中际旭创(300308)技术面策略已生成
  - 止损1287 止盈1453 买入区1297~1350 RR=3.59
- 深套解套方向:
  丘钛科技 -48% → 反弹到9.7卖1/3
  万科企业 -53% → 反弹到2.8卖1/3
  紫金矿业 -36% → 反弹到30.4卖1/3
  比亚迪股份 -27% → 反弹到89.8卖1/3
  中科电气 -32% → 反弹到18.6卖1/3
2026-06-25 21:22:59 +08:00
知微 b63475402e feat: 港股ATR波动率止损校验
- 新增 is_hk_stock(code): 港股判断(5位代码)
- 新增 calc_atr(code): 腾讯API K线→ATR(14)计算
- 港股止损增加ATR校验:止损距现价不得小于1×ATR
  技术位仍为主依据,ATR仅作为港股高波动下的间距底线
  A股不受影响保持原有逻辑
- 不违背"技术位优先,不机械乘系数"原则
2026-06-25 21:11:07 +08:00
知微 dff8e17d68 feat: 止损洗盘检测(60日K线反弹验证)
- 止损触发后检查是否反弹回SL以上3%→标记"洗盘"
- 模塑科技这类: 差两分钱触发+后来反弹=洗盘
- 执行层统一处理: 卖飞/洗盘/临界触发 三类边缘案例
2026-06-25 20:33:34 +08:00
知微 127a0ff021 feat: 复盘每日cron + 卖飞检测(60日最高价)
- 新增 cron: 策略复盘-每日 (20:00, no_agent, deliver=origin)
- 执行层增加60日K线最高价检查
  - 止盈触发后价格继续涨→标记"卖飞(X%)" + tp_too_close
- 德明利这类情况: 综合层=赚钱, 执行层=卖飞(止盈过近)
- 优化K线拉取性能(只对有TP的票拉, curl --max-time 3)
2026-06-25 20:27:53 +08:00
知微 29ec09530a feat: 三层策略复盘框架
信号层/执行层/综合层独立评估,输出每层判断+整体评级。

当前结果(38条):
  正确 6 | 错误 1 | ⚠️部分 20 | 待定 11
  信号层: 方向看反1次
  执行层: 止损过紧1次

大部分待定是因为策略太新(<7天),需要时间积累数据才能做出有效评估。
2026-06-25 20:04:44 +08:00
知微 b053103377 feat: 策略复盘闭环 Phase1
- 新增 scripts/strategy_review.py: 遍历所有active策略
  - 腾讯API实时价对比止损/止盈/入场点
  - 分类: correct/wrong/partial/pending
  - 失败模式归因: 止损过紧/入场过早/止盈过远等
  - 写入 accuracy_stats 表(首条真实数据)
- 新增 docs/strategy-review-loop.md: 完整闭环设计文档
- 含失败模式→修复方向映射表

Phase1 结果: 38条策略, 94.7%准确率(19条待定), 1条止损过紧
2026-06-25 19:58:00 +08:00
知微 147d6d0fa2 docs: 最终文档更新+全链路测试通过
自检结果: 8类48项全部运行正常
- 健康检查:  逻辑完整 43/48正常 (5项属预期行为)
- 盘中自检:  SILENT
- 执行器:  SILENT
- 信号消费:  SILENT
- 全库表:  所有数据表正常积累
2026-06-24 23:05:16 +08:00
知微 39ff4d95f7 feat: macro_context/market数据全部DB优先,JSON回退
- 建 macro_context_log 表,macro_context_collector.py 双写
- strategy_lifecycle.py load_macro_context() 优先DB
- strategy_tree.py detect_scenario() 优先DB
- stale_push_wlin.py load_macro_line() 优先DB
- xiaoguo_signal_consumer.py 大盘判断优先DB
- stock_profile.py load_macro() 优先DB
- system_audit.py 管道审计改查DB market_snapshots
- JSON保留作fallback,确保过渡期不中断
2026-06-24 22:34:08 +08:00
知微 843012e045 cleanup: 历史记录从JSON迁移到DB(health_check_log表)
- 移除health_check_history.json → health_check_log表
- 移除health_known_issues.json(未使用)
- 移除TODO_PATH(已用DB替代)
- 更新文档注释
2026-06-24 22:14:53 +08:00
知微 4c074b789e docs: 更新自愈循环+体检文档至最终版 2026-06-24 22:09:30 +08:00
知微 5a7335e583 fix: xiaoguo_scanner LLM超时恢复30s 2026-06-24 22:05:45 +08:00
知微 9b878001af fix: 小果LLM不可达降级处理
- xiaoguo_scanner.py: LLM超时/不可达→标记unknown继续扫,不跳过
- intraday_health_check.py: 小果无数据时不报严重错误(可能是正常离线)
- scanner profile目录同步
2026-06-24 22:04:18 +08:00
知微 d27dbcc6ad fix: 盘中自检增加进程级检查(price_monitor/xiaoguo_scanner)
- price_monitor:pgrep进程 + 最近10分钟事件数双重验证
- xiaoguo_scanner:pgrep进程 + 今日数据 + API可达三重验证
- 避免"停了两天不知道"的情况
2026-06-24 22:00:58 +08:00
知微 077f683878 feat: 三层自检+元自检+cron全局审计
- 盘中高频(每15分): XMPP/Gateway/Scanner/价格/信号管道
- 每日早检(8:00): 原有7层 + 新增cron全局审计 + 元自检
- cron审计: 检查所有启用的定时任务是否在24h内运行过
- 元自检: 昨日体检是否完成/checklist覆盖是否完整
- 自成长: auto_discovery自动追加新增cron到清单
2026-06-24 21:58:57 +08:00
知微 7a6fb103cb fix: 执行器结果通过zhiwei的XMPP发给Dad
- 新增 send_xmpp() 用hermes send经zhiwei发XMPP给hmo
- 每条TODO完成/失败/升级都调用send_xmpp
- Dad通过XMPP收到所有TODO流转结果
2026-06-24 21:50:15 +08:00
知微 0a7ad20f54 fix: 执行器输出LLM处理结果给Dad
- gateway API返回结果打印到Dad可见的输出
- 每个TODO在Dad面前出现1次(直接修复)或2次(创建+结果)
- LLM也搞不定的会在结果里说清楚
2026-06-24 21:49:03 +08:00
知微 629f154829 cleanup: 执行器失败带完整上下文调gateway API
- 升降级信息含完整description(体检原因/分类/详情)
- 含尝试的修复命令和失败输出
- gateway API是新session,有完整上下文才能分析
2026-06-24 21:41:14 +08:00
知微 526fcc4412 fix: 执行器失败直接发核心群,不走API
- 执行器修不了→hermes send到核心群,知微在群里收到就处理
- Dad也在核心群,能看到
- 不发gateway API(上下文隔离,Dad看不到)
- 无fix_action也走同一路径
2026-06-24 21:38:36 +08:00
知微 b766a5dbb1 fix: 执行器只试一次,失败直接needs_llm升级
- 去掉重试逻辑:每10分钟试1次,失败→立刻needs_llm
- 无fix_action也走needs_llm(不搁置)
- 执行器deliver=origin,needs_llm输出会到达Dad
- 知微启动时/被叫时检查needs_llm→直接处理
2026-06-24 21:30:49 +08:00
知微 11254c8834 fix: 取消blocked,改为needs_llm升级机制
- executor重试耗尽→needs_llm(需知微介入),非blocked
- health check报告尾段展示needs_llm项+失败原因
- derive_fix_action覆盖全部已知场景(cron errors/delivery等)
- TODO创建时注明"无法当场修复原因"
- 每个TODO必有fix_action,没有的不创建TODOs直接在报告列出
2026-06-24 21:26:23 +08:00
知微 b63c4f5879 fix: 干掉blocked状态+所有TODO必有fix_action
- 取消blocked状态:没有"搁着等"这回事
- executor改:fix_action失败→重试→重试用完等明天体检再说
- health check改:创建TODO时fix_action必须非空
  - 没有fix_action→不创建TODO,在报告里直接列出
- 新增derive_fix_action覆盖:delivery/价格监控/信号桥等场景
- 体检报告尾段:查出无fix_action的问题直接列出,不创建空TODO
2026-06-24 21:16:59 +08:00
知微 a55d241f30 feat: TODO DB迁移+no_agent执行器+阻塞升级机制
- 创建 mofin.db → todos 表(id/title/status/priority/fix_action/retry机制)
- 创建 self_todo_executor.py:no_agent脚本,纯代码逻辑
  - 有fix_action→执行→验证→标记completed
  - 无fix_action→标记blocked→输出通知
  - 失败重试3次→超限标blocked
  - 新blocked项首次输出后缓存不重复
- 修改 morning_health_check:
  - TODO写入DB取代JSON(sqlite3,无row_factory依赖)
  - 去重:含completed查重
  - 输出阻塞TODO列表
- 替换cron:LLM cron(2h间距) → no_agent(10min间距)
- 修复:deliver=origin两任务改为local
- 清理:废弃todo.json退役
2026-06-24 20:55:56 +08:00
知微 a76240b52d feat: TODO迁移到DB + no_agent自愈执行器
- 创建 mofin.db → todos 表(含fix_action/verification_check/retry机制)
- 创建 scripts/self_todo_executor.py(no_agent,纯代码逻辑,无LLM)
- 修改 morning_health_check.py:TODO写入DB而非JSON,新增derive_fix_action()
- cron替换:LLM cron → no_agent脚本,*/10 8-22高频轮询
- 成本:无pending时仅sqlite查询,约0.01s/次

处理链:
  health_check(8:00) → 可修直接自动修 → 不可修写DB(todos表) → 自愈执行器(每10分) → 有fix_action就执行 → 无fix_action标blocked留待人工
2026-06-24 20:44:36 +08:00
知微 26993c1d41 fix: 健康检查→自动修复→TODO三级处理
- 新增 auto_fix_issue(): 可自动修复的问题直接修复(汇率缓存/价格事件)
- 修复后的问题不写TODO,只有不可自动修复的才进TODO系统
- 修复 checklist 中港股汇率缓存路径(profile环境~解析差异)
- 输出增加🛠️自动修复和📋TODO写入摘要

处理流程:
  可自动修复(汇率刷新等)→ 立即修复,报告标记
  需人工/复杂修复(cron错误/delivery配置)→ 写入TODO
  TODO由self-todo cron在下一窗口(9:00/11:00/14:00等)处理
2026-06-24 20:26:47 +08:00
知微 4407f35027 feat: 自愈循环系统 + xiaoguo信号桥
- 新增 docs/self-healing-loop.md: 自愈循环设计文档
- 修改 morning_health_check.py: 发现异常后自动写入TODO系统
  - severity=critical→priority=high, error→medium, warn→low
  - 相同问题已completed→重新打开并升一级
  - 已有pending→不重复
- 新增 scripts/xiaoguo_signal_consumer.py: 知微消费小果扫描信号
  - 每30分钟盘中运行
  - 读signal_news未处理xiaoguo信号
  - 五维快速评估→加自选/关注/跳过
  - 标记processed=1
- 新增 cron: 小果信号消费-盘中 (15,45 9-15)
- 更新health_checklist自维护机制

自愈循环: 体检→TODO→修复→验证
2026-06-24 20:14:53 +08:00
知微 a24505ebef feat: 系统常规体检机制
- 新增 morning_health_check.py:分层分类全面体检脚本
- 新增 health_checklist.json:可动态维护的检查清单(自动发现新组件)
- 新增 docs/morning-health-check.md:完整设计文档
- 新增 skill: morning-health-check
- 修复:xiaoguo_scanner.py 同步到profile脚本目录
- 修复:system_audit.py 从symlink改为硬拷贝(解决脚本路径越界)
- 修复:morning_health_check.py 使用jobs.json而非cron.db(更可靠)

自动检查7层43项:
基础设施/SENSE/RESPOND/ADAPT/IMPROVE/数据文件/管道完整性
每天8:00开盘前自动跑一次
2026-06-24 20:09:10 +08:00
知微 4aa884ed31 TODO一口气4/6完成
T001: enrich_timing_signal RR参数降级
T002: price_monitor已有XMPP推送(514-525行)
T003: 自选扫描加15:00轮次
T005: 策略数据口径理解完成(非bug)
T006: trigger同步(已完成)
T004: 截图叙事清理待设计

system_health_check.py CRON_JOBS路径修正→正确的profile路径
2026-06-24 17:50:49 +08:00
知微 d4ad5a57ef trigger字段永久同步(strategy_lifecycle)+ 知微TODO系统
T006: regenerate_all() 新增 trigger 填充(stop_loss/entry_zone/take_profit_zone),
      price_monitor 依赖此字段检测止损区间/买入区/止盈区触发。
      历史数据已通过 fix_trigger.py 一次性补全39只。

新增 devops/self-todo skill + cronjob 自我驱动-TODO自动执行。
每天8轮检查pending任务,主动完成并报告进度。
TODO数据:~/.hermes/profiles/position-analyst/todo.json
2026-06-24 17:24:45 +08:00
知微 9a702a66f7 A/H跨市场去重:药明康德不再推H股
药明康德(02359) timing_signal=买入、多头排列,但Dad已持有
药明康德A股(603259)。同股同权,H折CNY还贵7.4%。

新增:stale_push_wlin在推荐前检查portfolio中是否有
同名不同代码的持仓。有则跳过推荐。

测试:之前推H股,现在静默(0可操作→无输出)
2026-06-24 15:35:58 +08:00
知微 4ab95ecbcb 策略质量过滤:信义光能不应被推荐
修复:stale_push_wlin 没有检查 timing_signal 和 sector_context

信义光能(00968)被推荐的原因:
  timing_signal='行业偏弱'  sector='房地产开发大跌-294%'
  RR=7.2看起来很高,但趋势完全空头且行业崩塌
  → 原代码只查RR>=3+价格在买入区,没查信号质量

新增两条过滤:
1. timing_signal含[偏弱/弱势/观望/卖出/回避] → 跳过
2. sector_context含'大跌' → 跳过(行业崩时不推荐)

实测:加过滤前7只,加后1只(仅药明康德)
2026-06-24 14:40:31 +08:00
知微 8f830b8de2 信义光能问题修复:两层级过滤+趋势检查
Bug 1 — strategy_lifecycle.py: enrich_timing_signal 用 factors[-1] 当信号
  信义光能: base_signal=neutral, factors=[大盘中性,行业偏弱,高估值]
  旧逻辑: factors[-1]='行业偏弱'→成为timing_signal→无效信号
  新逻辑: 先找有效操作方向(买入/加仓/观望/持有/关注/信号不充分),
          找不到→信号不充分。不再从上下文因子里拼凑信号。

Bug 2 — stale_push_wlin.py: 信号过滤太松
  旧逻辑: 只跳过特定关键词(等企稳/关注/信号不充分/持有)
  新逻辑: 信号必须含"买入"或"加仓"才进推荐,其他一律跳过

Check 3 — 趋势检查(新增)
  fetch_trend_data(): 取实时行情+30日K线计算MA排列
  空头排列/弱势震荡→不推荐
  药明康德通过(多头排列+买入信号)  信义光能不通过(空头+行业偏弱)
2026-06-24 14:39:50 +08:00
知微 e83dfc415d 持仓完成更新:现金20371 总资产1015540
OCR读取券商截图确认数据:
  资金余额: 20,371.53元
  可用资金: 17,645.31元
  股票市值: 995,168.79元
  仓位: 97.99%
  总资产: 1,015,540.32元

今日操作确认:
  卖出: 招商银行800、双一科技400、辽宁成大6600、阿里巴巴700
  买入: 海博思创200@266.89
  净现金: 20,371(含部分未交收资金)
2026-06-24 14:25:07 +08:00
知微 0ecdfbc861 上传OCR切换:小果GLM-OCR-8bit优先,Tesseract降级
MoFin/server.py 的 _ocr_image 改为:
1. 优先调小果 gateway (192.168.1.122:18003) 的 GLM-OCR-8bit
2. 失败/无响应则自动降级到本地 Tesseract(预处理+chi_sim+eng)
3. fallback逻辑保留原预处理管道(放大/锐化/二值化)

ocr_client.py 模块独立可调用,兼作CLI工具
2026-06-24 13:48:40 +08:00