summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhaoyuren <13851610112@163.com>2026-03-29 15:38:53 -0500
committerhaoyuren <13851610112@163.com>2026-03-29 15:38:53 -0500
commitf1d348b05a75a213141ac98c954a3e5d7677c0d0 (patch)
treed0dfca509cf9077dadd3e3078a43bf7b2eb3d2e0
parent045f530cfbd2110e768ea68fbadb99c98da3fbbd (diff)
Read sessions from .sessions file instead of hardcoding
-rwxr-xr-xpoll_and_notify.sh14
1 files changed, 8 insertions, 6 deletions
diff --git a/poll_and_notify.sh b/poll_and_notify.sh
index b012128..7849b58 100755
--- a/poll_and_notify.sh
+++ b/poll_and_notify.sh
@@ -1,6 +1,6 @@
#!/bin/bash
-# 极简 cron:只负责唤醒闲置的 Claude session
-# 有 pending 任务就发一个 "check",hook 会处理剩下的一切
+# 极简 poller:唤醒闲置的 Claude session
+# 从 .sessions 文件读取 session 列表(不再硬编码)
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
@@ -9,18 +9,20 @@ if [ -f "$SCRIPT_DIR/.env" ]; then
fi
export BROKER_URL API_SECRET
-for SESSION in claude claude2 claude3; do
+SESSIONS_FILE="$SCRIPT_DIR/.sessions"
+[ -f "$SESSIONS_FILE" ] || exit 0
+
+while IFS=$'\t' read -r SESSION PROJECT_DIR; do
+ [ -z "$SESSION" ] && continue
tmux has-session -t "$SESSION" 2>/dev/null || continue
- # 问 broker 这个 session 有没有 pending 任务
COUNT=$(curl -sf -H "Authorization: Bearer $API_SECRET" \
"$BROKER_URL/tasks/pending?target=$SESSION" 2>/dev/null \
| python3 -c "import sys,json; print(len(json.load(sys.stdin).get('tasks',[])))" 2>/dev/null \
|| echo "0")
if [ "$COUNT" -gt 0 ]; then
- # 只发一个简短提示,不带任何 content
tmux send-keys -t "$SESSION" "请检查新任务" Enter
echo "$(date): poked $SESSION ($COUNT pending)"
fi
-done
+done < "$SESSIONS_FILE"