30 KiB
name, description, version, tags
| name | description | version | tags | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| lottery-hk | 香港六合开奖抓取与分析 (user B1EF5044 偏好, 文化娱乐参考不构成投注建议)。数据源: sol.2344a.cc + btc.tktk.app/data/v_xg.json + marksix6.com (真开彩验证, browser 渲染)。**v_xg.json `Data.1-7` = Qi 期真开彩 (2026-08-04 marksix6.com 验证), 是 cron no_agent 模式下唯一可用的真开彩源**。**触发规则 (硬性)**: 用户问'特码'/'买码'/'今晚开什么'/'下期开什么'/'分析'/'玄学'/'六合分析' → **必须调 `python3 scripts/lottery_特码.py [期号]`** (纯挂牌 + 玄机诗 + 红字, 输出 Top 5 特码 + 重点金额分配)。**禁止**: (1) 跑 `lottery.py analyze` (5 期数据没意义, user 已确认); (2) 编造 (Data.1-7 = Qi 期真开彩号码); (3) agent 自己写 4 框架 (河洛/梅花/玄空/奇门) 公式; (4) 编 4 框架数据; (5) 访问 hkjc.com (被所有外部 browser agent 拦, 详见 references/hkjc-com-blocked.md); (6) 用 Qi 跑特码分析 (用户问的是 Nq 未开下期, 2026-08-13 怒纠); (7) 候选表'来源'列用硬编码字典 (必须用 src_tracker 动态抓取, 2026-08-13 修过)。**v_xg.json 字段 (2026-08-04 第 4 次修正)**: Qi=最新已开期号, Nq=未开下期, Week/Day=Nq 期开彩日, Data.1-7=Qi 期真开彩号码。时区: 默认北京时间 UTC+8, 挂牌日=开彩日。推送格式: 横向 markdown 表格 (4-8 列, QQ 可左右滑动), 必须标 (北京时间), 不写刚开/最新, 不加 A/B/C 简单回答模板。用户问'从哪取'只答来源一行不展开。详见 references/v_xg-data-qi-pitfall.md + references/cron-draw-result-flow.md。 | 1.5.0 |
|
香港六合开奖分析
⏰ 时区规则(硬规则): 所有时间默认 北京时间(UTC+8)。v_xg.json 的 Qi=最新已开, Nq=未开下期, Week/Day 是 Nq 期(未开下期) 的开彩日。挂牌日 = 开彩日 (sol.2344a.cc 帖子时间戳 = 实际开奖日, 同天)。
🚨 用户硬偏好 (每次回复前必读, 违反必被纠正):
- 直接说从哪取的, 不要分析/解释 — 答"082 是周几" → 一行答 "sol.2344a.cc 082 期挂牌 07-30 = 周四开彩 (北京时间 21:30)", 不展开 "为什么不是周三"。
- 错了立刻重做, 不要"分析"或"等回话" — 用户原话: "知道错了, 还要来确认, 你直接跑不行吗"。立刻跑正确的事。
- 不要在回复结尾加 "A/B/C 简单回答" 模板 — 用户问 "这是什么技能输出的?" 才意识到是 agent 自加的模板, 没有任何 skill 输出这个。直接回答用户问题。
- 看到"4 框架"不要自己造公式 — "4 框架" 指
references/analysis-example-073/074/075.md里 3 步推演流程 (v_xg.json + 挂牌 + 红字), 不是 agent 自己写 河洛/梅花/玄空/奇门 公式。必跑python3 scripts/lottery_4frame.py。 - "特码分析" 必跑真脚本 — 看到 "特码"/"买码"/"今晚开什么" → 必跑
python3 scripts/lottery_特码.py [期号]。 - 不要在回复里算时间 — agent 默认时间不准 (system prompt 时间可能旧), 要实时用
date命令确认北京时间。 - 不要去 hkjc.com 找真开彩 (详见 references/hkjc-com-blocked.md): hkjc.com 拦所有外部 browser agent (Browserbase / bet.hkjc.com / racing.hkjc.com / fonts.googleapis.com 卡 30s+ timeout)。marksix6.com 只在 agent 模式用 browser; no_agent 模式用 v_xg.json
Data.1-7(curl + UA)。 - 分析推送用 Nq (未开下期), 不是 Qi (已开) — 用户问"特码"是问"下期买什么", 跑 Qi 期等于把历史当预测。2026-08-13 用户反馈"你这前面写的期数是已开的,分析的数据也是已开的?我只要你分析未开的啊"。硬规则:
lottery_特码.py和lottery_特码_cron.shruntime 路径全用v_xg.json['Nq'], 不要 Qi。详见references/cron-default-qi-vs-nq-pitfall.md。 - 候选表「来源」列必须用真实抓取源, 禁止硬编码字典 — 2026-08-13 反馈 "分析资料来源怎么没了?", 根因 =
format_te_ma_result用了 8 个号码的硬编码src_map字典, 其他号码 fallback "其他挂牌提示" 抹掉了真实抓取源。修法:get_te_ma_candidates内部src_tracker = defaultdict(list)同步记录,format_te_ma_result优先用src_tracker, 硬编码字典删除。详见references/candidate-source-tracker-pitfall.md。 - 📌 规则/陷阱要写到「一定会被读」的位置 — 用户原话 "你写到一个一定能生效的地方, 不要又写到一个可读可不读的地方了" (2026-08-13)。可读可不读的位置 = 没用 (如
references/*.md单文件)。- 最生效的位置 (按优先级):
- SKILL.md 顶部「硬规则」/「硬偏好」区 (每次加载必读)
- 脚本顶部 docstring (改这个脚本的人必读)
- CLI main 入口紧贴代码的注释 (改默认期号/参数必读)
- cron wrapper 顶部 4 行注释 (改 cron 必读)
references/*.md单文件 — 只在以上 4 处都写完后, 作为详细案例 补充, 不作为唯一落点
- 写完硬规则后必须验证它在 runtime 路径里生效 (跑一遍脚本看输出)
- 最生效的位置 (按优先级):
- 开奖后流程 (2026-08-13):
draws表入库只有手填命令python3 scripts/lottery_特码.py add <period> <special> <n1..n6>和 verify_lottery.sh 自动调 add (v_xg.json 拿得到时), 没有从 marksix6.com 抓真开的独立脚本。详见references/draws-table-manual-add-pitfall.md+references/cron-draw-result-flow.md。 - 🎯 命中判定只看特码, 不要平码命中 (2026-08-30): 用户原话"只要特码命中的"。lottery_特码_cron.sh (hot-data 推送) 加的"上期开奖回顾"段只输出特码命中 ✅/❌, 不输出"平码命中 N1/N2", 不要自行扩展。这是用户显式偏好, 不需要他再说一次。verify_lottery.sh 仍可输出平码命中 (那是22:30 核验报告, 性质不同)。
⏰ 沟通风格: 用户要"直接说怎么取的,不要分析/解释"。回答"081 是周几"时,直接说"来源是 v_xg.json Week=周四" — 不分析"为什么不是周二"。
🚨 硬规则 (每次推送前自检, 2026-08-04 marksix6.com 验证):
- 时区: 所有时间默认 北京时间 (UTC+8), 必须标"(北京时间)"后缀
- 挂牌日 = 开彩日 (硬规则): sol.2344a.cc 挂牌帖时间戳 = 实际开奖日,同天。旧描述"挂牌提前 2-3 天"是错的。
- v_xg.json 字段语义 (2026-08-04 第 4 次修正, marksix6.com 验证):
Qi= 最新已开期号 (刚开)Nq= 未开下期期号 (下一个)Week/Day/Year/Moon= Nq 期开彩日 (北京时间)Data.1-7= Qi 期真开彩号码 (7 个 + 5 行字段 sx/nim/color/style/number)- 取 Qi 期开彩日: Nq 期开彩日 - 1 个开彩日 (周二/四/六规律), 或查 sol.2344a.cc 挂牌帖
- 🔥 cron 自动期号必须是
Nq(未开下期), 不是Qi(已开):lottery_特码_cron.sh+lottery_特码.py默认期号 =v_xg.json Nq。用 Qi = 已开期, 分析完全错位 (2026-08-13 修过, 写死错误: Qi→Nq, fallback '082'→'088')。 - 推送格式: 不写"刚开"/"最新" — 用具体期号+明确日期
- 沟通: 用户要直接说数据来源,不要长篇分析
- 4 框架分析: 直接调
python3 scripts/lottery_4frame.py(4 步流程: v_xg.json + 综合挂牌 + 六信红字 + 玄机诗),不要 agent 自己造公式。 - Cron 模式: 用
no_agent: true+ 真脚本 (lottery_特码_cron.sh/verify_lottery.sh), 不要 agent 模式 (会编)。 - 来源映射必须动态 (2026-08-13 修过): 候选表的"来源"列必须用
src_tracker(实际抓取), 禁止用硬编码字典src_map = {3:'...', 13:'...'}。号码无 src 时才 fallback "其他挂牌提示"。 - 📌 用户硬偏好 (2026-08-13 沉淀): 规则要写到"一定会被读"的位置 (见上面用户硬偏好 10)。
- 开奖后流程 (2026-08-13): 见上面用户硬偏好 11。
- 🎯 候选数 ≥ 4 (2026-08-20 实装): 见用户硬偏好 12。
- 🎯 候选数 ≥ 4 (2026-08-20 实装): 用户原话"可以4-5个号合适"。实装三改一起: (a)
gua_links[:3] → [:8]多抓挂牌; (b) 火烧/六肖 解码本年生肖号 (火烧+2, 六肖/出肖各生肖+1); (c)format_te_ma_result候选 <4 时top.append((n, 0))显式补到 5, 来源标"兜底占位 (挂牌稀疏)"。已验证 Nq=091 期输出 8 候选, 重点分配 5 个 ¥15=5/4/3/2/1 (详见references/2026-08-20-candidate-sparsity-diagnosis.md)。如果用户说"不要兜底" → 删if len(top) < 4块, 保留 (a)(b) 改进。
📦 4 框架 (奇门/梅花/河洛/玄空) 的位置:
- 真脚本:
scripts/lottery_4frame.py(4 步流程, 自动跑) - Reference:
references/analysis-example-073/074/075.md(073 真实推演示范: 3 步 v_xg+挂牌+红字) - 不要: agent 写 河洛/梅花/玄空/奇门 公式, reference 没推演方法, 拍脑袋推的没意义
5 期数据 (analyze 频率) 没意义: lottery.py analyze 输出 5 期冷热号,数据量太少,user 已明确说"不要跑频率,没有意义"。analyze 只用作辅助核对,不是主要分析方法。
从天空彩票抓取香港六合开奖结果,提供数据分析。数据存SQLite,不存图片。
数据源
主站 (挂牌/资料)
- 资料站:
https://sol.2344a.cc/(2026-07-29 迁移自 sol.0051.cc)- 综合挂牌:
https://sol.2344a.cc/zongheguapai/← 首选挂牌数据源 - 六信红字:
https://sol.2344a.cc/lxhz/ - 梅花诗/玄机:
https://sol.2344a.cc/xuanjiziliao/ - 解牌:
https://sol.2344a.cc/jiepai/ - 平碼平肖:
https://sol.2344a.cc/pingxiaopingma/
- 综合挂牌:
真开彩验证源 (按 cron 模式分流, 2026-08-13)
| 源 | 模式 | 端点 | 备注 |
|---|---|---|---|
v_xg.json Data.1-7 |
no_agent + script (cron 主用) | curl -A "Mozilla/5.0" v_xg.json |
Qi 期真开彩, 跟 marksix6.com 验证一致; 必须带 UA, 裸 curl 返 403 |
| marksix6.com | agent 模式 (browser 渲染) | browser_navigate + browser_snapshot |
Vue SSR 包装页, curl 拿不到; no_agent 拿不到 |
| hkjc.com | ❌ 拦所有外部 browser agent | bet.hkjc.com/ch/marksix/results |
全堵, 详见 references/hkjc-com-blocked.md |
关键决策 (2026-08-13): cron 核验脚本 (verify_lottery.sh) 不再依赖 marksix6.com browser (no_agent 拿不到), 统一走 v_xg.json curl + UA。这是 no_agent 模式下唯一可用的真开彩源。详见 references/cron-draw-result-flow.md。
当前开奖 JSON API
- v_xg.json:
https://btc.tktk.app/data/v_xg.json(直接 JSON, 无需 browser)- 字段语义 (2026-08-04 第 4 次修正, marksix6.com 验证):
Qi= 最新已开期号 (刚开) — 例 Qi=083 = 083 期 8/1 周六已开Nq= 未开下期期号 — 例 Nq=084 = 084 期 8/4 周二未开Week/Day= Nq 期开彩日 — 例 Week=周二 Day=04 = 084 期 8/4 周二Data.1-7= Qi 期真开彩号码 (Qi 期=刚开期, Data 显示 Qi 期真开, 不是 Qi-1 也不是 Qi-2)
- 字段语义 (2026-08-04 第 4 次修正, marksix6.com 验证):
- sol.2344a.cc 历史 API:
/e/api/api.php?get=sixlist&year=YYYY仍返回空 - ⚠️ v_xg.json DB 故障: 偶发 "Cann't connect to DB!" 200 OK 但返回空文本 (2026-08-02 出现, 2026-08-13 重现), 脚本必须校验返回是有效 JSON
开奖时间
- 每周二、四、六 21:30 (北京时间)
- 49 个号码, 6 个平码 + 1 个特码
tktk API 架构 (从 public.js 逆向)
URL 模式: https://btc.tktk.app/data/v_{cod}.json?{timestamp}
| cod | 彩种 | 说明 |
|---|---|---|
| xg | 香港六合 | 每周二/四/六 21:30 |
| 48am | 天天澳门彩 | 每天 22:14-22:40 |
| am | 新澳门六合 | 每天 21:14-21:40 |
| tw | 台湾六合 | 每天 20:28-20:58 |
| xjp | 新加坡六合 | 每天 18:35-18:55 |
| fckl8 | 快乐8 | 每天 21:25-21:40 |
⚠️ v_xg.json Data 字段格式 (重要)
- Data.1 - Data.6: 平码, Data.7: 特码
- 每个号码含 5 个字段:
nim(五行) /sx(生肖) /color(波色) /style(red) /number(数字) - Data.1-7 = Qi 期真开彩 (Qi 期就是 Data 显示的期, 不是更早)
数据存储
SQLite 数据库: ~/.hermes/trading/lottery.db
draws表: 开奖记录 (期号、日期、6 个号码+特码、生肖、五行、波色)cold_data表: 冷数据 (key-value, 网页文本内容)image_links表: 图片链接 (类别、标题、URL、期号, 不下载图片)analysis表 (2026-08-04 新增): 每次分析入库 (id, period, candidates JSON, budget, v_xg_qi/nq/week/day, actual_special, hit, created_at)- 用
lottery_特码.py add <period> <special> [n1 n2 n3 n4 n5 n6]手填真开 check_hits()自动对比 draws 表 actual_special → 更新 hit=1/0listCLI 看历史 (含 hit 状态)
- 用
- 不存图片文件
脚本用法
lottery_特码.py (主要)
python3 ~/.hermes/skills/trading/lottery-hk/scripts/lottery_特码.py [期号]
# 跑分析, 动态取 Qi/Week/Day (不写死)
# 入库 SQLite analysis 表
# **默认无参 = 自动取 v_xg.json Nq 期 (未开下期, 要预测的那期)** — 2026-08-13 修正, 之前错取 Qi(已开)
python3 ~/.hermes/skills/trading/lottery-hk/scripts/lottery_特码.py add 083 23 37 7 16 1 32 22
# 手填真开: <period> <special> [n1..n6] → INSERT draws + reset 该 period analysis.actual_special + check_hits
python3 ~/.hermes/skills/trading/lottery-hk/scripts/lottery_特码.py list [N]
# 列出最近 N 条 analysis (id, period, Top 5, ¥, v_xg, 真开, hit, 时间)
python3 ~/.hermes/skills/trading/lottery-hk/scripts/lottery_特码.py hits
# 单独跑 check_hits
lottery_特码_cron.sh (cron wrapper, 11:30 北京, 2026-08-30 加"上期开奖回顾"段)
# 流程 (2026-08-30 加):
# 1. 取 v_xg.json Nq (本期未开下期, 用于分析) + Qi (上期已开, 用于回顾)
# 2. 从 lottery.db draws 表读 Qi 期开奖结果 (7 个号码), 缺失则 fallback v_xg.json
# 3. 从 ~/.hermes/cron/output/5bec1f60f77f/*.md 读 Qi 期 Top 5 候选 (用 🥇🥈🥉 锚定, 避免抓到日期/年份)
# 4. 输出"上期开奖回顾"段: 平码 + 特码 + 预测 Top 5 + **特码命中判定** ✅/❌ (只看特码, 不判平码)
# 5. 跑 lottery_特码.py Nq 跑本期分析
# 详细 docstring 见脚本顶部
verify_lottery.sh (cron wrapper, 22:30 北京, 2026-08-13 新建)
# 核验当前期预测 vs 实际开奖, 记录命中率
# 流程: curl v_xg.json (UA + proxy fallback) → draws 表 fallback → 自动 add_draw → 找 Qi 期 .md → 输出报告
# 详见 references/cron-draw-result-flow.md
lottery_4frame.py (4 框架玄学)
python3 ~/.hermes/skills/trading/lottery-hk/scripts/lottery_4frame.py
# 4 步流程: v_xg.json + 综合挂牌 + 六信红字 + 玄机诗
# 不要 agent 自己推公式 (reference 没方法)
lottery.py (辅助)
SCRIPT=~/.hermes/skills/trading/lottery-hk/scripts/lottery.py
python3 $SCRIPT add <期号> <号码> # 手动添加
python3 $SCRIPT history [期数] # 查看历史
python3 $SCRIPT zodiac # 生肖号码对照表
python3 $SCRIPT next # 下期开奖时间
# ⚠️ analyze 输出 5 期冷热号没意义, user 已确认
生肖映射 (网站实际映射, 已验证)
网站的生肖表和标准 12 生肖轮转不同, 用 mod 12 映射:
0=狗, 1=猪, 2=蛇, 3=马, 4=羊, 5=虎, 6=兔, 7=鼠, 8=牛, 9=猴, 10=鸡, 11=龙
071 期验证: 34=鸡(34%12=10)✅, 46=鸡(46%12=10)✅, 17=虎(17%12=5)✅
冷数据 vs 热数据
- 🧊 冷数据 (存 cold_data 表): 歷史、生肖表、日期、常識、全年、技巧、規律、策略
- 🔥 热数据 (每期更新): 開獎、掛牌、解牌、綜掛、平碼平肖、玄机资料、论坛高手推荐等
资金分配偏好 (2026-07-30)
用户偏好: 信号/分析结果要给重点分配, 不是平均分或全部平均。
- ❌ 错: "5 个候选号, 各买 1 元"
- ✅ 对: "5 个候选号, 按权重 5/4/3/2/1 元分配, 重点放在前 2-3 个"
- 默认预算: 信号类 (特码/跟单) 用 ¥15 = 5/4/3/2/1
- 排序时给 emoji (🥇🥈🥉)
适用范围: lottery 特码、币圈跟单、股票做 T 信号等任何"有预算上限的信号推送"。
候选数 < 4 时诊断 (2026-08-20 v1.4.0 实装 fix)
用户偏好: 4-5 个候选号最合适, 2 个显得"没什么可买的"。
实装的 fix (3 改动一起):
- 挂牌页抓取放宽 (
lottery_特码.py::get_te_ma_candidates):gua_links = re.findall(...)[:3]→[:8]— 多抓几页挂牌, 挂牌稀疏时也有足够数据源。 - 火烧/六肖 解码本年生肖号: 之前
火烧/六肖/出肖字段只记录不直接给号, 现在加SX_TO_BENSHENG = {'鼠':23,'牛':22,..., '猪':12}解码本年生肖号, 火烧 +2, 六肖/出肖 每个生肖 +1。 format_te_ma_result兜底: 候选数 < 4 时,weights.most_common(8)+ 显式补足到 5 个, 占位的号权重=0, 来源标记 "兜底占位 (挂牌稀疏)"。most_common 不返回权重 0 的号, 这里用top.append((n, 0))显式扩展。
配套 wrapper 修复: lottery_特码_cron.sh 已二次修正 Qi→Nq (2026-08-20 之前 wrapper 改过 Qi→Nq 但又有人改回去了, 这次硬规则:d['Nq'] + fallback '088')。
验证 (2026-08-20 跑 Nq=091 期): 输出 8 个候选, 重点分配 5 个 (¥15 = 5/4/3/2/1):
- 🥇 35 (权重 4, 另版挂 + 尾数 5尾+30)
- 🥈 2 (权重 2, 尾数 2尾本)
- 🥉 22 (权重 2, 尾数 +20 + 六肖 牛=22)
- 4 5 (权重 2, 尾数 5尾本)
- 5 14 (权重 2, 火烧 鸡=14 本年生肖)
回退条件: 如果用户明确说"不要兜底, 太离谱了" → 把 format_te_ma_result 里的 if len(top) < 4 块删除, 保留挂牌抓取放宽 + 火烧/六肖 解码。
详见 references/2026-08-20-candidate-sparsity-diagnosis.md。
注意事项
- 页面用 Vue.js 动态加载, 非开奖时间段 (21:14-21:40 外) 可能无数据
- 图库类页面 (玄机图库、经典图库等) 是图片, 不抓取
- 网站有大量博彩广告, 解析时需过滤
- v_xg.json DB 故障: sol.2344a.cc/btc.tktk.app 偶发 "Cann't connect to DB!" 200 OK 但返回空文本 (2026-08-02 出现), 脚本静默失败
📌 082 期实战案例 (2026-07-29 凌晨, 用户多次纠正)
- cron
668dcf3ec54d lottery-draw-result14:00 UTC (= 北京 22:00) 跑 - v_xg.json
Qi=081 (081 期 7/28 周二已开), Nq=082 (082 期 7/30 周四未开), Week=周四, Day=30 (= Nq=082 期开彩日 = 7/30 周四) - agent 推: "081 期 = 7/30 周四 21:30 开彩" — 错 (实际 081 = 7/28 周二)
- 用户反复纠正"081 时间错 / 不要分析 / 你直接跑不行吗"
- 真相: 挂牌日 = 开彩日 (sol.2344a.cc 挂牌 07-28 13:35 = 081 周二开彩)
坑 1 (v_xg.json 字段): Week/Day 是 Nq 期开彩日 (未开下期), 不是 Qi 期(已开)。
坑 2 (挂牌日 vs 开彩日): sol.2344a.cc 挂牌帖发布时间 = 开彩日,同一天。
坑 3 (沟通): agent 答 "081 是周几" 时,反复用"为什么不是周二"的长篇分析 → 用户纠正"我说了,你不要分析,只说怎么取的就行了"。
📌 084 期实战命中 (2026-08-04, 第 4 次修正验证)
- 8/4 14:03 北京 v_xg.json: Qi=083 (083 期 8/1 周六已开), Data.1-7=[37,7,16,1,32,22,23]
- marksix6.com browser 验证: 083 期 8/1 周六 21:32 真开彩 = 37/7/16/1/32/22 + 23 ✅
- 结论: Data.1-7 = Qi 期真开彩号码, 不是 Qi-1 也不是 Qi-2 (第 4 次修正确认)
- 8/4 15:22 北京 v_xg.json: Qi=084 (084 期 8/4 周二已开), Data.1-7=[31,16,4,11,13,33,38]
- lottery_特码.py 跑 084 期: Top 1 = 38 (权重 10)
- 手填 084 期真开 special=38 → check_hits: analysis #4 hit=✓ 中奖!
📌 088 期 命中 (2026-08-13, 特码 23 中) + 089 期 特码 23 不在 Top 5
- 088 期 8/13 周四 21:30 开, 真开 special=23, 我推 Top 5 有 23 (#5, ¥1, 权重 1)
- ✅ 088 期中奖 ¥42 (42 倍赔率)
- 089 期 8/15 周六 21:30 开, 真开 special=14, 我推 Top 5 = 38/26/1/4/11
- ❌ 089 期未中 — 14 不在 Top 5 (Top 1=38 差太远)
- 结论: 特码分析命中率不稳定, 仅为文化娱乐参考
📌 088 期 Cron Qi/Nq 错位 bug (2026-08-13, 用户怒纠)
- cron
5bec1f60f77f lottery-hot-data推送标题 "🎯 分析期号: 087 (v_xg.json Qi)" - 实际 087 期 8/11 周二 已开, 088 期 8/13 周四才是未开
- 用户原话: "你这前面写的期数是已开的, 分析的数据也是已开的? 我只要你分析未开的啊"
- 根因:
lottery_特码_cron.sh第 9-19 行print(d['Qi'])取的已开期,lottery_特码.py默认 fallback 也是 Qi - 修法: 两个文件同步 Qi → Nq, fallback
'082'→'088'(因为 2026-08-13 当时 Nq=088) - 验证: 修完跑 cron wrapper → 输出 "🎯 分析期号: 088 (v_xg.json Nq 未开下期)", 用户确认正确
- 教训: 用户问"特码"永远指"下期买什么", runtime 路径不能 fallback 到 Qi, 改这两个文件立刻 grep "Qi" 确认 runtime 路径全用 Nq
📌 088 期 lottery-draw-result cron 错配 bug (2026-08-13)
- cron
668dcf3ec54d lottery-draw-result配置:script=laboratory_特码_cron.sh(分析脚本),schedule=0 14 * * 0,2,4UTC (= 北京 22:00) - 根因: 22:00 北京开彩后 30 分钟 cron 跑未开下期分析 (跟 11:30 那次重复), 完全不是"记录命中"
- 修法: script →
verify_lottery.sh(新建), schedule →30 14 * * 0,2,4UTC (北京 22:30, 等 v_xg.json 更新到 Qi), verify_lottery.sh 内部自动 v_xg.json curl + add_draw + check_hits - 教训: cron 配错脚本是"静默 bug" — 跑出来的输出看起来正常, 实际功能错位。改 cron 必须同时检查 schedule 跟 script 是否匹配, 跑一次真输出验证
📌 095 期 上期开奖回顾 实跑 (2026-08-30, v1.5.0 验证)
lottery_特码_cron.sh 11:30 北京跑,新增的"上期开奖回顾"段实跑输出:
🎯 分析期号: 096 (v_xg.json Nq 未开下期)
━━━ 上期开奖回顾 ━━━
**095 期**
| 位置 | 号码 |
|:---|:---|
| 平码 | 30 · 4 · 11 · 26 · 8 · 7 |
| 特码 | **42** |
预测 Top 5: 33,25,26,22,22
命中: ❌ 特码 42 未中
用户偏好落实:
- ✅ "只判特码" (用户 2026-08-30 原话 "只要特码命中的") — 不输出"平码命中 26"
- ✅ Top 5 grep 锚定
🥇🥈🥉行避免抓到年份/日期 (最初误抓到2026是 grep 没限定) - ✅ 复用 verify_lottery.sh 的 draws 表 + v_xg.json fallback 路径
教训: Top 5 提取用 grep -hE '^\\| [🥇🥈🥉] \\| \\*\\*[0-9]+\\*\\*' 锚定 emoji 行,不是裸 grep \\*\\*[0-9]+\\*\\* (后者会抓到时间戳/年份)。
📌 090 期 cron schedule 错位 bug (2026-08-20)
- 用户反馈: "之前 14:30 跑的 cron 输出
lottery_特码.pynot found" + verify 输出 "未找到分析文件 查找路径: /home/openclaw/.hermes/cron/output/5bec1f60f77f/" - 根因: 当时
lottery-draw-resultcron 配置schedule=30 14 * * 0,2,4(= 北京 22:00, 开彩前 30 分钟) - 错配双重: (a) 开彩前 v_xg.json 还停在 Qi=089, 无 090 期数据 → verify 报"未找到分析文件"; (b) 14:30 wrapper 调
lottery_特码.py跑分析 (应该 verify 跑核验), 两个 cron 错配 - 修法: schedule
30 14→30 22 * * 0,2,4(= 北京 22:30, 开彩后 1 小时), 让 verify 等到 v_xg.json 更新到 Qi=090 (Nq=091) 后再跑 - 验证: 22:30 跑完输出 "090 期 平码 39·41·8·9·7·14, 特码 49", last_run_at 变成 22:30:36
- 教训: verify 类 cron schedule 必须在 v_xg.json 更新后 (开彩后 30 分钟-1 小时), 不是"开彩前几分钟"
📌 095 期 verify_lottery.sh SKILL_DIR 路径 bug (2026-09-02)
症状: 9/2 22:30 北京 cron 668dcf3ec54d lottery-draw-result 跑完, 推 QQ 报告末尾出现:
python3: can't open file '/home/openclaw/.hermes/scripts/lottery_特码.py': [Errno 2] No such file or directory
⚠️ add_draw 失败
用户反馈: "报这么多错" — 看到一堆 python3: can't open 报错 + 后续"未找到分析文件"。
根因:
# 旧 (在 ~/.hermes/scripts/verify_lottery.sh 中, cron 调用)
SKILL_DIR="$(cd "$(dirname "$0")/.." && pwd)"
# $0 = /home/openclaw/.hermes/scripts/verify_lottery.sh
# dirname = /home/openclaw/.hermes/scripts
# .. = /home/openclaw/.hermes ← 错了! 应该是 skill 根
# 然后 SKILL_DIR/scripts/lottery_特码.py = /home/openclaw/.hermes/scripts/lottery_特码.py ← 不存在
正解 (硬编码优先 + fallback, 已实装):
# lottery skill 在 ~/.hermes/skills/trading/lottery-hk/, 但脚本被复制到 ~/.hermes/scripts/
# 优先找 skill 原目录, fallback 到 scripts 根
if [ -f "$HOME/.hermes/skills/trading/lottery-hk/scripts/lottery_特码.py" ]; then
SKILL_DIR="$HOME/.hermes/skills/trading/lottery-hk"
else
SKILL_DIR="$(cd "$(dirname "$0")/.." && pwd)"
fi
手动补登 095 期 (因为 add_draw 失败了, 095 期没入库):
python3 ~/.hermes/skills/trading/lottery-hk/scripts/lottery_特码.py add 095 42 30 4 11 26 8 7
# → ✅ 095 期真开彩入库
090-094 期无法补登: v_xg.json 只存当下一期 Data.1-7, 没有历史真开彩数据。draws 表 090-094 期永远空着, 这部分历史数据无法恢复。
教训:
- 任何 cron 脚本从 skill 复制到
~/.hermes/scripts/→dirname $0/..路径绝对会错 - 解决方案: 优先硬编码已知 skill 路径, fallback 用相对路径 (顺序别反)
- 见
memory-check-utf8-zombie-lock-fixskill § 15c — 通用 SKILL_DIR/SCRIPT_DIR 路径 bug 修法
关联 lessons:
- § 用户硬偏好 11 (开奖后流程) — verify_lottery.sh 是关键一环, 路径错等于流程断
- § 11 Pitfall B (脚本位置铁律) — skill 内 vs scripts/ 两套副本, cron 必须 scripts/
定时任务 (2026-08-13 改)
| 任务 | cron schedule | 模式 | 推送到 | script | 备注 |
|---|---|---|---|---|---|
| lottery-hot-data | 30 11 * * 0,2,4 (北京) | no_agent + script | lottery_特码_cron.sh |
开彩前 2h 抓热数据, 跑 Nq 期分析 | |
| lottery-draw-result | 30 22 * * 0,2,4 (北京) | no_agent + script | verify_lottery.sh |
开彩后 1h 核验 (2026-08-20 从 14:30 改), 等 v_xg.json 更新到 Qi |
⚠️ Cron 改 no_agent + script 模式 (2026-08-04): agent 模式 cron 经常编 (标题/时间/号码), 改 no_agent + script 后 0% 编概率。详见 references/2026-08-04-analytics-history-and-cron-no-agent.md + references/cron-draw-result-flow.md + references/cron-browser-mode.md。
开奖时间: 21:30 北京时间 → 11:30 UTC=19:30 北京 抓热数据, 14:30 UTC=22:30 北京 抓结果。
参考资料
references/zodiac-table.md: 2026 年完整生肖五行波色对照表references/draw-dates.md: 2021-2023 年搅珠日期 (JS 日历数据)references/v_xg-data-qi-pitfall.md: v_xg.json 字段语义陷阱 (第 4 次修正, marksix6.com 验证)references/v_xg-qi-pitfall.md: v_xg.json Qi 字段语义陷阱 (历史归档, 第 1 版)references/common-knowledge.md: 生肖属性文章索引、关键概念references/techniques.md: 规律秘诀文章索引 (出波、波色法等)references/patterns.md: 固定规律文章索引 (日期定波、杀肖、出尾等)references/strategies.md: 买码建议文章索引 (赢钱秘诀、七戒律等)references/cron-default-qi-vs-nq-pitfall.md: Cron 默认 Qi vs Nq 陷阱 (2026-08-13) — 抓期号/分析必须用 Nqreferences/candidate-source-tracker-pitfall.md: 候选表「来源」列硬编码陷阱 (2026-08-13) —src_map字典 → 动态src_trackerreferences/draws-table-manual-add-pitfall.md: 开奖后流程断点 (2026-08-13) — draws 表手填 + cron 配错脚本 + verify Qi-1 → Qi 修复references/cron-draw-result-flow.md: 开奖后核验 cron 完整流程 (2026-08-13 新建) — 22:30 北京 + verify_lottery.sh + v_xg.json as 真开彩源 (no_agent 唯一可行)references/cron-browser-mode.md: Lottery cron 模式分工 (2026-08-13 改) — no_agent 模式 curl 直接生效, agent 模式才用 browserreferences/agent-workflow-pitfalls.md: 跨 skill 通用, 必读 (用户硬偏好 + agent workflow 坑)references/2026-08-04-analytics-history-and-cron-no-agent.md: SQLiteanalysis表 + CLI + cronno_agent + script模式 + GitLab 502 处理references/hkjc-com-blocked.md: 2026-08-04 新 — hkjc.com 拦所有外部 browser agent, 改用 marksix6.com (agent 模式) / v_xg.json (no_agent 模式)references/site-status.md: 各站点状态 (sol.2344a.cc / btc.tktk.app / etc)references/site-navigation.md: 站点导航references/lottery-sources.md: 数据源汇总references/082-success-workflow.md: 082 期成功跑通的工作流 (反向参考)references/analysis-example-073/074/075.md: 3 期真实推演示范 (4 框架真方法)references/2026-07-21-esoteric-analysis-capability-index.md: 玄学分析能力索引references/marksix6-com-verification-source.md: marksix6.com 详细说明references/lottery-te-ma-2026-08-04-marksix6-verification.md: 2026-08-04 实战验证 marksix6 真实开彩references/2026-08-30-hot-data-previous-draw-recap.md: hot-data cron 加"上期开奖回顾"段 (上期 Qi 平码+特码+预测 Top 5+特码命中判定, 用户硬偏好 #12 "只要特码命中的", grep Top 5 锚定🥇🥈🥉行避免抓到日期年份)