DeepSeek Harness Hub
← 返回列表

BolunHan/cc-monitor

DeepSeek Harnessspec-screened在 GitHub 查看 ↗
未验证

claude code and deepseek harness stats monitor | CC, DSH…

尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/9/12 · 已提供中文文档

claude code and deepseek harness stats monitor | CC, DSH 状态监控赛博红绿灯

综合分
30.7
GitHub 分
30.7
用户评分
★ Stars
2
周下载量
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add BolunHan/cc-monitor
该插件未发布到 npm,走 GitHub 源安装(pnpm 若拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑)
数据截至 2026/9/19(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

🚦 cc-monitor — 适用于 Claude Code 和 DSH 的赛博红绿灯Claude Code / DSH 赛博红绿灯

→ 打开仪表盘

gitlab

CI 在 GitLab 镜像流水线上运行。 此仓库中 GitHub Actions 已禁用 —
请参阅 .github/workflows/README.md。

在 Claude 需要你时及时知晓 — 不再浪费时间盯着屏幕。

实体的“Claude Code 红绿灯”小装置售价不菲。cc-monitor 是免费、开源版本 — 它可在任何机器上运行,将通知推送到你的手机和浏览器,且完全免费。你只需要一部 Android 手机或一个浏览器标签页。

🛡️ 守护你的 vibe-coding 心流。 当 Claude 工作时,你自由自在。当它需要批准、遇到错误或完成审查的那一刻 — 你会收到提醒。无需再守着终端。

⚠️ 安全警告

仅从可信来源安装此工具。 hook 安装程序会修改 ~/.claude/settings.json — Claude Code 的全局配置文件。恶意 hook 脚本可能窃取你的 Claude API token,并获得对你 Anthropic 账户的完全访问权限。切勿从你无法控制的服务器安装 hook。

- 务必检查安装脚本后再运行:curl -skSL /static/install-hooks.sh | less
- 验证来源 — 此仓库是唯一的官方分发渠道
- 请勿使用 sudo — hook 脚本不需要 root 权限,仅修改你的用户级 Claude Code 设置
- 当服务器运行在同一台机器上时,使用 localhost(无需认证)

快速开始

选项 A:从 GHCR 使用 Docker(无需克隆)

从 GitHub Container Registry 拉取预构建镜像:

mkdir cc-monitor && cd cc-monitor
curl -O https://raw.githubusercontent.com/BolunHan/cc-monitor/main/docker-compose.yaml
docker compose up -d

选项 B:Docker 本地构建(克隆仓库)

从源码自行构建镜像:

git clone https://github.com/BolunHan/cc-monitor.git
cd cc-monitor
docker build -t ghcr.io/bolunhan/cc-monitor:latest .
docker compose up -d

💾 数据持久化: 所有状态(会话、配对令牌、
已批准设备、证书)都存放在 ~/.cc-monitor/docker/data — 这是一个普通的主机文件夹,
以 bind mount 方式挂载到容器内的 /data/.cc-monitor。它能在
docker compose restart、down、down -v 以及镜像升级后保留,且易于
备份。它不放在 ~/.cc-monitor 本身中,这样同一主机上的原生 cc-monitor
就不会共享/冲突相同的文件。如果你通过 sudo 运行
compose,请保留你的主目录:
sudo env HOME=$HOME docker compose up -d(Makefile 已处理此问题)。
服务器会自动检测挂载点,并在启动时未找到持久化存储时发出警告。

选项 C:原生 Python

git clone https://github.com/BolunHan/cc-monitor.git
cd cc-monitor
pip install .
cc-monitor --port 9876 --host 0.0.0.0

接下来:安装 Hooks

在运行 Claude Code 的机器上:
curl -skSL https://:9876/static/install-hooks.sh | SERVER_URL=https://:9876 bash

🔐 一次性证书步骤: 在浏览器中打开 https://:9876,点击 高级 → 继续访问该网站 以信任自签名证书。使用远程仪表板时必须执行此操作。

安装 DSH Reporter 插件

在运行 DeepSeek Harness (DSH) 的机器上,从 npm 安装(默认方式,由 GitHub Actions 发布流程自动发布):

dsh plugin --profile web add dsh-cc-monitor

备选方案——从 GitHub 发布 tarball 安装:

bash  💡 浏览器通知 可作为 Android 应用的免费替代方案——在提示时启用它们,即使手机不在身边,也能在状态变化时收到通知。

你可以做什么

| 操作               | 方法                                                                  |
| -------------------- | -------------------------------------------------------------------- |
| 查看所有会话     | Active / Complete / Archived 标签页,带实时状态细分          |
| 获取通知         | 在空闲、待审查、待批准时发送浏览器推送通知 |
| 回答批准请求 | 会话卡片上会出现待处理提示——Allow / Deny(或为 AskUserQuestion 选择一个选项,批准 / 拒绝计划) |
| 发送指令 | 在会话卡片的输入框中输入并按 Enter                   |
| 停止任务      | 会话卡片上的 Stop 按钮;Resume(或发送指令)可解除它 |
| 配对设备         | 用于 Android 应用的二维码 + 6 位数字批准流程                  |
| 管理钩子             | 从设置面板一键安装 / 卸载 / 检查                                     |
| 切换语言             | 顶栏中的 EN / 中文 切换                                          |

远程控制

cc-monitor 不仅仅是一个查看器——它是一个双向通道,智能体由仪表盘来操控。

审批。 当有 UI 连接到某个钩子时,其 PermissionRequest 钩子会保持本地对话框打开,并等待来自仪表盘的答复。如果无人答复——或者根本没有连接任何 UI——该钩子会立即返回,正常的终端提示符会出现,与没有 cc-monitor 时完全一样。这种门控是刻意设计的:远程审批绝不能拖慢坐在终端前的人的终端操作。

指令。 指令会被排队,并在下一个回合边界由 Stop 钩子作为钩子反馈交给智能体。在该边界处,已连接的 UI 也会获得一个短暂的时间窗口来发送后续消息,因此常见情况(“它刚完成,还有一件事……”)无需等待下一个回合即可送达。

停止。 Claude Code 不提供外部中断,因此停止是协作式的:PreToolUse 钩子会拒绝工具调用并结束该回合。智能体停止改动,并总结它进行到了哪里。发送指令(或按下 Resume)会清除停止状态。

⚠️ 在终端提示符已经被答复之后才发送的答复,会被报告为 “太晚了——请在终端答复”,而不是默默声称成功。

Android 应用

把你的手机变成专用的 Claude Code 状态监视器。

获取应用

从 Releases 下载最新的 APK,并通过 ADB 安装:bash
adb install cc-monitor-app-release.apk

连接到服务器

局域网扫描(自动发现):
1. 确保服务器以 --host 0.0.0.0 运行(mDNS 默认开启)
2. 打开应用——它会自动扫描你的本地网络
3. 点击发现的服务器进行配对

二维码扫描:
1. 在 Web 仪表盘中,点击 ⧉(配对设备)以显示二维码
2. 在应用中,点击 扫描二维码 并将摄像头对准它
3. 配对会自动完成

手动输入:
1. 在应用中点击 手动输入
2. 输入服务器 IP、端口和令牌(来自 Web 仪表盘的配对面板)

管理服务器

从仪表盘打开 设置(⚙)。你会看到:
- 服务器卡片,带有连接状态圆点(绿色 = 已连接,橙色 = 已断开,灰色 = 未激活)
- 每个服务器上的 忘记 按钮——将其从你的列表中移除
- 配对新服务器 以添加另一个 Claude Code 实例
- 语言 切换器(系统默认 / English / 中文)

会话状态——你的红绿灯

| 灯 | 状态              | 含义                                              | 你的操作            |
| ----- | ------------------ | ---------------------------------------------------------- | -------------------- |
| 🔵     | working          | Claude 正在编码、运行工具、生成输出         | 去喝杯咖啡 ☕     |
| 🟢     | pending_review   | Claude 已完成——输出已就绪,等待你查看                     | 查看结果   |
| 🟡     | pending_approval | Claude 需要权限(工具批准、权限提示) | 批准或拒绝      |
| ⚪     | idle             | 没有任何活动——会话休眠                        | 发送下一条提示 |
| ✅     | all_done         | 会话已结束                                              | 归档并继续  |

你会立即收到通知,通过浏览器推送和/或 Android 通知,在每次需要你关注的状态变化时。

工作原理

Claude Code                    cc-monitor                  Web Dashboard
(hooks)                        Server                    Android App
|                             |  |
|  POST /api/event            |  |  SSE stream
+-----------------------------+  +---------------------->
|
+-- State files (~/.cc-monitor/)
+-- mDNS (LAN discovery)
+-- TLS + Token Auth

服务器监听 7 个 Claude Code hook 事件,在内存中跟踪会话状态,持久化到磁盘,并通过 Server-Sent Events 向所有连接的客户端推送实时更新。Web 仪表盘和 Android 应用会渲染带有颜色编码状态的实时会话卡片。

有关完整的技术参考,请参阅 API Reference 和 Architecture。

API Reference

| Method   | Path                                  | Auth   | Description                                    |
| -------- | ------------------------------------- | ------ | ---------------------------------------------- |
| POST   | /api/event                          | Yes    | 提交一个 hook 事件                            |
| GET    | /api/status                         | Yes    | 所有会话                                   |
| GET    | /api/status/                    | Yes    | 单个会话                                 |
| GET    | /api/stream                         | Token¹ | SSE 流(state_update + 每 3 秒心跳) |
| GET    | /api/version                        | No     | 服务器版本                                 |
| GET    | /api/hooks-status                   | Yes    | Hook 安装状态                       |
| POST   | /api/install-hooks                  | Yes²   | 全局安装 hooks                         |
| POST   | /api/uninstall-hooks                | Yes²   | 移除 cc-monitor hooks                        |
| POST   | /api/session//archive           | Yes    | 归档会话                                |
| POST   | /api/session//unarchive         | Yes    | 取消归档会话                              |
| POST   | /api/session//complete          | 是     | 将会话标记为完成                               |
| POST   | /api/session//respond           | 是     | 应答一个待处理的请求                           |
| POST   | /api/session//directive         | 是     | 为 agent 排队一条指令                          |
| GET    | /api/session//directive/next    | 是     | 长轮询获取指令(Stop hook)                    |
| POST   | /api/session//stop              | 是     | 请求 agent 停止                                |
| POST   | /api/session//resume            | 是     | 清除停止请求                                   |
| GET    | /api/request//decision         | 是     | 长轮询获取审批结果(PermissionRequest hook)   |
| GET    | /api/auth/pair/qr                   | 否     | QR 配对载荷                                    |
| POST   | /api/auth/pair/request              | 否     | 提交配对请求                                   |
| GET    | /api/auth/pair/request//status  | 否     | 轮询请求状态                                   |
| POST   | /api/auth/pair/request//approve | 否     | 批准(仅限 localhost)                         |
| DELETE | /api/auth/devices/              | 是     | 撤销设备                                       |
| GET    | /api/auth/devices                   | 是     | 列出已配对的设备                               |

¹ 通过 ?token= 查询参数传递令牌(EventSource 限制)
² 需要 localhost 访问权限

架构

cc-monitor/
|--  src/cc_monitor/       # Python 包(FastAPI 服务器)
|--  hooks/                # Hook 脚本(仅用标准库,无依赖)
|--  static/               # Web 仪表盘(原生 HTML/CSS/JS)
|--  scripts/              # install-hooks.sh、uninstall-hooks.sh、build-dev-docker.sh
|--  android_app/          # Flutter Android 应用
|--  tests/                # pytest 测试套件(229 个测试)
|--  Dockerfile            # Python 服务器镜像
|--  Dockerfile.dev        # 用于开发/测试的 Agent 沙箱
|--  Dockerfile.flutter    # Flutter 构建镜像
|--  docker-compose.yaml   # Docker 部署
+--  docker-compose.dev.yaml  # 开发沙箱(独立端口、独立状态)

开发
bash
pip install -e ".[dev]"
pytest tests/ -q          # 229 个测试
cc-monitor --port 9876    # 启动开发服务器

针对真实 agent 进行测试

宿主机的 cc-monitor 经常处于使用中,因此提供了一个沙箱:一个一次性的
容器,内含 Claude Code CLI + dsh + cc-monitor,使用独立端口、独立状态
目录,且与线上实例不共享任何状态。
bash
./scripts/build-dev-docker.sh          # 构建(带缓存)+ 在 :9877 上启动
./scripts/build-dev-docker.sh --shell  # 在其中运行一个 agent

关于缓存模型、认证种子数据以及已知限制,请参阅 DEV-DOCKER.md。

🚦 cc-monitor — Claude Code / DSH 赛博红绿灯
→ 打开仪表盘

gitlab

CI 运行在 GitLab 镜像流水线上。 本仓库已停用 GitHub Actions — 见
.github/workflows/README.md。

Claude 需要你的时候,第一时间知道 — 不再白白盯着屏幕浪费时间。

市面上那些“Claude Code 物理红绿灯”小玩意卖得可不便宜。cc-monitor 是免费的、开源的替代方案 — 跑在任何机器上,推送到你的手机和浏览器,一毛钱不花。你只需要一台 Android 手机或一个浏览器标签页。

🛡️ 守护摸鱼时光安全,及时提醒手动接管 Claude Code。 Claude 干活时你自由,需要审批、出错、或完成审查的那一刻 — 你立刻收到通知。再也不用守着终端。

⚠️ 安全警告

仅从可信来源安装此工具。 Hook 安装脚本会修改 ~/.claude/settings.json — Claude Code 的全局配置文件。恶意 hook 脚本可以窃取你的 Claude API token,获得对你 Anthropic 账户的完全访问权限。切勿从不受你控制的服务器安装 hook。

- 务必先检查安装脚本:curl -skSL /static/install-hooks.sh | less
- 验证来源 — 此仓库是唯一的官方分发渠道
- 切勿使用 sudo — hook 脚本无需 root 权限,仅修改用户级别的 Claude Code 配置
- 优先使用 localhost — 当服务器运行在同一台机器上时无需认证

快速开始

方案 A:Docker(无需克隆仓库)

从 GitHub Container Registry 拉取预构建镜像:
bash
mkdir cc-monitor && cd cc-monitor
curl -O https://raw.githubusercontent.com/BolunHan/cc-monitor/main/docker-compose.yaml
docker compose up -d

方案 B:Docker 本地构建(克隆仓库)

从源码自行构建镜像:
bash
git clone https://github.com/BolunHan/cc-monitor.git
cd cc-monitor
docker build -t ghcr.io/bolunhan/cc-monitor:latest .
docker compose up -d

方案 C:原生 Python
bash
git clone https://github.com/BolunHan/cc-monitor.git
cd cc-monitor
pip install .
cc-monitor --port 9876 --host 0.0.0.0

然后:安装 Hook

在运行 Claude Code 的机器上执行:bash
curl -skSL https://:9876/static/install-hooks.sh | SERVER_URL=https://:9876 bash

🔐 一次性证书步骤: 在浏览器中打开 https://:9876,点击 高级 → 继续访问 以信任自签名证书。使用远程仪表盘时必须执行此步骤。

安装 DSH 上报插件

在运行 DeepSeek Harness(DSH)的机器上,从 npm 安装(默认方式,由 GitHub Actions 发布自动发布):
bash
dsh plugin --profile web add dsh-cc-monitor

备用方式 — 从 GitHub Release tarball 安装:
bash
bash  💡 浏览器通知 可作为 Android 应用的免费替代 — 被提示时启用,即可在状态变化时收到提醒,即使手机不在身边。

功能一览

| 功能             | 操作方式                                                 |
| ---------------- | -------------------------------------------------------- |
| 查看所有会话     | Active / Complete / Archived 标签页,含实时状态统计      |
| 接收通知         | 浏览器推送通知(idle、pending review、pending approval) |
| 远程审批     | 待审批请求直接显示在会话卡片上 —— 允许 / 拒绝(AskUserQuestion 可选具体选项,计划则可批准 / 驳回) |
| 发送指令     | 在会话卡片的输入框中输入后回车                           |
| 停止任务     | 会话卡片上的「停止」按钮;「继续」或发送指令可解除       |
| 配对设备         | 二维码 + 6 位数字审批流程(供 Android 应用使用)         |
| 管理 Hook        | 设置面板中一键安装 / 卸载 / 检查                         |
| 切换语言         | 顶部 EN / 中文 切换按钮                                  |

远程控制

cc-monitor 不只是查看器 —— 它是一条双向通道,可以在仪表盘上直接操控智能体。

审批。 当有 UI 连接时,PermissionRequest hook 会挂起本地对话框,等待仪表盘给出答复。
若无人应答(或根本没有 UI 连接),hook 会立即返回,终端照常弹出原生提示 ——
这一取舍是刻意的:远程审批绝不能让坐在终端前的人变慢。

指令。 指令会先入队,由 Stop hook 在下一个回合边界作为 hook 反馈交给智能体。
在该边界时刻,已连接的 UI 还会获得一小段窗口期来发送后续消息,
因此最常见的情形(「刚做完,再加一件事…」)无需等到下一回合。

停止。 Claude Code 没有对外暴露中断接口,因此停止是协作式的:
PreToolUse hook 拒绝工具调用并结束当前回合。智能体会停止一切操作并总结当前进展。
发送指令(或点击「继续」)即可解除停止状态。

⚠️ 若在终端提示已被回答之后才提交答复,界面会明确提示
「已超时 — 请在终端回答」,而不是默默假装成功。

Android 应用

将手机变成专属的 Claude Code 状态监视器。

获取应用

从 Releases 下载最新 APK,通过 ADB 安装:
adb install cc-monitor-app-release.apk

连接服务器

局域网扫描(自动发现):
1. 确保服务器以 --host 0.0.0.0 运行(mDNS 默认开启)
2. 打开应用 — 自动扫描本地网络
3. 点击发现的服务器进行配对

二维码扫描:
1. 在 Web 仪表盘中,点击 ⧉(配对设备)显示二维码
2. 在应用中,点击 扫描二维码,将摄像头对准二维码
3. 配对自动完成

手动输入:
1. 在应用中点击 手动输入
2. 输入服务器 IP、端口和 token(从 Web 仪表盘配对面板获取)

管理服务器

从仪表盘打开 设置(⚙),你将看到:
- 服务器卡片 — 带连接状态圆点(绿色 = 已连接,橙色 = 已断开,灰色 = 未激活)
- 移除按钮在每个服务器上 — 从列表中删除
- 配对新服务器 — 添加另一个 Claude Code 实例
- 语言切换(跟随系统 / English / 中文)

会话状态 — 你的红绿灯

| 灯光 | 状态               | 含义                                  | 你该做什么           |
| ---- | ------------------ | ------------------------------------- | -------------------- |
| 🔵    | working          | Claude 正在写代码、执行工具、生成输出 | 去喝杯咖啡 ☕         |
| 🟢    | pending_review   | Claude 完成 — 输出等待审查            | 检查结果             |
| 🟡    | pending_approval | Claude 需要权限(工具审批、权限提示) | 批准或拒绝           |
| ⚪    | idle             | 无活动 — 会话休眠                     | 发送下一条提示       |
| ✅    | all_done         | 会话已结束                            | 归档,继续下一个任务 |

每次需要你关注的状态变化,你都会立即通过浏览器推送和/或 Android 通知收到提醒。

工作原理

Claude Code                    cc-monitor                  Web 仪表盘
(hooks)                        Server                    Android 应用
|                             |  |
|  POST /api/event            |  |  SSE stream
+-----------------------------+  +---------------------->
|
+-- 状态文件 (~/.cc-monitor/)
+-- mDNS (局域网发现)
+-- TLS + Token 认证

服务器监听 7 个 Claude Code hook 事件,在内存中追踪会话状态,持久化到磁盘,并通过 Server-Sent Events 向所有连接的客户端推送实时更新。Web 仪表盘和 Android 应用渲染带有颜色编码状态的实时会话卡片。

完整技术参考见 API 接口 和 架构。

API 接口
| 方法     | 路径                                  | 说明                                           |
| -------- | ------------------------------------- | ---------------------------------------------- |
| POST   | /api/event                          | 提交 hook 事件                                 |
| GET    | /api/status                         | 所有会话状态                                   |
| GET    | /api/status/                    | 单个会话状态                                   |
| GET    | /api/stream                         | SSE 实时推送(state_update + 每 3s heartbeat) |
| GET    | /api/version                        | 服务器版本                                     |
| GET    | /api/hooks-status                   | 检查 hook 安装状态                             |
| POST   | /api/install-hooks                  | 安装 hook 到全局配置                           |
| POST   | /api/uninstall-hooks                | 移除 cc-monitor hook                           |
| POST   | /api/session//archive           | 归档会话                                       |
| POST   | /api/session//unarchive         | 取消归档                                       |
| POST   | /api/session//complete          | 标记会话完成                                   |
| POST   | /api/session//respond           | 答复待审批请求                                 |
| POST   | /api/session//directive         | 向智能体投递指令                               |
| GET    | /api/session//directive/next    | 长轮询等待指令(Stop hook 调用)               |
| POST   | /api/session//stop              | 请求智能体停止                                 |
| POST   | /api/session//resume            | 解除停止                                       |
| GET    | /api/request//decision         | 长轮询等待审批结果(PermissionRequest hook 调用) |
| GET    | /api/auth/pair/qr                   | 二维码配对数据                                 |
| POST   | /api/auth/pair/request              | 提交配对请求                                   |
| GET    | /api/auth/pair/request//status  | 查询请求状态                                   |
| POST   | /api/auth/pair/request//approve | 批准配对(仅限 localhost)                     |
| DELETE | /api/auth/devices/              | 撤销设备                                       |
| GET    | /api/auth/devices                   | 列出已配对设备                                 |

架构

cc-monitor/
|--  src/cc_monitor/       # Python 包(FastAPI 服务器)
|--  hooks/                # Hook 脚本(纯 stdlib,无依赖)
|--  static/               # Web 仪表盘(原生 HTML/CSS/JS)
|--  scripts/              # install-hooks.sh, uninstall-hooks.sh, build-dev-docker.sh
|--  android_app/          # Flutter Android 应用
|--  tests/                # pytest 测试套件(229 个测试)
|--  Dockerfile            # Python 服务器镜像
|--  Dockerfile.dev        # 开发/测试用智能体沙箱
|--  Dockerfile.flutter    # Flutter 构建镜像
|--  docker-compose.yaml   # Docker 部署
+--  docker-compose.dev.yaml  # 开发沙箱(独立端口、独立状态)

开发
pip install -e ".[dev]"
pytest tests/ -q          # 229 个测试
cc-monitor --port 9876    # 启动开发服务器

用真实智能体做测试

主机上的 cc-monitor 经常正在被使用,因此提供了一个沙箱:
一个内含 Claude Code CLI + dsh + cc-monitor 的一次性容器,
使用独立端口、独立状态目录,与线上实例不共享任何状态。

./scripts/build-dev-docker.sh          # 构建(走缓存)并在 :9877 启动
./scripts/build-dev-docker.sh --shell  # 在沙箱内运行智能体

缓存模型、登录态注入方式与已知限制见 DEV-DOCKER.md。

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

💬 加入 DPharness 群聊

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

点击加入 QQ 群
DPharness 群聊二维码,手机 QQ 扫码进群
扫码进群