原文タイトル:あらゆるタスクに対応するハーネス:Claude Codeにおける動的ワークフロー
原文著者:@trq212
翻訳:Peggy
編集者注:Claude Codeは、コードアシスタントから、オーケストレーション可能なエージェントワークベンチへと進化しつつある。
本記事で紹介するワークフローの核心的な価値は、Claudeが同じコンテキストウィンドウ内で「考えてから実行する」だけではなく、タスクに応じて動的に実行フレームワークを生成できる点にある。すなわち、タスクの分割、サブエージェントへの割り当て、並列処理、クロスバリデーション、ループ反復、さらには異なるエージェント同士を競わせ、最終的に結果を統合するといったプロセスを実現する。
これは、Claude Codeのユースケースが明らかに拡大していることを意味する。コード移行、リファクタリング、テスト再現、コードレビューだけでなく、深層リサーチ、ファクトチェック、履歴書の選別、インシデントの振り返り、ルールの体系化、ビジネスプランレビュー、ネーミングのブレインストーミングといった非技術的なタスクにも適用可能だ。多くの複雑な作業は、本質的にプログラミングと似ている。すなわち、問題の分解、コンテキストの分離、仮説の検証、大量の詳細処理、複数の候補パスからの選択が必要となる。
動的ワークフローが解決しようとしているのは、大規模言語モデルが長いタスクでよく直面するいくつかの問題である。途中で完了を宣言する「エージェントの怠惰」、自身の結論を過度に評価する「自己選好バイアス」、そして複数回の実行後に元の目標から徐々に逸脱する「目標ドリフト」だ。独立したコンテキストを持つ複数のClaudeにタスクを委譲することで、複雑なタスクを「単一エージェントの長距離走」から「マルチエージェントの協調作業」へと変革する。
もちろん、ワークフローは万能薬ではない。通常、より多くのトークンを消費し、すべての一般的なコーディングタスクに適しているわけではない。しかし、重要な方向性を示している。将来のAIツールの競争は、単一モデルの賢さだけでなく、複雑な目標を達成するために、信頼性が高く、再利用可能で、監査可能な実行プロセスを組織化できるかどうかにかかっているかもしれない。
以下は原文である:
デフォルトのClaude Code実行フレームワークはプログラミング用に構築されているが、他の多くのタイプのタスクにも適用可能である。多くのタスクは、構造的にプログラミングタスクと非常に似ていることが判明している。しかし、研究、セキュリティ分析、エージェントチームの協調、コードレビューなど、特定のタスクタイプでは最適なパフォーマンスを達成するために、Claude Codeの上にカスタマイズされた実行フレームワークを構築する必要がある。
Workflows(ワークフロー)を使用すると、実行フレームワークを動的に作成でき、ClaudeがClaude Code内で上記の問題やさらに多くの種類の問題をよりネイティブに解決できるようになります。また、これらのワークフローを他のユーザーと共有したり、再利用したりすることも可能です。
本記事では、私がworkflowsを初めて使用した際の経験と知見を共有し、その能力を最大限に活用するための手助けをします。
ただし、関連するベストプラクティスはまだ形成途中であることをお伝えしておきます。動的ワークフローは通常、より多くのトークンを消費するため、いつ、どのように使用するかを慎重に検討する必要があります。
注:本記事はClaude Blogにも掲載されています。
技術的な詳細に入る前に、workflowsの可能性を理解するためのサンプルプロンプトをいくつか紹介します:
「このテストは約50回の実行に1回失敗します。ワークフローを構築してそれを再現し、仮説を立て、異なるworktreeで対抗テストを実施してください。/goal 仮説が検証されるまで停止しないでください。」
「ワークフローを使用して、最近の50回のセッションを振り返り、繰り返し行った修正を掘り起こし、それらの再発する問題をCLAUDE.mdルールに変換してください。」
「ワークフローを使用して、過去6ヶ月間のSlackの#incidentsチャンネルを調査し、繰り返し発生しているが誰もチケットを提出していない根本原因を特定してください。」
「私の事業計画書を使ってワークフローを実行し、異なるエージェントに投資家、顧客、競合他社の視点からそれぞれ分析させてください。」
「ここに80件の履歴書が入ったフォルダがあります。ワークフローを使用して、バックエンド職の要件に従ってそれらを並べ替え、トップ10を再確認してください。AskUserQuestionツールを使って私に質問し、評価基準を確立するのを手伝ってください。」
「このCLIツールに名前を付ける必要があります。ワークフローを使用して一連のオプションをブレインストーミングし、トーナメント方式でトップ3を選出してください。」
「ワークフローを使用して、Userモデルをすべての場所でAccountにリネームしてください。」
「私のブログ草稿を読み、workflow を使ってコードベースと照合し、各技術的判断を検証してください。誤った内容を公開したくありません。」
動的ワークフローは、サブエージェントを生成・調整するための特別な関数を含む JavaScript ファイルを実行します。

動的ワークフローには、データ処理のための標準的な JavaScript 関数(JSON、Math、Array など)も含まれています。
特に注目すべき点として、動的ワークフローは、特定のエージェントがどのモデルを使用するか、またサブエージェントが自身のワークツリー内で実行されるかどうかを決定できます。これにより、Claude はタスクのニーズに応じて、必要な知能レベルと分離の程度を自律的に選択できます。
ワークフローが中断された場合(例:ユーザーによる手動操作や端末の終了)、セッションを復元すると、そのワークフローは中断箇所から実行を再開できます。
デフォルトの Claude Code 実行フレームワークでタスクを処理する場合、同じコンテキストウィンドウ内で計画と実行を同時に行う必要があります。多くのプログラミングタスクではこの方法が非常に効果的ですが、長時間実行、大規模並列処理、または高度に構造化された対抗的なタスクでは、時に機能しなくなることがあります。
その理由は、Claude が単一のコンテキストウィンドウ内で複雑なタスクを処理する時間が長くなるほど、特定の種類の障害モードが発生しやすくなるからです:
Agentic laziness(エージェントの怠惰)とは、Claude が特に複雑で複数の部分からなるタスクを処理する際、実際には完了していないにもかかわらず、部分的な進捗のみでタスクが完了したと宣言して早期に停止することを指します。例えば、セキュリティレビューで 50 項目中 20 項目しか処理していないのに、作業が終わったと宣言するケースです。
Self-preferential bias(自己選好バイアス)とは、Claude が自身の結果や発見を好む傾向を指し、特に特定の評価基準に基づいて自身の成果を検証・評価するよう求められた場合に顕著です。
Goal drift(目標の逸脱)とは、複数ラウンドの実行中に、Claude が当初の目標に対する忠実度を徐々に低下させることを指し、特にコンテキストが圧縮された後に顕著です。要約が行われるたびに情報損失が発生し、エッジケースや「X をしない」といった制約条件などの詳細な要件が失われる可能性があります。
ワークフローを作成することで、これらの問題を軽減できます。複数の独立したClaudeをオーケストレーションし、それぞれに独自のコンテキストウィンドウを持たせ、互いに分離された明確な目標を持つタスクに集中させることができるからです。
これまでに、Claude Agent SDKやclaude -pを使って静的ワークフローを作成し、複数のClaude Codeインスタンスを調整したことがあるかもしれません。
しかし、静的ワークフローはさまざまなエッジケースをカバーする必要があるため、通常はより汎用的です。Claude Opus 4.8と動的ワークフローの登場により、Claudeはあなたの具体的なユースケースに合わせたカスタマイズされた実行フレームワークを記述できるほど賢くなりました。

Claudeに直接動的ワークフローを作成するよう依頼するか、トリガーワード「ultracode」を使用して、Claude Codeがワークフローを作成するように指示できます。
ただし、動的ワークフローがどのように機能するかについてのメンタルモデルを構築できれば、いつ使用すべきかを判断しやすくなり、プロンプトを通じてClaudeを適切に導くことも容易になります。
Claudeがワークフローを構築する際によく使用し、組み合わせるパターンは以下の通りです:

分類して実行:分類エージェントを使用してタスクの種類を判断し、タスクの種類に応じて異なるエージェントやアクションにルーティングします。フローの最後に分類器を使用して出力結果を判断することもできます。
ファンアウトして統合:タスクを複数の小さなステップに分割し、各ステップをエージェントに処理させ、最後にこれらの結果を統合します。このパターンは、タスクに多数の小さなステップが含まれる場合や、各ステップにクリーンなコンテキストウィンドウが必要で、相互干渉やクロスコンタミネーションを避けたい場合に特に適しています。統合ステップは「バリア」として機能し、ファンアウトされたすべてのエージェントが完了するのを待ち、それらの構造化された出力を1つの結果に統合します。
対抗的検証:生成されたエージェントごとに、独立したエージェントを実行し、特定の評価基準やガイドラインに従ってその出力を対抗的に検証します。
生成してフィルタリング:特定のトピックに関する多数のアイデアを生成し、評価基準や検証プロセスに従ってフィルタリングし、重複を排除して、テスト済みで最高品質のアイデアのみを返します。
トーナメント方式:作業を分割するのではなく、エージェント同士を競わせる。N個のエージェントを生成し、それぞれ異なる方法で同じタスクを試行させる。その後、プロンプトまたはモデルによる審査を通じてエージェントの結果をペアごとに比較し、勝者が決まるまで繰り返す。
完了するまでループ:作業量が不明なタスクの場合、固定ラウンド数を設定せず、停止条件(例:新たな発見がなくなる、ログにエラーが表示されなくなる)を満たすまでエージェントを生成し続ける。
Claude Codeに動的ワークフローを作成させるタイミングや方法について、より創造的に考えることができる。ワークフローは、非技術的な作業においてさらに有用な場合があることに気づいた。

Bunはワークフローを使用して、ZigからRustへの書き換えを行った。具体的なプロセスについては、X上のJarredの投稿を参照してほしい。
重要なのは、タスクを一連の処理ステップ(例:呼び出し箇所、失敗テスト、モジュールなど)に分解することだ。各修正タスクに対して、ワークツリー内でサブエージェントを起動し、修正を実行させる。その後、別のエージェントに対抗的レビューを行わせ、最後に結果を統合する。エージェントに対して、リソース消費が大きいコマンドを使用しないよう明示的に指示することで、ローカルマシンのリソースを枯渇させることなく並列度を最大化できる。
Claude Codeで公開したディープリサーチスキル(/deep-research)は、動的ワークフローを利用している。具体的には、Web検索をファンアウトし、ソースを取得し、関連する主張を対抗的に検証し、引用付きのレポートを統合生成する。
しかし、この種のリサーチはWeb検索に限定されない。例えば、ClaudeにSlackのコンテキストからステータスレポートを整理させたり、コードベースを深く探索して特定の機能がどのように動作するかを調査させることも可能だ。

一方、レポートがあり、その中で引用されているすべての事実判断とソースを検証したい場合、ワークフローを生成できる。まずエージェントがすべての事実的主張を特定し、次に各主張に対してサブエージェントを起動して詳細に検証させる。さらに、検証エージェントにソース追跡を担当するサブエージェントをチェックさせ、そのソースの品質が十分に高いことを確認させることもできる。

特定の定性的指標に基づいてアイテムを並べ替えたい場合、Claude Codeがその指標の評価に優れていると信じているかもしれません。例えば、バグの深刻度に応じてサポートチケットを並べ替えるケースです。
しかし、1つのプロンプトで1000行以上の内容をソートしようとすると、品質が低下し、コンテキストウィンドウにも収まりません。より良い方法は、トーナメント方式を採用し、ペア比較エージェントからなるパイプラインを構築することです。比較による判断は絶対評価よりも信頼性が高いためです。あるいは、まず並列でバケットソートを行い、その後結果をマージします。各比較は独立したエージェントが実行するため、決定論的なループでトーナメント構造全体を維持でき、現在の実行順序のみをコンテキストに保持すれば済みます。

特定のルールセットがあるにもかかわらず、ClaudeがCLAUDE.mdでそれらのルールを確認しても、しばしば見落としたり適切に実行できなかったりする場合、ワークフローを作成してルールを列挙し、検証エージェントに1つずつチェックさせることができます。各ルールに対応する検証エージェントを設定します。「懐疑論者」のペルソナを持つサブエージェントを作成し、これらのルールが妥当かどうかを審査させることで、過剰な誤検出を防ぐのにも役立ちます。
逆のアプローチも可能です。最近の会話やコードレビューのコメントを掘り起こし、繰り返し行った修正を特定します。並列エージェントにこれらの問題をクラスタリングさせ、各候補ルールに対して敵対的検証を行い、それが実際のエラーを本当に防止できるかを判断します。最後に、フィルタリングを通過したルールをCLAUDE.mdに反映させます。
デバッグの最も効果的な方法は、相互に独立したいくつかの仮説を立て、それぞれをテストすることです。しかし、1つのコンテキストウィンドウしか使用しない場合、Claudeは自己選好バイアスに陥る可能性があります。
ワークフローは構造的にこれを防ぐことができます。複数のエージェントを起動し、互いに重複しない証拠に基づいてそれぞれ仮説を生成させます。例えば、異なるエージェントにログ、ファイル、データをそれぞれ確認させます。その後、各仮説は検証者と反論者のグループによる審査を受けることができます。
これはコードに限った話ではありません。ワークフローは営業分析(例:「なぜ3月の売上が減少したのか?」)、データエンジニアリング(例:「なぜこのパイプラインは失敗したのか?」)、またはあらゆる事後レビューにも活用できます。

