古典パターン ─ ReAct・Reflexion・Plan-and-Act・Voyager
ch2 の 8 パターン、ch3 の 6 トポロジーは、すべて 2022-2025 年の論文と実装の蓄積の上に立っている。本章では、現代のエージェント設計に深く影響を与えた 5 つの古典パターンを整理する。
これらを知っておくと、新しいフレームワークが出てきたときに「ああ、これは ReAct の発展形だな」「これは Reflexion を framework に組み込んだものだな」と即座に評価できるようになる。フレームワークの ChangeLog を読むスピードが上がる。
5 つの古典パターン早見表
| 論文 | 出典 | 核心 | 本作の 8 パターンへの継承 |
|---|---|---|---|
| ReAct | Yao et al., ICLR 2023 | Thought / Action / Observation の交互生成 | Augmented LLM + Autonomous Agent Loop の標準形 |
| Reflexion | Shinn et al., NeurIPS 2023 | 失敗を「言語的フィードバック」に変換、エピソードメモリへ保存 | Evaluator-Optimizer |
| Plan-and-Act | Erdogan et al., ICML 2025 | Planner / Executor を完全分離、長期 horizon タスクで合成データで Planner 強化 | Orchestrator-Workers の長 horizon 版 |
| Tree of Thoughts | Yao et al., NeurIPS 2023 | 思考を木として展開、評価 + backtracking で探索的推論 | Parallelization (voting) + Evaluator-Optimizer の合成 |
| Voyager | Wang et al., 2023 | スキル(実行可能コード)を蓄積する skill library + 自動カリキュラム | Skills を溜めるエージェントの原型、Anthropic Skills の思想的ルーツ |
1. ReAct ── 推論と行動の交互生成
Yao et al. “ReAct: Synergizing Reasoning and Acting in Language Models” (ICLR 2023) arxiv.org/abs/2210.03629
核心アイデア:LLM の出力を Thought / Action / Observation の 3 種類に分けて交互生成させる。
Thought 1: ユーザーは天気を知りたい。今日の東京の天気を調べる必要がある。
Action 1: search_weather("Tokyo", "today")
Observation 1: 晴れ、気温 22-28°C、降水確率 10%
Thought 2: 答えは見つかった。応答を組み立てる。
Action 2: respond("今日の東京は晴れ、気温 22-28°C、降水確率 10% です")
なぜ重要か:純粋な Chain-of-Thought(CoT)の問題は ハルシネーションだった。LLM が頭の中だけで推論を完結させると、外部世界の事実と乖離する。ReAct は「推論」と「外部世界との対話」を交互にすることで、ハルシネーションを抑える。
現代への影響:
- LangGraph の agent loop は ReAct の実装
- OpenAI Agents SDK の agent loop も ReAct
- Anthropic の tool use のメンタルモデルも ReAct
- 「Augmented LLM の標準形」と言える
業務投入では、エージェントが内部で何を考えて何をしたかを Thought / Action / Observation の 3 列に分解してログるだけで、debug 可能性が大きく上がる。
2. Reflexion ── 自己反省ループ
Shinn et al. “Reflexion: Language Agents with Verbal Reinforcement Learning” (NeurIPS 2023) arxiv.org/abs/2303.11366
核心アイデア:失敗の結果を 言語的フィードバックに変換し、エピソードメモリに保存して次の試行で改善する。重み更新なしで「学習」する。
sequenceDiagram
participant A as Agent (Actor)
participant E as Environment
participant R as Self-reflection
participant M as Episodic Memory
A->>E: 試行 1
E->>A: 結果(失敗)
A->>R: なぜ失敗したか考えろ
R->>M: 「ツール X を呼ぶ前にバリデーションが必要だった」
M->>A: 記憶を参照
A->>E: 試行 2
E->>A: 結果(成功)
なぜ重要か:従来の RL は重みを更新するため、コスト・時間・データ量が必要だった。Reflexion は 重みを更新せず、自然言語のメモを残すだけで改善する。LLM の文脈学習能力を最大限に活用したパターン。
現代への影響:
- 第1部 ch3 で扱った Effective Harness の
CHANGELOG.md(失敗履歴ファイル)は、Reflexion の実装パターンそのもの - LangGraph の reflection サンプル
- OpenAI Codex Auto-Review の retroactive review
- Anthropic 8 パターンの Evaluator-Optimizer
業務投入では、「失敗を捨てずに記憶として残す」という設計判断が、長時間運用するエージェントの品質を底上げする。
3. Plan-and-Act ── 計画と実行の完全分離
Erdogan et al. “Plan-and-Act: Improving Planning of Agents for Long-Horizon Tasks” (ICML 2025) arxiv.org/abs/2503.09572
核心アイデア:Planner(高レベル計画) と Executor(環境固有のアクション) を完全に分離する。長期 horizon タスクで合成データを使って Planner を強化する。
第1部 ch3 でも扱ったが、本章ではパターンとして再整理する。
graph TB
Goal[Goal]
Planner[Planner<br/>大モデル<br/>計画 5-10 ステップ]
Executor[Executor<br/>小モデル<br/>各ステップ実行]
Env[Environment<br/>tools / browser / API]
Replan[Replan loop]
Goal --> Planner
Planner -->|計画| Executor
Executor -->|tool call| Env
Env -->|observation| Executor
Executor -->|step 完了| Replan
Replan --> Planner
ベンチ実績:WebArena-Lite で 57.58%、WebVoyager(テキスト)で 81.36% という SOTA。
なぜ重要か:
- Planner と Executor を別モデルにできる(Lead に高価モデル、Sub に安価モデル)
- Planner だけを別途強化できる(合成データで訓練)
- 長期 horizon でも計画書を保持できる
現代への影響:
- 本作の Orchestrator-Workers パターンの長 horizon 版
- Magentic-One の Task Ledger / Progress Ledger はこの実装
- Anthropic Multi-agent Research の Lead/Sub 分離も同型
4. Tree of Thoughts ── 探索的推論
Yao et al. “Tree of Thoughts: Deliberate Problem Solving with Large Language Models” (NeurIPS 2023) arxiv.org/abs/2305.10601
核心アイデア:思考を木として展開し、各ノードを評価して、必要なら backtracking で別の経路を探索する。
graph TB
Root[問題]
A1[アプローチ A]
A2[アプローチ B]
A3[アプローチ C]
A1a[A の続き 1<br/>評価: 良]
A1b[A の続き 2<br/>評価: 悪]
A2a[B の続き 1<br/>評価: 中]
Root --> A1
Root --> A2
Root --> A3
A1 --> A1a
A1 --> A1b
A2 --> A2a
A1a -.最良.-> Final[解]
なぜ重要か:単純な CoT は一直線の推論だが、現実の問題は分岐がある。ToT は AlphaGo のような探索を LLM の推論に持ち込んだ。
現代への影響:
- 数学・パズルなど探索的問題で部分的に採用
- Self-Consistency(多パス + 多数決)の発展形
- 業務投入では純粋な ToT は重すぎて使われにくいが、「複数案を評価して選ぶ」設計として影響を残している
- 本作の Parallelization (voting) + Evaluator-Optimizer の合成パターンとして整理できる
5. Voyager ── スキル蓄積エージェント
Wang et al. “Voyager: An Open-Ended Embodied Agent with Large Language Models” (2023) arxiv.org/abs/2305.16291
核心アイデア:エージェントがスキル(実行可能コード)を蓄積する skill library を持ち、新しいタスクに直面したら過去のスキルを再利用する。Minecraft 環境で、自動カリキュラム + iterative prompting + skill library で長期にわたる探検をやり遂げた。
graph TB
AC[Auto Curriculum<br/>次に何をするか]
Agent[Voyager Agent]
SL[(Skill Library<br/>過去スキルの DB)]
Env[Minecraft]
IP[Iterative Prompting<br/>失敗したら直す]
AC -->|タスク提案| Agent
Agent -->|search| SL
SL -->|過去スキル| Agent
Agent -->|action| Env
Env -->|feedback| IP
IP -->|改善| Agent
Agent -.新スキル.-> SL
なぜ重要か:従来のエージェントは その場限りだった。Voyager は 「自分のスキルを溜めて再利用する」というメンタルモデルを提示した。
現代への影響:
- Anthropic Skills(progressive disclosure で metadata → SKILL.md 全体 → bundled files、と必要なときだけロード)の思想的ルーツ
- Claude Code の Skills 機構
- LangChain の
Toolを「再利用可能な skill」として扱うメンタルモデル - 第3部(運用工学編)で扱う「self-improving agent」の先駆け
古典パターン × 8 パターンの対応マップ
5 つの古典が、本作の 8 パターンにどう継承されているかを整理する。
graph TB
classic1[ReAct<br/>2022-10]
classic2[Reflexion<br/>2023-03]
classic3[Tree of Thoughts<br/>2023-05]
classic4[Voyager<br/>2023-05]
classic5[Plan-and-Act<br/>2025-03]
P1[Augmented LLM]
P2[Autonomous Agent Loop]
P3[Evaluator-Optimizer]
P4[Parallelization]
P5[Orchestrator-Workers]
P6[Harness + Sandbox]
classic1 --> P1
classic1 --> P2
classic2 --> P3
classic3 --> P4
classic3 --> P3
classic4 --> P6
classic5 --> P5
これらは 時系列で進化してきた:
2022-10: ReAct ── 推論と行動の交互(基盤)
2023-03: Reflexion ── 失敗を言語化して学習(メモリ)
2023-05: Tree of Thoughts ── 探索的推論(並列)
2023-05: Voyager ── スキル蓄積(永続性)
2025-03: Plan-and-Act ── 長 horizon の計画分離(時間軸)
2026: Harness+Sandbox ── 統合実行基盤(業界標準パターン化)
つまり、過去 4 年で「単一エージェントの推論」から「常時稼働するエージェント基盤」へ、研究と実装が共進化した。
なぜ古典を読む価値があるか
「フレームワークの ChangeLog を読めば十分では?」という疑問に答える。
古典は「なぜそう設計されているか」を教える。たとえば:
- LangGraph の
interrupt()は何のためにあるか → Reflexion の自己反省を framework に持ち込んだから - OpenAI Agents SDK の
Agent.as_tool()は何のためにあるか → Plan-and-Act の Executor を tool として呼ぶため - Anthropic Skills の progressive disclosure は何のためにあるか → Voyager の skill library を context window 制約下で実装するため
「なぜ」を知らないと、フレームワークの API を写経するだけになる。古典を読むと、「自分のユースケースでこの API を使うか / 使わないか」を判断できるようになる。
❌ アンチパターン:ReAct ループに無限に入る
症状
─────────
- エージェントが Thought → Action → Observation を 50 回繰り返しても完了しない
- 同じツールを繰り返し呼ぶ
- トークンコストが膨れる
根本原因
─────────
- ReAct ループの終了条件が曖昧
- 失敗履歴を残していない(Reflexion が組み込まれていない)
- 計画が無い(Plan-and-Act が組み込まれていない)
脱出法
─────────
1. ステップ上限を設ける(例:30 step で打ち切り)
2. CHANGELOG.md に失敗履歴を残す(同じ袋小路に入らない)
3. 5 step 以上のタスクは Plan-and-Act パターンに切り替え
4. ループ検知ロジック(同じ tool call が 3 回以上連続したら HITL に escalate)
業務投入の観点で重要な 3 点
- ReAct は Augmented LLM の標準形:エージェントが内部で何を考えて何をしたかを Thought/Action/Observation で 3 列分解してログる。これだけで debug 可能性が大きく上がる
- Reflexion の
CHANGELOG.mdパターンを必ず実装する:失敗を捨てずに記憶として残す。長時間運用するエージェントの品質を底上げする - Plan-and-Act で Planner と Executor を分離:Lead に高価モデル、Sub に安価モデル。コスト効率が大きく変わる
次章への接続
ch5 では、HITL(Human-in-the-Loop)の設計を扱う。古典パターンを実装したエージェントを、業務に乗せるには人間との接点を設計する必要がある。差し込み箇所を 6 つ、実装パターンを 6 つ、リスクを 4 つで整理する。
この章のまとめ
- 5 つの古典が現代のエージェント設計の基礎:ReAct / Reflexion / Plan-and-Act / Tree of Thoughts / Voyager
- 時系列で「単一推論」→「常時稼働基盤」へ進化:2022 年 ReAct から 2026 年 Harness+Sandbox まで
- 古典は「なぜそう設計されているか」を教える:フレームワークの API を写経でなく判断で使えるようになる
- CHANGELOG.md(Reflexion)と Planner/Executor 分離(Plan-and-Act)は実装の現実解