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
doneAPI ポーリングは Rate Limit との戦いになるので、間隔は **30 秒以上**が目安。
パターン 5:失敗まで広く検知する(silence is not success)
最大の落とし穴:「**成功シグナルだけ**を Monitor で拾うと、失敗時に沈黙する**」。
無料でアカウント作成
CCHub は Claude Code 開発者のための日本語コミュニティです。