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

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

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

1. 功能縱覽

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

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        # 其他項(xiàng)目配置
└── State/                 # State 文件夾模板
    ├── current.md         # 當(dāng)前進(jìn)度模板
    ├── pitfalls.md        # 已知問(wèn)題模板
    └── experiments.md     # 實(shí)驗(yàn)記錄模板

2.1. 文件源碼

2.1.1. CLAUDE.md

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

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

2.1.2. my_claude

#!/bin/bash
set -e
BASE="$(cd "$(dirname "$0")" && pwd)"
CMD=$1
# 如果第一個(gè)參數(shù)是命令,則執(zhí)行命令
case "$CMD" in
  reset_state)
    # reset_state 命令:重置遠(yuǎn)程 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"
    # 在遠(yuǎn)程創(chuàng)建 .reset_state 信號(hào)文件
    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)?dòng)監(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
  # 檢測(cè) State 重置信號(hào)
  if ssh "$REMOTE" "[ -f $WORKDIR/.reset_state ]" 2>/dev/null; then
    echo "?? Detected .reset_state signal, resetting State..."
    # 生成備份時(shí)間戳
    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
    # 刪除信號(hào)文件
    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
  # 檢測(cè)任務(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)變化"時(shí)觸發(fā)
  if [ "$STATE" != "$LAST_STATE" ]; then
    if [ "$STATE" = "HUMAN" ]; then
      terminal-notifier \
        -title "Claude Code" \
        -message "Claude needs human input on $REMOTE" \
        -sound default
    # 刪除遠(yuǎn)程的標(biāo)記文件,避免重復(fù)通知和手動(dòng)刪除
    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
    # 刪除遠(yuǎn)程的標(biāo)記文件,避免重復(fù)通知和手動(dòng)刪除
    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:遠(yuǎn)程設(shè)備的名稱或user@remote_ip這樣的方式,需要提前配置免密登錄;
WORKDIR:遠(yuǎn)程設(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)前進(jìn)度?** [填寫當(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)前步驟進(jìn)度
- [ ] 任務(wù)1:[描述]
- [ ] 任務(wù)2:[描述] ← 當(dāng)前位置
- [ ] 任務(wù)3:[描述]
### 關(guān)鍵決策記錄
- 決策1:[描述](原因:[原因])
- 決策2:[描述](原因:[原因])
### 注意事項(xiàng)
- [如有需要注意的事項(xiàng)]

2.1.6. pitfalls.md

# 已知問(wèn)題與解決方案

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

---

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

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

---

## 已記錄問(wèn)題

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

---

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

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

2.1.7. experiments.md

# 實(shí)驗(yàn)/嘗試追蹤記錄

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

---

## 實(shí)驗(yàn)?zāi)0澹◤?fù)制使用)

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

---

## 實(shí)驗(yàn)記錄

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

--

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

**當(dāng)前最佳**:[實(shí)驗(yàn)編號(hào)]

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

**效果**:[描述]

3. 核心功能

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

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

3.2. 多上下文支持

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

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

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

3.4. State 自動(dòng)重置

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

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

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

4. 安裝環(huán)境

4.1 系統(tǒng)要求

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

4.2 安裝配置

4.2.1. 克隆或下載項(xiàng)目

# 將項(xiàng)目放置在 ~/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. 配置遠(yuǎn)程上下文

創(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 密鑰(如果還沒(méi)有)
ssh-keygen -t rsa -b 4096
# 將公鑰復(fù)制到遠(yuǎn)程服務(wù)器
ssh-copy-id user@hostname

5. 快速開始

5.1. 啟動(dòng)監(jiān)控

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

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

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

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

5.3. 停止監(jiān)控

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

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

6. 詳細(xì)說(shuō)明

6.1. 工作流程

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

6.2. 自動(dòng)配置 Accept Edits 模式

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

# 修改遠(yuǎn)程 ~/.claude/settings.json
{
  "permissions": {
    "defaultMode": "acceptEdits"
  }
}

6.3. State 文件夾機(jī)制

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

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

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

6.3.2.State/pitfalls.md- 已知問(wèn)題記錄

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

作用:

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

實(shí)驗(yàn)1:Redis vs Memcached

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

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

工具會(huì)自動(dòng)同步 CLAUDE.md 到遠(yuǎn)程

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

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

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

觸發(fā)場(chǎng)景:

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

工作流程:

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

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

觸發(fā)場(chǎng)景:

  • 所有任務(wù)步驟已完成
  • 測(cè)試通過(guò)
  • 沒(méi)有遺留問(wèn)題

工作流程:

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

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

觸發(fā)場(chǎng)景:

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

工作流程:

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

7. 參考

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

相關(guān)文章

  • Claude Code+LM Studio 快速上手

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

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

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

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

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

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

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

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

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

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

最新評(píng)論

疏附县| 观塘区| 永清县| 承德县| 高青县| 儋州市| 鹤山市| 浮梁县| 芮城县| 综艺| 江孜县| 斗六市| 榆树市| 镇安县| 龙州县| 浙江省| 微山县| 渭源县| 青河县| 定襄县| 凯里市| 康定县| 武川县| 南江县| 呼和浩特市| 安达市| 隆回县| 巴林左旗| 门头沟区| 三门峡市| 崇明县| 华亭县| 九江市| 竹溪县| 仁寿县| 伊宁市| 光山县| 平江县| 咸丰县| 卢氏县| 武夷山市|