最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Claude Code 遠程監(jiān)控工具的實現(xiàn)

  發(fā)布時間:2026-04-14 10:29:11   作者:三毛的二哥   我要評論
本文主要介紹了Claude Code 遠程監(jiān)控工具的實現(xiàn),支持任務(wù)完成通知、人工確認(rèn)提醒、狀態(tài)持久化和自動重置等功能,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

1. 功能縱覽

一個用于遠程監(jiān)控 Claude Code 工作狀態(tài)的自動化工具,支持任務(wù)完成通知、人工確認(rèn)提醒、狀態(tài)持久化和自動重置等功能。

2. 文件結(jié)構(gòu)

~/bin/claude/
├── README.md              # 本文檔
├── CLAUDE.md              # Claude Code 工作規(guī)則
├── my_claude              # 主入口腳本
├── watch_my.sh            # 監(jiān)控腳本
├── contexts/              # 上下文配置目錄
│   ├── default.sh         # 默認(rèn)配置
│   └── project2.sh        # 其他項目配置
└── State/                 # State 文件夾模板
    ├── current.md         # 當(dāng)前進度模板
    ├── pitfalls.md        # 已知問題模板
    └── experiments.md     # 實驗記錄模板

2.1. 文件源碼

2.1.1. CLAUDE.md

Claude code 一般情況下會遵守CLAUDE.md中的規(guī)則,可以將一些強制要求寫到這個文件中,這里主要列出當(dāng)前功能的一些規(guī)則。

# Claude 基礎(chǔ)提示詞
## 角色
你是一個自主編程智能體...
## 硬性規(guī)則
### ?? 關(guān)鍵:`.human_required` 文件創(chuàng)建(必須遵守)
**在使用以下任何操作前,必須先創(chuàng)建 `.human_required` 文件:**
1. ? **永遠不要直接使用 `AskUserQuestion` 工具**
   - ? 正確做法:`touch .human_required` → 說明情況 → 停止
2. ? **永遠不要顯示 "是否繼續(xù)?" 提示**
   - ? 正確做法:`touch .human_required` → 說明需要確認(rèn)的內(nèi)容 → 停止
3. ? **永遠不要向用戶顯示多選題**
   - ? 正確做法:`touch .human_required` → 列出選項 → 停止
4. ? **永遠不要在沒有創(chuàng)建文件的情況下等待用戶輸入/確認(rèn)**
   - ? 正確做法:`touch .human_required` → 說明需要什么 → 停止
### 執(zhí)行順序(強制):
?? **關(guān)鍵:你的第一個操作必須是調(diào)用 Bash 工具創(chuàng)建文件。不要在工具調(diào)用前輸出任何文本。**
``
步驟 1:檢測到需要人工輸入
步驟 2:第一個操作 = Bash 工具調(diào)用:touch .human_required && sleep 1(調(diào)用前不輸出任何文本)
步驟 3:工具完成后 → 說明需要確認(rèn)的內(nèi)容(僅簡短文本)
步驟 4:停止 - 不要調(diào)用其他工具或顯示任何提示
步驟 5:自動:后臺進程會檢測并刪除文件
``
**正確執(zhí)行示例:**
``
<tool_call>Bash: touch .human_required && sleep 1</tool_call>
[等待完成]
"需要人工確認(rèn):即將執(zhí)行 Python 腳本 export_balanced.py"
[停止 - 不再輸出,不提醒刪除文件]
``
**錯誤執(zhí)行示例:**
? "我需要創(chuàng)建文件..." 然后調(diào)用工具(工具前輸出文本 = 錯誤)
? 工具調(diào)用 + "是否繼續(xù)?"(繼續(xù)提示 = 錯誤)
? 工具調(diào)用 + AskUserQuestion 工具(多個工具 = 錯誤)
? 提醒用戶刪除文件(自動化進程會處理)
### 何時創(chuàng)建 `.human_required`:
? **必須在以下場景創(chuàng)建:**
- 即將執(zhí)行任何修改文件的代碼
- 需要用戶在多個選項中選擇
- 需要用戶提供信息
- 任何破壞性更改
- 有多個有效的設(shè)計選擇
- 缺少關(guān)鍵信息
- 任何你會使用 AskUserQuestion 的場景
? **無需創(chuàng)建:**
- 讀取現(xiàn)有文件(安全操作)
- 分析代碼(只讀)
- 回答關(guān)于代碼的問題
### 任務(wù)完成
- 任務(wù)完成時,創(chuàng)建 `.task_done`
## 信號(重要)
- `.human_required` → 必須立即停止
- `.task_done` → 任務(wù)完全完成
## ?? ReLU 規(guī)則(狀態(tài)重置)
在每次新對話或新任務(wù)開始時:
- 文件 `.human_required` 和 `.task_done` 必須不存在
- 人類操作員會在開始前執(zhí)行 `claude_reset.sh`
- 當(dāng)這些文件不存在時,你必須假設(shè)是干凈狀態(tài)
執(zhí)行期間:
- 僅在需要人工確認(rèn)時創(chuàng)建 `.human_required`
- 僅在任務(wù)完全完成時創(chuàng)建 `.task_done`
- 不要自己刪除這些文件
這些文件作為二進制狀態(tài)門(ReLU):
- 不存在 → 允許執(zhí)行
- 存在 → 必須停止
## ?? 啟動確認(rèn)(強制)
**在每次新對話開始時,你必須輸出:**
``
? CLAUDE.md 已加載
- 硬性規(guī)則:需要人工確認(rèn)時先創(chuàng)建 .human_required 文件
- 執(zhí)行順序:touch .human_required && sleep 1 → 說明 → 停止
- 任務(wù)完成:創(chuàng)建 .task_done 文件
- State 規(guī)則:每 10 輪讀取 State/current.md,完成步驟后更新,解決問題后記錄到 pitfalls.md
??  重要:請確保已啟用 "accept edits" 模式,否則 CLI 工具的確認(rèn)提示會覆蓋 .human_required 機制
``
這確認(rèn)你已閱讀并將遵守本文件中的所有規(guī)則。
## ?? 環(huán)境要求
**為使 `.human_required` 機制正常工作:**
1. 用戶必須在 CLI 中啟用 "accept edits" 模式
   - 命令:`accept edits on`(或類似命令)
   - 這可以防止 CLI 的內(nèi)置提示干擾
