Key Takeaways
- An AI agent loop is the repeating cycle of assembling context, reasoning with an LLM, acting (often via tools), observing the result, and deciding what to do next until a stop condition ends the run.
- Level 1 is LLM + tools + response: useful, but every run starts cold. There is no durable read or write of prior state.
- Level 2 adds memory operations inside the loop: read before reason, write after act. Continuity survives the session.
- In practice, that memory layer can be a governed store such as Oracle AI Agent Memory (oracleagentmemory) on Oracle AI Database 26ai: threads for short-term state, durable memories for long-term facts, and context cards for prompt-ready assembly.
- Explicit stop conditions are required for safety and cost control.
- Most production work lives in the harness (context, tools, memory, termination), not in model weights.
Introduction
If you have used Claude Code, Cursor, or a research agent, you have already watched an agent loop in action. The model reads a request, inspects files or data, calls a tool, observes the result, and tries again until the task is done or a limit is reached.
That cycle reason, act, observe, repeat is the agent loop. It is the control structure behind almost every modern tool-calling agent.
This article gives a shared, beginner-friendly definition of the loop, shows the difference between a minimal (Level 1) loop and a memory-aware (Level 2) loop, and illustrates where memory attaches using Oracle AI Agent Memory on Oracle AI Database 26ai as a concrete example. Full installation and end-to-end use of the oracleagentmemory package belong in Article 6; the conceptual difference between RAG and true agent memory is in Article 5. Here, the goal is vocabulary and a clear picture of the control structure itself.
1. What Is an AI Agent?
An agent is a system that perceives its environment, reasons (typically with an LLM), takes actions to pursue a goal, and has some form of memory.
Two layers matter:
- The model: The inference engine that decides what to do next.
- The harness: The code that assembles context, executes tools, enforces stop conditions, and persists state.
Most agent engineering work happens in the harness, not in the model weights. Failures that look like “the model is dumb” are often due to missing context, missing memory, or missing termination logic in the harness.
2. What Is the Agent Loop?
A loop is a control structure that repeats until a condition is met. The agent loop applies that idea to an LLM-powered system.
The harness repeatedly:
- Assembles execution context (instructions, prior messages, retrieved memory, tool results).
- Invokes the model to reason.
- Acts (responds to the user or calls tools).
- Observes the result.
- Repeats until a stop condition ends the run.
Long-horizon tasks deep research, multi-file coding, multi-step investigation cannot finish in a single forward pass. The loop exists because the model needs to act, see what happened, and decide again.
Application modes that commonly need loops:
- Assistant: Multi-turn conversation with tools.
- Deep research: Search, evaluate, fill gaps, synthesise.
- Coding: Edit, test, observe failures, edit again.
3. Level 1: The Minimal Loop (LLM + Tools + Response)
The simplest useful loop:
messages = [system_prompt, user_message]
while True:
response = llm.chat(messages, tools=available_tools)
if response.tool_calls:
for call in response.tool_calls:
result = execute_tool(call.name, call.args)
messages.append(tool_result(result))
else:
return response.content # terminal message; exit
- Strengths: easy to implement, works for self-contained tool-calling tasks.
- Structural limit: no persistent memory beyond the current run’s message list. When the run ends, the context window resets. On multi-turn or long-horizon work the agent will repeat prior work, forget earlier decisions, and contradict itself across sessions.
4. Stop Conditions
Loops must exit. Common stop conditions:
- Model produces a final message with no pending tool calls.
- A goal-completion check returns true (domain-specific, not merely “no more tools”).
- Maximum iterations reached.
- Wall-clock timeout.
- Unrecoverable error.
- Detected repetition or oscillation (same tool + same arguaments repeatedly).
A terminal model message ends the turn; it does not automatically mean the user’s goal is satisfied. The harness still decides whether the task is complete. Iteration caps and timeouts are cost and safety controls, not optional polish.
5. Level 2: Memory Enters the Loop
Level 2 adds two operations inside the loop:
- Read memory before the model is called.
- Write memory after the agent acts.
That turns a stateless transport loop into a reasoning engine with state.
In plain language:
- Short-term/working memory: the active conversation and task state for the current run.
- Durable/long-term memory: facts, preferences, and experiences that should survive the session.
One concrete way this looks in practice: Oracle AI Agent Memory (oracleagentmemory) on Oracle AI Database 26ai.
Oracle AI Agent Memory is a governed memory core. For the loop, the relevant pieces are:
- Threads hold the active conversation/task state (working memory).
- Durable memories store facts and preferences that outlive the session.
- Context cards assemble a prompt-ready slice (summary + relevant durable records + recent messages) so the model sees high-signal context instead of an ever-growing transcript.
- Scoped search (user/agent / thread) ensures the loop only retrieves memory that belongs to the current principal.
In the loop the two touchpoints look like this:
# Before reason
context = memory.get_context_card(thread_id=..., user_id=...)
# or scoped search over durable memories relevant to the current task
messages = assemble(system, context, prior_tool_results, user_input)
response = llm.chat(messages, tools=...)
# After act (and after tool results are observed)
memory.add_messages(thread_id=..., messages=[...])
# optionally extract / store durable facts for later sessions
The harness reads a bounded, scoped view before the model call and writes back after the agent acts. The next iteration (or the next session) starts with more useful state than a cold context window.
Full package setup, schemas, and end-to-end patterns are the subject of Article 6. The conceptual difference between “retrieve some documents” (RAG) and “maintain durable, scoped agent state” is Article 5. Here the only point is: memory attaches at two places in the loop before reason and after act.
State can also live in other layers (filesystem scratchpads, LangGraph checkpoints for workflow resume). The database-backed memory layer is the durable, governed slice that survives process restarts and can be scoped across users, agents, and threads.
6. Level 1 vs Level 2
The difference between Level 1 and Level 2 is not simply how much context the model receives. The key question is whether the harness can deliberately retrieve and persist state beyond the current run.
Level 1 — Stateless
task → assemble context → reason → act → observe → (repeat until stop)
- Every run starts cold.
- Context contains only what is passed into the current request.
- There is no durable read of prior preferences, decisions, or facts.
- There is no durable write after the run ends.
Level 2 — Memory-Aware
task → read memory → assemble context → reason → act → observe → write memory → (repeat until stop)
Memory enters the loop at two explicit points:
- Before reason — Read: The harness retrieves relevant memory or thread state and makes it available to the model.
- After act / observe — Write: The harness persists new facts, decisions, results, or task state that may be needed later.
Without these two hooks, the loop remains Level 1. With them, it becomes Level 2.
Why the Distinction matters
| Concern | Level 1 — Stateless | Level 2 — Memory-Aware |
|---|---|---|
| User returns next day | Agent starts from scratch | Agent can recall relevant preferences and prior work |
| Multi-step workflow | State lives only in the current run | State can be persisted and re-loaded |
| Scoping / multi-user | Context can be lost or mixed if not managed carefully | Memory can be scoped by user, agent, or thread |
| Cost / token pressure | Prior context may need to be re-stuffed | Only the relevant memory slice needs to be selected |
| Production governance | Harder to establish what prior state influenced a response | Memory reads and writes can be tracked as explicit events |
A useful mental model is: Level 1 carries context. Level 2 carries state.
The memory layer itself can take different forms, from a simple transcript or filesystem state to a governed store such as Oracle AI Agent Memory. The implementation can change, but the architectural distinction remains the same: Level 2 adds an explicit memory read before reasoning and a memory write after acting.
7. A Simple Mental Model for Developers
User task
→ Assemble context
(instructions + memory read + prior tool results)
→ Reason (LLM)
→ Act (respond or call tools)
→ Observe
→ Memory write
→ Stop? → yes: return
→ no: loop
Everything outside the model call is harness work: context assembly, tool execution, memory read/write, stop conditions, and logging.
8. Where This Article Fits
This is a shared-vocabulary piece. It names the loop and shows where memory plugs in so later articles have a common reference.
- Article 3 discussed when agents still need vector search vs pure agentic retrieval.
- Article 5 compares RAG with true agent memory.
- Article 6 builds a working memory system with oracleagentmemory.
- Further articles we move into the production harness (context engineering, tool calling, evals).
Most Asked Questions
Is every LLM chat an agent loop?
No. A single-shot completion with no tools and no iteration is not a loop. The loop appears when the system repeatedly reasons, acts, and observes until a stop condition.
Model vs harness?
The model reasons. The harness prepares context, runs tools, manages memory, and decides when to stop. Most production reliability work is harness work.
Why not put everything in the context window?
Context windows are finite, expensive, and reset when the run ends. Durable memory keeps facts and history across sessions without stuffing the entire history into every prompt.
How does a package like oracleagentmemory change the loop?
It supplies the read-before-reason and write-after-act steps with threads, durable memories, context cards, and scoped retrieval so the loop becomes stateful and governed instead of cold-start every time.
How many iterations should I allow?
Start with a modest cap (for example, 10) plus a wall-clock timeout. Raise only when measurement shows the task needs more steps and cost is acceptable.
Where does vector search fit?
As one possible tool the agent can call, or as the retrieval mechanism inside a durable memory store. It is not required for every loop; it is one retrieval option among others (see Article 3).
Resources
- The Agent Loop Decoded: Three Levels Every Agent Engineer Must Know
- Oracle AI Agent Memory Documentation
- Get Started with Oracle AI Agent Memory
- Oracle AI Agent Memory: A Governed, Unified Memory Core for Enterprise AI Agents
- Agent Memory Is a Database Problem
- oracleagentmemory on PyPI
- Oracle AI Developer Hub – Agent Memory Notebooks
- Oracle AI Database Free – Get Started
- Oracle FreeSQL
- Article 3: Do AI Agents Still Need Vector Search? Agentic Retrieval vs Vector RAG
- Forward: Article 5 (RAG vs Agent Memory) and Article 6 (Building with oracleagentmemory).
Latest Release
- oracleagentmemory 26.8 on PyPI
- Oracle AI Agent Memory 26.8 documentation
- What’s New in Oracle AI Agent Memory: Graph-Aware Retrieval, Image Memory, and Enterprise Controls
Conclusion
The agent loop is the repeating cycle of assemble context → reason → act → observe → repeat until a stop condition. Level 1 is useful and simple; Level 2 adds memory read and write so the loop can continue across turns and sessions with state. Packages such as Oracle AI Agent Memory show one concrete way those memory touchpoints look in practice.
Try it yourself:
Spin up Oracle AI Database Free or use FreeSQL, install `oracleagentmemory`, and walk through the Get Started guide or the Agent Memory notebooks. You will see the read-before-reason and write-after-act steps in a real harness.
The next articles examine what durable agent memory actually is and how to build it end-to-end with `oracleagentmemory`.