90 lines
3.2 KiB
Markdown
90 lines
3.2 KiB
Markdown
# cron silent on success — dividend_alert.py 改造 (2026-09-01)
|
|
|
|
**用户原话**: "这个没消息就不推送了" / "这个不需要推, 更新就好了"
|
|
|
|
**事件**: `dividend_alert_cn_hk.sh` cron 11:00 跑, 拉美股+港股**没除权票**, 还推"✅ 明天没有高息股票除权, 休息一天~" 消息 — 用户怼"没消息就不推送了"。
|
|
|
|
**改造**: `~/.hermes/scripts/dividend_alert.py` 加 silent 逻辑, 共用 `--market cn_hk` 和 `--market us`, 两个 wrapper 都受益。
|
|
|
|
## 改动点 (v4.5.70)
|
|
|
|
### 1. `fmt()` 函数末尾 — "没有除权" 标记
|
|
位置: `~/.hermes/scripts/dividend_alert.py` (原本)
|
|
|
|
```python
|
|
if not has: L += ['✅ 明天没有高息股票除权,休息一天~', '']
|
|
```
|
|
|
|
保持原样 (主函数调用时还会生成这一行, 后续判断 silent)
|
|
|
|
### 2. `is_empty_content()` 新函数
|
|
位置: `~/.hermes/scripts/dividend_alert.py` (新增, 紧跟 `fmt()`)
|
|
|
|
```python
|
|
def is_empty_content(content):
|
|
"""检测推送内容是否只有'明天没有高息股票除权, 休息一天'的空消息
|
|
(用户偏好 silent on success)"""
|
|
return '✅ 明天没有高息股票除权,休息一天~' in content
|
|
```
|
|
|
|
### 3. `main()` 末尾 — silent exit
|
|
位置: `~/.hermes/scripts/dividend_alert.py` (main 函数末尾)
|
|
|
|
```python
|
|
# 5. 输出 - 没消息时 silent (stdout 空, no_agent 不推送)
|
|
content = fmt(a_h, hk_h, us_h, a_p, hk_p, us_p)
|
|
if is_empty_content(content):
|
|
# silent on success: 没明天除权 = 不推
|
|
sys.exit(0)
|
|
print(content)
|
|
```
|
|
|
|
## 验证
|
|
|
|
```bash
|
|
# 模拟空数据 (无除权)
|
|
python3 -c "
|
|
import sys
|
|
sys.path.insert(0, '/home/openclaw/.hermes/scripts')
|
|
from dividend_alert import fmt, is_empty_content
|
|
content = fmt([], [], [], {}, {}, {})
|
|
print('empty?', is_empty_content(content))
|
|
"
|
|
# → empty? True
|
|
```
|
|
|
|
## cron silent 行为对照
|
|
|
|
| 场景 | 原行为 | 现行为 |
|
|
|---|---|---|
|
|
| 明天有除权票 (5+ 只) | 推送详细表 | 推送详细表 ✓ |
|
|
| 明天只有 1-2 只 | 推送单行 | 推送单行 ✓ |
|
|
| **明天 0 只** | 推送 "✅ 休息一天" | **silent (stdout 空)** ✓ |
|
|
|
|
## silent 触发的条件
|
|
|
|
**任何** cron 跑完 → stdout 空 → no_agent 看到空 → **不推 QQ**。
|
|
stderr 输出 (报错信息) 不影响 stdout 判定。
|
|
|
|
## 关联
|
|
|
|
- `user-communication-style` § 27 静默 = OK 推 = 报警
|
|
- `user-communication-style` § 36 cron silent on success 通用 pattern
|
|
- `hermes-cron-mcp-tasks` § 7.3 cron silent on success 通用 pattern
|
|
- `memory-check-utf8-zombie-lock-fix` skill (之前的 silent 实践)
|
|
|
|
## 同类 cron 改造清单 (2026-09-01 已改)
|
|
|
|
| Cron job | 改造点 |
|
|
|---|---|
|
|
| `dividend_alert.py --market cn_hk` | ✅ silent on empty |
|
|
| `dividend_alert.py --market us` | ✅ 共享脚本, 同样 silent |
|
|
| `memory_check.sh` | ✅ (2026-08-31 已改) |
|
|
| `order-errors-monitor.sh` | ✅ (2026-08-31 已改) |
|
|
| `proxy_speedtest_cron.sh` | ✅ (2026-08-31 已改) |
|
|
| `dca_scanner.py` (港/A/美 股高息扫描) | ✅ `if output.strip(): print(output)` |
|
|
| `signal_queue_retry.sh` | ✅ 没任务 exit 0 |
|
|
| `lottery_特码_cron.sh` | ✅ silent 兜底 |
|
|
| `verify_lottery.sh` | ❌ 不 silent (它本身是核验报告, 没数据 = 不该跑) |
|
|
| `daily_t_analysis.py` | ❌ 不 silent (分析报告, 有内容) |
|