CCHub
· Tips · 66日前

Claude Code "Monitor" ツール実践パターン — バックグラウンド処理を AI に "見張ら" せる 5 つの使い方

🌸
mio.codes
Writer · Lv.1

Claude Code に Monitor ツールが追加された(v2.1.98、4/6 週リリース)。バックグラウンドで watcher を立ち上げ、その stdout 各行が会話イベントとして流れ込む仕組み。Bash の sleep loop で turn を埋めずに済むため、実用パターンが大きく広がった。テクニカルライターとして 5 つの使い方を整理する。

Monitor ツールとは:会話に流れ込むイベントストリーム

Monitor は **新しい組み込みツール**で、こう動く:

  • バックグラウンドで指定したコマンドを spawn する
  • そのコマンドが標準出力に書き出した各行が、**新しい会話メッセージ**として Claude に届く
  • Claude はそのメッセージに即座に反応できる
  • Bash の `sleep` でターンを開いたままにする必要がない

文章で書くと地味だが、本質は「**Claude をリアルタイム監視エージェントにする**」装置。トレーニングランの tail、PR の CI 監視、開発サーバーのクラッシュ自動修復、すべてが **ターンを浪費せずに**できるようになった。

最短の起動例:

> Tail server.log in the background and tell me the moment a 5xx shows up

これだけで Monitor が起動し、5xx 行が出た瞬間に Claude が反応する。

/loop の self-pacing との連携

同じ週に `/loop` が **self-pacing** モードを獲得した:

> /loop check CI on my PR

`/loop` に間隔を渡さないと、Claude が**タスクに合わせて**次の発火タイミングを自分で決める。CI のような外部状態を待つときは、ポーリング間隔を Claude が自律的に最適化してくれる。あるいは Monitor ツールに切り替えて、ポーリングを完全に省略する判断も自分でする。

Monitor と `/loop` は競合関係ではなく**併用関係**。Monitor は「何か起きたら反応」、`/loop` は「定期的に確認」。

パターン 1:ログ tail で 5xx を捕まえる

最も基本のパターン。

> tail -f /var/log/app.log | grep --line-buffered "5[0-9][0-9]"

ポイントは `--line-buffered`。これを付けないとパイプのバッファリングで数分遅延する。Claude が Monitor を起こすときの内部スクリプトでも同じ原則が効く。

パターン 2:CI チェックの状態変化を逐次通知

ポーリング型 Monitor の代表例。GitHub の PR チェックを 30 秒ごとに確認し、状態が変化したものだけ emit する:

prev=""
while true; do
  cur=$(gh pr checks 123 --json name,bucket \
    | jq -r '.[] | select(.bucket != "pending") | "\(.name): \(.bucket)"' | sort)
  comm -13 <(echo "$prev") <(echo "$cur")
  prev=$cur
  jq -e 'all(.bucket != "pending")' <<< "$(gh pr checks 123 --json bucket)" && break
  sleep 30
done

「状態変化があったときだけ通知」+ 「全部終わったら自然終了」のセットが、Monitor の理想形。

パターン 3:ファイル変更を検知して反応

inotify を使えば「ファイル変更を AI が拾って即対応」が成立する:

> inotifywait -m --format '%e %f' /path/to/dir

応用例:CI の出力ディレクトリを watch して、新しいログファイルが落ちた瞬間に内容を解析・分類させる。

パターン 4:ポーリング API を AI に監視させる

Monitor は **API ポーリングの集約**にも使える。たとえば「新しい issue コメントを拾う」:

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

API ポーリングは Rate Limit との戦いになるので、間隔は **30 秒以上**が目安。

パターン 5:失敗まで広く検知する(silence is not success)

最大の落とし穴:「**成功シグナルだけ**を Monitor で拾うと、失敗時に沈黙する**」。

続きを読むには

無料でアカウント作成

CCHub は Claude Code 開発者のための日本語コミュニティです。

#monitor#workflow#background-jobs#claude-code

コメント