
Overview
Claude Code でサブエージェントを並列に動かすと、どのエージェントが何をしていて、どこで止まっているのかが見えにくい。そこで、エージェント 1 つを猫 1 匹に見立てて、その様子をターミナルの全画面に描く「ねこ部屋」を作った。
- メインのエージェントは親猫、サブエージェントは子猫として、それぞれの部屋(箱)に入る。Claude Code のタブごとに区画を分けて、すべてのタブを 1 画面で見られる
- 依頼の親子関係を実線、引き継ぎ・レビュー・メッセージのつながりを点線で結び、猫がその線の上を歩いて部屋を行き来する
- 許可待ちや回答待ちの猫は枠が赤く点滅し、人の操作が必要な場所がすぐ分かる
- 子猫が終わると結果を、作業がひと区切りつくとその内容を、Claude Haiku が猫口調の 1 文に要約して報告する
- Claude が質問すると、いまの指示・聞いている理由・選択肢ごとの影響・おすすめを猫が解説する。子猫の調査結果も踏まえ、回答待ちの間に結果が届けば解説を作り直す
Claude Code のプラグインマーケットプレイスとして公開しており、claude plugin install で入れられる。
Architecture
- 記録係の Mod(neko-agents)と表示係のビューア(neko-room)の 2 つに分けている。Mod は画面に何も描かず、猫の状態をタブごとの JSON ファイルに書き出すだけにし、ビューアが全タブのファイルを読んで描く
- Mod は Claude Code の function hooks 型プラグインで、ツールの実行やサブエージェントの起動・終了などのイベントから、猫の状態と猫どうしのつながりを組み立てる
- 書き出しは変化があったときだけ、多くても 0.5 秒に 1 回にまとめる。働いている猫がいる間は 1 分ごとに書き直して生存を示し、ビューアは閉じたタブと更新の止まったタブを表示しない
- 要約と解説に送るのは最近の指示・直前の説明・質問だけにし、会話全体は送らない。子猫の結果の本文は Mod の中だけに持ち、ファイルには書き出さない
- ビューアは Bun で動き、図のレイアウト(猫の配置と線の引き方)を描画から切り離して単体テストしている
Tech
Development Timeline10
部屋のファイルに入った制御文字で、ターミナルが操作されないようにした
部屋のファイルに入った制御文字で、neko-room のターミナルが操作されないようにした。あわせて、部屋のファイルを自分だけが読めるようにした。細工したファイル名やプロンプトを使って、クリップボードを書き換えたり画面を偽装したりすることはできなくなった。
ビューアの見出しを「ねこエージェント」にして、ツール名とそろえた
ビューアの画面の 1 行目を「ねこ部屋」から「ねこエージェント」に変え、コマンド名(neko-agents)や紹介記事での呼び名と同じにした。
回答待ちの質問の解説を、色分けした見やすい表示にした
回答待ちの質問の解説が全部同じ黄色で読みづらかったので、節ごとに色を分け、選択肢とおすすめがひと目で分かるようにした。
報告や質問が Claude Code の画面と二重に出て見づらい問題を修正
ねこ部屋で同じ報告や質問の文が二重に出ていたのを整理して、猫の詳細と回答待ちの質問を読みやすくした。
作業中の猫がキョロキョロ・まばたきし、報告に行くときにひと言しゃべるようにした
作業中の子猫が気まぐれに左右を見たりまばたきしたりして、働いている様子が伝わるようにした。報告に行く子猫は「ボスへ報告ニャ!」などとしゃべりながら歩く。
猫をクリックすると、その猫の作業の詳細が見られるようにした
ねこ部屋で猫をクリックすると、その猫が何を頼まれて、今なにをしていて、これまでどんな操作をしたかが画面の下に出るようにした。
子猫の報告が途中で切れて読めない問題を修正
子猫やボスの報告が長いと「…」で途中から読めなくなっていたのを、最後まで読めるようにした。
猫の名前と毛色が食い違わないようにし、子猫の色を絵だけに付けた
「シロなのに三毛」「ミケなのに白猫」のように名前と毛色が食い違うことがあったので、毛色を名前で固定した。あわせて子猫の箱の枠を灰色にそろえ、色は猫の絵だけに付けるようにして、ボスと回答待ちの赤い点滅が目立つようにした。
Claude の質問を猫が解説し、過去の答えも見られるようにした
Claude が質問(AskUserQuestion)してきたとき、質問した猫が「いまの指示・なぜ聞いているか・選択肢ごとの影響・おすすめ」を猫口調で解説し、手伝った子猫たちの調査結果も根拠に挙げるようにした。会話をさかのぼらずにねこ部屋だけ見て答えを決められ、これまでの答えも振り返れる。
子猫を使った作業が終わったら、ボスがまとめてしゃべる
子猫(サブエージェント)を使った作業がひと区切りつくと、親猫のボスがその作業を猫口調の 1 文にまとめてしゃべるようにした。ねこ部屋を見るだけで、いま何が終わったのかが分かる。
Related Notes
- Claude Code のエージェントを猫にして、ターミナルで見守れるようにしてみた
この作品について書いた記事
- AI が書いた大量のテストを人間がレビューするために、テスト仕様書を生成するツールを作ってみた
共通の技術:TypeScript
- AI のために書いたハーネスが、人間の説明書にもなっていた話
共通の技術:Claude Code
- PRをマージするだけで勝手に育つポートフォリオを Astro + GitHub Actions で作ってみた
共通の技術:TypeScript