上周我用 Claude Code 跑一个 20 分钟的测试套件,让它每 2 分钟检查一次有没有失败的 case。跑完一看 token 用量——好家伙,5 次完整 API 调用,其中 4 次就问了句"有没有挂",然后收到一句"没有"。这钱花得跟打车在原地等红绿灯一样。

4 月 9 号,Claude Code 的产品经理 Noah Zweben 发了个推:Monitor 工具正式上线。一句话总结——Claude 不用轮询了,改成后台盯梢,有事才叫它。

从"每 5 分钟问一嘴"到"有事自动推过来"

以前的逻辑是这样的:你让 Claude 盯着一个部署或者日志,它就在 agent 循环里每隔一段时间问一次"好了没?出错没?"每次提问都是一次完整的 API 调用,加载上下文、处理 prompt、返回响应。10 分钟的流程,轮询 5 次,其中可能只有 1 次有料——剩下 4 次全是白花钱。

Monitor 的做法完全不一样。你给它一个 shell 命令,它启动一个后台进程,这个进程的 stdout(标准输出)就是事件流。每一行输出就是一个通知,直接推到你的对话里。 进程没输出的时候,Claude 花半个 token 都不花。

Noah 原话是:“Claude can now follow logs for errors, poll PRs via script, and more. Big token saver and great way to move away from polling in the agent loop.”

这就好比以前是你每隔 5 分钟给外卖小哥打电话问"到哪了",现在是小哥到了直接按你门铃。

Claude Code 不用傻轮询了——Monitor 上线,后台盯梢省一大截 token
在这里插入图片描述

一句话就能用

来看个实际例子。Anthropic 官方发了个演示视频,14 秒,信息量拉满:

你在 Claude Code 里打一行字:

I just deployed the API, monitor the logs for any errors

Claude 回你一句:“Got it – dispatching a Monitor so I can keep working while it watches the log.”

然后它自动启动了一个后台监控,执行的命令是:

tail -f /var/log/app.log | grep --line-buffered ERROR

persistent background task——持续运行,不会自己停。

接着就出现了一个独立的监控窗口,实时刷日志。大部分是正常的 HTTP 请求信息,突然蹦出来一条红的:

ERROR db: connection refused to postgres:5432

Claude 立马收到了这条错误,自动开始分析:“Error detected in the logs. Starting an investigation into the postgres connection failure.”

整个过程——你只说了一句话,剩下全是它自己搞定的。

四个参数,看一眼就会

Monitor 的配置就四个参数,没有多余的东西。

description——给监控起个名字。这个名字会出现在每一条通知里,所以别起"monitoring"这种废话。写成"errors in deploy.log",收到通知一眼就知道是哪个监控报的。

command——最核心的。一个 shell 命令,它的 stdout 就是事件流。每一行打印出来的东西都会变成一条通知。200 毫秒内的多行输出会自动合并成一条,不用担心一秒钟收到二十条轰炸。

timeout_ms——多久之后自动杀掉这个监控。默认 5 分钟,最长能设到 1 小时。适合那种"盯 10 分钟部署流程"的场景。

persistent——设成 true 的话,监控会一直跑到你手动关掉或者会话结束。适合日志监控、PR 监听这种需要长期盯着的活。

两种玩法:过滤流和轮询脚本

Monitor 的命令有两种典型写法。

第一种:过滤流。 接一个持续输出的源,只捞你关心的部分。

盯日志里的错误:

tail -f /var/log/app.log | grep --line-buffered "ERROR"

盯文件系统变化:

inotifywait -m --format '%e %f' /watched/dir

或者跑一个 Node 脚本从 WebSocket 里捞事件也行:

node watch-for-events.js

第二种:轮询脚本。 自己写个循环,隔一段时间查一次,有变化才输出。

比如每 30 秒查一下 GitHub PR 有没有新评论:

last=$(date -u +%Y-%m-%dT%H:%M:%SZ)
while true; do
  now=$(date -u +%Y-%m-%dT%H:%M:%SZ)
  gh api "repos/owner/repo/issues/123/comments?since=$last" \
    --jq '.[] | "\(.user.login): \(.body)"'
  last=$now; sleep 30
done

