OA0 = Omni AI 0
OA0 是一个探索 AI 的论坛
现在注册
已注册用户请  登录
OA0  ›  技能包  ›  claude-code-supervisor:在 tmux 环境中监控并审计 Claude Code 会话

claude-code-supervisor:在 tmux 环境中监控并审计 Claude Code 会话

 
  desktop ·  2026-02-05 15:44:02 · 3 次点击  · 0 条评论  

名称: claude-code-supervisor
描述: >
监控运行在 tmux 中的 Claude Code 会话。使用 Claude Code 钩子配合 bash 预过滤(方案 D)和快速 LLM 分类,以检测错误、卡住的智能体及任务完成情况。与执行框架无关——适用于 OpenClaw、webhooks、ntfy 或任何通知后端。适用于以下场景:(1) 启动需要监控的长时间运行的 Claude Code 任务,(2) 为 API 错误或意外停止设置自动提醒,(3) 从后台编码智能体获取进度报告,(4) 在会话/上下文限制重置后继续工作。
要求:tmux, claude CLI。
元数据:
{
"openclaw":
{
"emoji": "👷",
"os": ["darwin", "linux"],
"requires": { "bins": ["tmux"], "anyBins": ["claude"] },
},
}


Claude Code 监控器

连接 Claude Code 生命周期钩子与你的智能体执行框架。

架构

Claude Code (在 tmux 中)
  │  停止 / 错误 / 通知
  ▼
Bash 预过滤器 (方案 D)
  │  直接处理明显情况
  │  模糊情况向下传递
  ▼
快速 LLM 分类 (使用 claude -p 配合 Haiku,或本地 LLM)
  │  分类:FINE | NEEDS_NUDGE | STUCK | DONE | ESCALATE
  │  FINE → 静默记录日志
  ▼
通知命令 (可配置)
  │  openclaw wake, webhook, ntfy, 脚本等
  ▼
智能体执行框架决策 + 行动
  │  提醒 (向 tmux 发送按键)、等待、升级至人工处理

快速开始

1. 在项目中安装钩子

{baseDir}/scripts/install-hooks.sh /path/to/your/project

创建:
- .claude/hooks/supervisor/ — 钩子脚本与分类逻辑
- .claude/settings.json — 接入 Claude Code 生命周期
- .claude-code-supervisor.yml — 配置文件 (编辑此文件)

2. 配置

编辑 .claude-code-supervisor.yml

triage:
  command: "claude -p --no-session-persistence"  # 或: ollama run llama3.2
  model: "claude-haiku-4-20250414"

notify:
  command: "openclaw gateway call wake --params"  # 或: curl, ntfy, script

3. 注册一个受监控的会话

创建 ~/.openclaw/workspace/supervisor-state.json (或你的执行框架存放状态的位置):

{
  "sessions": {
    "my-task": {
      "socket": "/tmp/openclaw-tmux-sockets/openclaw.sock",
      "tmuxSession": "my-task",
      "projectDir": "/path/to/project",
      "goal": "修复问题 #42",
      "successCriteria": "测试通过,代码已提交",
      "maxNudges": 5,
      "escalateAfterMin": 60,
      "status": "running"
    }
  }
}

4. 在 tmux 中启动 Claude Code

SOCKET="/tmp/openclaw-tmux-sockets/openclaw.sock"
tmux -S "$SOCKET" new -d -s my-task
tmux -S "$SOCKET" send-keys -t my-task "cd /path/to/project && claude '修复问题 #42'" Enter

钩子会自动触发。分类器进行评估。你只会在需要时收到通知。

预过滤器工作原理 (方案 D)

并非每个钩子事件都需要调用 LLM。Bash 首先捕获明显情况:

on-stop.sh

信号 Bash 决策 需要 LLM 分类?
max_tokens 总是需要关注 ✅ 是
end_turn + shell 提示符返回 智能体可能已完成 ✅ 是
end_turn + 无提示符 智能体正在工作中 ❌ 跳过
stop_sequence 正常情况 ❌ 跳过

