If ReAct was a spark, Pre-Act is a blueprint. In the paper Pre-Act: Multi-Step Planning and Reasoning Improves Acting in LLM Agents, Mrinal Rawat et al. challenge the single-step cognitive paradigm of ReAct, offering instead a roadmap for how agents should plan, reason, and act—especially when tool use and workflow coherence matter.
What Is ReAct? A Quick Primer
The ReAct framework—short for Reasoning and Acting—is a prompting strategy that allows an LLM to alternate between thinking and doing in a loop. Each iteration follows this pattern:
- Thought: The model reasons about the current situation.
- Action: It proposes a tool to invoke or a next move.
- Observation: It receives feedback from the tool or environment.
While this loop gives LLMs basic interactive agency, it’s often myopic—reasoning is shallow, and there’s no notion of a global plan. ReAct also struggles with tools that require multiple steps or have complex dependencies.
Pre-Act: Reasoning as a Dynamic Plan
Pre-Act enhances this structure by producing an explicit multi-step plan up front. Each step is not only an action but is tied to a reasoned intention and revisited as new observations arrive. This approach resembles how a human would tackle a task: set the full agenda, then revise it adaptively.
The process involves:
- Creating a plan
S = {s1, s2, ..., sn, s_final}
- Each
si
hasthought_i
,action_i
,observation_i
- Context is continually updated:
Ct = {(a1,o1), ..., (ai,oi)}
- Plans can be revised incrementally
🔍 Is Observation for Memory or Next Plan? Observation in Pre-Act serves both purposes. It updates the agent’s context (short-term working memory), which can then influence belief revision or trigger plan adaptation. In XAgent terms, we can treat observations as temporary buffers that pass signals to either confirm a belief or rewrite the next action plan.
Key Techniques Worth Porting to XAgent
Pre-Act isn’t just a better prompt format—it’s a cognitive scaffold. Here’s how XAgent can benefit:
1. Separation of Plan and Execution Memory
In Pre-Act, draft plans are constructed before execution begins. This prevents noisy or failed actions from corrupting long-term memory. For XAgent:
- Use
agent$memory$plan_draft
to hold tentative steps. - Move actions to
agent$memory$history
only after validation. - Failed actions can be archived separately for retrospection.
This separation supports delayed commitment and rollback.
2. Intermediate Reasoning Slots per Step
Each step in Pre-Act includes a thought → action → observation
micro-sequence. XAgent can mirror this by:
-
Allowing each pipeline function to emit a proposed reasoning trace (
policy_thought
) -
Pairing it with
intended_action
-
Adding a post-check function that takes
observation
and either:- Confirms and executes the update
- Flags revision or prompts a new policy
This makes reasoning auditable and modifiable.
3. Two-Level Evaluation Framework
Pre-Act introduces robust evaluation at:
- Turn-level: Was this action correct given the plan?
- End-to-end: Did the entire plan lead to the goal?
In XAgent:
- Score
agent$pipeline[[i]]
not just on execution, but alignment with belief. - Tag each agent episode with completion status and diagnostic markers (e.g., detour cost, replan count).
This encourages performance feedback not just on outcome, but on reasoning fidelity.
4. Curriculum-Based Fine-Tuning & Planning Templates
Pre-Act doesn’t overwhelm models by starting with full plans. Instead, it introduces simple ReAct-like examples first, then scales up. XAgent could:
- Start agents with fixed pipeline scaffolds.
- Gradually introduce flexibility via feedback (e.g., “This step didn’t work—propose an alternative”)
- Use plan templates (YAML schemas) to guide low-capability agents
This minimizes fragility during bootstrapping.
5. Milestone Dependency Graphs for Orchestrator Layer
Pre-Act makes use of milestone graphs to represent task decomposition. For XAgent’s orchestrator:
- Let user input be parsed into
milestone_graph.yaml
- Allow each agent to report status on assigned milestones
- If milestone X depends on Y, trigger replanning if Y is not completed or fails
This formalizes task progression without hardcoding flows.
Final Thought: Cognition Needs Structure
Pre-Act doesn’t just outperform ReAct—it redefines how we should think about cognition in agents. It’s not about making bigger models act smarter; it’s about structuring intelligence so that even smaller models can act deliberately.
For XAgent, adopting Pre-Act’s layered planning, milestone graphs, and evaluation paradigms can move us closer to robust, interpretable AI workflows.
Cognaptus: Automate the Present, Incubate the Future