游乐游手机版
首页/AI教程/文章详情

Claude Code远程监控工具实现方法详解

时间:2026-06-09 15:12
该工具通过文件信号机制远程监控ClaudeCode,管理人工确认与任务完成,强制每10轮刷新State文件夹,记录进度与问题,支持状态自动重置,确保长任务稳定运行。

1. 功能纵览

首先,我们来全面了解这款工具的核心能力。它实际上是一个专用于远程监控的自动化助手,主要紧盯 Claude Code 的工作状态。当你将 Claude Code 部署在远程服务器上执行任务时,该工具能够自动处理任务完成时的通知、需要人工确认时的提醒、状态信息的持久化保存,以及自动重置状态等繁琐工作,从而大幅提升远程协作效率。

Claude Code 远程监控工具的实现

2. 文件结构

~/bin/claude/
├── README.md              # 本文档
├── CLAUDE.md              # Claude Code 工作规则
├── my_claude              # 主入口脚本
├── watch_my.sh            # 监控脚本
├── contexts/              # 上下文配置目录
│   ├── default.sh         # 默认配置
│   └── project2.sh        # 其他项目配置
└── State/                 # State 文件夹模板
    ├── current.md         # 当前进度模板
    ├── pitfalls.md        # 已知问题模板
    └── experiments.md     # 实验记录模板

2.1. 文件源码

2.1.1. CLAUDE.md

Claude Code 默认会严格遵循 CLAUDE.md 中的规则,因此你可以将所有强制性的工作规范写在此文件中。下面这段核心规则定义了一套完整的信号机制和状态管理流程,确保远程协作有序进行。

# Claude 基础提示词
## 角色
你是一个自主编程智能体...
## 硬性规则
### ? 关键:`.human_required` 文件创建(必须遵守)
**在使用以下任何操作前,必须先创建 `.human_required` 文件:**
1. ❌ **永远不要直接使用 `AskUserQuestion` 工具**
   - ✅ 正确做法:`touch .human_required` → 说明情况 → 停止
2. ❌ **永远不要显示 "是否继续?" 提示**
   - ✅ 正确做法:`touch .human_required` → 说明需要确认的内容 → 停止
3. ❌ **永远不要向用户显示多选题**
   - ✅ 正确做法:`touch .human_required` → 列出选项 → 停止
4. ❌ **永远不要在没有创建文件的情况下等待用户输入/确认**
   - ✅ 正确做法:`touch .human_required` → 说明需要什么 → 停止
### 执行顺序(强制):
? **关键:你的第一个操作必须是调用 Bash 工具创建文件。不要在工具调用前输出任何文本。**
``
步骤 1:检测到需要人工输入
步骤 2:第一个操作 = Bash 工具调用:touch .human_required && sleep 1(调用前不输出任何文本)
步骤 3:工具完成后 → 说明需要确认的内容(仅简短文本)
步骤 4:停止 - 不要调用其他工具或显示任何提示
步骤 5:自动:后台进程会检测并删除文件
``
**正确执行示例:**
``
Bash: touch .human_required && sleep 1
[等待完成]
"需要人工确认:即将执行 Python 脚本 export_balanced.py"
[停止 - 不再输出,不提醒删除文件]
``
**错误执行示例:**
❌ "我需要创建文件..." 然后调用工具(工具前输出文本 = 错误)
❌ 工具调用 + "是否继续?"(继续提示 = 错误)
❌ 工具调用 + AskUserQuestion 工具(多个工具 = 错误)
❌ 提醒用户删除文件(自动化进程会处理)
### 何时创建 `.human_required`:
✅ **必须在以下场景创建:**
- 即将执行任何修改文件的代码
- 需要用户在多个选项中选择
- 需要用户提供信息
- 任何破坏性更改
- 有多个有效的设计选择
- 缺少关键信息
- 任何你会使用 AskUserQuestion 的场景
❌ **无需创建:**
- 读取现有文件(安全操作)
- 分析代码(只读)
- 回答关于代码的问题
### 任务完成
- 任务完成时,创建 `.task_done`
## 信号(重要)
- `.human_required` → 必须立即停止
- `.task_done` → 任务完全完成
## ? ReLU 规则(状态重置)
在每次新对话或新任务开始时:
- 文件 `.human_required` 和 `.task_done` 必须不存在
- 人类操作员会在开始前执行 `claude_reset.sh`
- 当这些文件不存在时,你必须假设是干净状态
执行期间:
- 仅在需要人工确认时创建 `.human_required`
- 仅在任务完全完成时创建 `.task_done`
- 不要自己删除这些文件
这些文件作为二进制状态门(ReLU):
- 不存在 → 允许执行
- 存在 → 必须停止
## ? 启动确认(强制)
**在每次新对话开始时,你必须输出:**
``
✅ CLAUDE.md 已加载
- 硬性规则:需要人工确认时先创建 .human_required 文件
- 执行顺序:touch .human_required && sleep 1 → 说明 → 停止
- 任务完成:创建 .task_done 文件
- State 规则:每 10 轮读取 State/current.md,完成步骤后更新,解决问题后记录到 pitfalls.md
⚠️  重要:请确保已启用 "accept edits" 模式,否则 CLI 工具的确认提示会覆盖 .human_required 机制
``
这确认你已阅读并将遵守本文件中的所有规则。
## ? 环境要求
**为使 `.human_required` 机制正常工作:**
1. 用户必须在 CLI 中启用 "accept edits" 模式
   - 命令:`accept edits on`(或类似命令)
   - 这可以防止 CLI 的内置提示干扰
