summaryrefslogtreecommitdiff
path: root/restart.sh
blob: 678b0906d22d0dc88aaa325fb392d7fb742d5926 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#!/bin/bash
# 一键重启所有 worker session + poller
set -euo pipefail

BRIDGE_DIR="${CLAUDE_BRIDGE_DIR:-$HOME/claude-bridge}"
SESSIONS_FILE="$BRIDGE_DIR/.sessions"

cd "$BRIDGE_DIR"
source .env 2>/dev/null
export BROKER_URL API_SECRET

# 重启所有 session
if [ -f "$SESSIONS_FILE" ]; then
    while IFS=$'\t' read -r SESSION PROJECT_DIR; do
        [ -z "$SESSION" ] && continue
        if tmux has-session -t "$SESSION" 2>/dev/null; then
            echo "$SESSION 已在运行,跳过"
        else
            tmux new-session -d -s "$SESSION"
            if [ -n "$PROJECT_DIR" ] && [ -d "$PROJECT_DIR" ]; then
                tmux send-keys -t "$SESSION" "cd $PROJECT_DIR" Enter
                sleep 1
            fi
            tmux send-keys -t "$SESSION" "claude --continue" Enter
            echo "$SESSION 已启动 (项目: $PROJECT_DIR)"
        fi
    done < "$SESSIONS_FILE"
else
    echo "没有 .sessions 文件,跳过 session 创建"
fi

# 杀掉旧 poller,启动新的
pkill -f "poll_and_notify.sh" 2>/dev/null || true
pkill -f "execute_commands.sh" 2>/dev/null || true
sleep 1
nohup bash -c "while true; do bash $BRIDGE_DIR/poll_and_notify.sh >> /tmp/claude-bridge.log 2>&1; bash $BRIDGE_DIR/execute_commands.sh >> /tmp/claude-bridge-cmd.log 2>&1; sleep 15; done" &
echo "poller 已启动 (PID: $!)"

echo "完成。"