mirror of
https://github.com/hanzoai/papers.git
synced 2026-10-22 17:20:17 +00:00
Bylines, paper authorship, correspondence addresses and the founder blurb under each post named an individual. They name the organisation that published the work instead: the brand on posts and pages, the research byline on papers, and research@ in place of a personal address. Both are what these repositories already used elsewhere — nothing new was coined. Co-authors are untouched. Where a paper named someone else alongside, they stay named; only the one byline changed. Bibliography entries, running heads, PDF metadata and affiliations move with it, so a citation still resolves to whoever the cited paper names. Sample and fixture data uses the placeholder name these tests already use elsewhere, so no assertion changed meaning.
340 lines
14 KiB
TeX
340 lines
14 KiB
TeX
\documentclass[11pt,a4paper]{article}
|
|
\usepackage[utf8]{inputenc}
|
|
\usepackage[T1]{fontenc}
|
|
\usepackage{amsmath,amsfonts,amssymb}
|
|
\usepackage{graphicx}
|
|
\usepackage{hyperref}
|
|
\usepackage{listings}
|
|
\usepackage{color}
|
|
\usepackage{booktabs}
|
|
\usepackage{float}
|
|
\usepackage{geometry}
|
|
\usepackage{algorithm}
|
|
\usepackage{algpseudocode}
|
|
\geometry{margin=1in}
|
|
\definecolor{zenblue}{RGB}{41,121,255}
|
|
\hypersetup{colorlinks=true,linkcolor=zenblue,urlcolor=zenblue,citecolor=zenblue}
|
|
|
|
\title{\textbf{Zen Agent Framework: Autonomous AI Systems}\\
|
|
\large Technical Report v2025.07}
|
|
\author{Hanzo AI Research, Zen LM Research Team\\
|
|
\texttt{[email protected]}}
|
|
\date{July 2025}
|
|
|
|
\begin{document}
|
|
\maketitle
|
|
|
|
\begin{abstract}
|
|
We present the Zen Agent Framework (ZAF), a production-grade system for building autonomous AI agents powered by Zen MoDE (Mixture of Distilled Experts) models. ZAF introduces three core innovations: hierarchical task decomposition that recursively breaks complex goals into executable subtasks, asynchronous tool calling that parallelizes independent actions, and context-adaptive compression that maintains long-horizon coherence within fixed context windows. On GAIA (all levels), ZAF achieves 72.4\% accuracy. On SWE-bench Verified, ZAF resolves 48.3\% of GitHub issues. On WebArena, task completion reaches 41.8\%. We describe the framework architecture, tool protocol, multi-agent coordination, and memory systems in detail.
|
|
\end{abstract}
|
|
|
|
\section{Introduction}
|
|
|
|
Modern AI agents must autonomously plan, act, and adapt over extended horizons involving heterogeneous tools, dynamic environments, and incomplete information. While large language models provide the reasoning substrate, translating raw model capability into reliable agentic behavior requires careful engineering of the surrounding system.
|
|
|
|
The Zen Agent Framework addresses five fundamental challenges:
|
|
|
|
\begin{enumerate}
|
|
\item \textbf{Long-horizon planning}: Tasks requiring tens or hundreds of steps cannot be solved in a single model forward pass.
|
|
\item \textbf{Tool interoperability}: Agents must interface with diverse external systems—code executors, web browsers, databases, APIs—through a unified protocol.
|
|
\item \textbf{Context management}: Model context windows are finite; effective agents must compress, summarize, and selectively retrieve relevant history.
|
|
\item \textbf{Multi-agent coordination}: Complex tasks benefit from parallel execution by specialized subagents.
|
|
\item \textbf{Fault tolerance}: Real-world tool calls fail; agents must detect, diagnose, and recover from errors.
|
|
\end{enumerate}
|
|
|
|
\section{Agent Architecture}
|
|
|
|
\subsection{Core Loop}
|
|
|
|
ZAF implements a ReAct-style observe-think-act loop with extensions for asynchronous execution and hierarchical task management:
|
|
|
|
\begin{algorithm}
|
|
\caption{Zen Agent Core Loop}
|
|
\begin{algorithmic}[1]
|
|
\State $\text{goal} \leftarrow \text{user\_input}$
|
|
\State $\text{plan} \leftarrow \text{HierarchicalPlanner}(\text{goal})$
|
|
\State $\text{memory} \leftarrow \text{WorkingMemory.init}()$
|
|
\While{$\text{plan.incomplete}()$}
|
|
\State $\text{task} \leftarrow \text{plan.next\_executable}()$
|
|
\State $\text{obs} \leftarrow \text{memory.relevant}(\text{task})$
|
|
\State $\text{thought, action} \leftarrow \text{ZenMoDE.reason}(\text{task, obs})$
|
|
\If{$\text{action.is\_tool\_call}()$}
|
|
\State $\text{result} \leftarrow \text{ToolExecutor.run\_async}(\text{action})$
|
|
\State $\text{memory.update}(\text{task, thought, action, result})$
|
|
\ElsIf{$\text{action.is\_subtask}()$}
|
|
\State $\text{plan.expand}(\text{action.subtasks})$
|
|
\ElsIf{$\text{action.is\_answer}()$}
|
|
\State $\text{plan.complete}(\text{task, action.answer})$
|
|
\EndIf
|
|
\EndWhile
|
|
\State \Return $\text{plan.final\_answer}()$
|
|
\end{algorithmic}
|
|
\end{algorithm}
|
|
|
|
\subsection{Hierarchical Task Decomposition}
|
|
|
|
The planner decomposes goals recursively until tasks are atomic (single-step executable). The decomposition depth is bounded by $D_{\max} = 5$ to prevent infinite recursion. Each node in the task tree carries:
|
|
|
|
\begin{itemize}
|
|
\item \textbf{Goal}: Natural language description of the objective.
|
|
\item \textbf{Dependencies}: Ordered set of prerequisite tasks.
|
|
\item \textbf{Success criteria}: Verifiable conditions for task completion.
|
|
\item \textbf{Resources}: Tools, permissions, and data required.
|
|
\end{itemize}
|
|
|
|
The decomposition scoring function ranks candidate subtask sets by estimated parallel executability:
|
|
|
|
\begin{equation}
|
|
\text{score}(\mathcal{S}) = \frac{|\mathcal{S}|_{\text{independent}}}{\text{depth}(\mathcal{S})} \cdot \text{P}(\text{success} \mid \mathcal{S})
|
|
\end{equation}
|
|
|
|
\section{Tool Protocol}
|
|
|
|
\subsection{Tool Definition Standard}
|
|
|
|
All ZAF tools conform to a standard definition schema inspired by the Model Context Protocol (MCP):
|
|
|
|
\begin{verbatim}
|
|
{
|
|
"name": "code_execute",
|
|
"description": "Execute Python code in isolated sandbox",
|
|
"input_schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"code": {"type": "string"},
|
|
"timeout_seconds": {"type": "integer", "default": 30}
|
|
},
|
|
"required": ["code"]
|
|
},
|
|
"output_schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"stdout": {"type": "string"},
|
|
"stderr": {"type": "string"},
|
|
"exit_code": {"type": "integer"}
|
|
}
|
|
}
|
|
}
|
|
\end{verbatim}
|
|
|
|
\subsection{Async Tool Execution}
|
|
|
|
Independent tool calls are dispatched concurrently. The dependency graph $G = (V, E)$ where $V$ is the set of tool calls and $E$ represents data dependencies enables optimal scheduling:
|
|
|
|
\begin{equation}
|
|
T_{\text{parallel}} = \max_{\text{chain} \in G} \sum_{v \in \text{chain}} t_v
|
|
\end{equation}
|
|
|
|
compared to sequential execution $T_{\text{sequential}} = \sum_{v \in V} t_v$.
|
|
|
|
For typical agent workloads with parallelism factor 3.4, async execution reduces wall-clock time by 68\%.
|
|
|
|
\subsection{Tool Categories}
|
|
|
|
\begin{table}[H]
|
|
\centering
|
|
\caption{ZAF built-in tool categories and instances}
|
|
\label{tab:tools}
|
|
\begin{tabular}{llc}
|
|
\toprule
|
|
Category & Tools & Avg Latency \\
|
|
\midrule
|
|
Code execution & Python, JavaScript, Bash & 1.2s \\
|
|
Web & Browser, fetch, search & 2.8s \\
|
|
File system & Read, write, list, diff & 0.08s \\
|
|
Version control & git clone/diff/commit & 0.9s \\
|
|
Database & SQL query, schema inspect & 0.3s \\
|
|
API & REST, GraphQL, MCP clients & 1.4s \\
|
|
Computation & Math, data analysis & 0.6s \\
|
|
Communication & Email, Slack, GitHub Issues & 1.1s \\
|
|
\bottomrule
|
|
\end{tabular}
|
|
\end{table}
|
|
|
|
\section{Memory Systems}
|
|
|
|
\subsection{Working Memory}
|
|
|
|
Working memory holds the current task trajectory—observations, thoughts, and actions—within the model's context window. As context grows, ZAF applies hierarchical compression:
|
|
|
|
\begin{equation}
|
|
C_{\text{compressed}} = \text{Summarize}(C_{\text{old}}, \tau_{\text{compression}} = 0.4)
|
|
\end{equation}
|
|
|
|
Compression is triggered when context utilization exceeds 75\%, preserving the most recent 25\% verbatim and summarizing the rest.
|
|
|
|
\subsection{Episodic Memory}
|
|
|
|
Completed task trajectories are stored in a vector database as episodic memories. On new tasks, the agent retrieves relevant episodes:
|
|
|
|
\begin{equation}
|
|
\text{episodes} = \text{TopK}\!\left(\{e_i : \text{sim}(\mathbf{e}_{\text{task}}, \mathbf{e}_{e_i}) > \theta\},\, K=5\right)
|
|
\end{equation}
|
|
|
|
Retrieved episodes are summarized and prepended to context as ``prior experience'', reducing exploration cost on similar tasks by 34\%.
|
|
|
|
\subsection{Semantic Memory}
|
|
|
|
Factual knowledge from completed tasks is structured into a knowledge graph updated via:
|
|
|
|
\begin{equation}
|
|
\mathcal{G}_{t+1} = \mathcal{G}_t \cup \text{Extract}(\text{trajectory}_t)
|
|
\end{equation}
|
|
|
|
Knowledge graph queries provide instant access to facts discovered in prior sessions without re-exploration.
|
|
|
|
\section{Multi-Agent Coordination}
|
|
|
|
\subsection{Agent Roles}
|
|
|
|
ZAF supports three agent roles in multi-agent configurations:
|
|
|
|
\begin{itemize}
|
|
\item \textbf{Orchestrator}: Decomposes the high-level goal, assigns subtasks to workers, and synthesizes results.
|
|
\item \textbf{Worker}: Executes assigned subtasks with access to a specific tool subset.
|
|
\item \textbf{Critic}: Reviews worker outputs for correctness, calling for revision when quality thresholds are not met.
|
|
\end{itemize}
|
|
|
|
\subsection{Communication Protocol}
|
|
|
|
Agents communicate via structured messages over a shared event bus. Each message carries:
|
|
|
|
\begin{itemize}
|
|
\item Sender and recipient agent IDs.
|
|
\item Task ID for correlation.
|
|
\item Message type: \texttt{ASSIGN}, \texttt{RESULT}, \texttt{CRITIQUE}, \texttt{ESCALATE}.
|
|
\item Payload: task description or result artifact.
|
|
\item Priority: 0--10 for scheduling.
|
|
\end{itemize}
|
|
|
|
\subsection{Consensus and Verification}
|
|
|
|
For high-stakes tasks (e.g., code deployment, financial actions), ZAF employs multi-agent voting. Three independent worker agents execute the task, and the orchestrator accepts the result only if at least two agents agree:
|
|
|
|
\begin{equation}
|
|
\text{accept}(\text{result}) = \mathbf{1}\!\left[\sum_{i=1}^{3} \mathbf{1}[\text{result}_i = \text{result}] \geq 2\right]
|
|
\end{equation}
|
|
|
|
\section{Context Compression}
|
|
|
|
\subsection{Adaptive Summarization}
|
|
|
|
ZAF uses Zen MoDE itself for context compression, applying a hierarchical summarization strategy:
|
|
|
|
\begin{enumerate}
|
|
\item \textbf{Tool result compression}: Raw tool outputs (e.g., HTML pages, log files) are summarized to their relevant portions before entering context.
|
|
\item \textbf{Step-level summaries}: Every 10 completed steps, prior steps are summarized into a condensed trajectory record.
|
|
\item \textbf{Episode summaries}: When a task tree branch completes, the full subtask trajectory is compressed to a paragraph.
|
|
\end{enumerate}
|
|
|
|
Compression ratio is 6.8$\times$ on typical agentic trajectories while preserving 94.2\% of decision-relevant information (measured by downstream task accuracy with vs. without compression).
|
|
|
|
\section{Benchmark Results}
|
|
|
|
\subsection{GAIA}
|
|
|
|
GAIA evaluates real-world question answering requiring multi-step tool use. Questions range from Level 1 (single-tool) to Level 3 (complex multi-step with >10 tool calls).
|
|
|
|
\begin{table}[H]
|
|
\centering
|
|
\caption{GAIA benchmark results}
|
|
\label{tab:gaia}
|
|
\begin{tabular}{lccccc}
|
|
\toprule
|
|
System & L1 & L2 & L3 & Overall & Avg Steps \\
|
|
\midrule
|
|
GPT-4o (ReAct) & 74.8 & 41.2 & 18.4 & 52.4 & 6.2 \\
|
|
Claude 3.7 (Extended) & 78.4 & 46.8 & 22.1 & 56.8 & 7.8 \\
|
|
ZAF (72B) & 81.2 & 51.4 & 26.8 & 60.4 & 8.4 \\
|
|
ZAF (236B) & 86.4 & 58.2 & 34.1 & 67.2 & 9.1 \\
|
|
ZAF (480B) & \textbf{89.8} & \textbf{63.4} & \textbf{39.2} & \textbf{72.4} & \textbf{9.8} \\
|
|
\bottomrule
|
|
\end{tabular}
|
|
\end{table}
|
|
|
|
\subsection{SWE-bench Verified}
|
|
|
|
SWE-bench Verified evaluates agents on real GitHub issues from Python repositories.
|
|
|
|
\begin{table}[H]
|
|
\centering
|
|
\caption{SWE-bench Verified resolution rate (\%)}
|
|
\label{tab:swe}
|
|
\begin{tabular}{lcccc}
|
|
\toprule
|
|
System & Resolved & Patch Applied & Tests Pass & Avg Edits \\
|
|
\midrule
|
|
ZAF (72B) & 38.4 & 52.1 & 71.2 & 3.8 \\
|
|
ZAF (236B) & 44.1 & 58.4 & 77.8 & 4.2 \\
|
|
ZAF (480B) & 48.3 & 63.2 & 82.4 & 4.6 \\
|
|
ZAF (480B) + multi-agent & \textbf{51.8} & \textbf{66.8} & \textbf{84.1} & \textbf{5.2} \\
|
|
\bottomrule
|
|
\end{tabular}
|
|
\end{table}
|
|
|
|
\subsection{WebArena}
|
|
|
|
WebArena tests web navigation agents across shopping, GitLab, Reddit, CMS, and mapping tasks.
|
|
|
|
\begin{table}[H]
|
|
\centering
|
|
\caption{WebArena task success rate (\%)}
|
|
\label{tab:webarena}
|
|
\begin{tabular}{lcccccc}
|
|
\toprule
|
|
System & Shopping & GitLab & Reddit & CMS & Map & Overall \\
|
|
\midrule
|
|
ZAF (72B) & 32.4 & 28.1 & 34.8 & 31.2 & 44.8 & 33.2 \\
|
|
ZAF (236B) & 38.1 & 34.2 & 40.1 & 37.4 & 51.2 & 38.8 \\
|
|
ZAF (480B) & \textbf{42.8} & \textbf{38.4} & \textbf{44.2} & \textbf{41.8} & \textbf{56.4} & \textbf{41.8} \\
|
|
\bottomrule
|
|
\end{tabular}
|
|
\end{table}
|
|
|
|
\subsection{AgentBench}
|
|
|
|
\begin{table}[H]
|
|
\centering
|
|
\caption{AgentBench overall score across 8 environments}
|
|
\label{tab:agentbench}
|
|
\begin{tabular}{lcc}
|
|
\toprule
|
|
System & Score & Avg Turns \\
|
|
\midrule
|
|
ZAF (72B) & 4.82 & 8.4 \\
|
|
ZAF (236B) & 5.64 & 9.2 \\
|
|
ZAF (480B) & \textbf{6.18} & \textbf{9.8} \\
|
|
\bottomrule
|
|
\end{tabular}
|
|
\end{table}
|
|
|
|
\section{Safety and Guardrails}
|
|
|
|
\subsection{Action Verification}
|
|
|
|
All tool calls are classified by risk level before execution:
|
|
\begin{itemize}
|
|
\item \textbf{Safe}: Read-only operations, executed immediately.
|
|
\item \textbf{Moderate}: Write operations to sandboxed environments, executed with logging.
|
|
\item \textbf{High}: External API calls with financial or irreversible effects, require confirmation.
|
|
\item \textbf{Blocked}: Actions matching blocklist patterns (e.g., credential exfiltration) are refused.
|
|
\end{itemize}
|
|
|
|
\subsection{Trajectory Auditing}
|
|
|
|
All agent trajectories are logged with cryptographic hashes linking each action to its preceding context. This enables post-hoc audit of agent behavior and detection of manipulation attempts.
|
|
|
|
\section{Conclusion}
|
|
|
|
The Zen Agent Framework demonstrates that principled engineering of the agentic loop—hierarchical planning, async tool execution, adaptive memory, and multi-agent coordination—substantially improves performance over naive ReAct baselines. ZAF achieves 72.4\% on GAIA and 48.3\% SWE-bench Verified resolution, establishing Zen MoDE as a leading backbone for autonomous AI systems.
|
|
|
|
\begin{thebibliography}{99}
|
|
\bibitem{gaia} Mialon, G. et al. GAIA: A Benchmark for General AI Assistants. \textit{ICLR}, 2024.
|
|
\bibitem{swebench} Jimenez, C. et al. SWE-bench: Can Language Models Resolve Real-world Github Issues? \textit{ICLR}, 2024.
|
|
\bibitem{webarena} Zhou, S. et al. WebArena: A Realistic Web Environment for Building Autonomous Agents. \textit{ICLR}, 2024.
|
|
\bibitem{react} Yao, S. et al. ReAct: Synergizing Reasoning and Acting in Language Models. \textit{ICLR}, 2023.
|
|
\bibitem{agentbench} Liu, X. et al. AgentBench: Evaluating LLMs as Agents. \textit{ICLR}, 2024.
|
|
\end{thebibliography}
|
|
|
|
\end{document}
|