summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhaoyuren <13851610112@163.com>2026-03-29 15:55:43 -0500
committerhaoyuren <13851610112@163.com>2026-03-29 15:55:43 -0500
commit42f390b677f38cfd0fc30bb8d1a3278b5a072db4 (patch)
tree8293cc59c7de570a7348cc4036976fc93c56f302
parentf1d348b05a75a213141ac98c954a3e5d7677c0d0 (diff)
Add restart.sh for one-click recovery
-rwxr-xr-xrestart.sh39
1 files changed, 39 insertions, 0 deletions
diff --git a/restart.sh b/restart.sh
new file mode 100755
index 0000000..678b090
--- /dev/null
+++ b/restart.sh
@@ -0,0 +1,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 "完成。"