AIエージェントはプロンプトより「制御フロー」が9割|Hacker Newsで実証された半自動ワークフロー設計の全貌
「AIに作業を任せたのに、途中で全然違う方向に走り出した」「先週うまくいった自動化が、今週は同じ手順でも再現できない」――そんな経験、あなたにもないでしょうか。
実はこの問題、プロンプトをいくら磨いても根本的には解決しないという議論が、2026年8月時点でHacker Newsのエンジニアコミュニティで強く支持を集めています。スレッドのタイトルは「Agents need control flow, not more prompts(エージェントに必要なのは制御フローであって、プロンプトの追加ではない)」。個人・小規模事業者がAIを実務で使い倒そうとするとき、このテーマは直撃する話です。
本記事では、この議論の本質を整理しつつ、プロンプト職人から”ワークフロー設計者”に思考を切り替えるための具体的な手順と設計パターンを、実務レベルの解像度で解説します。
なぜ今「制御フロー」が話題になっているのか?背景と実務的な意味
「プロンプトを足す」アプローチの限界
AIエージェントを業務に使い始めた多くの人が最初に取る行動は、「もっと細かく指示を書く」ことです。出力がずれたら条件を追記し、品質が落ちたらルールを加え、最終的にプロンプトが1,000文字を超えてしまう。
ところが、これには構造的な問題があります。LLM(大規模言語モデル)は確率的な生成モデルです。同じプロンプトを与えても、毎回まったく同一の出力は保証されません。そのため、プロンプトに条件を積み上げるだけでは「どの条件を優先するか」という判断自体がモデルに委ねられてしまい、出力の安定性がむしろ下がる可能性があります。
Hacker Newsの議論で共有された観点は明快です。「品質改善の主戦場はプロンプトではなく、ワークフロー設計にある」。つまり、AIに渡す仕事の粒度と順序、そして分岐・検証・承認のロジックをコードや設定で固定してしまうことが、安定稼働への近道だという考え方です。
「Supervisor / Orchestrator / Worker」という3層モデルの登場
同スレッドで実践者たちが支持しているのが、役割を3つの層に分けた設計パターンです。各層の責務を明確に切り分けることで、どの層で問題が起きているかを特定しやすくなります。
- Supervisor(監督者)層:最終ゴールと「完了とみなす条件」だけを持つ。全体の進捗を監視し、目標からのズレを検知する。
- Orchestrator(指揮者)層:手順の順序・分岐・ループを管理する。どの条件でWorkerに何を依頼するかをコードや設定で明示する。
- Worker(実行者)層:単一の処理だけを行う。文章生成・データ取得・フォーマット変換など、1つのWorkerに1つの責務のみを持たせる。
この構造で重要なのは、AIのLLM呼び出しはWorker層だけに限定するという発想です。Supervisorが「完了条件を判断するときだけLLMを使う」のは許容範囲ですが、Orchestratorの分岐ロジックをLLMに任せると、また確率的な揺れが発生します。分岐はコードで書く。これが安定稼働の鍵です。
この3層モデルを初めて図に書き起こしてみると、自分のAI自動化フローがいかに「全部Orchestratorにやらせていたか」に気づく、という声は実践者の間でよく聞かれます。
半自動ワークフローの具体的な設計手順
ステップ1:「承認ポイント」を2箇所だけ決める
多くの個人・フリーランサーが陥るのが、「重要な判断はすべて人間が確認する」という全チェック方式です。これでは自動化のメリットが消えます。
Hacker Newsの実践知として共有されているのは、承認ポイントを2箇所だけに絞るという設計です。
- チェックポイント①:要件定義の確定時――AIが解釈した「やるべきこと」が正しいかを人間が確認する。この段階でズレを直さないと、後工程がすべて無駄になる。
- チェックポイント②:最終出力の送信前――クライアントへのメール、SNS投稿、請求書など、外部に出るものだけを人間がレビューする。
この2点の間にある処理(データ収集・要約・下書き生成・フォーマット変換など)はすべて自動進行にします。こうすることで、1日に発生するAI承認作業を最小限に抑えつつ、重大ミスを防ぐラインを引けます。
具体的な実装イメージで言うと、ワークフローツールのフローを以下のように組むことになります。
- トリガー(フォーム送信・メール受信など)
- Worker A:入力データを構造化
- Worker B:LLMで要件を解釈・要約
- → チェックポイント①:Slackまたはメールで人間に通知→承認/差し戻しで分岐
- Worker C:承認済み要件で下書き生成
- Worker D:フォーマット変換・添付ファイル生成
- → チェックポイント②:送信前レビュー通知→承認で外部送信
Orchestrator層で行う分岐判定(「承認されたか?差し戻されたか?」)は、人間の入力値をif/elseで処理するだけです。ここにLLMを挟む必要は一切ありません。
承認・差し戻しの分岐は、以前はAIに「これは承認とみなしていいか」を都度判定させていました。返信の言い回しが「OK」「これで進めて」「了解です」のように毎回違うと、月に一度くらいの頻度で、本当は差し戻しのつもりだった返信が承認として処理され、公開の一歩手前まで進んでしまうことがありました。今は、Slackの返信ボタンから受け取る値を「approved」か「rejected」の2択に固定し、その値をそのままif文で分岐させる形に変えています。人間の返信自体の言い回しは相変わらずバラバラですが、AIに解釈させる工程をなくしたことで、分岐の結果がブレることはなくなりました。
ステップ2:出力のブレを「仕様化」する実験的アプローチ
Hacker Newsで共有されている実践の中で、個人事業主にとって特に再現性が高いのが、「同じ入力を複数回・別セッションで走らせて差分を比較する」手法です。
やり方はシンプルです。
- 同一の入力データを用意する
- AIのセッションを3回リセットし、同じWorkerプロンプトを実行する
- 3回分の出力を並べて比較し、「毎回変わる部分」と「毎回安定している部分」に分類する
- 「毎回変わる部分」を、ワークフロー設計上の「不安定ゾーン」として記録する
この実験によって、「どの条件がLLMの出力を不安定にしているか」を特定できます。不安定ゾーンが判明したら、その部分の処理を「LLMに任せる」から「コードで固定する」に置き換えるか、入力データの構造を見直します。
たとえば、クライアントへの提案文生成Workerで「トーン」が毎回ブレるなら、トーンをLLMに判断させるのをやめ、Orchestratorが入力データのカテゴリに基づいてトーンを固定値として渡す設計に変えます。これで出力の品質ばらつきが大幅に減る可能性があります。
ステップ3:失敗ログを「4分類」して制御フローだけを修正する
AIエージェントが失敗したとき、多くの人は「プロンプトを直す」という行動を取ります。しかし、Hacker Newsの議論が指摘している通り、失敗の原因はプロンプト以外にある場合がほとんどです。
失敗ログを次の4カテゴリで分類することを勧めます。
- ①入力不足:Workerに渡すデータが不完全だった(例:住所フィールドが空のまま渡された)
- ②権限不足:Workerがアクセスすべきシステムへの接続が切れていた(APIキーの期限切れ、認証エラーなど)
- ③分岐条件不足:Orchestratorが想定外の状態(nullやエラーレスポンス)を正しくハンドリングしていなかった
- ④検証不足:Workerの出力を次のWorkerに渡す前に、フォーマットや必須項目を確認するステップがなかった
このように分類すると、修正すべき箇所が「プロンプト」ではなく「フロー内のどのノード」かが明確になります。プロンプトを修正するのは④検証不足でも解決しない、真にLLMの生成内容に問題がある場合だけ、というのが本来あるべき順序です。
Claude CodeやKilo Codeが示すもう一つの応用パターン
Hacker Newsの同文脈では、Claude CodeやKilo Codeを使った開発ワークフローの事例も共有されています。これらの事例に共通するのは、「仕様化→実装→検証」という工程を半決定的に回す設計です。
ポイントは「半決定的」という言葉にあります。LLMに全工程を自由に実行させるのではなく、工程の区切りごとに人間または固定ロジックが検証ゲートを設け、合格しなければ次工程に進まない仕組みにする。これは前述の2チェックポイント設計と本質的に同じ考え方です。
また、同じ議論の中では「必要な時だけスキルを読み込む」OpenSkills的な設計も言及されています。エージェントにすべての能力を常時持たせるのではなく、処理の文脈に応じて必要なスキル(プロンプトテンプレートや外部ツール接続)をその都度ロードする設計です。これにより、コンテキストウィンドウの無駄な消費を防ぎ、Worker層の処理精度を維持しやすくなると考えられています。
個人・フリーランサーの実務に置き換えると、「ブログ記事生成エージェント」と「見積書生成エージェント」を1つの巨大なエージェントで兼用しようとするのではなく、目的別にWorkerを分けて組み合わせる設計に近いイメージです。
この設計思想が個人事業主の業務にもたらす具体的な変化
「再現性」が上がると別クライアントへの横展開が容易になる
制御フローを固定することの最大のメリットは、1回うまくいった仕組みを別案件・別クライアントにそのまま横展開できるようになる点です。プロンプト頼みの自動化は、プロンプト自体がそのクライアントの文脈に深く依存していることが多く、他の案件に使おうとすると大幅な書き直しが必要になります。
一方、Supervisor / Orchestrator / Workerの3層で設計し、変動する部分(クライアント名・業種・トーン)を入力変数として外出ししておけば、フロー自体はテンプレートとして再利用できます。クライアントごとの違いは入力データを変えるだけで吸収できます。
属人化しない「引継ぎ可能な自動化」が作れる
フリーランスや小規模チームでありがちなのが、「AIで自動化したけど、設定した本人しか使えない」という状況です。制御フローを明示的に設計し、各Workerの役割と入出力を文書化しておくと、チームメンバーや外注先への引継ぎが大幅に楽になると考えられます。これはすぐに大きな効果が出るわけではないかもしれませんが、事業が成長する過程で確実にボトルネック解消につながる設計上の先行投資です。
注意点:この設計が効果を発揮しないケース
制御フロー設計は万能ではありません。以下のケースでは効果が限定的になる可能性があります。
- タスクが毎回完全に異なり、パターン化できない場合:フローを固定するには、ある程度の繰り返し性が必要です。
- 入力データの品質が極端に低い場合:フォームや受信データにバラつきが多すぎると、Worker層に渡すデータの構造化コストが高くなります。まずデータ入力の標準化を先に行う方が効率的です。
- ワークフローツールの操作に不慣れな段階:3層設計は概念的に分かりやすくても、実装には一定の学習コストがかかります。最初は2層(OrchestratorとWorkerのみ)で試して、慣れてからSupervisorを追加するアプローチが現実的です。
あわせて読みたい
まとめ:プロンプト職人を卒業して「フロー設計者」になる
Hacker Newsで盛り上がっているこの議論の本質は、シンプルです。AIエージェントの安定性と再現性は、プロンプトの量ではなく、制御フローの設計品質で決まる。
今日から試せることを3つに絞ってまとめます。
- ①役割を3層に分ける:今使っている自動化フローを「Supervisor / Orchestrator / Worker」のどれかに割り当てて図に書いてみる。割り当てられない処理があれば、そこが設計の曖昧なゾーンです。
- ②承認ポイントを2箇所だけ決める:「要件確定時」と「外部送信前」の2点以外は自動進行にする。これだけで日常の承認作業コストは大幅に下がる可能性があります。
- ③失敗を4分類する習慣をつける:次にAIフローが失敗したとき、まずプロンプトを触る前に「入力不足・権限不足・分岐条件不足・検証不足」のどれかを確認する。これが本質的な改善サイクルの入口です。
AIツールの進化は速いですが、設計思想の本質は変わりません。今のうちに「プロンプトを書く人」から「フローを設計する人」へのシフトを済ませておくことが、長期的な競争力につながると考えられます。まず自分の既存フローを1つ取り上げて、3層に分類するところから始めてみてください。


コメント