diff options
| author | haoyuren <13851610112@163.com> | 2026-03-29 15:38:53 -0500 |
|---|---|---|
| committer | haoyuren <13851610112@163.com> | 2026-03-29 15:38:53 -0500 |
| commit | f1d348b05a75a213141ac98c954a3e5d7677c0d0 (patch) | |
| tree | d0dfca509cf9077dadd3e3078a43bf7b2eb3d2e0 | |
| parent | 045f530cfbd2110e768ea68fbadb99c98da3fbbd (diff) | |
Read sessions from .sessions file instead of hardcoding
| -rwxr-xr-x | poll_and_notify.sh | 14 |
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" |