on-error.sh

信号 Bash 决策 需要 LLM 分类?
API 429 / 速率限制 暂时性错误,会自行恢复 ❌ 仅记录日志
API 500 智能体可能卡住 ✅ 是
其他工具错误 未知严重性 ✅ 是

on-notify.sh

信号 Bash 决策 需要 LLM 分类?
auth_* 内部、暂时性 ❌ 跳过
permission_prompt 需要决策 ✅ 是
idle_prompt 智能体正在等待 ✅ 是

分类结果

LLM 返回以下结果之一:

判定 含义 典型操作
FINE 智能体工作正常 静默记录日志,不发送通知
NEEDS_NUDGE 暂时性错误,应继续 向 tmux 发送 "continue"
STUCK 循环或未取得进展 尝试不同方法或升级处理
DONE 任务成功完成 向人工报告
ESCALATE 需要人工判断 附带上下文通知人工

处理通知 (供智能体执行框架开发者参考)

唤醒事件以 cc-supervisor: 为前缀,后跟分类结果:

cc-supervisor: NEEDS_NUDGE | error:api_500 | cwd=/home/user/project | ...
cc-supervisor: DONE | stopped:end_turn:prompt_back | cwd=/home/user/project | ...

通过 tmux 发送提醒

tmux -S "$SOCKET" send-keys -t "$SESSION" "continue — the API error was transient" Enter

升级处理格式

关于何时提醒、何时升级以及静默时段,请参阅 references/escalation-rules.md

看门狗 (谁来监控监控器?)

钩子依赖于 Claude Code 处于活动状态。如果会话硬崩溃、达到账户限制或进程被 OOM 杀死,则钩子不会触发。看门狗负责捕获此类情况。

scripts/watchdog.sh 是一个纯 bash 脚本(不依赖 LLM 或 Claude Code),它:
1. 读取 supervisor-state.json 中所有 "running" 状态的会话
2. 检查:tmux socket 是否存活?会话是否存在?Claude Code 是否仍在运行?
3. 如果某物已死且没有钩子报告它 → 通过配置的命令发送通知
4. 在状态中更新 lastWatchdogAt 以进行跟踪

定时运行它。选择你喜欢的方式:

系统 cron:

*/15 * * * * /path/to/claude-code-supervisor/scripts/watchdog.sh

OpenClaw cron:

{
  "schedule": { "kind": "every", "everyMs": 900000 },
  "payload": { "kind": "systemEvent", "text": "cc-supervisor: watchdog — run /path/to/scripts/watchdog.sh and report" },
  "sessionTarget": "main"
}

systemd 定时器、launchd,或任何在你的机器上周期性运行的工具。

看门狗故意设计得很简单——没有 LLM,没有复杂逻辑,只检查“进程是否还在?”。这意味着即使分类模型宕机、API 崩溃或你的账户达到限制,它也能工作。这是双重保险。

文件说明

  • scripts/install-hooks.sh — 每个项目一键式设置
  • scripts/hooks/on-stop.sh — 停止事件处理器,带 bash 预过滤
  • scripts/hooks/on-error.sh — PostToolUseFailure 处理器,带 bash 预过滤
  • scripts/hooks/on-notify.sh — 通知处理器,带 bash 预过滤
  • scripts/triage.sh — LLM 分类 (由钩子为模糊情况调用)
  • scripts/lib.sh — 共享的配置加载和通知函数
  • scripts/watchdog.sh — 死会话检测器 (纯 bash,无 LLM 依赖)
  • references/state-patterns.md — 终端输出模式匹配指南
  • references/escalation-rules.md — 何时提醒、升级或等待的规则
  • supervisor.yml.example — 配置示例
3 次点击  ∙  0 人收藏  
登录后收藏  
目前尚无回复
0 条回复
About   ·   Help   ·    
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
Developed with Cursor