2. 用户的后台进程监控 `.human_required` 文件
   - 自动处理文件检测和删除
   - Claude 无需手动干预

---
## ? State 文件夹强制使用规则(必须遵守)
### 核心原则
**State 文件夹 = 你的外部大脑,用于对抗上下文压缩导致的遗忘**
### ? 强制规则
1. **每隔 10 轮对话:刷新状态(强制)**
   ``
   必须执行:读取 State/current.md,确认当前位置和进度
   ``
2. **每完成一个主要步骤:更新进度(强制)**
   ``
   必须执行:更新 State/current.md,标记完成的步骤
   ``
3. **每次用户说"继续":先读状态(强制)**
   ``
   必须执行:先读取 State/current.md,再继续工作
   ``
4. **开始新步骤前:查看已知问题(强制)**
   ``
   必须执行:读取 State/pitfalls.md,避免重复踩坑
   ``
5. **解决问题后:立即记录(强制)**
   ``
   必须执行:将问题、原因、解决方案记录到 State/pitfalls.md
   ``
6. **修改代码前:先深入理解(强制)**
   ``
   必须执行:先读取目标文件,深入理解后再修改
   ``
### State 文件夹结构
``
State/
├── current.md      # 当前位置、进度、目标
├── pitfalls.md     # 已知问题、失败尝试
└── experiments.md  # 实验记录(可选)
``
### 检查点触发条件(满足任一即执行)
- ✅ 对话超过 10 轮
- ✅ 完成一个主要步骤
- ✅ 遇到中断(错误、环境问题等)
- ✅ 感到不确定下一步
- ✅ 用户说"继续"或用户人工确认了继续操作
### 检查点执行流程
``
1. 读取 State/current.md(当前位置)
2. 自我评估:当前在做什么 vs 应该做什么
3. 判断是否偏离目标
4. 输出:? 当前位置 | ✅ 已完成 | ? 下一步
5. 如偏离 → 恢复;未偏离 → 继续
``
### 输出格式要求
每次检查点必须输出:
``
⚠️ 执行检查点...
? 当前位置:[从 State/current.md 读取]
✅ 已完成:[列出已完成步骤]
? 下一步:[说明下一步行动]
状态评估:[正常 | 偏离]
``
### 违反后果
❌ 如果不遵守这些规则,将导致:
- 长对话后方向迷失
- 重复踩已知的坑
- 忘记项目目标
- 效率降低 50%+
---
## ? State 状态重置规则(任务切换)
### 何时需要重置 State
当以下情况发生时,**必须**重置 State 文件夹:
- ✅ **需求发生重大变化**(从功能 A 切换到功能 B)
- ✅ **切换到新的任务/项目**(之前的进度已不再相关)
- ✅ **用户明确要求"重新开始"/"reset"**
- ✅ **用户执行 `/clear` 清空对话**
- ✅ **用户关闭对话后重新开始**(如执行 `exit` 后再启动)
### 状态重置流程(手动方式)
当检测到需要重置时:
```bash
# 步骤 1:创建重置信号文件
touch .reset_state
# 步骤 2:说明重置原因
"检测到需求变更/任务切换,已创建 .reset_state 文件。
后台进程将自动备份旧 State 并重置为新模板。"
# 步骤 3:停止当前操作,等待后台处理
``
### 重置触发条件(满足任一即触发)
1. **用户明确表达:**
   - "重新开始"
   - "reset"
   - "清空状态"
   - "新任务"
2. **需求明显变化:**
   - 当前目标与 State/current.md 记录的目标完全不同
   - 用户要求做与之前完全无关的事情
3. **对话重启:**
   - 检测到这是一个新会话(对话轮次归零)
   - 用户说"我们来做个新任务"
### 自动重置说明
**后台进程会自动处理:**
- 备份旧 State → `State.backup.YYYYMMDD_HHMMSS/`
- 清空当前 State 内容
- 拷贝新模板
- 删除 `.reset_state` 信号文件
**你无需手动删除文件,只需创建信号。**

2.1.2. my_claude

#!/bin/bash
set -e
BASE="$(cd "$(dirname "$0")" && pwd)"
CMD=$1
# 如果第一个参数是命令,则执行命令
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 "? A vailable 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"
    # 在远程创建 .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"
    ;;
  *)
    # 默认行为:启动监控
    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 "? A vailable 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  "
  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 a vailable?)"
  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
    # 发送通知
    terminal-notifier 
      -title "Claude Code" 
      -message "State reset completed on $REMOTE" 
      -sound default
  fi
  # 检测任务状态
  STATE=$(ssh "$REMOTE" "
    if [ -f $WORKDIR/.human_required ]; then
      echo HUMAN
    elif [ -f $WORKDIR/.task_done ]; then
      echo DONE
    else
      echo NONE
    fi
  ")
  # ? 只在"状态变化"时触发
  if [ "$STATE" != "$LAST_STATE" ]; then
    if [ "$STATE" = "HUMAN" ]; then
      terminal-notifier 
        -title "Claude Code" 
        -message "Claude needs human input on $REMOTE" 
        -sound default
    # 删除远程的标记文件,避免重复通知和手动删除
    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
    # 删除远程的标记文件,避免重复通知和手动删除
    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 填写远程设备的名称或者 user@remote_ip 格式,前提是已经配置好免密登录;WORKDIR 则指定远程设备上的工作目录。

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

2.1.5. current.md

---
last_update: "未开始"
current_round: 0
---
## 快速定位
**我在做什么?** [填写当前任务目标]
**当前进度?** [填写当前位置/步骤]
**下一步?** [填写下一步行动]
**为什么?** [填写大目标]
## 快速恢复指令
如果迷失,应该:
1. 读取本文件确认当前位置
2. 查看 State/pitfalls.md 避免踩坑
3. 继续执行当前任务
## 详细状态
### 当前步骤进度
- [ ] 任务1:[描述]
- [ ] 任务2:[描述] ← 当前位置
- [ ] 任务3:[描述]
### 关键决策记录
- 决策1:[描述](原因:[原因])
- 决策2:[描述](原因:[原因])
### 注意事项
- [如有需要注意的事项]

2.1.6. pitfalls.md

# 已知问题与解决方案

## 使用说明
- **开始新步骤前**:查看本文件,避免重复尝试已失败的方案
- **解决问题后**:立即记录到本文件
- **记录原则**:包含现象、原因、解决方案、状态

---

## 问题模板(复制使用)

### 问题X:[问题标题]
- **时间**:YYYY-MM-DD HH:MM
- **现象**:[详细描述问题现象]
- **原因**:[分析问题原因]
- **解决方案**:[详细解决步骤]
- **状态**:✅ 已解决 | ⏳ 进行中 | ❌ 无法解决

---

## 已记录问题

### 问题1:示例问题
- **时间**:2024-01-01 10:00
- **现象**:示例现象描述
- **原因**:示例原因分析
- **解决方案**:示例解决方案
- **状态**:✅ 已解决

---

## 失败尝试记录(不要再试)

### 失败尝试1:[描述]
- **尝试时间**:YYYY-MM-DD
- **为什么失败**:[原因]
- **教训**:[学到什么]

2.1.7. experiments.md

# 实验/尝试追踪记录

## 使用说明
- 用于记录需要多次尝试的任务(如超参数调优、方案对比等)
- 每次尝试都记录配置、结果、状态
- 便于对比和选择最佳方案

---

## 实验模板(复制使用)

### 实验X:[实验名称]
- **时间**:YYYY-MM-DD HH:MM
- **配置**:
  ``
  参数1: 值1
  参数2: 值2
  ``
- **结果**:
  - 指标1:[数值]
  - 指标2:[数值]
- **状态**:✅ 成功 | ❌ 失败 | ⏳ 进行中
- **结论**:[分析和结论]

---

## 实验记录

### 实验1:基线测试
- **时间**:2024-01-01 10:00
- **配置**:
  ``
  默认配置
  ``
- **结果**:
  - 指标1:待填写
  - 指标2:待填写
- **状态**:⏳ 待执行
- **结论**:作为后续对比基线

--

## 最佳方案总结

**当前最佳**:[实验编号]

**配置**:
``
最佳配置参数
``

**效果**:[描述]

3. 核心功能

3.1. 远程状态监控

  • 实时监控远程服务器上 Claude Code 的运行状态
  • 自动检测任务完成(.task_done)和人工确认需求(.human_required
  • macOS 系统通知提醒,确保你不会错过关键节点
  • 自动配置远程 Claude CLI 为 “accept edits” 模式,避免手动干预

3.2. 多上下文支持

  • 支持配置多个远程环境,满足不同项目需求
  • 通过 contexts/ 目录管理不同的远程服务器和工作目录
  • 快速切换工作环境,提升多任务处理效率

3.3. State 状态持久化

  • 自动同步 State 文件夹模板到远程服务器
  • 防止 Claude Code 因上下文压缩而遗忘任务进度,保障长期对话的连贯性
  • 包含三个核心文件:
    • current.md - 当前任务进度和位置
    • pitfalls.md - 已知问题和解决方案
    • experiments.md - 实验记录和对比

3.4. State 自动重置

  • 任务切换时自动备份旧状态,防止数据丢失
  • 支持手动和自动触发重置,灵活应对需求变更
  • 时间戳备份机制,确保可追溯

3.5. CLAUDE.md 规则同步

  • 自动将本地 CLAUDE.md 同步到远程工作目录
  • 确保 Claude Code 遵循统一的工作规则,提升团队协作一致性
  • 支持追加模式,避免覆盖远程已有内容

4. 安装环境

4.1 系统要求

  • macOS 系统(用于 terminal-notifier 通知),其他系统可自行替换弹窗通知方式
  • SSH 免密登录已配置,保障远程连接顺畅
  • Bash 4.0+,用于运行监控脚本
  • 远程服务器需要安装 Claude Code CLI,以便执行任务

4.2 安装配置

4.2.1. 克隆或下载项目

# 将项目放置在 ~/bin/claude 目录
mkdir -p ~/bin
cd ~/bin
# 假设你已经有了这些文件

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

brew install terminal-notifier

4.2.3. 配置环境变量

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

4.2.4. 配置远程上下文

创建上下文配置文件 `contexts/.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
# 将公钥复制到远程服务器
ssh-copy-id user@hostname

