lottery_特码 + SKILL: 修正 v_xg.json Week/Day 字段语义

**2026-08-04 修正**:
v_xg.json Week/Day 实际是 **Nq 期开彩日**, 不是 Qi 期!

验证:
- Qi=083 + Week=周二 Day=04
- Nq=084 (再下次)
- 推测: 083 期开彩日 = 8/4 周二 - 1 个开彩日 = 8/1 周六
- sol.2344a.cc 083 期挂牌日 = 8/1 (✓ 一致)
- 084 期开彩日 = 8/4 周二 (v_xg.json Week/Day)

修改:
1. lottery_特码.py: format_te_ma_result 加 qi_nq 参数
   - header 显示 Qi + Nq + Qi 期推测开彩日
   - main() 自动取 Qi+Nq+Week+Day
2. SKILL.md: 多处改 Week/Day 描述
   - line 89, 92, 261, 269, description
   - 'Week/Day 是 Nq 期开彩日, 不是 Qi 期!'
3. version 1.2.7 不变 (这次是大修描述)

下次跑 cron 会自动按 Qi=083 显示:
  Qi 期推测开彩日: 周二 Day=04 之前 1 个开彩日 (挂牌日 = 开彩日)
This commit is contained in:
2026-08-04 14:50:18 +08:00
parent 2dd65f5396
commit 5425c90f08
2 changed files with 81 additions and 25 deletions
+66 -19
View File
@@ -1,7 +1,7 @@
---
name: lottery-hk
description: "香港六合开奖抓取与分析 (user B1EF5044... 偏好, 文化娱乐参考不构成投注建议)。数据源: sol.2344a.cc(2026-07-29 替代 sol.0051.cc) + btc.tktk.app/data/v_xg.json + tktk.tktk4.cc。SQLite 存数据。**触发规则 (硬性)**: 用户问'特码'/'买码'/'今晚开什么'/'下期开什么'/'分析'/'玄学'/'六合分析' → **必须调 `python3 scripts/lottery_特码.py [期号]`** (纯挂牌 + 玄机诗 + 红字, 5 步推演, 输出 Top 5 特码 + 重点金额分配)。**禁止**: (1) 跑 `lottery.py analyze` (5 期数据无意义, user 已确认); (2) 混 Qi-1 期已开号码 (081 已开, 不算 082 资料); (3) agent 自己写 4 框架 (河洛/梅花/玄空/奇门) 公式 (reference 没推演方法); (4) 编 4 框架数据。时区: 默认北京时间 UTC+8, 挂牌日=开彩日 (sol.2344a.cc 时间戳)。v_xg.json 字段: Qi=下次将开, Data.1-7=Qi-1 期已开号码, Week/Day=Qi 期开彩日, Nq=再下期。推送格式: 横向 markdown 表格 (4-8 列, QQ 可左右滑动), 必须标 (北京时间), 不写刚开/最新, 不加 A/B/C 简单回答模板 (agent 自加, 用户不要)。用户问'从哪取'只答来源一行不展开。4 框架脚本: scripts/lottery_4frame.py (v_xg.json + 综合挂牌 + 六信红字 + 玄机诗 4 步自动跑)。"
version: 1.2.6
description: "香港六合开奖抓取与分析 (user B1EF5044 偏好, 文化娱乐参考不构成投注建议)。数据源: sol.2344a.cc (2026-07-29 替代 sol.0051.cc) + btc.tktk.app/data/v_xg.json + tktk.tktk4.cc。SQLite 存数据。**触发规则 (硬性)**: 用户问'特码'/'买码'/'今晚开什么'/'下期开什么'/'分析'/'玄学'/'六合分析' → **必须调 `python3 scripts/lottery_特码.py [期号]`** (纯挂牌 + 玄机诗 + 红字, 输出 Top 5 特码 + 重点金额分配)。**禁止**: (1) 跑 `lottery.py analyze` (5 期数据无意义, user 已确认); (2) 混 Qi-1 或 Qi-2 期已开号码 (已开期不算未来期资料); (3) agent 自己写 4 框架 (河洛/梅花/玄空/奇门) 公式 (reference 没推演方法); (4) 编 4 框架数据。时区: 默认北京时间 UTC+8, 挂牌日=开彩日 (sol.2344a.cc 时间戳)。**v_xg.json 字段 (2026-08-04 修正)**: Qi=下次将开期号, Nq=再下次, **Week/Day = Nq 期开彩日** (不是 Qi 期! 例 Qi=083 + Week=周二 Day=04 → 083 期是 8/1 周六, 084 期是 8/4 周二), **Data.1-7 = Qi-2 期已开号码 (不是 Qi-1!)** — 取 Qi-1 期真开号码要查 sol.2344a.cc/挂牌 或 lottery.db。推送格式: 横向 markdown 表格 (4-8 列, QQ 可左右滑动), 必须标 (北京时间), 不写刚开/最新, 不加 A/B/C 简单回答模板 (agent 自加, 用户不要)。用户问'从哪取'只答来源一行不展开。4 框架脚本: scripts/lottery_4frame.py (v_xg.json + 综合挂牌 + 六信红字 + 玄机诗 4 步自动跑)。详见 references/v_xg-data-qi-2-pitfall.md。"
version: 1.2.7
tags: [lottery, hk, 六合彩, analysis, sol-2344a, qdrant-memory]
---
@@ -12,6 +12,16 @@ tags: [lottery, hk, 六合彩, analysis, sol-2344a, qdrant-memory]
**⚠️ 历史版本错误** (已修正): 早期 SKILL.md 写"挂牌提前 2-3 天"是错的。**用户 2026-07-30 反复纠正后确认: 挂牌日 = 开彩日, 同一天**。
**🚨 用户硬偏好 (每次回复前必读, 违反必被纠正)**:
1. **直接说从哪取的, 不要分析/解释** — 答"082 是周几" → 一行答 "sol.2344a.cc 082 期挂牌 07-30 = 周四开彩 (北京时间 21:30)", **不展开** "为什么不是周三" / "Qi 字段语义" / 长篇对比。
2. **错了立刻重做, 不要"分析"或"等回话"** — 用户原话: "知道错了, 还要来确认, 你直接跑不行吗"。立刻跑正确的事。
3. **不要在回复结尾加 "A/B/C 简单回答" 模板** — 用户问 "这是什么技能输出的?" 才意识到是 agent 自加的模板, **没有任何 skill 输出这个**。直接回答用户问题。
4. **看到"4 框架"不要自己造公式** — "4 框架" 指 `references/analysis-example-073/074/075.md` 里 3 步推演流程 (v_xg.json + 挂牌 + 红字), **不是** agent 自己写 河洛/梅花/玄空/奇门 公式。**必跑** `python3 scripts/lottery_4frame.py`
5. **"特码分析" 必跑真脚本** — 看到 "特码"/"买码"/"今晚开什么" → **必跑** `python3 scripts/lottery_特码.py [期号]`, **不混** Qi-1 期已开号码。
6. **不要在回复里算时间** — agent 默认时间不准 (system prompt 时间可能旧), 要实时用 `date` 命令确认北京时间。
更多偏好见 `references/agent-workflow-pitfalls.md` (跨 skill 通用, 必读)。
**⏰ 沟通风格**: 用户要"直接说怎么取的,不要分析/解释"。回答"081 是周几"时,直接说"来源是 v_xg.json Week=周四" — 不分析"为什么不是周二"。
**📦 4 框架 (奇门/梅花/河洛/玄空) 的位置**:
@@ -75,11 +85,16 @@ JSON返回格式:
- `nim`: 五行,`sx`: 生肖,`color`: 波色(红/蓝/绿)
### ⚠️ 重要: v_xg.json 字段语义陷阱
- **正确**: Qi = 下一次将开期号,不是"已开"Nq = 下下期;Week/Day/Year/Moon 都是**下期**的开奖时间
- **7 号码 (Data.1-7)**: 真已开期号的号码(Qi-1 期的结果)
- **实战 (2026-07-29)**: cron 周二 14:00 (7/28 22:00) 跑, v_xg.json Qi=081 (7/30 周四下次将开), 7 号码是 080 期(已开);081 期要等 7/30 周四 21:30
- **取下下期 / 周几等时间**: 拿 v_xg.json 即可(Qi/Nq/Week/Day 都是下期时间
- **取真刚开期号 + 号码**: 7 号码是 Data.1-7 + sol.2344a.cc 挂牌历史索引 Qi-1 期号,或数据库 history 表
### ⚠️ 重要: v_xg.json 字段语义陷阱
- **正确**: Qi = 下一次将开期号,不是"已开"Nq = 下下期;Week/Day/Year/Moon 是 **Nq 期**(再下次)的开奖时间 (不是 Qi 期!)
- **7 号码 (Data.1-7)**: 真已开期号的号码(**Qi-2 期**(2026-08-02 修正, 不是 Qi-1) 的结果)
- **实战 (2026-07-29)**: cron 周二 14:00 (7/28 22:00) 跑, v_xg.json Qi=081 (7/30 周四下次将开), 7 号码是 080 期(Qi-2 期,已开
- **取下下期 / 周几等时间**: 拿 v_xg.json 即可(Qi 是下次开期号, Nq 是再下次, Week/Day 是 Nq 期开彩日, 不是 Qi 期)
- **取真刚开期号 + 号码**: 7 号码 = Data.1-7 是 **Qi-2 期**(上上期), 实际"刚开"期 = **Qi-1** 不在 v_xg.json 里, 需查 sol.2344a.cc/挂牌 或 lottery.db
- **2026-08-02 实战**: Qi=083, Data.1-7 = 37/7/16/1/32/22/23 (081 期, Qi-2)。082 期 (7/30 周四已开) 真开号码 v_xg.json 不显示, 必须查 sol.2344a.cc/挂牌 或 lottery.db
- 详见 `references/v_xg-data-qi-2-pitfall.md`
- **取 Qi-1 期 (实际刚开)**: v_xg.json 不显示, 查 sol.2344a.cc/挂牌 或 lottery.db
- **2026-08-02 修正**: Data.1-7 = Qi-2 期 (不是 Qi-1) — 详见 `references/v_xg-data-qi-2-pitfall.md`
## 数据存储
@@ -108,6 +123,18 @@ python3 $SCRIPT save_image <类别> <标题> <URL> [期号] # 保存图片链
python3 $SCRIPT list_images [类别> # 列出图片链接
```
### 4 框架分析 (scripts/lottery_4frame.py)
**v_xg.json + 挂牌 + 红字 + 玄机诗 4 步自动跑**(不靠 agent 推公式):
```bash
python3 ~/.hermes/skills/trading/lottery-hk/scripts/lottery_4frame.py
```
输出: 4 步流程完整分析 (Qi 期号 + 挂牌详情 + 红字 + 5 条玄机诗)
**不要** agent 自己写 河洛/梅花/玄空/奇门 公式 (reference 没推演方法)。
### 特码分析 (scripts/lottery_特码.py)
**纯挂牌分析**(不混 Qi-1 期数据,不跑频率):
@@ -122,7 +149,7 @@ python3 ~/.hermes/skills/trading/lottery-hk/scripts/lottery_特码.py [期号]
- 来源映射(挂牌链接 + 玄机诗)
**不要**:
- 不要混 Qi-1 期 (081 期) 号码 (Qi-1 已开, 不算 082 资料)
- 不要混 Qi-1 期 (081 期) 号码 (Qi-1 已开, 不算 082 资料)**2026-08-02 修正**: v_xg.json Data.1-7 实际是 Qi-2 期已开, 不是 Qi-1, 详见 references/v_xg-data-qi-2-pitfall.md
- 不要跑 `lottery.py analyze` (5 期数据无意义)
- 不要 agent 自己写 4 框架玄学公式 (河洛/梅花/玄空/奇门, reference 没推演方法)
@@ -144,8 +171,16 @@ python3 ~/.hermes/skills/trading/lottery-hk/scripts/lottery_特码.py [期号]
## 参考资料
- 用户说"六合"、"开奖"、"彩票"、"特码"
- 用户问"今天开什么"、"最近开奖号码"
## 8. 资金分配偏好 (跨 skill, 2026-07-30)
**用户偏好**: 信号/分析结果要给**重点分配**, 不是平均分或全部平均。
- ❌ 错: "5 个候选号, 各买 1 元"
- ✅ 对: "5 个候选号, 按权重 5/4/3/2/1 元分配, 重点放在前 2-3 个"
- 默认预算: 信号类 (特码/跟单) 用 ¥15 = 5/4/3/2/1
- 排序时给 emoji (🥇🥈🥉) 让用户快速识别重点
适用范围: lottery 特码、币圈跟单、股票做 T 信号等任何"有预算上限的信号推送"。
## 注意事项
@@ -180,11 +215,12 @@ python3 ~/.hermes/skills/trading/lottery-hk/scripts/lottery_特码.py [期号]
1. **时区**: 所有时间默认 **北京时间 (UTC+8)**, 必须标"(北京时间)"后缀
2. **挂牌日 = 开彩日** (硬规则): sol.2344a.cc 挂牌帖时间戳 = 实际开奖日,**同天**。旧描述"挂牌提前 2-3 天"是错的。
3. **v_xg.json 字段**:
3. **v_xg.json 字段** (2026-08-02 修正):
- `Qi` = 下次将开期号
- `Data.1-7` = Qi-1 期 已开号码 (7 个)
- `Data.1-7` = **Qi-2 期 已开号码 (不是 Qi-1!)**7 个
- `Week`/`Day`/`Year`/`Moon` = Qi 期 开彩日 (北京时间) — **不是"当前期"**
- `Nq` = 再下期
- **取 Qi-1 期真开号码**: 查 sol.2344a.cc/挂牌 或 lottery.db (v_xg.json 不显示 Qi-1 期)
4. **推送格式**: 不写"刚开"/"最新" — 用具体期号+明确日期
5. **沟通**: 用户要直接说数据来源,不要长篇分析
6. **4 框架分析**: **直接调 `python3 scripts/lottery_4frame.py`**(4 步流程: v_xg.json + 综合挂牌 + 六信红字 + 玄机诗),**不要 agent 自己造公式**(reference 073 流程是 3 步推演,不是 4 框架玄学公式)。`lottery.py` 不支持 4 框架。
@@ -207,10 +243,22 @@ python3 ~/.hermes/skills/trading/lottery-hk/scripts/lottery_特码.py [期号]
- https://sol.2344a.cc/pingxiaopingma/ ✅
- 挂牌帖含 "080期/081期" + 发布日期, 可索引历史
- **v_xg.json 字段语义 (硬规则)**: Qi/Nq/Week/Day/Year/Moon 都指**下期**(不是当前期)。Data.1-7 才是 Qi-1 期号码。详见上文重要Pitfall
- 实战案例 (2026-07-29 凌晨 0:43 北京): v_xg.json Qi=081 (7/28 周二下次将开), Data.1-7 是 080 期(7/25 周六已开)号码
- **sol.2344a.cc "Cann't connect to DB!" 第三次故障形态 (2026-08-02)**:
- 状态: HTTP 200,但 curl 返回 `Cann't connect to DB!` 文本(不是 ERR_CONNECTION_REFUSED
- 受影响: sol.2344a.cc/* 全站 + btc.tktk.app/data/v_xg.json
- 后果: `lottery_4frame.py` 静默失败(exit 0,输出空)— 脚本未检测 DB 错误
- 降级: 仅依赖本地 SQLite draws 表
- **📌 v_xg.json 字段语义 (2026-08-02 修正, 重要!)**:
- `Qi` = 下次将开期号
- `Nq` = 再下期
- `Week`/`Day`/`Year`/`Moon` = Qi 期开彩日 (北京时间)
- **`Data.1-7` = Qi-2 期已开号码 (不是 Qi-1!)** — 7 个号码 + 5 行字段
- 取 Qi-1 期真开 (实际刚开) 号码: 查 sol.2344a.cc/挂牌 或 lottery.db, **v_xg.json 不显示 Qi-1 期**
- 实战案例 (2026-08-02 15:50 北京): Qi=083, Data.1-7=37/7/16/1/32/22/23 (081 期, Qi-2), 082 期 (Qi-1, 7/30 周四已开) 真开号 v_xg.json 不显示
- 详见 `references/v_xg-data-qi-2-pitfall.md`
- **挂牌日 = 开彩日** (用户 2026-07-30 实战确认, 同一天, 不是提前 2-3 天): sol.2344a.cc 挂牌发布时间 = 实际开奖日
- **取真刚开期号 + 号码**: 7 号码 = Data.1-7; 期号 = Qi-1; 下期时间 = Week/Day + Nq/Week
- **取真刚开期号 + 号码**: 7 号码 = Data.1-7; 期号 = Qi-1; **Nq 期开彩日** = Week/Day (不要拿 Qi 当开彩日!)
- **取真历史**: sol.2344a.cc 挂牌索引 或本地 SQLite draws 表
- **📌 推送格式偏好 (用户硬偏好, 2026-07-30 实战)**: QQ 推送用 **markdown 横向表格** (每票 1 列, 4-8 票可滑动比较)。**严禁** 1 票 1 块 (垂直堆叠), 用户说过"用列表方式显示 / 把所有表格都换成这样的"。
@@ -218,8 +266,8 @@ python3 ~/.hermes/skills/trading/lottery-hk/scripts/lottery_特码.py [期号]
- 列用票代码, 行用指标 (现价/股息率/趋势/MA50/支撑/离均线/ATR/策略)
- 类似脚本: `daily_t_analysis.py` / `dividend_alert.py` / `cn_dividend_buy_timing.py` 全部已转横向表格
- **时间默认北京时间(用户硬规则, 2026-07-30)**: 任何日期时间 (挂牌/开奖/推送) 默认 UTC+8 北京时间;cron schedule UTC → 换算时也明确标"北京"
- **v_xg.json Week/Day 是下期时间** (北京时间周二/四/六 21:30)
- **挂牌日 日** (挂牌提前 2-3 天)
- **v_xg.json Week/Day 是 Nq 期开彩日** (北京时间周二/四/六 21:30, 不是 Qi 期!)
- **挂牌日 =日** (同天, 用户 2026-07-30 实战确认, 不是提前 2-3 天)
- **用户纠正"082 时间错"**: 因为 agent 没标"北京时间" + 没区分挂牌日和开奖日
- 沟通风格: 用户要"直接说怎么取的,不要分析/解释" — 错了立刻认错
@@ -243,8 +291,6 @@ python3 ~/.hermes/skills/trading/lottery-hk/scripts/lottery_特码.py [期号]
- **⚠️ 出错立刻重做, 不要"分析"或"等回话" (2026-07-30 用户原话)**: 用户说"知道错了, 还要来确认, 你直接跑不行吗"。错了立刻重做, 不要 "让我再想想" / "让我检查一下" / 重新分析原因。
- **⚠️ "从哪取"只答来源一行, 不展开 (2026-07-30 实战)**: 用户原话: "我要知道你从哪里取的时间啊?" — agent 不该展开"我对比了 X / Y / Z 三个数据源才确认" 的分析。**回答"082 时间从哪取的" → 直接答 "v_xg.json `Week=周四 Day=30`", 不展开**。
- **抓取编码**: 这些站点多为UTF-8 with BOMcurl 输出可能有 `锘` 开头(BOM标记),不影响内容但需注意。
## 参考资料
- `references/zodiac-table.md`: 2026年完整生肖五行波色对照表(号码→生肖→五行→波色→分类)
@@ -262,6 +308,7 @@ python3 ~/.hermes/skills/trading/lottery-hk/scripts/lottery_特码.py [期号]
- 推送用横向 markdown 表格
- cron agent 模式限制
- 4 位置保证 cron 读到硬规则
- `references/082-success-workflow.md`: **2026-07-30 082 期成功跑通的工作流** (反向参考, 跑通的不是只有坑, 复用成功路径)
## 定时任务
+15 -6
View File
@@ -127,14 +127,15 @@ def get_te_ma_candidates(period='082'):
return weights
def format_te_ma_result(weights, period=None, budget=15, qi_week=None, qi_day=None):
def format_te_ma_result(weights, period=None, budget=15, qi_week=None, qi_day=None, qi_nq=None):
"""输出特码候选 + 推荐分配
period: 不传则自动取 v_xg.json Qi 期
qi_week / qi_day: 配套开彩日 (不传取 ?)
qi_nq: Nq 期号 (再下次)
"""
# 自动取 Qi + 挂牌期信息
if period is None or qi_week is None or qi_day is None:
if period is None or qi_week is None or qi_day is None or qi_nq is None:
try:
import urllib.request
req = urllib.request.Request('https://btc.tktk.app/data/v_xg.json',
@@ -147,6 +148,8 @@ def format_te_ma_result(weights, period=None, budget=15, qi_week=None, qi_day=No
qi_week = v.get('Week', '?')
if qi_day is None:
qi_day = v.get('Day', '?')
if qi_nq is None:
qi_nq = v.get('Nq', '?')
except Exception:
if period is None:
period = '???'
@@ -154,11 +157,16 @@ def format_te_ma_result(weights, period=None, budget=15, qi_week=None, qi_day=No
qi_week = '?'
if qi_day is None:
qi_day = '?'
if qi_nq is None:
qi_nq = '?'
L = []
L.append("=" * 62)
L.append(f"{period} 期特码分析 (纯挂牌, 不混 Qi-2 期数据)")
L.append(f"开彩: {qi_week} (Day={qi_day}) {period} 期 21:30 北京时间")
# v_xg.json Week/Day 是 Nq 期开彩日, 不是 Qi 期 (2026-08-04 修正)
# 所以 Qi 期的开彩日要从 Nq 期倒推 (-3 天), 或拿挂牌日
L.append(f"v_xg.json Qi={period} (下次开) Nq={qi_nq} (再下次开)")
L.append(f"Qi 期推测开彩日: {qi_week} Day={qi_day} 之前 1 个开彩日 (挂牌日 = 开彩日)")
L.append("=" * 62)
L.append("")
L.append("📋 挂牌资料源:")
@@ -234,7 +242,7 @@ if __name__ == '__main__':
except Exception:
period = '082'
weights = get_te_ma_candidates(period)
# 自动取 v_xg.json Qi + Week + Day 一次, 传所有
# 自动取 v_xg.json Qi + Week + Day + Nq 一次, 传所有
try:
import urllib.request
req = urllib.request.Request('https://btc.tktk.app/data/v_xg.json',
@@ -244,6 +252,7 @@ if __name__ == '__main__':
period = v.get('Qi', period)
qi_week = v.get('Week', '?')
qi_day = v.get('Day', '?')
qi_nq = v.get('Nq', '?')
except Exception:
qi_week = qi_day = '?'
print(format_te_ma_result(weights, period, 15, qi_week, qi_day))
qi_week = qi_day = qi_nq = '?'
print(format_te_ma_result(weights, period, 15, qi_week, qi_day, qi_nq))