Delegate Multi-Agent — Subtask Delegation System
Delegate specialized tasks to different AI agents with custom model configurations and tool access.
Overview
This skill enables multi-agent workflows by:
-
Model Routing: Delegate to agents with different LLM providers (fast models for simple tasks, reasoning models for complex tasks)
-
Tool Isolation: Each sub-agent gets a filtered set of tools appropriate for their task
-
Agentic Loops: Sub-agents can run iterative tool-call loops for complex tasks
-
Timeout Management: Configurable timeouts prevent runaway sub-agents
-
Depth Limiting: Prevent infinite delegation chains
-
Result Aggregation: Collect and combine results from multiple sub-agents
Architecture
┌─────────────────────────────────────────────────────────────┐ │ Coordinator Agent │ │ (Primary LLM) │ │ │ │ ┌────────────────────────────────────────────────────┐ │ │ │ Delegation Tool │ │ │ │ │ │ │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ │ │ Research │ │ Coding │ │ Summary │ │ │ │ │ │ Agent │ │ Agent │ │ Agent │ ... │ │ │ │ │ (Fast) │ │ (Smart) │ │ (Cheap) │ │ │ │ │ └──────────┘ └──────────┘ └──────────┘ │ │ │ └────────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────┘
Configuration
Configure sub-agents in config/DELEGATE_AGENTS.json :
{ "research": { "provider": "openai", "model": "gpt-4o-mini", "max_tokens": 2000, "temperature": 0.7, "allowed_tools": ["web-fetch", "brave-search", "summarize"], "timeout_secs": 120, "system_prompt": "You are a research assistant. Find and summarize information accurately." }, "coding": { "provider": "anthropic", "model": "claude-sonnet-4-5-20250929", "max_tokens": 8000, "temperature": 0.2, "allowed_tools": ["file_read", "file_write", "file_edit", "content-search"], "timeout_secs": 300, "system_prompt": "You are a coding assistant. Write clean, well-documented code." }, "summarizer": { "provider": "google", "model": "gemini-2.0-flash-lite", "max_tokens": 1000, "temperature": 0.5, "allowed_tools": ["markdown-tools"], "timeout_secs": 60, "system_prompt": "You are a summarization assistant. Create concise, accurate summaries." } }
API
Delegate a Task
const result = await delegate({ agent: 'research', prompt: 'Find the latest news about TypeScript 6.0 and summarize the key features', agentic: false // Single-shot (default) });
// Agentic mode - sub-agent can use tools iteratively const result = await delegate({ agent: 'coding', prompt: 'Refactor the utils.js file to use ES modules', agentic: true });
Available Agents
const agents = await listAgents(); console.log(agents); // ['research', 'coding', 'summarizer']
Use Cases
Research Workflow
-
Coordinator receives: "Research AI agent architectures"
-
Delegates to research agent: "Find 5 recent papers on agentic AI"
-
Research agent uses web-fetch and summarize tools
-
Results returned to coordinator for synthesis
Coding Workflow
-
Coordinator receives: "Add authentication to the app"
-
Delegates to coding agent: "Implement JWT auth in auth.js"
-
Coding agent reads existing files, writes new code
-
Coordinator reviews and commits
Multi-Agent Collaboration
// Parallel delegation const [research, coding] = await Promise.all([ delegate({ agent: 'research', prompt: '...' }), delegate({ agent: 'coding', prompt: '...' }) ]);
// Sequential delegation with context
const research = await delegate({ agent: 'research', prompt: '...' });
const summary = await delegate({ agent: 'summarizer', prompt: Summarize: ${research.result} });
Timeout Handling
Sub-agents are killed if they exceed their timeout:
try { const result = await delegate({ agent: 'coding', prompt: 'Write a complex algorithm', timeout_secs: 60 // Override agent default }); } catch (error) { if (error.code === 'TIMEOUT') { console.log('Sub-agent timed out, retrying with simpler task'); } }
Depth Limiting
Prevent infinite delegation chains:
// Agent A delegates to B (depth 1) // B tries to delegate to C (depth 2) // If max_depth is 2, C cannot delegate further await delegate({ agent: 'research', prompt: '...', max_depth: 2 // Default: 3 });
Best Practices
-
Use Fast Models for Simple Tasks: Don't use expensive models for basic lookups
-
Set Appropriate Timeouts: Give enough time for the task, but prevent runaway costs
-
Limit Tool Access: Only give sub-agents tools they actually need
-
Clear System Prompts: Define each agent's role explicitly
-
Monitor Costs: Track token usage across all sub-agents
Error Handling
Sub-agent failures are caught and reported:
{ "success": false, "agent": "research", "error": "TIMEOUT", "message": "Sub-agent exceeded 120s timeout", "partial_result": "...", // If any progress was made "retryable": true }
Example: Full Research Workflow
const { delegate, listAgents } = require('./delegate-multi-agent');
async function researchTask(query) {
console.log(Starting research on: ${query});
// Check available agents const agents = listAgents(); if (!agents.includes('research')) { throw new Error('Research agent not configured'); }
// Delegate research
const research = await delegate({
agent: 'research',
prompt: Research: ${query}. Find 3-5 high-quality sources and summarize key points.,
agentic: true // Allow iterative research
});
if (!research.success) { console.error('Research failed:', research.error); return null; }
// Delegate summarization
const summary = await delegate({
agent: 'summarizer',
prompt: Create a concise executive summary from this research:\n\n${research.result},
agentic: false
});
return { research: research.result, summary: summary.result, sources: research.sources || [] }; }
// Run research researchTask('The future of AI agent frameworks') .then(console.log) .catch(console.error);