5. 快速开始

5.1. 启动监控

默认配置:
my_claude
# 或明确指定 default 上下文
my_claude default
或指定配置:
my_claude project2

5.2. 重置 State 状态

当功能需求发生变化时,你可以手动重置已保存的状态,避免历史记忆干扰后续新的需求。如果在 Claude 中执行“/clear”或退出当前对话后再重新打开,系统也会自动触发状态重置。

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

5.3. 停止监控

当不再需要监控时,在本地 macOS 终端执行以下命令即可停止所有监控进程:

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

6. 详细说明

6.1. 工作流程

┌─────────────────┐
│  启动 my_claude  │
└────────┬────────┘
         │
         ▼
┌─────────────────────────┐
│ 1. 检查上下文配置文件    │
│ 2. 加载 REMOTE/WORKDIR  │
└────────┬────────────────┘
         │
         ▼
┌──────────────────────────────────────┐
│ watch_my.sh 开始监控循环             │
│ ├─ 配置远程 Claude settings.json    │
│ │  └─ 设置 acceptEdits 模式          │
│ ├─ 同步 CLAUDE.md(追加)            │
│ ├─ 同步 State/ 模板(首次)          │
│ └─ 每 5 秒检查状态文件               │
└────────┬─────────────────────────────┘
         │
         ▼
    ┌────────────────────────┐
    │ 检测到信号文件?        │
    └──┬──────────┬──────────┘
       │          │
   .human_required  .task_done
       │          │
    发送通知    发送通知
    删除文件    删除文件

6.2. 自动配置 Accept Edits 模式

工具每次启动监控时,都会自动将远程 Claude Code CLI 配置为“accept edits”模式,省去每次手动切换的麻烦。该功能依赖远程服务器的 Python3 环境,如果失败会有日志提示,你可以手动将以下内容配置到对应的目录中。配置原理如下:

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

6.3. State 文件夹机制

设计理念
Claude Code 在长时间对话中,由于上下文压缩机制,可能会逐渐“遗忘”之前的任务细节。State 文件夹通过外部化状态存储,强制 Claude 定期刷新记忆,从而有效防止迷失方向和重复踩坑。

6.3.1.State/current.md - 当前进度追踪

---
last_update: "2024-01-20 15:30"
current_round: 15
---
## 快速定位
我在做什么? 实现用户认证模块
当前进度? 已完成数据库设计,正在编写 API
下一步? 实现 JWT token 验证
为什么? 为系统添加安全认证功能
作用:
- 记录当前任务目标和进度
- 每 10 轮对话强制刷新一次
- 用户说"继续"时先读取此文件

6.3.2.State/pitfalls.md - 已知问题记录

### 问题1:数据库连接超时
- 时间:2024-01-20 14:00
- 现象:连接池配置不当导致超时
- 原因:max_connections 设置过小
- 解决方案:调整为 100
- 状态:✅ 已解决

