Claude Codeのスラッシュコマンドとサブエージェントの使い分け
背景
Claude Code の機能で「スラッシュコマンド」(カスタムスラッシュコマンド)はこれまで使っていましたが、「サブエージェント」については認知はしていたものの実際に使ったことがありませんでした。
どちらもタスクの自動化に役立つ機能ですが用途や適切な使い分けが曖昧だったので、一度整理したいなと思い記事にまとめました。
結論、スラッシュコマンドとサブエージェントの使い分け方は以下のイメージです。
- スラッシュコマンド: 「運転席に座って操作したい」 時に使う
- サブエージェント: 「専門家に任せたい」 時に使う
それでは、両者の特徴と使い分けについて詳しく見ていきます。
スラッシュコマンド(Slash commands)とは
スラッシュコマンドは Claude Code の動作を制御するもので、即座に実行される単一のアクションです。
今回は、スラッシュコマンドの中でもカスタムスラッシュコマンドの方に焦点を当てます。
公式ドキュメントでは以下のように説明されています。
カスタムスラッシュコマンドを使用すると、頻繁に使用するプロンプトをMarkdownファイルとして定義し、Claude Codeが実行できるようになります。コマンドはスコープ(プロジェクト固有または個人)によって整理され、ディレクトリ構造を通じて名前空間をサポートします。
スラッシュコマンドの主な特徴
主な特徴は以下の通りです。
- 直接的でタスク指向: 特定のタスクをすぐに実行するために使われる
-
組み込みコマンド:
/init
、/review
、/clear
など - カスタマイズ性: Markdownファイルで独自コマンドを作成可能
- コンテキスト共有: 実行したセッション内で動作
- 引数サポート: 動的な引数を受け取って処理可能(カスタムスラッシュコマンド)
サブエージェント(Subagents)とは
サブエージェントは以下のように定義されています。
Claude Codeのカスタムサブエージェントは、特定のタイプのタスクを処理するために呼び出すことができる専門化されたAIアシスタントです。これらは、カスタマイズされたシステムプロンプト、ツール、および独立したコンテキストウィンドウを持つタスク固有の設定を提供することで、より効率的な問題解決を可能にします。
サブエージェントの大きなメリットは、メインの会話とは独立したコンテキストウィンドウで動作することです。
これにより、メインのコンテキストを汚染せずに必要な情報だけを引き継いで処理できるようになっています。
皆さんもAIに複雑なタスクを依頼している中で会話が長くなり、意図通りに動作しなくなる経験が一度はあるのではないでしょうか。
それはコンテキストが肥大化することで、モデルが指示を見失ったり、コンテキスト圧縮による情報損失が起きたりするためです。
サブエージェントはコンテキストを分離することで、こうした問題を回避できます。
また、専門的なタスクを委任できるため複雑な多段階タスクを自律的に実行することができます。
さらに各サブエージェントには独自のシステムプロンプトやツール権限を設定できるため、特定のタスクに最適化された環境で動作させることが可能です。
自律性を保ちつつも、権限を最小限に抑えることでセキュリティリスクを軽減できるのもメリットですね。
サブエージェントの主な特徴
具体的な活用事例はサブエージェントの公式ドキュメントにいくつか紹介されていますので、参考にしてください。特徴としては以下の通りです。
- 独立したコンテキスト: メインのセッションとは別のコンテキストで動作
- 専門性: 特定分野(コードレビュー、デバッグ、データ分析など)に特化
- 自律的実行: 複雑な多段階タスクを独立して処理
- 再利用性: 一度作成すれば複数のプロジェクトで使用可能
サブエージェント作成時のポイント
公式ドキュメントでは、初期サブエージェントはClaudeで生成(/agents
コマンド)することが推奨されています。
以下、サブエージェント作成時のポイントです。
- テストと反復: 実際のタスクで試し、必要に応じて調整
- 単一責任の原則: 1つのサブエージェントには1つの専門分野
- 詳細なプロンプト: 期待する動作を明確に記述。より多くのガイダンスを提供するほど高いパフォーマンスが期待できる
- 最小権限の原則: 必要最小限のツールアクセスのみ付与(セキュリティの向上)
- 明確な成功基準: タスク完了の条件を具体的に定義
スラッシュコマンドとサブエージェントの比較
以上から両者の主な違いを表にまとめました。
特徴 | スラッシュコマンド | サブエージェント |
---|---|---|
主なユースケース | 単発の対話型タスク | 複雑な多段階の反復可能なワークフロー |
コンテキスト | メインの会話と共有 | メインセッションから隔離されたコンテキストウィンドウ |
設定 | マークダウンによるシンプルで直接的な指示 | システムプロンプトとツールによる高度なカスタマイズ |
呼び出し方 |
/ プレフィックス |
自動委任または明示的 |
最後に
これまではカスタムスラッシュコマンドでサブエージェント的なことを実現していたのですが、今後はこれらの違いを意識した上で用途に応じて両者を使い分けていきたいと思います。
それでは最後までお読みいただきありがとうございました!
参考資料
Discussion