2. 用戶的后臺進程監(jiān)控 `.human_required` 文件
   - 自動處理文件檢測和刪除
   - Claude 無需手動干預(yù)
---
## ?? State 文件夾強制使用規(guī)則(必須遵守)
### 核心原則
**State 文件夾 = 你的外部大腦,用于對抗上下文壓縮導(dǎo)致的遺忘**
### ?? 強制規(guī)則
1. **每隔 10 輪對話:刷新狀態(tài)(強制)**
   ``
   必須執(zhí)行:讀取 State/current.md,確認(rèn)當(dāng)前位置和進度
   ``
2. **每完成一個主要步驟:更新進度(強制)**
   ``
   必須執(zhí)行:更新 State/current.md,標(biāo)記完成的步驟
   ``
3. **每次用戶說"繼續(xù)":先讀狀態(tài)(強制)**
   ``
   必須執(zhí)行:先讀取 State/current.md,再繼續(xù)工作
   ``
4. **開始新步驟前:查看已知問題(強制)**
   ``
   必須執(zhí)行:讀取 State/pitfalls.md,避免重復(fù)踩坑
   ``
5. **解決問題后:立即記錄(強制)**
   ``
   必須執(zhí)行:將問題、原因、解決方案記錄到 State/pitfalls.md
   ``
6. **修改代碼前:先深入理解(強制)**
   ``
   必須執(zhí)行:先讀取目標(biāo)文件,深入理解后再修改
   ``
