Automate Agent Infrastructure to Focus on Tasks

Replace hand-crafted LangGraph loops with create_deep_agent() from the deepagents library (pip install deepagents). This single function builds a full agent harness on LangChain/LangGraph, managing state, streaming, and context without custom schemas or edges. For complex tasks needing loops, tools, and variable outputs, it eliminates boilerplate: invoke with messages and tools like get_weather, and it runs a tool-calling loop automatically.

LangGraph remains the low-level runtime for graphs and persistence; Deep Agents adds opinionated layers like automatic planning via write_todos tool, which persists todo lists (pending, in_progress, completed) in state for adaptive execution across sessions.

Handle Long Contexts with Filesystem and Compression

Offload large tool outputs (>20,000 tokens) to a pluggable virtual filesystem (ls, read_file, write_file, edit_file, glob, grep), replacing them in context with file paths and 10-line previews. Backends include in-memory (default), local disk, LangGraph Store for persistence, or sandboxes like Modal/Daytona.

At 85% context window usage, auto-summarize history into structured notes (intent, artifacts, next steps), archiving originals to files for on-demand retrieval. This enables indefinite runs on research or coding tasks without truncation.

Subagents via task tool spawn clean-context specialists: main agent delegates (e.g., code review subagent with custom prompt/tools), gets a summary back, keeping primary context lean.

Build and Persist State Across Sessions

Configure persistent memory with CompositeBackend (e.g., StoreBackend(InMemoryStore()) for /memories/ paths), loading files like project conventions. Example research agent:

from deepagents import create_deep_agent
from tavily import TavilyClient

def internet_search(query: str, max_results: int = 5):
    return tavily_client.search(query, max_results=max_results)

agent = create_deep_agent(
    tools=[internet_search],
    system_prompt="Plan with write_todos, search web, write report to files."
)
result = agent.invoke({"messages": [{"role": "user", "content": "Research agentic AI in 2025."}]})

Agent auto-plans todos, offloads search results, spawns subagents if needed, synthesizes reports—zero infrastructure code.

CLI (deepagents) uses same SDK for interactive coding with memory.

Use for Multi-Step Tasks, Skip for Simple Ones

Ideal for planning-heavy workflows (research, coding, analysis) with large outputs or delegation; provides subagents, memory without reinvention. Avoid for single-tool agents (use create_agent) or custom graphs needing topology control.

Shifts agent building from plumbing (context strategies, subagents) to logic, standardizing patterns as agentic AI matures toward long-horizon reliability.