From f8c5cfab28fff5963fc1f47e70bcbd93b781ac4c Mon Sep 17 00:00:00 2001 From: "2569718930@qq.com" <2569718930@qq.com> Date: Wed, 6 May 2026 14:44:39 +0800 Subject: [PATCH] =?UTF-8?q?=E9=99=8D=E4=BD=8E=E5=B8=82=E5=9C=BA=E7=9B=91?= =?UTF-8?q?=E6=8E=A7Telegram=E6=8E=A8=E9=80=81=E9=A2=91=E7=8E=87=EF=BC=8C?= =?UTF-8?q?=E5=87=8F=E5=B0=91=E9=87=8D=E5=A4=8D=E9=80=9A=E7=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 收紧推送周期、冷却时间和触发门槛的默认值,避免52城 同时监控导致的通知轰炸。删除不再使用的doc_refresher技能。 Constraint: 用户反馈电报群通知太频繁且同城市重复推送 Rejected: 在.env中配置 | 用户要求写死在代码默认值中 Confidence: high Scope-risk: narrow Directive: 如需临时放宽,仍可通过同名环境变量覆盖 Tested: Not-tested: 需实际运行bot验证推送频率 --- .agent/skills/doc_refresher/SKILL.md | 27 --------------------------- src/bot/runtime_coordinator.py | 14 +++++++------- src/utils/telegram_push.py | 14 +++++++------- 3 files changed, 14 insertions(+), 41 deletions(-) delete mode 100644 .agent/skills/doc_refresher/SKILL.md diff --git a/.agent/skills/doc_refresher/SKILL.md b/.agent/skills/doc_refresher/SKILL.md deleted file mode 100644 index 3b4ad9b4..00000000 --- a/.agent/skills/doc_refresher/SKILL.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -name: doc_refresher -description: 自动同步和刷新项目文档,确保 Markdown 文件与当前代码功能状态完全一致。 ---- - -# Documentation Refresher Skill - -此技能用于在项目架构发生重大调整(如功能下线、重心转移)后,自动重写和更新项目的所有 Markdown 文档。 - -## 核心任务 - -1. **代码扫描**:分析 `run.py` 和核心逻辑,识别哪些功能是“活跃的”,哪些功能是“暂停/移除的”。 -2. **术语统一**:确保所有文档使用一致的语气(例如从“监控机器人”转向“天气查询机器人”)。 -3. **多语言同步**:确保 `_ZH.md` 与英文版文档内容同步。 - -## 更新准则 - -- **状态准确性**:如果功能已在代码中被注释(如监控引擎、模拟交易),文档必须明确标注为“已暂停”或直接移除。 -- **示例更新**:更新文档中的 Telegram 指令示例,移除已下线的指令(如 `/signal`, `/portfolio`)。 -- **流程简化**:针对当前“天气查询模式”,简化安装和运行流程说明。 - -## 使用流程 - -1. 查看 `run.py` 确认当前运行模式。 -2. 遍历项目根目录下所有的 `.md` 文件。 -3. 对每个文件内容进行重构,保持格式美观。 -4. 校验多语言版本的一致性。 diff --git a/src/bot/runtime_coordinator.py b/src/bot/runtime_coordinator.py index 901129bd..cef1ac87 100644 --- a/src/bot/runtime_coordinator.py +++ b/src/bot/runtime_coordinator.py @@ -154,7 +154,7 @@ class StartupCoordinator: def _start_trade_alert_loop(self) -> LoopStatus: enabled = _env_bool("TELEGRAM_ALERT_PUSH_ENABLED", True) chat_ids = get_telegram_chat_ids_from_env() - interval = max(60, _env_int("TELEGRAM_ALERT_PUSH_INTERVAL_SEC", 300)) + interval = max(60, _env_int("TELEGRAM_ALERT_PUSH_INTERVAL_SEC", 1800)) cities_count = _parse_csv_count(os.getenv("TELEGRAM_ALERT_CITIES")) details = { "mode": "critical-alerts-and-focus-digest", @@ -163,19 +163,19 @@ class StartupCoordinator: "chat_targets": len(chat_ids), "alert_cooldown_sec": max( 60, - _env_int("TELEGRAM_ALERT_PUSH_COOLDOWN_SEC", 1800), + _env_int("TELEGRAM_ALERT_PUSH_COOLDOWN_SEC", 21600), ), "mispricing_interval_sec": max( - max(60, _env_int("TELEGRAM_ALERT_PUSH_COOLDOWN_SEC", 1800)), - _env_int("TELEGRAM_ALERT_MISPRICING_INTERVAL_SEC", 7200), + max(60, _env_int("TELEGRAM_ALERT_PUSH_COOLDOWN_SEC", 21600)), + _env_int("TELEGRAM_ALERT_MISPRICING_INTERVAL_SEC", 43200), ), - "min_trigger_count": max(1, _env_int("TELEGRAM_ALERT_MIN_TRIGGER_COUNT", 2)), - "min_severity": str(os.getenv("TELEGRAM_ALERT_MIN_SEVERITY") or "medium").strip().lower(), + "min_trigger_count": max(1, _env_int("TELEGRAM_ALERT_MIN_TRIGGER_COUNT", 3)), + "min_severity": str(os.getenv("TELEGRAM_ALERT_MIN_SEVERITY") or "high").strip().lower(), "mispricing_only": _env_bool("TELEGRAM_ALERT_MISPRICING_ONLY", True), "focus_digest_enabled": _env_bool("TELEGRAM_MARKET_FOCUS_DIGEST_ENABLED", True), "focus_digest_interval_sec": max( 300, - _env_int("TELEGRAM_MARKET_FOCUS_DIGEST_INTERVAL_SEC", 1800), + _env_int("TELEGRAM_MARKET_FOCUS_DIGEST_INTERVAL_SEC", 21600), ), "focus_push_start_local_hour": min( 23, diff --git a/src/utils/telegram_push.py b/src/utils/telegram_push.py index b7c2483d..3055f9b1 100644 --- a/src/utils/telegram_push.py +++ b/src/utils/telegram_push.py @@ -1228,24 +1228,24 @@ def start_trade_alert_push_loop(bot: Any, config: Dict[str, Any]) -> Optional[th logger.warning("telegram market monitor loop skipped: TELEGRAM_CHAT_IDS is not set") return None - interval_sec = max(60, _env_int("TELEGRAM_ALERT_PUSH_INTERVAL_SEC", 300)) + interval_sec = max(60, _env_int("TELEGRAM_ALERT_PUSH_INTERVAL_SEC", 1800)) cities = _parse_city_list(os.getenv("TELEGRAM_ALERT_CITIES")) state_path = _state_file() - alert_cooldown_sec = max(60, _env_int("TELEGRAM_ALERT_PUSH_COOLDOWN_SEC", 1800)) + alert_cooldown_sec = max(60, _env_int("TELEGRAM_ALERT_PUSH_COOLDOWN_SEC", 21600)) mispricing_interval_sec = max( alert_cooldown_sec, - _env_int("TELEGRAM_ALERT_MISPRICING_INTERVAL_SEC", 7200), + _env_int("TELEGRAM_ALERT_MISPRICING_INTERVAL_SEC", 43200), ) - min_trigger_count = max(1, _env_int("TELEGRAM_ALERT_MIN_TRIGGER_COUNT", 2)) - min_severity = str(os.getenv("TELEGRAM_ALERT_MIN_SEVERITY") or "medium").strip().lower() + min_trigger_count = max(1, _env_int("TELEGRAM_ALERT_MIN_TRIGGER_COUNT", 3)) + min_severity = str(os.getenv("TELEGRAM_ALERT_MIN_SEVERITY") or "high").strip().lower() if min_severity not in SEVERITY_RANK: - min_severity = "medium" + min_severity = "high" mispricing_only = _env_bool("TELEGRAM_ALERT_MISPRICING_ONLY", True) focus_digest_enabled = _env_bool("TELEGRAM_MARKET_FOCUS_DIGEST_ENABLED", True) focus_digest_top_n = max(3, min(8, _env_int("TELEGRAM_MARKET_FOCUS_DIGEST_TOP_N", 5))) focus_digest_interval_sec = max( 300, - _env_int("TELEGRAM_MARKET_FOCUS_DIGEST_INTERVAL_SEC", 1800), + _env_int("TELEGRAM_MARKET_FOCUS_DIGEST_INTERVAL_SEC", 21600), ) def _runner() -> None: try: