Files
Hermes-Skills/lottery-hk/references/agent-workflow-pitfalls.md
T

137 lines
8.0 KiB
Markdown

# Agent Workflow Pitfalls (2026-07-30 实战累积, 2026-08-04 第 4 次修正)
## 用户硬偏好 (违反必踩坑)
### 1. **不要在回复结尾加 "A/B/C 简单回答" 选项**
用户原话: "这是什么技能输出的?" (答: 没有任何 skill 输出, 是 agent 自己加的回复模板)。
- **agent 默认行为**: 结尾列"A. 是 / B. 否 / C. 别的" 选项
- **正确做法**: 直接回答用户问题, 不加模板。如果用户下一步不明, 等用户说。
- **应用到所有回复**, 不仅是 lottery。
### 2. **用户问"从哪取"只答来源一行, 不展开分析**
用户原话: "我要知道你从哪里取的时间啊?"
- **错**: "我对比了 X / Y / Z 三个数据源 + 验证了 N 个字段后才确认 082 期是周四开彩..."
- **对**: "082 期时间从 v_xg.json `Week=周四 Day=30` 取的。"
- 一行, 一句, 来源 + 数据, 完。
### 3. **错了立刻重做, 不分析 / 不等回话**
用户原话: "知道错了, 还要来确认, 你直接跑不行吗"
- **错**: "我错了, 让我再想想 / 检查一下 / 等你回话..."
- **对**: 立刻跑正确的事。
- **应用**: agent 报错 / 跑偏 / 答错 → 立刻重做, 不解释原因。
### 4. **跑 X 框架不要自己造公式**
用户原话: "记得我说过不要跑频率, 没有意义, 我要说什么你才能记住" / "我要 4 框架"
- **"4 框架"** = reference 里的真实推演流程 (v_xg.json + 挂牌 + 红字), **不是** agent 写 河洛/梅花/玄空/奇门 公式
- **"特码分析"** = sol.2344a.cc 挂牌 + 玄机 + 红字, **不混** v_xg.json Qi-1 期数据
- **流程**: 看到关键词 → 跑真脚本 (`lottery_4frame.py` / `lottery_特码.py`), 不要尝试自己推
- **保留路径**: `python3 ~/.hermes/skills/trading/lottery-hk/scripts/lottery_4frame.py`
- **保留路径**: `python3 ~/.hermes/skills/trading/lottery-hk/scripts/lottery_特码.py [期号]`
### 5. **信号/分析输出不平均分, 给重点分配 (2026-07-30 用户实战)**
用户原话: "怎么跟上次的号不一样呢" + "要有重点的分配"
- **错**: "5 个候选号各买 1 元 / 5 元平均分"
- **对**: 按权重比例分 (5/4/3/2/1), 重点放在前 2-3 个, 加 🥇🥈🥉 让用户快速识别
- **默认预算**: 信号类 (特码/跟单/做T) 用 ¥15 = 5/4/3/2/1
- 用户对"平均分"反应是"怎么跟上次不一样" → 直接诊断"权重排序 vs 临时排序" 不要防御性回避
- 适用范围: lottery 特码、币圈跟单、股票做 T 信号等"有预算上限的信号推送"
### 默认时区 = 北京时间 UTC+8
- 任何时间字段 (挂牌/开奖/推送/cron schedule) 默认 UTC+8
- cron schedule 是 UTC → 推送时**显式标注 "北京时间"**
- agent 默认假设 UTC → 用户必纠正
- **agent 默认时间不准** (system prompt 时间可能旧), 要实时用 `date` 命令确认
### 挂牌日 = 开彩日 (硬规则)
- sol.2344a.cc 挂牌帖发布时间 = 实际开奖日, **同一天**
- **错** (旧 SKILL.md 描述): "挂牌提前 2-3 天"
- **对** (用户 2026-07-30 实战确认): 挂牌日 = 开彩日, 同天
### v_xg.json 字段语义 (2026-08-04 **第 4 次修正**, marksix6.com 验证)
- **`Qi` = 最新已开期号** (刚开) — **不是"下次将开"**
- **`Nq` = 未开下期期号** (下一个)
- **`Week`/`Day`/`Year`/`Moon` = Nq 期(未开下期)开彩日** (北京时间) — **不是 Qi 期**
- **`Data.1-7` = Qi 期真开彩号码** (不是 Qi-1, 也不是 Qi-2) — 7 个号码 + 5 行字段 (sx/nim/color/style/number)
- **取 Qi 期真开号码**: v_xg.json Data.1-7 **就是 Qi 期真开** (2026-08-04 marksix6.com 验证)
- **取 Qi 期开彩日**: Nq 期开彩日 - 1 个开彩日 (周二/四/六规律), 或查 sol.2344a.cc 挂牌帖
- **早期版本错误 (4 层错)**:
- v1.0-v1.2.6: `Qi=下次将开` + `Data=Qi-1 期` + `Week=Qi 期`
- v1.2.7 第一次修正: `Data=Qi-2 期` (对) + `Week=Qi 期` (错) + `Qi=下次将开` (错)
- v1.2.7 第二次修正: `Week=Nq 期` (对) — 但 `Data=Qi-2` 仍错
- v1.2.8 (本次, 第 4 次): `Data=Qi 期真开彩` (对) — marksix6.com 验证 ✓
- **验证法**: 拿 `marksix6.com` 真开彩对照 v_xg.json Data.1-7 — 完全一致 (083 期 37/7/16/1/32/22/23)
- **不要去 hkjc.com**: 详见 references/hkjc-com-blocked.md (Browserbase 商业 IP 全拦)
### CLI period 智能判别 (2026-08-04 修)
- **CLI 传 period**: `python3 lottery_特码.py 084` (用户指定期号)
- **CLI 不传**: `python3 lottery_特码.py` → 自动取 v_xg.json Qi 期 (最新已开)
- **header 显示**:
- period == Qi (已开): "本期 (Qi) 开彩日: Nq 期开彩日 - 3 天 (周二/四/六规律)"
- period == Nq (未开): "本期 (Nq) 开彩日: 直接显示 Week/Day" (不 -3 天)
### 084 期实战命中 (2026-08-04)
- lottery_特码.py 跑 084 期 → Top 1 = **38** (权重 10)
- 手填 084 期真开 special=38 (从 v_xg.json Data.1-7 第 7 位 + marksix6.com 验证) → check_hits: hit=✓
- **金额 ¥5 中奖 → ¥210** (赔率 1:42)
- **重要**: v_xg.json Data.1-7 第 7 位 就是特码, **可直接用** (marksix6.com 验证)
### marksix6.com = 真开彩验证源 (2026-08-04 新)
- `https://www.marksix6.com/` — **首选**真开彩查询 (browser 渲染)
- 详见 `references/marksix6-com-verification-source.md`
- **不要**: 试 hkjc.com / sol.2344a.cc/kj/ / 百度 / Wayback (全失败, 详见 hkjc-com-blocked.md)
## QQ 推送格式 (跨 skill 用户偏好)
### 用横向 markdown 表格 (4-8 列)
- 每票 1 列, 多票并列可左右滑动比较
- 字段顺序: 名称表 + 项目表 (2 张表上下)
- 列用票代码, 行用指标 (现价/股息率/趋势/MA50/支撑/离均线/ATR/策略)
### 严禁垂直堆叠 (1 票 1 块)
用户原话: "这个多了很多 proxychains 的无用信息" / "不是这种表格, 是这种 (横向)"
- **错**: 每票 N 行 emoji 列表
- **对**: 横向 4-8 列表格
### 已应用脚本 (Hermes-Scripts 仓库)
- `dividend_alert.py` (A股/港股/美股股息)
- `cn_dividend_buy_timing.py` (A股高息买入时机)
- `daily_t_analysis.py` (做 T 分析)
- `scan_cn.py` / `dca_scanner.py` / `analyze_cmb.py` (高息扫描)
- `lottery_特码.py` (08-04 改横向表)
## cron agent 模式必用 no_agent + script (2026-08-02 实战)
**用户原话**: "把数据都丢了, 时间都是错的" / "你直接跑不行吗"
**反模式 (2026-08-02 lottery 推送 bug)**:
- 用 `cronjob` agent 模式 + skill `lottery-hk`
- 即使 SKILL.md 改 Qi-2 描述, model 仍按**旧认知** 编 (标题"082 期" + Qi-1 期 081 号码 + 错周二)
- 多次纠正后仍编, 用户说"会编"
**正解**: cron 用 `no_agent: true` + 真脚本
- 模型不参与, 0% 编概率
- 真脚本输出直接推 QQ
- **触发条件**: 任何 cron 任务涉及"数据源不完整 / 字段语义有歧义 / 时间/期号计算" → 必用 no_agent + script
- **保留路径**: `cd ~/.hermes/scripts && python3 <script>.py` 或 `~/.hermes/scripts/<wrapper>.sh`
**复盘**: 当时已经知道 `lottery_4frame.py` 存在 + 改了 cron prompt + 改了 SKILL.md description, **但还是错**。真正的修复必须是 `no_agent: true` + script, 让模型没有推理空间。
参考: `~/.hermes/skills/devops/cron-job-management/SKILL.md` §3 "Two Cron Job Modes" + §10 "Agent-Mode Cron + Provider Rate Limit" — 把这个规律扩展到新场景: **agent-mode cron + 任何"语义模糊源" (期号/日期/字段含义) = 编风险, 必 no_agent + script**。
## 实战回顾 (跨 skill)
### 082 期 (2026-07-30 凌晨, 第一次)
- agent 编: "081 期 7/30 周四 21:30 开彩" (实际 081 = 7/28 周二)
- agent 编: "082 期 = 8/1 周六" (实际 082 = 7/30 周四)
- 用户反复纠正 → 真相: 挂牌日 = 开彩日
### 083 期 (2026-08-04 上午)
- agent 编: title "082 期" + Data 是 Qi-1 期 081 号码 + "周二" 时间错
- 用户问"为什么统计的是上上期"
- → 修正 Data = Qi-2 期
### 084 期 (2026-08-04 下午, 第 4 次修正)
- 用户问 "8 月 4 号不是 083 期" → 修正 Qi = 最新已开
- 用户问 "Nq 是什么" → 修正 Nq = 未开下期
- marksix6.com 验证: Data.1-7 = Qi 期真开彩 (不是 Qi-1/Qi-2)
- **084 期 Top 1 = 38 → 真开 38 → 中奖 ¥5**