どのチームにも、サポートキュー、バグレポート、または人間だけでは完全に処理できない未処理タスクが存在します。トリアージワークフローは、各項目を分類し、既に追跡されている問題と重複排除し、アクションを実行できます。これは修正を試みることを意味する場合もあれば、人間のユーザーにエスカレーションすることを意味する場合もあります。
トリアージワークフローに有用なパターンとして、隔離(quarantine)があります。つまり、信頼できない公開コンテンツを読み取るエージェントが高権限操作を実行するのを禁止し、高権限操作は専用のアクションエージェントが担当するようにします。
トリアージワークフローは /loop と組み合わせて使用することで、Claude にこの種のタスクを継続的に実行させることができます。
ソリューションの異なるパスを探索する必要がある場合、特にデザインや命名など美的判断を伴うタスクで、評価基準の恩恵を受けられる場合に、ワークフローは有用です。
Claude に多数の案を探索させ、レビューエージェントに「良い案とはどのようなものか」という評価基準を与えることができます。レビューエージェントが結果が基準を満たしたと判断した時点で、タスクは完了です。異なる案は、この評価基準に基づいてトーナメント方式でソートまたはフィルタリングすることもできます。
ワークツリー内で独立したエージェントを起動し、さらに比較エージェントを起動して、評価基準に基づいて特定の出力を比較・スコアリングすることで、特定タスク向けの軽量評価を実行できます。例えば、自分で作成したスキルが特定の基準を満たしているかどうかを評価し、改善できます。
モデルとインテリジェンスレベルのルーティング:自分のタスクに最適化された分類エージェントを作成し、使用するモデルを決定させることができます。タスクに多数のツール呼び出しが含まれ、実行前の調査が最適なモデルの特定に役立つ場合、この方法は有用です。
例えば、「auth モジュールの動作を説明する」というタスクの場合、最適なモデルは auth モジュール内のファイル数やコードベースの構造によって異なります。分類エージェントがまずこの調査を実行し、予想される複雑さに基づいてタスクを Sonnet または Opus にルーティングできます。
workflowsはまだ新しい機能です。多くのユースケースでは従来の方法をはるかに超える効果を発揮しますが、すべてのタスクに必要というわけではなく、トークン消費量が大幅に増加する可能性もあります。
workflowsは、Claude Codeの能力の限界を新しい方法で拡張できるタスクに使用するのが最適です。通常のプログラミングタスクでは、まず自問してみてください:このタスクは本当に追加の計算リソースを必要とするのか?例えば、ほとんどの従来のプログラミングタスクには、5人のレビュアーからなるチームは必要ありません。
動的ワークフロー用のプロンプトを作成する際は、詳細が多ければ多いほど効果が高くなる傾向があります。特に、前述の具体的なテクニックを使用する場合に顕著です。
workflowsは大規模なタスクにのみ適しているわけではありません。モデルに「クイックワークフロー」を使用するよう指示することもできます。例えば、ある仮説を検証するための迅速な対抗レビュープロセスを作成できます。
トリアージ、調査、検証ワークフローなど、繰り返し実行可能なworkflowsを使用する場合、それらを /loop と組み合わせて一定間隔で実行し、同時に /goal で厳格な完了条件を設定できます。
動的ワークフローに明確なトークン使用予算を設定することで、タスクが消費するトークン数を制限できます。プロンプトに「use 10k tokens」のような予算要件を記述すると、上限が10kトークンに設定されます。
workflowメニューで「s」キーを押すと、workflowsを保存できます。~/.claude/workflows に保存することも、skillを通じて配布することもできます。

skillを通じて共有したい場合は、JavaScript workflowファイルをskillフォルダに入れ、SKILL.mdで参照してください。より柔軟性を高めるために、Claudeに対して、skill内のworkflowsを逐語的に実行するスクリプトではなく、テンプレートとして扱うよう指示することもできます。

workflows は、Claude Code を拡張する便利な新しい方法です。これを出発点として捉えていただければと思います。最適な使い方については、まだ多くの発見が残されています。皆さんの発見をお聞かせください。
Thariq Shihipar と Sid Bidasaria(@sidbid)は、Anthropic のテクニカルチームメンバーで、Claude Code 関連の業務を担当しています。
[原文リンク]
BlockBeats の公式コミュニティに参加しよう:
Telegram 公式チャンネル:https://t.me/theblockbeats
Telegram 交流グループ:https://t.me/BlockBeats_App
Twitter 公式アカウント:https://twitter.com/BlockBeatsAsia