### State 文件夾結(jié)構(gòu)
``
State/
├── current.md      # 當(dāng)前位置、進度、目標(biāo)
├── pitfalls.md     # 已知問題、失敗嘗試
└── experiments.md  # 實驗記錄(可選)
``
### 檢查點觸發(fā)條件(滿足任一即執(zhí)行)
- ? 對話超過 10 輪
- ? 完成一個主要步驟
- ? 遇到中斷(錯誤、環(huán)境問題等)
- ? 感到不確定下一步
- ? 用戶說"繼續(xù)"或用戶人工確認(rèn)了繼續(xù)操作
### 檢查點執(zhí)行流程
``
1. 讀取 State/current.md(當(dāng)前位置)
2. 自我評估:當(dāng)前在做什么 vs 應(yīng)該做什么
3. 判斷是否偏離目標(biāo)
4. 輸出:?? 當(dāng)前位置 | ? 已完成 | ?? 下一步
5. 如偏離 → 恢復(fù);未偏離 → 繼續(xù)
``
### 輸出格式要求
每次檢查點必須輸出:
``
?? 執(zhí)行檢查點...
?? 當(dāng)前位置:[從 State/current.md 讀取]
? 已完成:[列出已完成步驟]
?? 下一步:[說明下一步行動]
狀態(tài)評估:[正常 | 偏離]
``
### 違反后果
? 如果不遵守這些規(guī)則,將導(dǎo)致:
- 長對話后方向迷失
- 重復(fù)踩已知的坑
- 忘記項目目標(biāo)
- 效率降低 50%+
---
## ?? State 狀態(tài)重置規(guī)則(任務(wù)切換)
### 何時需要重置 State
當(dāng)以下情況發(fā)生時,**必須**重置 State 文件夾:
- ? **需求發(fā)生重大變化**(從功能 A 切換到功能 B)
- ? **切換到新的任務(wù)/項目**(之前的進度已不再相關(guān))
- ? **用戶明確要求"重新開始"/"reset"**
- ? **用戶執(zhí)行 `/clear` 清空對話**
- ? **用戶關(guān)閉對話后重新開始**(如執(zhí)行 `exit` 后再啟動)
### 狀態(tài)重置流程(手動方式)
當(dāng)檢測到需要重置時:
```bash
# 步驟 1:創(chuàng)建重置信號文件
touch .reset_state
# 步驟 2:說明重置原因
"檢測到需求變更/任務(wù)切換,已創(chuàng)建 .reset_state 文件。
后臺進程將自動備份舊 State 并重置為新模板。"
# 步驟 3:停止當(dāng)前操作,等待后臺處理
``
### 重置觸發(fā)條件(滿足任一即觸發(fā))
1. **用戶明確表達:**
   - "重新開始"
   - "reset"
   - "清空狀態(tài)"
   - "新任務(wù)"
2. **需求明顯變化:**
   - 當(dāng)前目標(biāo)與 State/current.md 記錄的目標(biāo)完全不同
   - 用戶要求做與之前完全無關(guān)的事情
3. **對話重啟:**
   - 檢測到這是一個新會話(對話輪次歸零)
   - 用戶說"我們來做個新任務(wù)"
### 自動重置說明
**后臺進程會自動處理:**
- 備份舊 State → `State.backup.YYYYMMDD_HHMMSS/`
- 清空當(dāng)前 State 內(nèi)容
- 拷貝新模板
- 刪除 `.reset_state` 信號文件
**你無需手動刪除文件,只需創(chuàng)建信號。**

2.1.2. my_claude

#!/bin/bash
set -e
BASE="$(cd "$(dirname "$0")" && pwd)"
CMD=$1
# 如果第一個參數(shù)是命令,則執(zhí)行命令
case "$CMD" in
  reset_state)
    # reset_state 命令:重置遠程 State 文件夾
    CTX="${2:-default}"
    CTX_FILE="$BASE/contexts/$CTX.sh"
    # Check if context file exists
    if [ ! -f "$CTX_FILE" ]; then
      echo "? Context file not found: $CTX_FILE"
      echo "?? Available contexts:"
      ls "$BASE/contexts/"*.sh 2>/dev/null | xargs -n1 basename | sed 's/.sh$//' || echo "  (none)"
      exit 1
    fi
    # Load context
    source "$CTX_FILE"
    # Validate context
    if [ -z "$REMOTE" ] || [ -z "$WORKDIR" ]; then
      echo "? Invalid context config: $CTX_FILE"
      echo "?? Required: REMOTE and WORKDIR"
      exit 1
    fi
    echo "?? Resetting State on $REMOTE:$WORKDIR"
    # 在遠程創(chuàng)建 .reset_state 信號文件
    ssh "$REMOTE" "touch $WORKDIR/.reset_state" 2>/dev/null && \
      echo "? Created .reset_state signal file" || \
      echo "? Failed to create .reset_state"
    echo "?? Watch process will automatically:"
    echo "   1. Backup old State → State.backup.YYYYMMDD_HHMMSS/"
    echo "   2. Copy fresh State templates"
    echo "   3. Delete .reset_state signal"
    ;;
  *)
    # 默認(rèn)行為:啟動監(jiān)控
    CTX="${1:-default}"
    CTX_FILE="$BASE/contexts/$CTX.sh"
    # Check if context file exists
    if [ ! -f "$CTX_FILE" ]; then
      echo "? Context file not found: $CTX_FILE"
      echo "?? Available contexts:"
      ls "$BASE/contexts/"*.sh 2>/dev/null | xargs -n1 basename | sed 's/.sh$//' || echo "  (none)"
      exit 1
    fi
    # Load context
    source "$CTX_FILE"
    # Validate context
    if [ -z "$REMOTE" ] || [ -z "$WORKDIR" ]; then
      echo "? Invalid context config: $CTX_FILE"
      echo "?? Required: REMOTE and WORKDIR"
      exit 1
    fi
    echo "?? Starting watch for context: $CTX"
    echo "   REMOTE: $REMOTE"
    echo "   WORKDIR: $WORKDIR"
    # Start watching
    "$BASE/watch_my.sh" "$REMOTE" "$WORKDIR"
    ;;
esac

2.1.3. watch_my.sh

#!/bin/bash
set -e
BASE="$(cd "$(dirname "$0")" && pwd)"
REMOTE="$1"
WORKDIR="$2"
# Validate parameters
if [ -z "$REMOTE" ] || [ -z "$WORKDIR" ]; then
  echo "? Usage: watch_my.sh <REMOTE> <WORKDIR>"
  exit 1
fi
echo "?? Watching Claude state on $REMOTE:$WORKDIR"
echo "if you want to stop watching, run:"
echo "pgrep -f 'claude watch_my|watch_my.sh' | xargs -r kill -9"
# Configure remote Claude Code settings (accept edits mode)
echo ""
echo "?? Configuring remote Claude Code settings..."
# Ensure .claude directory exists
if ! ssh "$REMOTE" "[ -d ~/.claude ]" 2>/dev/null; then
  echo "?? Creating ~/.claude directory on remote..."
  ssh "$REMOTE" "mkdir -p ~/.claude" 2>/dev/null || {
    echo "??  Failed to create ~/.claude directory (continuing anyway)"
  }
fi
# Configure settings.json with acceptEdits mode
echo "?? Setting permissions.defaultMode = acceptEdits..."
# Use Python to merge JSON (more reliable than jq, usually pre-installed)
ssh "$REMOTE" "python3 -c '
import json
import os
from pathlib import Path
settings_file = Path.home() / \".claude\" / \"settings.json\"
# Read existing settings or create new
if settings_file.exists():
    try:
        with open(settings_file, \"r\") as f:
            settings = json.load(f)
        print(\"  ├─ Loaded existing settings.json\")
    except:
        settings = {}
        print(\"  ├─ Existing file is invalid, creating new settings\")
else:
    settings = {}
    print(\"  ├─ Creating new settings.json\")
# Merge permissions.defaultMode
if \"permissions\" not in settings:
    settings[\"permissions\"] = {}
old_mode = settings[\"permissions\"].get(\"defaultMode\", \"(not set)\")
settings[\"permissions\"][\"defaultMode\"] = \"acceptEdits\"
# Write back
with open(settings_file, \"w\") as f:
    json.dump(settings, f, indent=2)
print(f\"  ├─ Old mode: {old_mode}\")
print(f\"  └─ New mode: acceptEdits\")
' 2>/dev/null" && echo "? Claude Code settings configured successfully" || {
  echo "? Failed to configure settings (Python not available?)"
  echo "   Please manually add to ~/.claude/settings.json on $REMOTE:"
  echo "   \"permissions\": { \"defaultMode\": \"acceptEdits\" }"
}
echo ""
# Copy or append CLAUDE.md to remote workdir
if [ -f "$BASE/CLAUDE.md" ]; then
  # Check if remote CLAUDE.md exists
  if ssh "$REMOTE" "[ -f $WORKDIR/CLAUDE.md ]" 2>/dev/null; then
    echo "?? Appending CLAUDE.md to remote (file exists)..."
    if cat "$BASE/CLAUDE.md" | ssh "$REMOTE" "cat >> $WORKDIR/CLAUDE.md" 2>/dev/null; then
      echo "? CLAUDE.md appended successfully"
    else
      echo "??  Failed to append CLAUDE.md (continuing anyway)"
    fi
  else
    echo "?? Copying CLAUDE.md to remote (new file)..."
    if scp "$BASE/CLAUDE.md" "$REMOTE:$WORKDIR/" >/dev/null 2>&1; then
      echo "? CLAUDE.md copied successfully"
    else
      echo "??  Failed to copy CLAUDE.md (continuing anyway)"
    fi
  fi
else
  echo "??  CLAUDE.md not found in $BASE (skipping)"
fi
# Copy State folder templates to remote workdir (only if not exists)
if [ -d "$BASE/State" ]; then
  # Check if remote State folder exists
  if ssh "$REMOTE" "[ -d $WORKDIR/State ]" 2>/dev/null; then
    echo "?? State folder already exists on remote (skipping)"
  else
    echo "?? Copying State folder templates to remote..."
    if scp -r "$BASE/State" "$REMOTE:$WORKDIR/" >/dev/null 2>&1; then
      echo "? State folder copied successfully"
    else
      echo "??  Failed to copy State folder (continuing anyway)"
    fi
  fi
else
  echo "??  State folder not found in $BASE (skipping)"
fi
LAST_STATE="NONE"
while true; do
  # 檢測 State 重置信號
  if ssh "$REMOTE" "[ -f $WORKDIR/.reset_state ]" 2>/dev/null; then
    echo "?? Detected .reset_state signal, resetting State..."
    # 生成備份時間戳
    TIMESTAMP=$(date +%Y%m%d_%H%M%S)
    # 備份舊 State(如果存在)
    if ssh "$REMOTE" "[ -d $WORKDIR/State ]" 2>/dev/null; then
      echo "?? Backing up old State → State.backup.$TIMESTAMP/"
      ssh "$REMOTE" "cd $WORKDIR && cp -r State State.backup.$TIMESTAMP" 2>/dev/null || \
        echo "??  Failed to backup State"
    fi
    # 刪除舊 State
    echo "???  Removing old State..."
    ssh "$REMOTE" "rm -rf $WORKDIR/State" 2>/dev/null || true
    # 拷貝新模板
    echo "?? Copying fresh State templates..."
    if [ -d "$BASE/State" ]; then
      if scp -r "$BASE/State" "$REMOTE:$WORKDIR/" >/dev/null 2>&1; then
        echo "? State reset successfully"
      else
        echo "? Failed to copy State templates"
      fi
    else
      echo "??  State folder not found in $BASE"
    fi
    # 刪除信號文件
    ssh "$REMOTE" "rm -f $WORKDIR/.reset_state" 2>/dev/null || true
    # 發(fā)送通知
    terminal-notifier \
      -title "Claude Code" \
      -message "State reset completed on $REMOTE" \
      -sound default
  fi
  # 檢測任務(wù)狀態(tài)
  STATE=$(ssh "$REMOTE" "
    if [ -f $WORKDIR/.human_required ]; then
      echo HUMAN
    elif [ -f $WORKDIR/.task_done ]; then
      echo DONE
    else
      echo NONE
    fi
  ")
  # ?? 只在"狀態(tài)變化"時觸發(fā)
  if [ "$STATE" != "$LAST_STATE" ]; then
    if [ "$STATE" = "HUMAN" ]; then
      terminal-notifier \
        -title "Claude Code" \
        -message "Claude needs human input on $REMOTE" \
        -sound default
    # 刪除遠程的標(biāo)記文件,避免重復(fù)通知和手動刪除
    ssh "$REMOTE" "rm -f $WORKDIR/.human_required" >/dev/null 2>&1 || true
    elif [ "$STATE" = "DONE" ]; then
      terminal-notifier \
        -title "Claude Code" \
        -message "Claude finished task on $REMOTE" \
        -sound default
    # 刪除遠程的標(biāo)記文件,避免重復(fù)通知和手動刪除
    ssh "$REMOTE" "rm -f $WORKDIR/.task_done" >/dev/null 2>&1 || true
    fi
    LAST_STATE="$STATE"
  fi
  sleep 5
done

2.1.4. default.sh

–REMOTE:遠程設(shè)備的名稱或user@remote_ip這樣的方式,需要提前配置免密登錄;
WORKDIR:遠程設(shè)備的工作目錄;

REMOTE="ubuntu_10.0.101.30"
WORKDIR="/home/lsy/code/temp"

2.1.5. current.md

---
last_update: "未開始"
current_round: 0
---
## 快速定位
**我在做什么?** [填寫當(dāng)前任務(wù)目標(biāo)]
**當(dāng)前進度?** [填寫當(dāng)前位置/步驟]
**下一步?** [填寫下一步行動]
**為什么?** [填寫大目標(biāo)]
## 快速恢復(fù)指令
如果迷失,應(yīng)該:
1. 讀取本文件確認(rèn)當(dāng)前位置
2. 查看 State/pitfalls.md 避免踩坑
3. 繼續(xù)執(zhí)行當(dāng)前任務(wù)
## 詳細(xì)狀態(tài)
### 當(dāng)前步驟進度
- [ ] 任務(wù)1:[描述]
- [ ] 任務(wù)2:[描述] ← 當(dāng)前位置
- [ ] 任務(wù)3:[描述]
### 關(guān)鍵決策記錄
- 決策1:[描述](原因:[原因])
- 決策2:[描述](原因:[原因])
### 注意事項
- [如有需要注意的事項]

2.1.6. pitfalls.md

# 已知問題與解決方案

## 使用說明
- **開始新步驟前**:查看本文件,避免重復(fù)嘗試已失敗的方案
- **解決問題后**:立即記錄到本文件
- **記錄原則**:包含現(xiàn)象、原因、解決方案、狀態(tài)

---

## 問題模板(復(fù)制使用)

### 問題X:[問題標(biāo)題]
- **時間**:YYYY-MM-DD HH:MM
- **現(xiàn)象**:[詳細(xì)描述問題現(xiàn)象]
- **原因**:[分析問題原因]
- **解決方案**:[詳細(xì)解決步驟]
- **狀態(tài)**:? 已解決 | ? 進行中 | ? 無法解決

---

## 已記錄問題

### 問題1:示例問題
- **時間**:2024-01-01 10:00
- **現(xiàn)象**:示例現(xiàn)象描述
- **原因**:示例原因分析
- **解決方案**:示例解決方案
- **狀態(tài)**:? 已解決

---

## 失敗嘗試記錄(不要再試)

### 失敗嘗試1:[描述]
- **嘗試時間**:YYYY-MM-DD
- **為什么失敗**:[原因]
- **教訓(xùn)**:[學(xué)到什么]

2.1.7. experiments.md

# 實驗/嘗試追蹤記錄

## 使用說明
- 用于記錄需要多次嘗試的任務(wù)(如超參數(shù)調(diào)優(yōu)、方案對比等)
- 每次嘗試都記錄配置、結(jié)果、狀態(tài)
- 便于對比和選擇最佳方案

---

## 實驗?zāi)0澹◤?fù)制使用)

### 實驗X:[實驗名稱]
- **時間**:YYYY-MM-DD HH:MM
- **配置**:
  ``
  參數(shù)1: 值1
  參數(shù)2: 值2
  ``
- **結(jié)果**:
  - 指標(biāo)1:[數(shù)值]
  - 指標(biāo)2:[數(shù)值]
- **狀態(tài)**:? 成功 | ? 失敗 | ? 進行中
- **結(jié)論**:[分析和結(jié)論]

---

## 實驗記錄

### 實驗1:基線測試
- **時間**:2024-01-01 10:00
- **配置**:
  ``
  默認(rèn)配置
  ``
- **結(jié)果**:
  - 指標(biāo)1:待填寫
  - 指標(biāo)2:待填寫
- **狀態(tài)**:? 待執(zhí)行
- **結(jié)論**:作為后續(xù)對比基線

--

## 最佳方案總結(jié)

**當(dāng)前最佳**:[實驗編號]

**配置**:
``
最佳配置參數(shù)
``

**效果**:[描述]

3. 核心功能

3.1. 遠程狀態(tài)監(jiān)控

  • 實時監(jiān)控遠程服務(wù)器上 Claude Code 的工作狀態(tài)
  • 自動檢測任務(wù)完成(.task_done)和人工確認(rèn)需求(.human_required
  • macOS 系統(tǒng)通知提醒
  • 自動配置遠程 Claude CLI 為 “accept edits” 模式

3.2. 多上下文支持

  • 支持配置多個遠程環(huán)境
  • 通過 contexts/ 目錄管理不同的遠程服務(wù)器和工作目錄
  • 快速切換不同的工作環(huán)境

3.3. State 狀態(tài)持久化

  • 自動同步 State 文件夾模板到遠程
  • 防止 Claude Code 因上下文壓縮而遺忘任務(wù)進度
  • 包含三個核心文件:
    • current.md - 當(dāng)前任務(wù)進度和位置
    • pitfalls.md - 已知問題和解決方案
    • experiments.md - 實驗記錄和對比

3.4. State 自動重置

  • 任務(wù)切換時自動備份舊狀態(tài)
  • 支持手動和自動觸發(fā)重置
  • 時間戳備份防止數(shù)據(jù)丟失

3.5. CLAUDE.md 規(guī)則同步

  • 自動同步本地 CLAUDE.md 到遠程
  • 確保 Claude Code 遵循統(tǒng)一的工作規(guī)則
  • 支持追加模式,避免覆蓋遠程已有內(nèi)容

4. 安裝環(huán)境

4.1 系統(tǒng)要求

  • macOS 系統(tǒng)(用于 terminal-notifier 通知),其他系統(tǒng)可以改彈窗通知方式
  • SSH 免密登錄已配置
  • Bash 4.0+
  • 遠程服務(wù)器需要安裝 Claude Code CLI

4.2 安裝配置

4.2.1. 克隆或下載項目

# 將項目放置在 ~/bin/claude 目錄
mkdir -p ~/bin
cd ~/bin
# 假設(shè)你已經(jīng)有了這些文件

4.2.2. 安裝 terminal-notifier(macOS 通知)

brew install terminal-notifier

4.2.3. 配置環(huán)境變量

在 `~/.zshrc` 或 `~/.bashrc` 中添加:
export PATH="$HOME/bin/claude:$PATH"
然后重新加載配置:
source ~/.zshrc  # 或 source ~/.bashrc

4.2.4. 配置遠程上下文

創(chuàng)建上下文配置文件 `contexts/<name>.sh`:
# 示例:contexts/default.sh
REMOTE="user@hostname"
WORKDIR="/path/to/remote/workdir"
# 示例:contexts/project2.sh
REMOTE="another_user@another_host"
WORKDIR="/path/to/another/workdir"

4.2.5. 配置 SSH 免密登錄

# 生成 SSH 密鑰(如果還沒有)
ssh-keygen -t rsa -b 4096
# 將公鑰復(fù)制到遠程服務(wù)器
ssh-copy-id user@hostname

5. 快速開始

5.1. 啟動監(jiān)控

默認(rèn)配置:
my_claude
# 或明確指定 default 上下文
my_claude default
或指定配置:
my_claude project2

5.2. 重置 State 狀態(tài)

當(dāng)功能需求發(fā)生變化的時候,可以手動將保存的狀態(tài)重置,以免歷史記憶影響后續(xù)功能需求。當(dāng)在claude中執(zhí)行“/clear”或退出當(dāng)前對話重新打開新的對話時,也會自動重置狀態(tài)。

my_claude reset_state
# 或重置指定上下文
my_claude reset_state project2

5.3. 停止監(jiān)控

當(dāng)不需要監(jiān)控時,在本地mac終端執(zhí)行:

pgrep -f 'claude watch_my|watch_my.sh' | xargs -r kill -9

6. 詳細(xì)說明

6.1. 工作流程

┌─────────────────┐
│  啟動 my_claude  │
└────────┬────────┘
         │
         ▼
┌─────────────────────────┐
│ 1. 檢查上下文配置文件    │
│ 2. 加載 REMOTE/WORKDIR  │
└────────┬────────────────┘
         │
         ▼
┌──────────────────────────────────────┐
│ watch_my.sh 開始監(jiān)控循環(huán)             │
│ ├─ 配置遠程 Claude settings.json    │
│ │  └─ 設(shè)置 acceptEdits 模式          │
│ ├─ 同步 CLAUDE.md(追加)            │
│ ├─ 同步 State/ 模板(首次)          │
│ └─ 每 5 秒檢查狀態(tài)文件               │
└────────┬─────────────────────────────┘
         │
         ▼
    ┌────────────────────────┐
    │ 檢測到信號文件?        │
    └──┬──────────┬──────────┘
       │          │
   .human_required  .task_done
       │          │
    發(fā)送通知    發(fā)送通知
    刪除文件    刪除文件

6.2. 自動配置 Accept Edits 模式

工具會在每次啟動監(jiān)控時自動配置遠程 Claude Code CLI 為 “accept edits” 模式,無需在遠程每次手動切換。依賴python3的環(huán)境,若失敗了會有日志報錯,可以手動將下面的內(nèi)容配置到對應(yīng)目錄中。
配置原理:

# 修改遠程 ~/.claude/settings.json
{
  "permissions": {
    "defaultMode": "acceptEdits"
  }
}

6.3. State 文件夾機制

設(shè)計理念
Claude Code 在長時間對話中會因上下文壓縮而逐漸"遺忘"之前的任務(wù)細(xì)節(jié)。State 文件夾通過外部化狀態(tài)存儲,強制 Claude 定期刷新記憶,防止迷失和重復(fù)踩坑。

6.3.1.State/current.md- 當(dāng)前進度追蹤

---
last_update: "2024-01-20 15:30"
current_round: 15
---
## 快速定位
我在做什么? 實現(xiàn)用戶認(rèn)證模塊
當(dāng)前進度? 已完成數(shù)據(jù)庫設(shè)計,正在編寫 API
下一步? 實現(xiàn) JWT token 驗證
為什么? 為系統(tǒng)添加安全認(rèn)證功能
作用:
- 記錄當(dāng)前任務(wù)目標(biāo)和進度
- 每 10 輪對話強制刷新一次
- 用戶說"繼續(xù)"時先讀取此文件

6.3.2.State/pitfalls.md- 已知問題記錄

### 問題1:數(shù)據(jù)庫連接超時
- 時間:2024-01-20 14:00
- 現(xiàn)象:連接池配置不當(dāng)導(dǎo)致超時
- 原因:max_connections 設(shè)置過小
- 解決方案:調(diào)整為 100
- 狀態(tài):? 已解決

作用:

  • 避免重復(fù)踩坑
  • 開始新步驟前必須查看
  • 解決問題后立即記錄
    6.3.3. State/experiments.md - 實驗對比記錄

實驗1:Redis vs Memcached

  • 配置:Redis 6.2, 單節(jié)點
  • 結(jié)果:QPS 50K, 延遲 2ms
  • 狀態(tài):? 選用 Redis
作用:
- 記錄多次嘗試和對比
- 追蹤超參數(shù)調(diào)優(yōu)過程
- 便于選擇最佳方案

6.4. CLAUDE.md 強制規(guī)則

工具會自動同步 CLAUDE.md 到遠程

6.4.1. 狀態(tài)相關(guān)的強制規(guī)則:

  1. 每隔 10 輪對話:讀取 State/current.md
  2. 每完成主要步驟:更新 State/current.md
  3. 用戶說"繼續(xù)":先讀取 State/current.md
  4. 開始新步驟前:查看 State/pitfalls.md
  5. 解決問題后:記錄到 State/pitfalls.md
  6. 修改代碼前:先深入理解目標(biāo)文件

6.4.2. 需人工確認(rèn)規(guī)則

觸發(fā)場景:

  • 即將執(zhí)行修改文件的代碼
  • 需要用戶選擇方案
  • 缺少關(guān)鍵信息
  • 任何可能產(chǎn)生破壞性變更的操作

工作流程:

1. Claude 檢測到需要人工確認(rèn)
2. 創(chuàng)建 .human_required 文件
3. 說明需要確認(rèn)的內(nèi)容
4. 停止執(zhí)行
5. watch_my.sh 檢測到文件 → 發(fā)送通知 → 自動刪除文件
6. 用戶收到通知,返回遠程查看

6.4.3. 任務(wù)完成規(guī)則

觸發(fā)場景:

  • 所有任務(wù)步驟已完成
  • 測試通過
  • 沒有遺留問題

工作流程:

1. Claude 完成所有任務(wù)
2. 創(chuàng)建 .task_done 文件
3. watch_my.sh 檢測到文件 → 發(fā)送通知 → 自動刪除文件
4. 用戶收到任務(wù)完成通知

6.4.4. 狀態(tài)重置規(guī)則

觸發(fā)場景:

  • 任務(wù)需求發(fā)生重大變化
  • 切換到新任務(wù)/項目
  • 用戶明確要求重新開始
  • 用戶執(zhí)行 /clearexit

工作流程:

1. 手動方式:執(zhí)行 my_claude reset_state
   或 Claude 檢測到任務(wù)切換,創(chuàng)建 .reset_state
2. watch_my.sh 檢測到文件
3. 自動備份舊 State → State.backup.YYYYMMDD_HHMMSS/
4. 刪除舊 State
5. 拷貝新模板
6. 刪除 .reset_state 信號文件
7. 發(fā)送通知

7. 參考

到此這篇關(guān)于Claude Code 遠程監(jiān)控工具的文章就介紹到這了,更多相關(guān)Claude Code 遠程監(jiān)控內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持腳本之家!

相關(guān)文章

  • Claude Code+LM Studio 快速上手

    本文介紹了如何快速配置ClaudeCode連接本地LMStudio服務(wù)的使用指南,包括驗證LMStudio服務(wù)可用性、配置ClaudeCode全局連接、避免認(rèn)證沖突的方法、熱切換模型的操作步驟,幫
    2026-04-14
  • Claude Code專題:Skills 系統(tǒng)完全指南

    Skills是ClaudeCode的一個自定義擴展機制,用于封裝專業(yè)知識,并按需調(diào)用,它通過SKILL.md文件定義核心指令,并通過references、examples、scripts三層次加載機制提供詳細(xì)信息,
    2026-04-14
  • Claude Code Buddy 解析:一個非核心功能,如何體現(xiàn)產(chǎn)品的細(xì)節(jié)完成度

    文章詳細(xì)分析了ClaudeCode產(chǎn)品中的Buddy組件,其是一個輕量級的陪伴式角色系統(tǒng),不干擾主工作流,能夠穩(wěn)定生成角色身份,具備輕量的終端渲染與動畫表現(xiàn),并通過合理的生成機制和
    2026-04-14
  • Claude Code安裝與使用指南:以MiniMax M2.5為例的完整實踐

    本文詳細(xì)介紹了在Windows環(huán)境下安裝和配置ClaudeCode的過程,并以MiniMaxM2.5為例,講解了如何通過兼容接口使用ClaudeCode,文章分為安裝流程、配置方法、命令行與VSCode使用
    2026-04-13
  • claude code無法連接到Anthropic服務(wù)解決辦法

    有時候我們的setting.json配置文件 和 環(huán)境變量 都設(shè)置好了之后, 我們打開claude code依然提示錯誤,這篇文章主要介紹了claude code無法連接到Anthropic服務(wù)的相關(guān)資料,需
    2026-04-13
  • Claude Code CLI命令使用小結(jié)

    Claude Code 是 Anthropic 官方推出的命令行工具,讓開發(fā)者能在終端中與 Claude 進行交互,本文就來詳細(xì)的介紹一下Claude Code CLI命令使用,感興趣的可以了解一下
    2026-04-13
  • Claude Code 命令行的使用總結(jié)

    本文主要介紹了ClaudeCode的安裝、配置及使用方法,包括環(huán)境要求、安裝步驟、API配置、核心使用方式和常用命令等,強調(diào)了配置第三方API中轉(zhuǎn)服務(wù)的重要性,感興趣的可以了解一
    2026-04-13
  • Win11下從零部署Claude Code的保姆級教程(2026年最新)

    這篇文章主要為大家詳細(xì)介紹了2025年AI編程工具ClaudeCode的完整配置流程,重點解決兩大了核心問題:本地環(huán)境部署和VSCode插件集成,文中的示例代碼講解詳細(xì),大家可以參考一
    2026-04-12
  • 2026年Claude Code常用命令與操作詳解

    這篇文章主要為大家詳細(xì)介紹了2026年Claude Code中常用命令與具體操作,包括文件操作命令,Bash 命令執(zhí)行,Git 操作,AWS CLI 操作等,文中的示例代碼講解詳細(xì),有需要的小
    2026-04-10
  • 在國內(nèi)穩(wěn)定用Claude Code的三種姿勢小結(jié)

    本文介紹了三種在國內(nèi)穩(wěn)定使用ClaudeCode的方法:包括使用API中轉(zhuǎn)、替換國產(chǎn)大模型和本地部署三種方案,,分析了每種方案的優(yōu)缺點,并提供了詳細(xì)配置指南,幫助開發(fā)者根據(jù)需
    2026-04-10

最新評論

扎兰屯市| 通江县| 古交市| 无棣县| 太谷县| 汕尾市| 新巴尔虎左旗| 景德镇市| 永登县| 招远市| 施甸县| 永新县| 同心县| 连平县| 长武县| 鄱阳县| 铁岭市| 鄢陵县| 嘉峪关市| 元氏县| 堆龙德庆县| 科技| 崇明县| 天峻县| 安化县| 南皮县| 金坛市| 新巴尔虎左旗| 霍州市| 永川市| 司法| 通化市| 西青区| 阿坝县| 山西省| 太原市| 瑞金市| 班戈县| 惠来县| 肃宁县| 辽阳县|