feat(core): add token isolation architecture for multi-agent efficiency

- Add spawn-agent.xml task for isolated subprocess spawning
- Add token-isolation.md documentation with architecture patterns
- Support parallel and sequential agent collaboration patterns
- Preserve main session context by isolating agent workloads
This commit is contained in:
Ibrahim Elsahafy 2025-12-31 21:05:59 +04:00
parent d8b13bdb2e
commit b59fcc7d55
2 changed files with 169 additions and 0 deletions

View File

@ -0,0 +1,66 @@
<?xml version="1.0" encoding="UTF-8"?>
<task id="spawn-agent" name="Spawn Isolated Agent" standalone="false">
<description>Spawn an agent in an isolated subprocess with token isolation</description>
<config>
<source>{project-root}/_bmad/core/config.yaml</source>
<token_config>{project-root}/_bmad/bmm/config.yaml:token_management</token_config>
</config>
<parameters>
<param name="agent_type" required="true" description="Type of agent to spawn (analyst, architect, dev, pm, etc.)"/>
<param name="task_description" required="true" description="Brief description of the task (3-5 words)"/>
<param name="prompt" required="true" description="Full prompt/instructions for the agent"/>
<param name="model" required="false" default="sonnet" description="Model to use: sonnet, opus, haiku"/>
<param name="run_in_background" required="false" default="false" description="Run agent in background"/>
<param name="output_file" required="false" description="Path for agent output file"/>
</parameters>
<execution>
<step n="1" goal="Validate parameters">
<action>Verify agent_type is valid (exists in agent-manifest.csv)</action>
<action>Verify prompt is not empty</action>
<action>Set default model to sonnet if not specified</action>
</step>
<step n="2" goal="Prepare agent context">
<action>Load agent persona from {project-root}/_bmad/_config/agent-manifest.csv</action>
<action>Load any agent customizations from {project-root}/_bmad/_config/agents/</action>
<action>Construct full agent prompt with persona + task prompt</action>
</step>
<step n="3" goal="Configure output handling">
<action if="output_file specified">Use specified output path</action>
<action if="output_file not specified">
Generate path: {output_folder}/temp/{agent_type}-{timestamp}.md
</action>
<action>Append output instructions to prompt:
"Write your complete output to: {output_file}
Return only a brief summary (under 500 words) to this conversation."
</action>
</step>
<step n="4" goal="Spawn agent subprocess">
<action>Use Task tool with:
- description: "{agent_type}: {task_description}"
- prompt: {constructed_prompt}
- subagent_type: "general-purpose"
- model: {model}
- run_in_background: {run_in_background}
</action>
</step>
<step n="5" goal="Handle response">
<action if="run_in_background == false">Wait for agent completion</action>
<action if="run_in_background == true">Return agent_id for later retrieval</action>
<action>Return summary and output file path to caller</action>
</step>
</execution>
<output>
<field name="status" description="success | failed | running"/>
<field name="agent_id" description="ID for background agents"/>
<field name="output_file" description="Path to full output"/>
<field name="summary" description="Brief summary of agent work"/>
</output>
</task>

View File

@ -0,0 +1,103 @@
# Token Isolation Architecture
## Overview
Token isolation prevents context bloat in multi-agent scenarios by running agents in isolated subprocesses. Each agent gets its own 150K token context window without consuming the main session's tokens.
## Architecture Diagram
```
┌─────────────────────────────────────────────────────────────────────────┐
│ TOKEN ISOLATION ARCHITECTURE │
├─────────────────────────────────────────────────────────────────────────┤
│ Main Session (150K tokens preserved) │
│ │ │
│ ▼ Task Tool spawns subprocess │
│ ┌────────────────────┐ │
│ │ Agent Instance │ ◄── Own 150K token context │
│ │ (subprocess) │ ◄── Doesn't consume main session │
│ └─────────┬──────────┘ │
│ │ │
│ ▼ Only summary returns │
│ "Task complete. Output: temp/raw/file.md" │
└─────────────────────────────────────────────────────────────────────────┘
```
## Core Rules
1. **ALWAYS** use Task tool to invoke agents (preserves main session tokens)
2. Agents write to files, not return full content to main session
3. Use `run_in_background: true` for parallel independent agents
4. Sequential agents receive previous output via content injection
5. Summaries returned to main session must be < 2000 tokens
## Agent Execution Template
```javascript
Task({
description: "agent-name: brief task description",
prompt: agentPrompt,
subagent_type: "general-purpose",
model: "sonnet", // or "haiku" for quick tasks
run_in_background: false // true for parallel
});
```
## Collaboration Patterns
### Sequential Pattern
```
Agent A → Agent B → Agent C
```
Use when each step depends on previous output.
### Parallel Pattern
```
Agent A ─┐
Agent B ─┼→ Synthesis
Agent C ─┘
```
Use when analyses are independent.
### Debate Pattern
```
Proposer ↔ Challenger → Refined Output
```
Use for critical decisions requiring adversarial review.
### War Room Pattern
```
All Agents → Intensive Collaboration → Solution
```
Use for complex urgent problems.
## Output Management
### File-Based Output
Agents should write outputs to:
- `{output_folder}/temp/` - Temporary working files
- `{output_folder}/raw/` - Raw agent outputs
- `{output_folder}/final/` - Validated final outputs
### Summary Protocol
When an agent completes:
1. Write full output to designated file
2. Return only: status, file path, key findings (< 2000 tokens)
3. Main session can read file if details needed
## Token Budget Tracking
| Threshold | Action |
|-----------|--------|
| 0-80% | Normal operation |
| 80-90% | Warning: Consider wrapping up |
| 90-100% | Critical: Summarize and hand off |
| 100%+ | HALT: Must spawn new subprocess |
## Best Practices
1. **Pre-plan agent work** - Know what each agent needs to do
2. **Minimize cross-agent data** - Pass file references, not content
3. **Use haiku for simple tasks** - Reduces cost and latency
4. **Batch related work** - One agent, multiple related tasks
5. **Checkpoint frequently** - Save progress to files regularly