control-loop-extraction
Extract and analyze agent reasoning loops, step functions, and termination conditions. Use when needing to (1) understand how an agent framework implements reasoning (ReAct, Plan-and-Solve, Reflection, etc.), (2) locate the core decision-making logic, (3) analyze loop mechanics and termination conditions, (4) document the step-by-step execution flow of an agent, or (5) compare reasoning patterns across frameworks.
Installation
Suivez les instructions du dépôt pour votre agent. Consultez les fichiers et dépendances avant l’installation.
Voir la source ↗GuidesInstructions
Control Loop Extraction
Extracts and documents the core agent reasoning loop from framework source code.
Process
- Locate the loop - Find the main agent execution loop
- Classify the pattern - Identify ReAct, Plan-and-Solve, Reflection, or Tree-of-Thoughts
- Extract the step function - Document the LLM → Parse → Decide flow
- Map termination - Catalog all loop exit conditions
Reasoning Pattern Identification
Pattern Signatures
ReAct (Reason + Act)
# Signature: Thought → Action → Observation cycle
while not done:
thought = llm.generate(prompt) # Reasoning
action = parse_action(thought) # Action selection
observation = execute(action) # Environment feedback
prompt = update_prompt(observation) # Loop continuation
Plan-and-Solve
# Signature: Upfront planning, then execution
plan = llm.generate("Create a plan for...")
for step in plan.steps:
result = execute_step(step)
if needs_replan(result):
plan = replan(...)
Reflection
# Signature: Act → Self-critique → Adjust
while not done:
action = llm.generate(prompt)
result = execute(action)
critique = llm.generate(f"Evaluate: {result}")
if critique.needs_adjustment:
prompt = adjust_approach(critique)
Tree-of-Thoughts
# Signature: Branch → Evaluate → Select
thoughts = [generate_thought() for _ in range(n)]
scores = [evaluate(t) for t in thoughts]
best = select_best(thoughts, scores)
Step Function Analysis
The "step function" is the atomic unit of agent execution. Extract:
- Input Assembly - How context is constructed for the LLM
- LLM Invocation - The actual model call
- Output Parsing - How raw output becomes structured actions
- Action Dispatch - Tool execution vs. final response routing
Key Code Patterns
# Common step function structure
def step(self, state):
# 1. Assemble input
messages = self._build_messages(state)
# 2. Call LLM
response = self.llm.invoke(messages)
# 3. Parse output
parsed = self._parse_response(response)
# 4. Dispatch
if parsed.is_tool_call:
return self._execute_tool(parsed.tool, parsed.args)
else:
return AgentFinish(parsed.final_answer)
Termination Condition Catalog
Common Termination Patterns
| Condition | Implementation | Risk |
|---|---|---|
| Step limit | if step_count >= max_steps |
May cut off valid execution |
| Token limit | if total_tokens >= max_tokens |
May truncate mid-thought |
| Explicit finish | if action.type == "finish" |
Relies on LLM cooperation |
| Timeout | if elapsed > timeout |
Wall-clock unpredictable |
| Loop detection | if state in seen_states |
Requires state hashing |
| Error threshold | if error_count >= max_errors |
May exit on recoverable errors |
Anti-Pattern: No Termination Guard
# DANGEROUS: No exit condition
while True:
result = agent.step()
if result.is_done: # What if LLM never outputs done?
break
Fix: Always include a step counter:
for step in range(max_steps):
result = agent.step()
if result.is_done:
break
else:
logger.warning("Hit max steps limit")
Output Template
## Control Loop Analysis: [Framework Name]
### Reasoning Topology
- **Pattern**: [ReAct | Plan-and-Solve | Reflection | Tree-of-Thoughts | Hybrid]
- **Location**: `path/to/agent.py:L45-L120`
### Step Function
- **Input Assembly**: [Description of context building]
- **LLM Call**: [Method and parameters]
- **Parser**: [How output is structured]
- **Dispatch Logic**: [Tool vs Finish decision]
### Termination Conditions
1. [Condition 1 with code reference]
2. [Condition 2 with code reference]
3. ...
### Loop Detection
- **Method**: [Heuristic | State hash | None]
- **Implementation**: [Code reference or N/A]
Integration Points
-
Prerequisite:
codebase-mappingto identify agent files -
Feeds into:
comparative-matrixfor pattern comparison -
Feeds into:
architecture-synthesisfor new loop design
Exemples
Consultez les exemples du dépôt source.
Voir la source ↗Historique source
- Date d’indexation
- 2026-01-20
- Mise à jour de l’index
- 2026-01-28
- Branch
- main
Les dates concernent ce répertoire. Consultez le dépôt pour l’historique du code.
GitHub ↗chat Comments (0)
Sign in to join the discussion and leave a comment.
No comments yet. Be the first to share your thoughts!