[AI書房] 第6章 WATフレームワーク: ワークフロー、エージェント、ツール
Claude Code完全攻略
第2部
第6章 WATフレームワーク: ワークフロー、エージェント、ツール
金京鎮
導入
冷蔵庫を開けて材料を取り出し、レシピを見ながらケーキを焼く場面を想像してみてください。レシピがあり、料理人がおり、小麦粉や卵、砂糖といった材料があります。これら三つを適切に分離しておけば、誰でも同じケーキを作ることができます。
レシピを変えれば別のケーキができ、材料を変えれば味が変わり、料理人が変わってもレシピに従えば似たような結果を得ることができます。Claude Codeにおけるエージェントの作業フローを構築する構造は、まさにこの原理に従っています。
ケーキの比喩:レシピ(ワークフロー)、材料(ツール)、シェフ(エージェント)
WATフレームワークは三文字の略語です。Wはワークフロー(Workflow)、Aはエージェント(Agent)、Tはツール(Tool)を意味します。
ワークフローはレシピです。「このケーキを作るには、まず卵を2つ割り、小麦粉を1カップ加え、180度で30分焼く」のように、作業の目標・順序・条件を自然言語で記述した文書です。ファイル形式はマークダウン(Markdown、.md)であり、プログラミング言語ではなく日常の文で記述されます。
ツールは材料であり、調理器具です。卵を割る行為、オーブンを予熱する行為、生地を混ぜる行為 — それぞれが一つのツールです。技術的にはPythonスクリプトファイル(.py)で記述され、API呼び出し、データ変換、ファイル生成といった実際の実行動作を担当します。
エージェントはシェフです。Claude Codeそのものです。レシピ(ワークフロー)を読み、必要な材料(ツール)を選んで、正しい順序で使用します。実行中に問題が生じれば判断を下します。オーブンの温度が高すぎれば下げ、小麦粉が不足すれば代替材料を探します。
核心は、これら3つが分離されている点にあります。レシピを変更すれば別の成果物を作ることができ、ツールを交換すれば同じレシピでも別のサービスに接続でき、シェフ(エージェント)はあらゆるレシピとツールの組み合わせを扱うことができます。
ワークフローはマークダウン、ツールはPython:なぜ分離するのか
ワークフローファイルを開くと、このような構造になっています。
日常語で記述されています。プログラミングを知らない方でも読むことができます。ワークフローファイルは、エージェントに対する業務指示書であると同時に、人間が検証できる文書でもあります。
一方、ツールファイルは Python コードです。discover_competitors.py を開くと、API 呼び出しのロジック、データパースのコード、エラー処理のルーチンが記されています。このコードを直接読み直したり修正したりする必要はほとんどありません。コードはエージェントが生成し、エージェントが修正します。ユーザーが気にすべきは、ワークフローファイルの内容、つまり「何をしたいか」です。
分離の理由は役割分担にあります。ワークフローは「何を」指示し、ツールは「どのように」実行します。これらを混在させると、作業指示を変更したい際にコードをいじらなければならなくなり、コードを修正したい際に指示文書が混乱してしまいます。分離されているため、ワークフローのみを修正して分析範囲を変更したり、ツールのみを交換して別の API に接続したりすることが可能になります。
確率的推論と決定的実行の分離が生む信頼性
WATフレームワークがワークフローとツールを分けるのには、技術的に深い理由があります。AIエージェントの推論は、毎回少しずつ異なる可能性があります。同じ質問に対しても、毎回わずかに異なる回答を返すことがあります。一方、コードの実行は、同じ入力であれば同じ結果が得られる仕組みです。同じ入力を与えれば、常に同じ出力を生成します。
エージェントがすべてのステップを直接処理すると、確率的な推論が累積され、精度が急激に低下します。一つのステップの精度が90%であると仮定しましょう。二つのステップを経ると81%(0.9 × 0.9)になります。五つのステップを経ると59%(0.9⁵)まで急落します。十のステップであれば、わずか35%に過ぎません。
WATフレームワークはこの問題を解決します。エージェントは「どのツールをどの順序で使用するべきか」を判断する役割のみを担います。実際のデータ処理、API呼び出し、ファイル生成といった実行は、決定論的なコード(ツール)が担当します。エージェントの確率的な判断は、少数の重要な意思決定ポイントに集中し、残りの実行プロセスはコードが一貫して処理します。その結果、全体のワークフローの信頼性が向上します。
5段階連続作業の精度の罠:90%が59%に低下する理由
この計算をもう少し具体的に掘り下げてみましょう。
AI モデルに、メールを読み、その要点を要約し、カテゴリ分類を行い、優先順位を付け、回答の草案を作成させたとしましょう。これは5 つのステップです。各ステップでモデルが正しい判断を下す確率が90% だと仮定すると、5 つのステップすべてを正しく通過する確率は約59% となります。つまり、10 回中4 回はどこかで誤りが生じるということです。
この問題に対する解決策は「関心の分離(Separation of Concerns)」です。メールを読む行為、テキストからキーワードを抽出する行為、カテゴリタグを付与する行為を、それぞれ独立したツールとして作成します。各ツールは決定的に動作します。エージェントは、「このメールに対して分類ツールを実行し、その結果に基づいて優先順位ツールを実行せよ」という判断のみを下します。
判断の複雑さが低下することで、全体の精度が向上します。
これが WAT フレームワークを実務で使用する理由です。エージェントに「すべて任せて」と投げつけるよりも、各ステップを独立したツールに分割し、エージェントがそれらを組み合わせさせる方が、はるかに安定した結果をもたらします。
自己改善ループ:エラーから学び、ワークフローを更新する構造
WATフレームワークには、自己改善ループ(Self-Improvement Loop)が組み込まれています。エージェントがツールを実行中にエラーに遭遇すると、エラーメッセージを読み、その原因を分析します。そしてツールのコードを修正し、修正後のツールが正常に動作するかを確認します。その後、ワークフローファイルに「この状況ではこのように処理する」という例外処理項目を追加します。
例えば、競合他社のウェブサイトをウェブ情報収集するツールが、API呼び出しの上限を超えた場合を考えましょう。エージェントはエラーメッセージから「Rate Limit Exceeded(レート制限超過)」を読み取ります。そしてAPIドキュメントを検索し、バッチエンドポイントが存在するか確認します。バッチエンドポイントが見つかったら、ツールコードを修正してバッチリクエスト方式へ切り替えます。修正されたツールを検証します。
正常動作を確認した後、ワークフローファイルに「API上限超過時はバッチエンドポイントを使用」という項目を追加します。
次に同じワークフローを実行すると、エージェントは更新されたワークフローを読み取り、最初からバッチ方式を使用します。同じエラーを二度と経験しません。ワークフローを繰り返し実行するほど、例外処理が蓄積され、ツールのコードが洗練され、全体システムがより堅牢になっていきます。
ファイル構造の設計:workflows、tools、tempフォルダの役割
エージェントが作成するファイルが増えるほど、整理体系が必要になります。WATフレームワークは3つの主要なフォルダを使用します。
「workflows/」フォルダにはワークフローファイルが格納されます。競合他社分析用ワークフロー、ニュースレター作成用ワークフロー、リード情報収集用ワークフローなど、それぞれが1つのMarkdownファイルです。
「tools/」フォルダにはツールファイルが格納されます。Web情報収集ツール、PDF生成ツール、メール送信ツールなど、それぞれが1つのPythonファイルです。
「temp/」フォルダは一時ファイル用の領域です。作業中に生成される中間データ、デバッグ用のログ、一時出力物などがここに保存されます。作業完了後に整理しても問題ないファイルたちです。
このフォルダ構造をエージェントに指示するのが「claude.md」ファイルの役割の一つです。「claude.md」に「ワークフローはworkflows/フォルダに、ツールはtools/フォルダに、一時ファイルはtemp/フォルダに保存せよ」と記載しておけば、エージェントはその規則に従います。
このファイルなしで作業すると、エージェントがすべてのファイルをプロジェクトの最上位に無秩序に積み重ねてしまいます。ファイルが増えるほど混乱は大きくなり、エージェントもどのツールがどこにあるかを探すのに時間を浪費してしまいます。
claude.md ファイルをプロジェクトに追加し、エージェントに「このファイルを読んでプロジェクトを初期化してください」と伝えると、エージェントが自動的にフォルダ構造を生成します。左側のナビゲーションに workflows、tools、temp のフォルダが表示され、各フォルダ内にガイドファイル(README)が配置されます。この初期化プロセスは、新しいプロジェクトを開始するたびに一度だけ実行すれば十分です。
[図表 05-01: WAT フレームワークの構造図。エージェント(A)がワークフロー(W)を読み、ツール(T)を実行する三角関係。ワークフローフォルダ、ツールフォルダ、一時フォルダの配置が示されています。]
ケーキの比喩に戻りましょう。レシピを整理してしまえば、同じケーキをいつでも再現でき、材料を変えるだけでバリエーションを試すこともできます。シェフが新人に変わっても、レシピに従えば似たような結果を得られます。ワークフローとツールを分離して管理することが、まさにこの効果を生み出すのです。
しかし、シェフにレシピを渡す前に、シェフが作業を行う方法そのものを設定しておく必要があります。それが claude.md の役割であり、エージェントの作業記憶がどのように機能するかを理解していなければ、適切な設定を行うことはできません。




