Add documentation for agent model delegation fix
Document the solution to OpenCode/Claude Code issue where LLMs cannot properly delegate to specific model tiers when using subagents.
This commit is contained in:
@@ -0,0 +1,161 @@
|
||||
# Agent Model Delegation Issue - Solution
|
||||
|
||||
## Problem
|
||||
|
||||
LLMs cannot delegate to specific models for subagents in a way that ensures the right model tier is used according to task requirements.
|
||||
|
||||
### Symptoms
|
||||
|
||||
- LLMs default to most expensive models when delegating
|
||||
- LLMs don't know which model tier each agent type uses
|
||||
- No automatic visibility into agent definitions before delegation
|
||||
- Cost inefficiency from using higher-tier models than necessary
|
||||
|
||||
## Root Cause
|
||||
|
||||
When an LLM wants to delegate work via the Task tool, it needs to:
|
||||
1. Know which agent types exist
|
||||
2. Know which model tier each agent type uses
|
||||
3. Select appropriate agent based on task complexity
|
||||
|
||||
But agent definitions (with `model` field in YAML frontmatter) are stored in `~/.claude/agents/*.md` files that are not automatically loaded into LLM's context.
|
||||
|
||||
## Solution
|
||||
|
||||
Three-part approach to make agent information visible to LLMs:
|
||||
|
||||
### 1. Enhanced System Instructions
|
||||
|
||||
**File:** `state/system-instructions.json`
|
||||
|
||||
Updated `model-selection` process to include:
|
||||
- Pre-flight check requirement: "Before using Task tool, MUST check agent model"
|
||||
- Explicit model tier definitions
|
||||
- Decision flow for model selection
|
||||
- Agent lookup command reference
|
||||
|
||||
### 2. Enhanced CLAUDE.md Documentation
|
||||
|
||||
**File:** `CLAUDE.md`
|
||||
|
||||
Added to "Model Selection (MANDATORY)" section:
|
||||
- **CRITICAL** checklist before delegating
|
||||
- Steps to verify agent model tier
|
||||
- Alternative strategies when agent uses higher-tier model
|
||||
- References to state files for lookup
|
||||
|
||||
### 3. Quick Reference Guide
|
||||
|
||||
**File:** `state/model-selection-guide.md`
|
||||
|
||||
New standalone guide with:
|
||||
- Model tier decision table
|
||||
- Available agents grouped by model tier
|
||||
- Decision flow diagram
|
||||
- How to use `/agent-info` command
|
||||
- Escalation rules
|
||||
|
||||
## How It Works
|
||||
|
||||
### Before Delegation (Pre-Flight Check)
|
||||
|
||||
LLM is now instructed to:
|
||||
|
||||
```markdown
|
||||
Before delegating to a specific agent, you MUST:
|
||||
1. Read state/model-policy.json to verify which model tier that agent uses
|
||||
2. Read state/component-registry.json to check agent triggers and descriptions
|
||||
3. Match task complexity to agent's model tier (not just agent name)
|
||||
```
|
||||
|
||||
### Agent Registry Sources
|
||||
|
||||
Two sources provide agent information:
|
||||
|
||||
**state/model-policy.json**
|
||||
- Full model tier mappings
|
||||
- Use cases for each tier
|
||||
- Which agents use which model
|
||||
- Escalation rules between tiers
|
||||
|
||||
**state/component-registry.json**
|
||||
- All registered agents, skills, commands
|
||||
- Agent triggers and descriptions
|
||||
- Hierarchical relationships
|
||||
- Auto-generated from agent files
|
||||
|
||||
**/agent-info command**
|
||||
- Interactive listing of all agents
|
||||
- Show hierarchy tree
|
||||
- Get details for specific agent
|
||||
|
||||
### Model Selection Flow
|
||||
|
||||
```
|
||||
Task comes in
|
||||
│
|
||||
├─ Check state/model-policy.json
|
||||
│ └─ Find agent name → Look up model tier
|
||||
│
|
||||
├─ Evaluate task complexity
|
||||
│ ├─ Mechanical with clear instructions? → haiku
|
||||
│ ├─ Needs code understanding? → sonnet
|
||||
│ └─ Complex reasoning/coordination? → opus
|
||||
│
|
||||
└─ Match task to agent with appropriate tier
|
||||
├─ Agent uses matching tier? ✓ Use it
|
||||
├─ Agent uses higher tier? → Find alternative or escalate
|
||||
└─ Agent uses lower tier? → Escalate if needed
|
||||
```
|
||||
|
||||
## Files Modified
|
||||
|
||||
1. `~/.claude/state/system-instructions.json` - Enhanced model-selection process
|
||||
2. `~/.claude/CLAUDE.md` - Added CRITICAL pre-delegation checklist
|
||||
3. `~/.claude/state/model-selection-guide.md` - New quick reference guide
|
||||
|
||||
## Testing
|
||||
|
||||
To verify the fix works:
|
||||
|
||||
1. **Test model selection awareness:**
|
||||
```
|
||||
Ask LLM to delegate a simple grep task
|
||||
Expected: LLM checks agent models, selects haiku-tier agent
|
||||
```
|
||||
|
||||
2. **Test escalation flow:**
|
||||
```
|
||||
Ask LLM to design a complex system
|
||||
Expected: LLM checks agent models, uses opus-tier agent
|
||||
```
|
||||
|
||||
3. **Test cost optimization:**
|
||||
```
|
||||
Ask LLM to review a PR
|
||||
Expected: LLM verifies code-reviewer uses sonnet (not opus)
|
||||
```
|
||||
|
||||
4. **Test agent-info usage:**
|
||||
```
|
||||
Ask LLM which agents are available
|
||||
Expected: LLM runs /agent-info or reads component registry
|
||||
```
|
||||
|
||||
## Future Improvements
|
||||
|
||||
1. **Tool-based agent lookup:** Add a tool that exposes agent info to LLM programmatically (like Flynn's `agents.list` tool)
|
||||
|
||||
2. **Automatic context injection:** Automatically load agent registry into LLM's initial context rather than requiring explicit read
|
||||
|
||||
3. **Model tier parameter in Task tool:** Allow specifying model tier directly when delegating, not just agent type
|
||||
|
||||
4. **Cost-aware delegation:** Track actual cost per agent delegation and provide feedback
|
||||
|
||||
## Related Files
|
||||
|
||||
- `~/.claude/agents/*.md` - Agent definitions with model field
|
||||
- `~/.claude/state/model-policy.json` - Full model selection policy
|
||||
- `~/.claude/state/component-registry.json` - Generated agent registry
|
||||
- `~/.claude/automation/agent-info.py` - Agent info script
|
||||
- `~/.claude/commands/agent-info.md` - Agent info command
|
||||
Reference in New Issue
Block a user