173 lines
5.2 KiB
Markdown
173 lines
5.2 KiB
Markdown
# Delegation Patterns for Context Preservation
|
|
|
|
How to delegate work to preserve main conversation context.
|
|
|
|
> **TL;DR**: Subagents run in isolated contexts—only their summary returns. Delegate: 5+ file reads, codebase searches, specialized reviews. Keep in main: user Q&A, simple edits, files already in context. Use `run_in_background: true` for parallel work. Track delegated tasks with Tasks and agent IDs.
|
|
|
|
## The Context Problem
|
|
|
|
Main conversation context is ~128K tokens. Every operation consumes it:
|
|
- Reading a file: file contents enter context
|
|
- Search results: matches enter context
|
|
- Reasoning: your analysis consumes tokens
|
|
- Tool results: outputs accumulate
|
|
|
|
Subagents run in **isolated contexts**. When they complete, only their final output (summary, findings, results) returns to main context. The files they read, searches they ran, reasoning they did — all stay in their isolated context.
|
|
|
|
## Delegation Decision Matrix
|
|
|
|
| Task Type | Delegate? | Agent | Why |
|
|
|-----------|-----------|-------|-----|
|
|
| Read 1-2 files | No | Main | Already focused |
|
|
| Read 5+ files | Yes | Explore | Preserves main context |
|
|
| Codebase search | Yes | Explore | Returns summary, not raw results |
|
|
| Security review | Yes | outfitter:reviewer | Specialized + isolated |
|
|
| Performance analysis | Yes | outfitter:analyst | Research-heavy |
|
|
| Simple edit | No | Main | Quick, in-context |
|
|
| Multi-file refactor | Yes | outfitter:engineer | Coordinates changes |
|
|
| Test validation | Yes | outfitter:tester | Isolated execution |
|
|
| User Q&A | No | Main | Needs conversation history |
|
|
|
|
## Pattern: Research Delegation
|
|
|
|
Instead of reading many files yourself:
|
|
|
|
```json
|
|
{
|
|
"description": "Find auth implementation",
|
|
"prompt": "Locate all authentication-related files. Summarize: (1) auth flow, (2) libraries used, (3) key entry points",
|
|
"subagent_type": "Explore"
|
|
}
|
|
```
|
|
|
|
**Returns to main context**: ~50 lines of summary
|
|
**Stayed in subagent context**: contents of 15 files
|
|
|
|
## Pattern: Parallel Independent Reviews
|
|
|
|
When multiple concerns need analysis:
|
|
|
|
```json
|
|
// All in single message, all run_in_background: true
|
|
{
|
|
"description": "Security review",
|
|
"prompt": "Review src/auth/ for security vulnerabilities",
|
|
"subagent_type": "outfitter:reviewer",
|
|
"run_in_background": true
|
|
}
|
|
{
|
|
"description": "Performance review",
|
|
"prompt": "Analyze src/auth/ for performance issues",
|
|
"subagent_type": "outfitter:analyst",
|
|
"run_in_background": true
|
|
}
|
|
{
|
|
"description": "Test coverage",
|
|
"prompt": "Assess test coverage for src/auth/",
|
|
"subagent_type": "outfitter:tester",
|
|
"run_in_background": true
|
|
}
|
|
```
|
|
|
|
Three reviews run simultaneously. Main agent stays responsive. Collect results with `TaskOutput` when ready.
|
|
|
|
## Pattern: Sequential Handoff with Context
|
|
|
|
When later agents need earlier agents' output:
|
|
|
|
```
|
|
1. outfitter:analyst researches → returns findings
|
|
2. Main agent extracts key points
|
|
3. outfitter:engineer implements → receives key points in prompt
|
|
4. outfitter:reviewer reviews → receives implementation summary
|
|
```
|
|
|
|
Don't pass full agent output to next agent. Extract and summarize.
|
|
|
|
## Pattern: Resumable Long-Running Work
|
|
|
|
For multi-stage work:
|
|
|
|
```json
|
|
// Stage 1
|
|
{
|
|
"description": "Begin auth analysis",
|
|
"prompt": "Analyze authentication patterns in src/auth/",
|
|
"subagent_type": "outfitter:analyst"
|
|
}
|
|
// Returns agent-id: abc123
|
|
|
|
// Stage 2 (later)
|
|
{
|
|
"description": "Continue auth analysis",
|
|
"prompt": "Now examine the session management aspect",
|
|
"subagent_type": "outfitter:analyst",
|
|
"resume": "abc123"
|
|
}
|
|
```
|
|
|
|
Agent preserves its full context across invocations. Main agent stays lean.
|
|
|
|
## What to Keep in Main Context
|
|
|
|
Not everything should be delegated:
|
|
|
|
**Keep in main**:
|
|
- Direct user interaction
|
|
- Final synthesis and decisions
|
|
- Coordination logic
|
|
- Files already read (don't re-delegate)
|
|
- Simple, quick operations
|
|
|
|
**Delegate**:
|
|
- Exploratory research
|
|
- Multi-file analysis
|
|
- Specialized reviews
|
|
- Test execution
|
|
- Background validation
|
|
|
|
## Task Integration
|
|
|
|
Track delegated work with Tasks:
|
|
|
|
```
|
|
#1: "[analyst] Research caching patterns" - pending, metadata: {agentId: "abc123", background: true}
|
|
#2: "Wait for analyst results" - pending, blockedBy: #1
|
|
#3: "[engineer] Implement cache layer" - pending, blockedBy: #2
|
|
#4: "[reviewer] Review implementation" - pending, blockedBy: #3
|
|
```
|
|
|
|
Update when agents complete:
|
|
|
|
```
|
|
#1: "[analyst] Research caching patterns" - completed, description: "Redis recommended"
|
|
#2: "Wait for analyst results" - completed, description: "Redis approach confirmed"
|
|
#3: "[engineer] Implement Redis cache layer" - in_progress
|
|
```
|
|
|
|
## Anti-Patterns
|
|
|
|
**Delegating simple work**: Single file edit doesn't need an agent.
|
|
|
|
**Over-parallelization**: Don't run 10 agents when 3 would do.
|
|
|
|
**Missing handoff context**: Agents need enough info to act independently.
|
|
|
|
**Forgetting to collect**: Background agents finish but results never retrieved.
|
|
|
|
**Re-delegating**: If file already in context, don't send agent to read it again.
|
|
|
|
## Context Budget Mental Model
|
|
|
|
Think of context as a budget:
|
|
|
|
```
|
|
Total: 128K tokens
|
|
System prompts: ~10K
|
|
User messages: ~5K
|
|
Your reasoning: ~20K
|
|
Tool results: ~???
|
|
```
|
|
|
|
Every file read, search result, and agent output draws from `tool results`. Delegation shifts that cost to isolated contexts, keeping main budget available for synthesis and user interaction.
|