两种玩法的核心规则一样:stdout 有输出就是事件,没输出就是静默。Claude 该干别的干别的,不用等着。

token 到底省多少?

算一笔账。

/loop 每 2 分钟检查一次测试套件,跑 10 分钟,总共 5 次完整 API 调用。每次都要加载上下文、处理 prompt、返回响应。5 次调用,4 次是在问"好了没"。

换成 Monitor 呢?Claude 通过过滤器盯着测试进程的输出。第 4 分钟测试 #23 挂了,那一行失败信息直接推到会话里。Claude 立刻开始诊断,同时测试 #24 到 #47 还在跑。

5 次 API 调用 vs 1 次事件推送。省了 80% 的 token,还提前 6 分钟发现问题。

部署流水线、夜间构建、几小时的 CI 跑批——时间越长,Monitor 省得越多。

在这里插入图片描述

我用它干了什么

盯开发服务器。 起一个 Vite 或者 Next.js 的 dev server,让 Monitor 盯着。编译报错或者崩溃循环一出来,Claude 立刻知道。不用再回头翻终端日志找哪行报错了。

更省心的是跑测试——200 个用例,第 47 个挂了,Monitor 把失败信息推过来的时候,剩下 150 多个还在跑。Claude 已经在分析第 47 个为什么挂了,等测试跑完,修可能都修完了。

还有个场景我经常用:盯部署流水线。CI/CD 的输出跟了一路,失败、警告、特定阶段完成,每个都能触发通知。不用一直盯着屏幕刷日志了。

三个容易踩的坑

用过一段时间之后,有几个要注意的点。

管道里必须加 --line-buffered 这是新手最常踩的坑。你写 tail -f app.log | grep "ERROR",管道缓冲会导致事件延迟好几分钟才到。加上 grep --line-buffered 才能实时推送。

轮询脚本里记得加 || true。调外部 API 的循环,一次网络超时就把整个监控搞崩了。每条命令后面跟一个 || true,挂了继续跑,不会让整个 monitor 死掉。

还有个事儿——别把原始日志全扔进 stdout。每一行输出都会变成对话里的一条消息,输出太多 Monitor 会自动停掉。只捞你关心的:

tail -f app.log | grep --line-buffered "ERROR\|WARN\|FATAL"

别这么干:

tail -f app.log

上面只捞错误,下面把全部日志灌进去——后者会被自动杀掉。

跟其他工具怎么选

Claude Code 现在有三套自动化机制,容易搞混。

Hooks 是 Claude 自己操作的时候触发的——比如编辑文件之前、提交代码之后。属于"内部守卫"。

Scheduled Tasks(定时任务) 是按时间表跑的,适合周期性维护——每天检查依赖、每周生成报告。

Monitor 是外部事件驱动的——日志出了错误、PR 有了新评论、部署失败了。它不是按时间表来的,是按事件来的。

还有一个容易混淆的:run_in_background。这俩都跑后台,区别在于反馈模式。run_in_background 是"跑完告诉我一声",你只收到一个完成通知。Monitor 是"跑的过程中有任何匹配的事件都推给我"。前者是发完就忘,后者是实时直播。

我的判断

Monitor 解决的是 Claude Code 之前一个很尴尬的问题:它只会"问",不会"听"。

一个 AI 编程助手,如果每次想知道后台发生了什么都要主动问一次,那它本质上还是个问答机器。Monitor 让它有了被动接收的能力——就像手机推送通知,不用你打开 App,消息自己过来。

这不是什么"革命性突破",但对日常开发效率的提升是实打实的。尤其是跑长任务、盯部署、做持续集成的场景,以前要么忍着 token 浪费轮询,要么干脆不盯——出了问题回头查。现在有了 Monitor,该盯的盯,该省的省。

如果你已经在用 Claude Code,更新到最新版就能用。最简单的上手方式:下次跑 dev server 的时候,跟 Claude 说一句"Start my dev server and monitor it for errors"。一句话的事。

Monitor 最大的意义不是省 token,是让 AI 编程助手第一次有了"后台值守"的能力。 以前它是你喊它才动,现在它会自己盯着了。


你之前让 Claude 轮询后台任务的时候,token 烧了多少?评论区晒晒账单。

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