Skip to main content
サブエージェントは、プロジェクト内のスコープを絞ったタスクを処理する専門のAIエージェントです。メインエージェントはサブエージェントに作業を委任でき、各サブエージェントは独自のツールと指示を持ちます。

組み込みサブエージェント

CTORには2つの組み込みサブエージェントが含まれています: 組み込みサブエージェントは編集や削除ができません。

サブエージェントの実行状況を見る

メインエージェントが作業を委譲すると、サブエージェントのツールブロックがチャット内で進捗を報告します。実行中はブロックのヘッダーに現在のステップ——ツール名とその対象(例:Read File · src/App.tsx)——が表示されます。ブロックを展開すると、タスクプロンプト全文と、その下にリアルタイムのアクティビティログが表示されます。ログは 1 行がサブエージェントのツール呼び出し 1 回に対応し、実行中・完了・失敗のいずれかが示されます。保持されるのは直近 30 件です。 サブエージェントが終了すると、ヘッダーのリアルタイム表示はツール呼び出しの合計数に置き換わり、アクティビティログは展開したブロック内に残ります。

Ultra オーケストレーション

実験的な Ultra 思考レベルでは、エージェントは自らの判断で作業を委任します。長いタスクを逐次的に処理する代わりに、作業を分割して複数のサブエージェントを並列実行し、その結果を統合します。 この方法で生成されたサブエージェントは、通常の委任よりも広い裁量を持ちます。親チャットのモデルを引き継ぎ、それぞれに個別の思考レベルを指定でき、プロジェクトの MCP ツールを使用できます。実行は 30 分で打ち切られます。 子エージェントの実行中、入力バーには実行中の数と、それぞれのモデルおよび思考レベルが表示されます。Main Chat では、オーケストレーションの子セッションが独立したセッションとしてサイドバーに現れ、名前の横に が付きます。

並列数の上限

Settings → System → Experimental features → Ultra 並列エージェント数で、1 つの Ultra チャットが同時に実行するサブエージェント数の上限を設定します。デフォルトは 3、範囲は 1〜8 です。上限を超えた作業はキューに入り、空きが出た時点で開始されます。

実行成果物

Ultra サブエージェントの実行はすべてプロジェクト内の .bricks/build/agents/ に書き出されるため、親チャットが中断されても結果は残ります: チャットには短縮された結果とこれらのパスが報告されます。完全な出力はディスク上にのみ存在します。生成されたプロジェクトでは .bricks/build/ はすでに git の無視対象なので、これらの成果物が作業ツリーに現れることはありません。このディレクトリは自動的にクリアされないため、増えてきたら古い実行結果を自分で削除してください。 結果を実行中のターンへ返せない場合(親のターンが失敗した、アプリが再起動したなど)、CTOR は結果を破棄せず、完了した報告で親チャットに再度プロンプトを送ります。

サブエージェントの管理

サイドバーからプラグインパネルを開き、エージェントタブに切り替えます。 プラグインはサブエージェントもインストールできます。それらは自分のエージェントと並んでエージェントタブに表示されます。

スコープ

サブエージェントは2つのスコープに整理されます:
  • グローバル — すべての開いているプロジェクトで利用可能。~/.bricks-project-desktop/agents/ に保存されます。
  • プロジェクト — 特定のプロジェクト内でのみ利用可能。プロジェクトの .bricks/agents/ ディレクトリに保存されます。
同名のプロジェクトスコープのエージェントはグローバルエージェントより優先されます。カスタムグローバルエージェントは同名の組み込みエージェントより優先されます。

サブエージェントの作成

  1. エージェントタブを開きます
  2. グローバルスコープを選択します
  3. 新規エージェントをクリックします
  4. エディターでエージェントのfrontmatterと指示を編集します
  5. 保存をクリックします

エージェントファイルフォーマット

サブエージェントはYAML frontmatterを持つmarkdownファイルです:
Frontmatterフィールド: toolsリストが未指定(またはnullに設定)の場合、エージェントはspawn_agentを除くすべての組み込みツールを使用できます。ツールを制限するには、必要なものだけをリストします: よく使われるツール: read_fileglobgrep

サブエージェントの編集

エージェントカードの編集ボタンをクリックしてエディターを開きます。frontmatterまたは指示を変更して、保存をクリックします。

サブエージェントの削除

エージェントカードの削除ボタンをクリックし、もう一度クリックして確認します。エージェントファイルは永久に削除されます。
ディスク上のエージェントファイルの変更は自動的に検出されます。外部エディターでエージェントファイルを編集した場合、パネルはリアルタイムで更新されます。

指示ファイル

スキルは、バンドルされた指示ファイルを使ってサブエージェント(通常はgeneral)を駆動できます。エージェントを生成する際、メインエージェントはオプションのinstructions_fileパスを渡せます。これはMarkdownファイルで、その本文がTask-Specific Instructionsヘッダーの下にサブエージェントのシステムプロンプトに追加されます。

仕組み

  1. スキルがSKILL.mdと共に指示ファイル(例:agents/grader.md)をバンドルします
  2. メインエージェントがinstructions_fileでそのファイルを指定してサブエージェントを生成します
  3. CTORがファイルのfrontmatterを除去し、本文をそのまま追加します — テンプレート処理や変数置換は行いません
  4. 指示が参照する入力値(ファイルパス、設定など)は、呼び出し元がタスクプロンプトで渡します

パス解決

  • 相対パスはプロジェクトルートに対して解決されます
  • 絶対パスは以下の許可されたディレクトリのいずれかに存在する必要があります:
    • プロジェクトディレクトリ
    • プロジェクトまたはグローバルのスキルディレクトリ
    • プロジェクトまたはグローバルのエージェントディレクトリ
    • バンドルされたスキルディレクトリ
これらのディレクトリ外のパスはセキュリティ上拒否されます。

agents/grader.md指示ファイルを含むスキル:
grader.mdは標準のエージェントファイルフォーマットを使用します:
メインエージェントはこのファイルを使ってgeneralサブエージェントを生成し、タスクに具体的な値を渡します。

モデル解決

サブエージェントが実行されると、モデルは次の順序で解決されます:
  1. エージェントファイルの model フィールド — エージェントファイルにモデルが指定されている場合、それが使用されます
  2. 設定のデフォルト — 設定で構成されたデフォルトのサブエージェントモデル
  3. プロバイダー固有のデフォルト — 現在のプロバイダーのコスト効率の良いモデル:Anthropicでは claude-haiku-4-5-20251001、OpenAI CodexとGitHub Copilotでは gpt-5.4-mini、Googleでは gemini-3.5-flash、OpenCode Zenでは minimax-m2.5、OpenCode Goでは minimax-m2.7
  4. セッションモデル — 現在のセッションで選択されたモデル
これにより、サブエージェントはエージェントごとの設定なしに、アクティブなプロバイダーのコスト効率の良いモデルを自動的に使用します。

思考レベル解決

サブエージェントが実行されると、思考レベルは次の順序で解決されます:
  1. エージェントファイルの thinking_level フィールド — エージェントファイルに思考レベルが指定されている場合、それが使用されます
  2. 設定のデフォルト — 設定で構成されたデフォルトのサブエージェント思考レベル
  3. モデル固有のフォールバック — OpenAI Responses API上の推論モデルの場合、デフォルトは low