From f1d348b05a75a213141ac98c954a3e5d7677c0d0 Mon Sep 17 00:00:00 2001 From: haoyuren <13851610112@163.com> Date: Sun, 29 Mar 2026 15:38:53 -0500 Subject: Read sessions from .sessions file instead of hardcoding --- poll_and_notify.sh | 14 ++++++++------ 1 file 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" -- cgit v1.2.3