Post

Cheatsheet: ReAct vs Plan-and-Execute vs Reflexion, at a Glance

A quick-reference comparison of the three agent reasoning patterns that show up in nearly every framework, with the tradeoffs that actually decide which one fits a given task.

Cheatsheet: ReAct vs Plan-and-Execute vs Reflexion, at a Glance

Every agent framework implements some variant of these three reasoning patterns, usually under different names. This is the cheatsheet I wish existed the first time I had to pick one.

The Three Patterns

ReAct (Reason + Act) interleaves thought and action one step at a time: think, act, observe the result, think again. No upfront plan — the next step is decided based on what just happened.

Plan-and-Execute produces a full plan upfront, then executes each step, optionally replanning if a step fails or the situation changes.

Reflexion adds a self-critique loop on top of either pattern: after attempting a task, the agent evaluates its own output against the goal and retries with the critique folded into the next attempt.

flowchart LR
    subgraph ReAct
    A1[Think] --> A2[Act] --> A3[Observe] --> A1
    end
    subgraph "Plan-and-Execute"
    B1[Plan all steps] --> B2[Execute step 1] --> B3[Execute step 2] --> B4["..."]
    end
    subgraph Reflexion
    C1[Attempt] --> C2[Self-critique] --> C3{Good enough?}
    C3 -->|No| C1
    C3 -->|Yes| C4[Done]
    end

Comparison Table

 ReActPlan-and-ExecuteReflexion
Latency per stepLow — one LLM call per actionHigher upfront (planning), lower per step afterHighest — adds a critique pass
CostLowest for short tasksLower than ReAct for long tasks (fewer redundant re-reasoning steps)Highest — every attempt costs 2x+
Best forShort tasks, unpredictable environmentsLong tasks with knowable structureTasks where output quality matters more than speed
WeaknessCan wander on long tasks — no global plan to anchor toBrittle if the plan is wrong and replanning isn’t wired inCan loop without converging if the critique isn’t well-scoped
DebuggingEasy — trace reads linearlyMedium — need to check plan quality separately from executionHard — need to inspect both the attempt and the critique

When to Pick Each

Pick ReAct when: the environment is unpredictable enough that a plan would be stale by step 2. A customer support agent handling an open-ended conversation is a good fit — you genuinely don’t know what the next relevant action is until you see the previous result.

Pick Plan-and-Execute when: the task decomposes cleanly and you know the structure in advance. “Research a company, then draft an outreach email” is naturally plannable — you can write the two-step plan without needing to see intermediate results first. This is also the better choice when you want a plan a human can review before execution starts, which ReAct doesn’t naturally support.

Add Reflexion when: the cost of a wrong answer is high enough to justify the extra latency and spend, and there’s a way to actually evaluate the output that isn’t just “ask the model if it’s happy with itself” — a rubric, a test suite, a schema check. Reflexion without a real evaluation signal degrades into the model second-guessing itself for no measurable gain.

They Compose

These aren’t mutually exclusive. A common production pattern is Plan-and-Execute at the top level (a reviewable plan), with each step executed via ReAct (adapting to what that specific step’s environment returns), and Reflexion wrapping the final output before it ships.

1
2
3
4
5
6
7
plan = planner.create_plan(goal)  # Plan-and-Execute: upfront structure
for step in plan.steps:
    result = react_executor.run(step)  # ReAct: adapt within each step
final_output = synthesizer.run(plan.results)
critique = reflexion_critic.evaluate(final_output, goal)  # Reflexion: quality gate
if not critique.passed:
    final_output = synthesizer.run(plan.results, feedback=critique.notes)

Key Takeaways

  1. ReAct for unpredictable environments where the next action depends on what just happened
  2. Plan-and-Execute for tasks that decompose cleanly and benefit from a human-reviewable plan
  3. Reflexion only pays off with a real evaluation signal — not just the model re-reading its own output
  4. These compose — plan at the top level, react within a step, reflect on the final result

Part of the Agentic AI in Practice series — lessons from building production multi-agent systems.

This post is licensed under CC BY 4.0 by the author.