Claude Code の勝手な処理を防止:Subagents(サブエージェント)の利用案
😡Claude Codeが勝手なことする!
そう感じてるユーザーさんは多いのではないでしょうか。
それは情報が足りないから、エージェントが少ない情報から独自に考えて、それが実際に処理できてしまうからだと思います。
プランモードにして内容を確認しても、実際、編集はじめたら勝手なことすることもありますよね。
そういうとき、2025.7.25にリリースされたSubagentsを使うとよい気がします。
🌟Subagentsは処理機能を制限したり利用モデルを指定できる
Subagentsの特徴は以下です。
個人的には、カスタムスラッシュコマンドにはない「ツール制限」と「モデル指定」が便利だと思っています。
たとえば、私は、以下のようなサブエージェントプロンプトを作っています。
以下は、Next.jsのサーバのプロセスや起動管理するMCPサーバを操作するサブエージェントのプロンプトです。
toolsで利用するtool(処理)を指定できます。指定がない場合なんでもできるので勝手なことをすることになります。
modelで利用モデルを指定できます。簡単な作業ならhaikuで十分でしょう。これで処理トークンなどを節約できます。
---
name: nextjs-server-starter
description: Starts Next.js development server using tool-mcp and verifies it's accessible via curl.
tools: mcp__tool-mcp__start_nextjs_server
model: haiku
color: pink
---
あなたはNext.jsサーバー管理スペシャリストです。あなたの仕事は以下の通りです:
- サーバーを起動する:`tool-mcp`の`startnextjs_server`メソッドを使ってNext.js開発サーバーを起動する。
- アクセス確認を行う:curlを使ってhttp://localhost:3000/が正しく応答するか確認する。
- 完了報告をする:サーバーが起動してアクセス可能であることを報告する。
👨🏭SubAgentsの使いどころ
Subagentsはリファレンスにもあるように、「独立したタスク」をするのに向いています。
特に、処理の起点となるメインセッションのコンテキストから独立して実行されるので、メインのコンテキストサイズを消費せず、処理漏れなどを減らすことができます。
また、メインセッションのチャットが見やすくなります。
つまり、作業上する必要があるけど、チャット上に情報を載せたくない途中プロセスをさせるのが適しています。
たとえば、プログラムの修正の流れを例に、活用例を示してみます。
プログラムの修正の流れは大体以下のような流れになると思います。
この流れに関するAIの処理はかなり沢山あります。
その小さい作業をメインセッションに表示する必要ないです。
そこで、各処理を独立化させてサブエージェントを作成します。
確実にやることが決まっているものはMCPサーバに定義し、それをサブエージェントでラッピングして、メインセッションから切り離してもよいと思います。
また、小さく作業内容をきめることで、プレミアムモデルを利用する必要はなくなるので、簡単な処理はモデルをhaikuなどにしておけばよいと思います。
プレミアムモデルは、コードや文書の解析、作文、コーディングに特化して使わせるのがよいと思います。
📝カスタムスラッシュコマンド、MCPサーバ、Subagentsをつかったフロー
私は、以下のようにClaude Codeの機能をつかって処理フローを作っています。
これにより、以下のような問題点が解消しました。
haikuモデルを利用したことによって、どれだけメッセージ制限が回避できているのかわ調べていないのでわかりませんが、結構、処理を失敗するたびにSonnet4などをつかっていたようなので、かなり節約にはなっている気はします。
最近、制限が厳しくなったのではという声もあるので、モデルの利用を節約するのは重要だと思います。
以下の過剰利用ユーザーへの対策とも関係があるのかもしれませんね。
❗Subagentsの注意点:エージェント間の情報共有がしにくい
Subagentsは、メインセッションから独立したコンテキストで処理をします。それは裏返すと、エージェント間での情報共有が容易でないことを意味します。
AnthropicのClaude Codeのチャンネルで質問してみたところ、そのようなコメントをもらいました。
情報を共有するにはチャット上ではなく、ファイルをつかうというコメントももらいました。
なので、各エージェントの作業結果をファイルに書き出し、それを利用して別のエージェントが作業をする必要があります。
※私はオレオレで、カスタムセッションファイルをつくって、MCPサーバを使いながら、エージェント間の情報共有をしています。(本当は標準でこうした機能がほしい!)
🛠️各機能をつかったコンテキストエンジニアリング
最近、プロンプトエンジニアリングから一歩進んで、ワンショットの作業を期待値に近づけるために、「コンテキストエンジニアリング」に関心が集まっています。
CLaude Codeのここで紹介した機能は、まさしくこのコンテキストエンジニアリングをサポートするものだと思います。
できるだけ、生成AIに与える情報を絞り、本当に作業に必要な情報だけを与えることが重要だと思います。
また、生成AIは統計の確率を利用したシステムなので、時々、処理漏れが発生します。それをMCPサーバを利用して確実に実行させるようにするのも必要だと思います。
Discussion