====== XAgent: Autonomous LLM Agent for Complex Tasks ======
XAgent is an open-source autonomous agent developed by OpenBMB at Tsinghua University, with over 8,500 GitHub stars. Designed to solve complex, multi-step tasks without human intervention, XAgent uses a hierarchical planning architecture with three core components -- Dispatcher, Planner, and Actor -- that decompose high-level goals into executable subtasks. All tool execution runs safely inside Docker containers via the ToolServer system.
XAgent represents a research-driven approach to autonomous agents, emphasizing safety through sandboxed execution, extensibility through modular tool integration, and human-agent collaboration when needed. It supports a wide range of built-in tools including file editing, Python notebooks, web browsing, and shell access.
===== Architecture =====
XAgent's core architecture consists of three interconnected components that work together in a hierarchical planning loop:
* **Dispatcher** -- Dynamically instantiates and manages agents, routing tasks to the appropriate Planner or Actor based on task type and complexity. Enables extensibility by supporting new agent types.
* **Planner** -- Generates and refines execution plans by decomposing high-level tasks into subtasks and milestones. Uses a tree-based search strategy to explore different plan paths and select optimal approaches.
* **Actor** -- Executes concrete actions to achieve subtask goals by leveraging tools from the ToolServer. Reports results back to the Planner for plan refinement.
The system operates through a **dual-loop mechanism**:
* **Outer Loop** -- The Planner iteratively decomposes tasks, evaluates progress, and adjusts the plan based on Actor feedback
* **Inner Loop** -- The Actor executes individual subtask steps, calling tools and processing results until the subtask is complete or requires replanning
===== ToolServer =====
ToolServer is a Docker-based infrastructure providing safe, sandboxed tool execution:
* **ToolServerManager** -- Creates and manages ToolServerNode instances
* **ToolServerMonitor** -- Monitors health and automatically removes failing instances
* **ToolServerNode** -- Individual containers providing tools to agents
Built-in tools include:
* **File Editor** -- Read, write, and modify files
* **Python Notebook** -- Interactive Python execution for data analysis and visualization
* **Web Browser** -- Search and navigate web pages
* **Shell** -- Execute bash commands, install packages, host services
* **Rapid API** -- Access thousands of third-party APIs
===== Code Example =====
# XAgent configuration and task execution
# 1. Clone and set up the environment
# git clone https://github.com/OpenBMB/XAgent.git
# cd XAgent && pip install -r requirements.txt
# 2. Start ToolServer (Docker required)
# docker compose up -d toolserver
# 3. Configure and run XAgent
from XAgent.core import XAgentCore
from XAgent.config import XAgentConfig
config = XAgentConfig(
model="gpt-4",
api_key="your-openai-key",
toolserver_url="http://localhost:8080",
max_chain_length=10,
enable_human_feedback=False,
)
# Initialize XAgent with the Dispatcher-Planner-Actor architecture
agent = XAgentCore(config=config)
# Submit a complex task -- XAgent decomposes it automatically
task = "Analyze the CSV file sales_data.csv, generate summary statistics, " \
"create visualizations for trends, and write a report in markdown."
# The Dispatcher routes to Planner, which creates subtasks:
# 1. Read and parse the CSV file (Actor + File Editor)
# 2. Compute statistics (Actor + Python Notebook)
# 3. Generate charts (Actor + Python Notebook)
# 4. Write markdown report (Actor + File Editor)
result = agent.run(task)
# Access results and execution trace
print(result.summary)
print(result.artifacts) # Generated files: charts, report, etc.
===== System Flow =====
%%{init: {"theme": "base", "themeVariables": {"primaryColor": "#8E44AD"}}}%%
graph TD
A[User Task] --> B[Dispatcher]
B --> C[Planner]
C --> D[Task Decomposition]
D --> E[Subtask 1]
D --> F[Subtask 2]
D --> G[Subtask N]
E --> H[Actor]
F --> H
G --> H
H --> I{Tool Needed?}
I -->|Yes| J[ToolServer]
J --> K[File Editor]
J --> L[Python Notebook]
J --> M[Web Browser]
J --> N[Shell]
I -->|No| O[LLM Reasoning]
K --> P[Result]
L --> P
M --> P
N --> P
O --> P
P --> Q{Subtask Complete?}
Q -->|No| H
Q -->|Yes| R{All Subtasks Done?}
R -->|No| C
R -->|Yes| S[Final Result]
===== Key Features =====
* **Autonomous Execution** -- Solves complex multi-step tasks without human intervention
* **Hierarchical Planning** -- Tree-based task decomposition with milestone tracking
* **Safe Execution** -- All tools run in isolated Docker containers via ToolServer
* **Dual-Loop Design** -- Outer planning loop with inner execution loop for adaptive behavior
* **Human Collaboration** -- Optional human-in-the-loop for guidance on challenging subtasks
* **Extensible Tools** -- Modular architecture for adding custom tools and agents
* **GUI Interface** -- Web-based interface for task submission and progress monitoring
===== References =====
* [[https://github.com/OpenBMB/XAgent|XAgent GitHub Repository]]
* [[https://blog.x-agent.net/blog/xagent/|Official Blog Post]]
* [[https://xagent-doc.readthedocs.io|XAgent Documentation]]
* [[https://www.openbmb.cn/|OpenBMB (Tsinghua University)]]
===== See Also =====
* [[mastra|Mastra]] -- TypeScript agent framework with workflow orchestration
* [[r2r|R2R]] -- Agentic RAG system with multi-step reasoning
* [[vanna|Vanna]] -- Autonomous SQL generation agent