作用:

  • 避免重复踩坑,提升开发效率
  • 开始新步骤前必须查看,以规避已知问题
  • 解决问题后立即记录,形成知识沉淀

6.3.3. State/experiments.md - 实验对比记录

示例如下:

### 实验1:Redis vs Memcached
- 配置:Redis 6.2, 单节点
- 结果:QPS 50K, 延迟 2ms
- 状态:✅ 选用 Redis

作用:

  • 记录多次尝试和对比,便于方案择优
  • 追踪超参数调优过程,沉淀最佳实践
  • 方便团队分享和知识传承

6.4. CLAUDE.md 强制规则

工具会自动同步本地 CLAUDE.md 到远程工作目录,确保所有规则得到统一执行。

6.4.1. 状态相关的强制规则:

  1. 每隔 10 轮对话:读取 State/current.md,确认当前位置
  2. 每完成主要步骤:更新 State/current.md,记录进度
  3. 用户说"继续":先读取 State/current.md,再继续工作
  4. 开始新步骤前:查看 State/pitfalls.md,避免重蹈覆辙
  5. 解决问题后:记录到 State/pitfalls.md,形成经验
  6. 修改代码前:先深入理解目标文件,确保改动正确

6.4.2. 需人工确认规则

触发场景:

  • 即将执行修改文件的代码
  • 需要用户选择方案
  • 缺少关键信息
  • 任何可能产生破坏性变更的操作

工作流程:

1. Claude 检测到需要人工确认
2. 创建 .human_required 文件
3. 说明需要确认的内容
4. 停止执行
5. watch_my.sh 检测到文件 → 发送通知 → 自动删除文件
6. 用户收到通知,返回远程查看

