Dynamic Workflows は **research preview
はじめに
Claude Code v2.1.154 で Dynamic Workflows(動的ワークフロー) という機能が追加されました。
ひとことで言うと「Claude にワークフローを組ませると、裏で数十〜数百のサブエージェントを並列に走らせて、大きなタスクを丸ごと片付けてくれる」機能です。
面白そうな機能なのですが、最初に多くの人が気になるのが 「これ、トークンめちゃくちゃ使うんじゃない?」 という点だと思います。結論から言うと その通りで、普通に使うより明確に多く消費します。本記事ではその仕組みと、消費を抑えるための実用的なコツをまとめます。
そもそも Dynamic Workflows とは
従来の「サブエージェント」「スキル」「エージェントチーム」と何が違うのか。公式ドキュメントの比較が分かりやすいので要約します。
| サブエージェント | スキル | エージェントチーム | ワークフロー | |
|---|---|---|---|---|
| 実体 | Claude が起動するワーカー | Claude が従う指示書 | ピアセッションを統括するリードエージェント | ランタイムが実行するスクリプト |
| 次に何を実行するか決めるのは | Claude(ターンごと) | Claude(プロンプトに従う) | リードエージェント(ターンごと) | スクリプト |
| 中間結果の置き場所 | Claude のコンテキスト | Claude のコンテキスト | 共有タスクリスト | スクリプト変数 |
| 規模 | 1 ターンに数個 | 同左 | 数個の長時間ピア | 1 回の実行で数十〜数百エージェント |
| 中断時 | ターンをやり直す | ターンをやり直す | 仲間は走り続ける | 同一セッション内で再開可能 |
ポイントは 「計画(オーケストレーション)をコードに移す」 ことです。
サブエージェント・スキル・エージェントチームでは、Claude(やリードエージェント)自身が「次は何を起動しよう」とターンごとに判断し、その結果がすべてコンテキストに積み上がっていきます。これだとエージェント数が増えるほどコンテキストが膨張し、限界が来ます。
一方ワークフローは、ループ・分岐・中間結果を JavaScript スクリプト側が保持 します。Claude のコンテキストに返ってくるのは「最終的に検証済みの答え」だけ。だから大量のエージェントを協調させられるわけです。
さらにこの設計のうれしいところは、単に「エージェントを増やせる」だけでなく、繰り返し可能な品質パターンを組み込める ことです。例えば「独立したエージェントが互いの調査結果を敵対的にレビューしてから報告する」「複数の角度からプランを起こして突き合わせる」といった、単発のパスより信頼できる結果を得る仕組みを仕込めます。
自分のタスクをワークフロー化する 3 つの方法
1. プロンプトに ultracode というキーワードを入れる
ultracode: src/routes/以下のすべてのAPIエンドポイントを監査し、認証チェックが欠落していないか確認する。
プロンプトのどこかに ultracode が含まれていると、Claude Code がそのキーワードをハイライトし、ターンごとに作業するのではなくワークフロースクリプトを書いてくれます。「use a workflow」「run a workflow」のように自分の言葉で頼んでも、直接のリクエストとして同じ扱いになります。
v2.1.160 でトリガーキーワードが workflow から ultracode に変わりました。 それ以前は workflow という単語が発火キーでしたが、現在その単語では発火しません(自然な言葉でのお願いはどちらのバージョンでも有効です)。
意図せず発火した場合は、
macOS なら Option+W、
Windows / Linux なら Alt+W
でそのプロンプトに限り無視、またはハイライト直後に backspace でも取り消せます。
完全に無効化したい場合は /config の「Ultracode keyword trigger」をオフに。
2. /effort ultracode で Claude に任せる
/effort ultracode
ultracode は xhigh の推論努力(reasoning effort)と自動ワークフローオーケストレーションを組み合わせた設定です。これをオンにすると、こちらが頼まなくても Claude が実質的なタスクごとにワークフローを計画します。
1 つのリクエストが「コードを理解するワークフロー → 変更するワークフロー → 検証するワークフロー」と連鎖することもあります。セッション内のすべてのタスクに適用されるので、各リクエストが低い effort レベルより多くのトークンを使い、時間もかかります。ルーチン作業に戻るときは /effort high に落としましょう(ultracode はセッション限りで、新セッションでリセットされます)。
3. 保存済みワークフローを /<名前> で再実行
良い結果を出したワークフローは /workflows から選んで s キーで保存でき、以降 /<名前> のコマンドとして再利用できます。
保存先は 2 つ:
-
.claude/workflows/(プロジェクト共有・リポジトリを clone した全員が使える) -
~/.claude/workflows/(個人用・全プロジェクトで使えるが自分だけ)
本題:トークン消費はどのくらい?
公式ドキュメントの「Cost」セクションは、ぼかさずにこう明言しています。
A workflow spawns many agents, so a single run can use meaningfully more tokens than working through the same task in conversation.
(ワークフローは多数のエージェントを起動するため、1 回の実行で、同じタスクを会話で進めるよりも 意味のあるレベルで多くのトークン を消費しうる)
そしてブログ側はさらにストレートです。
Dynamic workflows can consume substantially more tokens than a typical Claude Code session.
つまり 「結構使う」は気のせいではなく仕様 です。理由はシンプルで、数十〜数百のエージェントがそれぞれ独立してコンテキストを持ち、しかも相互検証のために同じ題材を複数回処理するからです。これらの消費は 通常のセッションと同じくプランの利用量・レート制限にカウント されるため使い所が難しいですね。
規模の上限(暴走しないための制約)
| 制約 | 理由 |
|---|---|
| 同時実行は最大 16 エージェント(CPU コアが少ないマシンではさらに少なく) | ローカルリソースの上限 |
| 1 回の実行あたり合計 1,000 エージェントまで | 暴走ループの防止 |
「最大 1,000 エージェント」という数字を見れば、トークン消費が一気に膨らみうることは想像がつくと思います。逆に言えば 1,000 でハードキャップがかかるので、無限に課金が膨らむわけではありません。
消費を可視化・コントロールする
闇雲に怖がる必要はなく、Claude Code 側にちゃんと可視化と制御の手段が用意されています。
① 実行前に承認プロンプトで止まる
デフォルト/accept edits モードでは毎回(「このワークフローは今後確認しない」を選ぶまで)、計画されたフェーズ一覧が表示され承認を求められます。Desktop アプリでは承認カードに トークン使用量の注意書き が表示されます。View raw script でスクリプト本体を見落とさなければですが、読んでから判断することも可能です。
② /workflows の進捗ビューでトークン総量が見える
/workflows
進捗ビューは 各フェーズごとにエージェント数・トークン総量・経過時間 を表示します。各フェーズをドリルダウンすればエージェント単位で何を見つけたかも追えます。「思ったより食ってるな」と思ったら x キーでエージェント単位、またはワークフロー全体を停止できます(完了済みの作業は失われません)。
③ モデルを使い分ける
ワークフロー内の各エージェントは、スクリプトが別モデルを指定しない限り セッションのモデルを使います。だからコスト制御の勘所はモデル選択です。
- 大規模な実行の前に
/modelを確認する(普段ルーチンで小さいモデルに切り替えている人は特に) - タスクを説明するときに「強いモデルが要らないフェーズには小さいモデルを使って」と Claude に頼む
実用上のおすすめ運用
公式の推奨は 「最初はスコープを絞ったタスクで使用量の感覚を掴む」 こと。私も同感で、いきなり「リポジトリ全体を移行して」ではなく、まずは 1 ディレクトリ・1 観点に絞って /workflows のトークン表示を眺めながら肌感を作るのが安全です。コストの読めない自動化を本番規模でいきなり回すのは、利便性よりも事故の不安が勝ちます。なんでもかんでも使うものではないですね。
無効化する方法
組織で使わせたくない、あるいは自分の環境で完全に切りたい場合:
-
個人:
/configで「Dynamic workflows」をオフ /~/.claude/settings.jsonに"disableWorkflows": true/ 環境変数CLAUDE_CODE_DISABLE_WORKFLOWS=1 -
組織全体: managed settings に
"disableWorkflows": true、または Claude Code admin settings ページのトグル
その他注意点
- ワークフロー自体は ファイルシステムやシェルに直接アクセスしない
- ワークフローが起動するサブエージェントは、セッションのモードに関わらず 常に
acceptEditsモード で動き、ファイル編集は自動承認される - 実行中はユーザー入力を受け付けない
まとめ
- Dynamic Workflows は「計画をスクリプトに移し、裏で数十〜数百のエージェントを協調させる」機能
- トークン消費は通常セッションより明確に多い
- まずはスコープを絞った 1 タスクで
/workflowsの数字を眺めながら肌感を掴むのが安全