0. きっかけ
claude codeを使っていると「エージェント」と「サブエージェント」という単語を自分でも使うようなりましたが、「さて、この2つにはどんな違いがあって、振る舞いはどうなっているのか?」、さまざまな記事に「マルチエージェント」とかいう言葉が出てくるので、自分自身の理解を深める上で整理してみました。
1. まず用語を整理します
エージェント定義
ご存知の通り、.claude/agents/ 配下に置くMarkdownファイルです。役割・使えるツール・振る舞いを定義した設計図のようなもの。
.claude/agents/
├── architect.md # 設計専門
├── developer.md # 実装専門
├── reviewer.md # レビュー専門
└── ...
サブエージェント
エージェント定義をメインセッションの下位(sub)で起動したインスタンスです。独立したコンテキストで動いて、結果だけをメインに返します。
メインエージェント
自分が直接対話するトップレベルのセッションのことです。
2. 「サブ」かどうかは起動方法で決まります
同じエージェント定義を使っても、誰がどのように起動したかでサブかメインかが変わります。これが一番のポイントです。
| 起動方法 | 動作モード | 自分との対話 |
|---|---|---|
ClaudeがAgentツールで委譲 |
サブエージェント | 直接対話不可(結果のみ受け取る) |
セッション内で@developer ...
|
サブエージェント | 直接対話不可 |
claude --agent developer |
メインエージェント | 直接対話できる |
claude agentsからdispatch |
メインエージェント | 直接対話できる |
3. サブエージェントを使う理由
主な目的はコンテキスト汚染の防止と並列化の2つです。
大量の検索結果やログをサブエージェントに処理させることで、メインのコンテキストウィンドウをすっきり保てます。
4. claude agents(Agent View)とは
claude agents コマンドで開くバックグラウンドセッションの管理画面です。
2026年5月11日(バージョン2.1.139)に追加されたResearch Preview機能です。 まだ新しい機能なので、今後仕様が変わる可能性があります。
表示されるセッションの状態はこんな感じです:
| 状態 | 説明 |
|---|---|
| Working | ツール実行中・レスポンス生成中 |
| Needs input | 自分の入力待ち |
| Idle | 次のタスク待ち |
| Completed | 正常終了 |
| Failed | エラー終了 |
| Stopped | 手動停止 |
ひとつ注意点として、フォアグラウンドで別ターミナルで動いているセッションはここに表示されません。/bgでバックグラウンド化して初めて表示されます。
5. /bgコマンドの動作
/bgはUnixのジョブコントロール(bgコマンド)とは全く別の仕組みです。同じ名前なのでつい混同しがちですが、動作はかなり違います。
Unixのbgとの違い
Unix bg
|
Claude Code /bg
|
|
|---|---|---|
| プロセス | 同じプロセスをバックグラウンド化 | 新しい別プロセスを起動 |
| 状態引き継ぎ | そのまま継続 | ディスクから会話履歴を復元 |
| 管理 | シェルのジョブコントロール | スーパーバイザープロセス |
/bg実行時のフロー
スーパーバイザープロセス
バックグラウンドセッションは自分が直接管理するプロセスではなく、スーパーバイザープロセスという常駐の管理プロセスにホストされます。
-
/bgまたはclaude agentsを最初に実行したとき自動起動 - ターミナルを閉じても動き続ける
- セッション状態はディスクに永続化される
6. /bg中のサブエージェントはどうなる?
/bg実行時に引き継がれるもの・引き継がれないものがあります。
サブエージェントが作業中の状態で/bgを使うのは避けて、完了してから使うのが安全です。
7. オブジェクト指向で例えると
オブジェクト指向に慣れている方には、このアナロジーがしっくりくるかもしれません。
| OOP | Claude Code |
|---|---|
| クラス定義 | エージェント定義(.mdファイル) |
new MyClass()(外部から生成) |
claude --agent developer(メインとして生成) |
内部でnew MyClass()を呼ぶ |
ClaudeがAgentツールで委譲(サブとして生成) |
エージェント定義はクラス、サブエージェント・メインエージェントはそのインスタンスです。同じクラスから生成したインスタンスでも、誰がどこでnewしたかで役割が変わる——そんなイメージです。
まとめ
これでなんとか頭の中を整理できました。
| 概念 | 一言で |
|---|---|
| エージェント定義 | 役割・振る舞いの設計図 |
| サブエージェント | メインの下位で動くインスタンス |
| メインエージェント | 自分と直接対話する独立プロセス |
| Agent View | バックグラウンドセッションの管理画面 |
/bg |
新プロセスをスーパーバイザーに移譲する仕組み |
免責事項: この記事はClaude Codeとの対話から得た情報をもとにしており、一部は調査時点での推測を含む可能性があります。正確な仕様は公式ドキュメントで確認してください。