MicroArchitectures
H.Ueda
Programmer
ブログ
Claude Codeの隠れた新機能「Workflow」:決定論的なマルチエージェント制御を実現する
今回は、Claude Code Workflows: How to Set-Up The New Hidden Multi-Agent Feature という記事を参考に、Claude Codeのバイナリ内に静かに実装されている「Workflow」機能について自分なりに整理してみました。
まだ正式リリースじゃ無さそうですが…。参考まで。
AIエージェントを実務で運用する際、出力の「揺れ」や「非決定性」に悩まされることが少なくありません。このWorkflow機能は、プロンプトではなくJavaScriptによってエージェントの動きを制御するという、非常に興味深いアプローチをとっています。
Workflowとは何か:プロンプトではなく「コード」による制御
従来のAIエージェントの連携(マルチエージェント)は、多くの場合、エージェント自身の推論に「次は何をするか」を任せていました。しかし、今回見つかったClaude CodeのWorkflow機能は、JavaScriptファイル(.js)で実行フローを記述するという仕組みです。
これは、エージェントのオーケストレーション(調整)を確率的な推論から、決定論的なプログラムへと移し替えることを意味します。
仕組みのイメージ
この機能における役割分担は、以下のようなイメージです。
- JavaScript(あなた): 指揮者。ループ、条件分岐、エラーハンドリングなど、全体の「流れ」を100%制御します。
- Claude(エージェント): 演奏者。
agent()関数が呼ばれたときだけ、特定のタスクを実行するために起動します。
flowchart TD
Start([ワークフロー開始]) --> JS[JavaScriptロジック実行]
JS --> Loop{ループや条件分岐}
Loop -->|タスク実行| AgentCall["agent() 呼び出し"]
AgentCall -->|結果返却| JS
Loop -->|完了| End([ワークフロー終了])
subgraph LLM_Token_Area [トークン消費エリア]
AgentCall
end
このように、エージェントが「勝手に判断して迷走する」余地を減らし、開発者が意図した通りのステップで処理を進めることができます。
既存の機能との違い
Claude Codeには、すでに「サブエージェント」や「エージェントチーム」といった機能が存在しますが、Workflowはそれらと明確に役割が異なります。
| 機能 | 制御の主体 | 再現性 | 特徴 |
|---|---|---|---|
| サブエージェント | プロンプト(アドホック) | 低め | セッション中にその場で「〜を調べて」と頼む用途 |
| エージェントチーム | モデルの推論(Git連携) | 中程度 | 複数のエージェントが協調して大規模な開発を行う |
| ワークフロー | JavaScriptスクリプト | 高い | 定型的な多段階タスクを確実に実行する |
たとえば、ビデオ変換のパイプライン(検査 → 変換 → 検証 → レポート)を作る場合、サブエージェントだと毎回手順が微妙に変わる可能性があります。一方、Workflowであれば「検査の結果がAならBへ進む」といったロジックをJSで固定できるため、実行のたびに挙動が変わる心配が少なくなります。
Workflowのメリット:開発者にとっての安心感
実際にこの仕組みを導入すると、以下のようなメリットがあるかと思います。
1. コンテキストの分離と節約
agent() を呼び出すたびに、それぞれの実行環境はクリーンな状態で始まります。不必要な過去のやり取り(コンテキスト)が混ざってモデルが混乱するのを防げますし、必要な情報だけをJS側でフィルタリングして渡すことで、トークンの節約にもつながるかもしれません。
2. 中断と再開
純粋なプロンプトベースの連鎖では、途中でエラーが起きると最初からやり直しになることが多々あります。WorkflowはJavaScriptですので、どこまで処理が進んだかをステートとして管理しやすく、失敗したステップからのリトライもプログラムとして記述可能です。
3. 複雑な条件分岐の実現
「ファイルサイズが100MB以上なら要約エージェントに回し、それ以下なら詳細分析エージェントに回す」といった、LLMに判断させるには少し不安な数値ベースの分岐も、JS側で確実に行えます。
セットアップの現状
元記事によると、この機能は現時点(2024年4月時点)で公式ドキュメントには記載されておらず、環境変数の設定によって有効化される「隠し機能」のような状態とのことです。バイナリ内では活発にアップデートが行われているようで、Anthropicが今後、より正式な形で公開する準備を進めているのかもしれません。
記述言語がYAMLや独自のDSL(ドメイン固有言語)ではなく、汎用的なJavaScriptである辺りに、開発者フレンドリーな設計思想を感じます。
まとめ
Claude CodeのWorkflow機能は、「AIに何でも任せる」のではなく、「構造は人間が作り、中身をAIが埋める」という、実務において非常にバランスの良いアプローチを提供してくれます。
現在はまだ隠し機能に近い状態ですが、再現性が求められるエージェント開発においては、こちらが主流のスタイルになっていくのではないかと感じています。手動で複数のターミナルを操作してエージェントを使い分けている方は、スクリプトによる自動化を検討してみる価値がありそうです。
参照記事
- Claude Code Workflows: How to Set-Up The New Hidden Multi-Agent Feature
- I Turned Karpathy’s Autoresearch Into a Agent Skill For Claude Code That Optimizes Anything — Here Is the Architecture
- Why Every Developer Needs Claude Code Sub Agents (And How I Build Them)
- 97% of Developers Kill Their Claude Code Agents in the First 10 Minutes (Here’s How The 3% Build Unstoppable Systems)
- How the Creator of Claude Code Actually Uses It: 13 Practical Moves
- I Tested This Autonomous Framework That Turns Claude Code Into a Virtual Dev Team