baa-conductor

git clone 

commit
8a33fa2
parent
c42fb56
author
im_wower
date
2026-03-30 05:45:09 +0800 CST
fix: watchdog v4 - renewed retry + enhanced logging
1 files changed,  +9, -15
M tools/watchdog/watchdog.sh
+9, -15
 1@@ -1,17 +1,12 @@
 2 #!/bin/bash
 3-# 看门狗 v3:定时唤醒 + 兜底超时 + 进度文件
 4-# 状态:working/waiting/renewed/paused/done
 5-# 唤醒条件(waiting 状态下,任一满足即续命):
 6-#   1. wake_at > 0 且 now >= wake_at(定时唤醒)
 7-#   2. now >= max_wake_at(兜底,无论什么状态,除了 done/paused)
 8-#   3. wake_at == 0 且 idle > timeout(空闲超时,兼容旧模式)
 9+# 看门狗 v4:renewed 超时重试
10 
11 SCRIPT_DIR=$(cd "$(dirname "$0")" && pwd)
12 CHECK_INTERVAL=${1:-60}
13 HEARTBEAT=/tmp/claude_heartbeat.json
14 LOG="${SCRIPT_DIR}/watchdog.log"
15 
16-echo "[$(date)] watchdog v3 started, interval=${CHECK_INTERVAL}s" >> "$LOG"
17+echo "[$(date)] watchdog v4 started, interval=${CHECK_INTERVAL}s" >> "$LOG"
18 
19 while true; do
20     sleep $CHECK_INTERVAL
21@@ -45,6 +40,9 @@ try:
22         elif wake_at == 0 and idle > timeout:
23             need = "yes"
24             reason = f"idle timeout ({idle}s>{timeout}s)"
25+    elif status == "renewed" and idle > timeout:
26+        need = "yes"
27+        reason = f"renewed but no response, retry ({idle}s>{timeout}s)"
28 
29     print(f"{status}|{idle}|{timeout}|{tab}|{need}|{msg}|{reason}|{wake_at}|{max_wake}")
30 except:
31@@ -64,23 +62,19 @@ PYEOF
32         continue
33     fi
34 
35+    echo "[$(date)] CHECK: status=$ST idle=${IDLE}s timeout=${TOUT}s need=$NEED wake=$WAKE max=$MAXW reason=$REASON" >> "$LOG"
36+
37     if [ "$NEED" = "yes" ]; then
38         echo "[$(date)] RENEWAL: $REASON" >> "$LOG"
39         bash "${SCRIPT_DIR}/a11y_msg.sh" "$TAB" "$MSG"
40+        A11Y_RC=$?
41         python3 << PYEOF2
42 import json, time
43 d = json.load(open("$HEARTBEAT"))
44 d["ts"] = int(time.time())
45 d["status"] = "renewed"
46-d["wake_at"] = 0
47-d["max_wake_at"] = 0
48 json.dump(d, open("$HEARTBEAT", "w"))
49 PYEOF2
50-        echo "[$(date)] RENEWED" >> "$LOG"
51-    else
52-        extra = ""
53-        [ "$WAKE" != "0" ] && extra=" wake_at=$WAKE"
54-        [ "$MAXW" != "0" ] && extra="$extra max=$MAXW"
55-        echo "[$(date)] OK: status=$ST idle=${IDLE}s/${TOUT}s$extra" >> "$LOG"
56+        echo "[$(date)] RENEWED (a11y_rc=$A11Y_RC)" >> "$LOG"
57     fi
58 done