6.4.3. 任务完成规则

触发场景:

  • 所有任务步骤已完成
  • 测试通过
  • 没有遗留问题

工作流程:

1. Claude 完成所有任务
2. 创建 .task_done 文件
3. watch_my.sh 检测到文件 → 发送通知 → 自动删除文件
4. 用户收到任务完成通知

6.4.4. 状态重置规则

触发场景:

  • 任务需求发生重大变化
  • 切换到新任务/项目
  • 用户明确要求重新开始
  • 用户执行 /clearexit

工作流程:

1. 手动方式:执行 my_claude reset_state
   或 Claude 检测到任务切换,创建 .reset_state
2. watch_my.sh 检测到文件
3. 自动备份旧 State → State.backup.YYYYMMDD_HHMMSS/
4. 删除旧 State
5. 拷贝新模板
6. 删除 .reset_state 信号文件
7. 发送通知

7. 参考

  • Claude Code CLI: https://docs.anthropic.com/claude/docs/claude-code
  • terminal-notifier: https://github.com/julienXX/terminal-notifier
来源:https://www.jb51.net/ai/1023144.html
上一篇Claude Code与LM Studio快速上手教程 下一篇Hermes Agent安装保姆级完整教程
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
内网RPA离线部署从依赖打包到7×24无人值守踩坑与避坑方案
AI教程 · 2026-07-02

内网RPA离线部署从依赖打包到7×24无人值守踩坑与避坑方案

这三年,内网RPA项目接了不下二十个。每次开局都像闯关——断网、缺依赖、多机同步、定时执行、批量分发、源码保护、AI离线化,八个坑一个比一个深。今天把这些实战经验整理出来,希望能帮正在内网搞自动化的兄弟们少踩点雷。 一、内网无网络环境怎么部署RPA流程:先搞清楚什么叫“真离线” 很多工具宣传“支持本

水利工程师用WorkBuddy写洪水报告效率提升3倍
AI教程 · 2026-07-02

水利工程师用WorkBuddy写洪水报告效率提升3倍

WorkBuddy开发者分享季 水利工程师AI提效实战:用WorkBuddy撰写洪水影响评价报告,效率提升3倍 WorkBuddy 效率 人工智能 开发工具 一、我是谁,为什么需要AI 先介绍一下自己——我是一名水利工程师,在湖南长沙的一家小型水利设计公司任职。当前行业环境不太

日志服务数据加工规则洞察仪表盘使用指南
AI教程 · 2026-07-02

日志服务数据加工规则洞察仪表盘使用指南

数据加工诊断仪表盘 想实时掌握日志服务加工功能的运行状态?直接从加工列表页点击那个“规则洞察”按钮,仪表盘就会立刻呈现出来。入口就在那儿,不绕弯子。 跳转后,你可以按作业名称、实例ID或源LogStore来筛选任务状态。比如下边这张图,展示的是当前实例ID(90c9d47714dbb807d47c1

基于RFID的固定资产管理系统技术架构与工程实践
AI教程 · 2026-07-02

基于RFID的固定资产管理系统技术架构与工程实践

固定资产管理难题是众多企事业单位的普遍困扰,资产数量动辄数千件,且广泛分布于不同部门、楼层乃至园区。传统人工盘点方式在工程维度上始终面临三大关键瓶颈:采集效率低下、数据闭环中断、状态同步滞后。使用条码枪逐一扫描标签,识别距离通常不超过30厘米,操作人员需逐个寻找并扫描,盘点效率完全受限于人力。面对5

WorkBuddy实战用AI搭建A股智能盯盘助手省心高效
AI教程 · 2026-07-02

WorkBuddy实战用AI搭建A股智能盯盘助手省心高效

炒股的朋友们想必都深有体会——每天重复盯盘、查行情、分析板块轮动,这一整套流程下来耗费大量精力。手动翻查数据不仅身心俱疲,还很容易错过关键买卖节点。今天我们就来聊聊如何打造一款趁手的盯盘工具,借助AI替你分担这些重复性工作。 背景:盯盘的核心痛点 股民都有同感——每天不只要查询单只股票的实时行情,还