BMAD-METHOD/bmad-agent/orchestrator/intelligent-routing-engine.md

488 lines
16 KiB
Markdown

# BMAD Intelligent Routing Engine
## Overview
The Intelligent Routing Engine automatically analyzes user requests and routes them to the most appropriate persona(s) based on context, complexity, and required capabilities. It provides transparent decision-making with fallback mechanisms and continuous learning.
## Core Components
### Request Analysis Engine
#### Natural Language Processing Pipeline
\```yaml
nlp_pipeline:
text_preprocessing:
- "tokenization"
- "stop_word_removal"
- "lemmatization"
- "named_entity_recognition"
feature_extraction:
- "keyword_extraction"
- "intent_classification"
- "complexity_assessment"
- "domain_identification"
context_analysis:
- "project_phase_detection"
- "technology_stack_identification"
- "urgency_assessment"
- "scope_evaluation"
```
#### Request Classification Framework
\```yaml
classification_categories:
primary_domains:
architecture: ["system_design", "technical_architecture", "scalability", "integration"]
development: ["coding", "implementation", "debugging", "testing"]
design: ["ui_ux", "visual_design", "user_experience", "prototyping"]
management: ["project_planning", "requirements", "coordination", "process"]
documentation: ["technical_writing", "api_docs", "guides", "procedures"]
quality: ["code_review", "performance", "security", "optimization"]
complexity_levels:
simple: ["single_persona", "straightforward_task", "well_defined_scope"]
moderate: ["multiple_considerations", "some_ambiguity", "cross_functional"]
complex: ["multiple_personas", "high_ambiguity", "enterprise_scope"]
expert: ["specialized_knowledge", "critical_decisions", "high_impact"]
urgency_indicators:
low: ["research", "planning", "documentation", "optimization"]
medium: ["feature_development", "enhancement", "review"]
high: ["bug_fix", "security_issue", "production_problem"]
critical: ["system_down", "data_breach", "compliance_violation"]
```
### Persona Matching Algorithm
#### Capability-Based Matching
```python
def calculate_persona_match_score(request_features, persona_capabilities):
"""
Calculate match score between request and persona capabilities
Returns score between 0.0 and 1.0
"""
# Primary capability matching (60% weight)
primary_match = calculate_primary_capability_match(
request_features.primary_domain,
persona_capabilities.primary_specializations
)
# Secondary capability matching (25% weight)
secondary_match = calculate_secondary_capability_match(
request_features.secondary_domains,
persona_capabilities.secondary_specializations
)
# Technology stack alignment (10% weight)
tech_match = calculate_technology_alignment(
request_features.technology_stack,
persona_capabilities.technology_expertise
)
# Complexity level compatibility (5% weight)
complexity_match = calculate_complexity_compatibility(
request_features.complexity_level,
persona_capabilities.complexity_handling
)
# Calculate weighted score
total_score = (
primary_match * 0.60 +
secondary_match * 0.25 +
tech_match * 0.10 +
complexity_match * 0.05
)
return min(total_score, 1.0)
```
#### Multi-Persona Coordination Logic
\```yaml
coordination_strategies:
sequential_workflow:
description: "Personas work in sequence with handoffs"
use_cases: ["project_initiation", "feature_development", "documentation_creation"]
coordination: "structured_handoff_protocols"
parallel_collaboration:
description: "Multiple personas work simultaneously"
use_cases: ["quality_validation", "comprehensive_review", "multi_domain_analysis"]
coordination: "shared_context_and_synchronization"
hierarchical_consultation:
description: "Primary persona with specialist consultations"
use_cases: ["complex_troubleshooting", "enterprise_architecture", "security_review"]
coordination: "primary_lead_with_expert_input"
dynamic_handoff:
description: "Adaptive persona switching based on evolving needs"
use_cases: ["exploratory_analysis", "iterative_development", "problem_solving"]
coordination: "context_aware_transitions"
```
### Routing Decision Engine
#### Decision Tree Algorithm
\```yaml
routing_decision_tree:
root_analysis:
question: "What is the primary intent of the request?"
branches:
create_new: "creation_workflow"
analyze_existing: "analysis_workflow"
optimize_improve: "optimization_workflow"
troubleshoot_fix: "troubleshooting_workflow"
document_explain: "documentation_workflow"
creation_workflow:
question: "What type of artifact needs to be created?"
branches:
project_requirements: "analyst -> product_manager"
technical_architecture: "architect -> design_architect"
user_interface: "design_architect -> v0_ux_ui_architect"
documentation: "technical_documentation_architect"
analysis_workflow:
question: "What domain requires analysis?"
branches:
performance: "performance_optimization_specialist"
security: "security_integration_specialist"
code_quality: "polyglot_code_review_specialist"
enterprise_strategy: "enterprise_architecture_consultant"
optimization_workflow:
question: "What aspect needs optimization?"
branches:
system_performance: "performance_optimization_specialist -> architect"
security_posture: "security_integration_specialist -> architect"
code_quality: "polyglot_code_review_specialist"
workflow_process: "scrum_master -> product_owner"
troubleshooting_workflow:
question: "What is the complexity of the issue?"
branches:
simple_bug: "advanced_troubleshooting_specialist"
performance_issue: "performance_optimization_specialist -> advanced_troubleshooting_specialist"
security_incident: "security_integration_specialist -> advanced_troubleshooting_specialist"
system_failure: "advanced_troubleshooting_specialist -> architect -> enterprise_architecture_consultant"
```
#### Confidence Scoring System
\```yaml
confidence_metrics:
high_confidence:
threshold: "> 0.85"
action: "direct_routing"
validation: "minimal_user_confirmation"
medium_confidence:
threshold: "0.65 - 0.85"
action: "routing_with_alternatives"
validation: "present_options_to_user"
low_confidence:
threshold: "0.45 - 0.65"
action: "guided_selection"
validation: "interactive_clarification"
very_low_confidence:
threshold: "< 0.45"
action: "fallback_to_orchestrator"
validation: "manual_persona_selection"
```
## Routing Algorithms
### Primary Routing Strategies
#### Intent-Based Routing
```python
def route_by_intent(request_text, context):
"""
Route based on detected user intent and context
"""
# Extract intent from request
intent = extract_intent(request_text)
# Analyze context for additional routing hints
context_hints = analyze_context(context)
# Map intent to persona capabilities
persona_candidates = map_intent_to_personas(intent, context_hints)
# Score and rank candidates
ranked_personas = score_and_rank_personas(persona_candidates, request_text)
# Apply confidence thresholds
routing_decision = apply_confidence_thresholds(ranked_personas)
return routing_decision
def extract_intent(request_text):
"""Extract primary intent from user request"""
intent_patterns = {
'create': ['create', 'build', 'develop', 'design', 'implement'],
'analyze': ['analyze', 'review', 'assess', 'evaluate', 'examine'],
'optimize': ['optimize', 'improve', 'enhance', 'refactor', 'tune'],
'troubleshoot': ['debug', 'fix', 'resolve', 'troubleshoot', 'diagnose'],
'document': ['document', 'explain', 'describe', 'guide', 'manual']
}
# Implementation details for intent extraction
return detected_intent
```
#### Technology Stack Routing
\```yaml
technology_routing_rules:
frontend_technologies:
react_typescript:
primary: ["v0_ux_ui_architect", "design_architect"]
secondary: ["performance_optimization_specialist", "polyglot_code_review_specialist"]
vue_angular:
primary: ["design_architect", "architect"]
secondary: ["cross_platform_integration_specialist"]
backend_technologies:
nodejs:
primary: ["architect", "cross_platform_integration_specialist"]
secondary: ["performance_optimization_specialist", "security_integration_specialist"]
aspnet:
primary: ["architect", "enterprise_architecture_consultant"]
secondary: ["security_integration_specialist", "performance_optimization_specialist"]
python:
primary: ["architect", "performance_optimization_specialist"]
secondary: ["advanced_troubleshooting_specialist", "polyglot_code_review_specialist"]
infrastructure_technologies:
cloud_platforms:
primary: ["devops_documentation_specialist", "architect"]
secondary: ["security_integration_specialist", "enterprise_architecture_consultant"]
containerization:
primary: ["devops_documentation_specialist", "cross_platform_integration_specialist"]
secondary: ["performance_optimization_specialist", "security_integration_specialist"]
```
#### Context-Aware Routing
\```yaml
context_routing_factors:
project_phase:
initiation:
primary_personas: ["analyst", "product_manager"]
workflow: "sequential"
planning:
primary_personas: ["architect", "design_architect"]
secondary_personas: ["enterprise_architecture_consultant", "security_integration_specialist"]
workflow: "parallel_consultation"
development:
primary_personas: ["v0_ux_ui_architect", "scrum_master"]
quality_personas: ["polyglot_code_review_specialist", "performance_optimization_specialist"]
workflow: "development_with_validation"
deployment:
primary_personas: ["devops_documentation_specialist"]
support_personas: ["security_integration_specialist", "advanced_troubleshooting_specialist"]
workflow: "deployment_with_monitoring"
urgency_level:
critical:
routing_strategy: "immediate_expert_routing"
personas: ["advanced_troubleshooting_specialist", "security_integration_specialist"]
escalation: ["enterprise_architecture_consultant", "architect"]
high:
routing_strategy: "fast_track_routing"
validation: "minimal"
normal:
routing_strategy: "standard_routing"
validation: "comprehensive"
low:
routing_strategy: "optimized_routing"
validation: "thorough_analysis"
```
## Performance Optimization
### Routing Performance Targets
\```yaml
performance_requirements:
routing_decision_time: "< 500ms"
persona_activation_time: "< 1000ms"
context_analysis_time: "< 200ms"
confidence_calculation_time: "< 100ms"
optimization_strategies:
caching:
request_patterns: "cache_common_routing_decisions"
persona_capabilities: "cache_persona_metadata"
context_analysis: "cache_context_analysis_results"
parallel_processing:
capability_matching: "parallel_persona_scoring"
context_analysis: "concurrent_context_processing"
confidence_calculation: "parallel_confidence_scoring"
algorithmic_optimization:
early_termination: "stop_analysis_when_high_confidence_reached"
pruning: "eliminate_low_probability_personas_early"
approximation: "use_approximation_for_non_critical_calculations"
```
### Continuous Learning System
\```yaml
learning_mechanisms:
feedback_collection:
user_satisfaction: "collect_user_feedback_on_routing_decisions"
routing_accuracy: "track_successful_vs_failed_routings"
performance_metrics: "monitor_routing_performance_continuously"
pattern_recognition:
successful_patterns: "identify_high_performing_routing_patterns"
failure_analysis: "analyze_failed_routing_decisions"
user_preferences: "learn_individual_user_routing_preferences"
model_improvement:
weight_adjustment: "adjust_scoring_weights_based_on_feedback"
threshold_optimization: "optimize_confidence_thresholds"
algorithm_refinement: "improve_routing_algorithms_based_on_data"
adaptation_strategies:
real_time_learning: "adapt_routing_decisions_based_on_immediate_feedback"
batch_learning: "periodic_model_updates_based_on_accumulated_data"
a_b_testing: "test_new_routing_strategies_with_subset_of_users"
```
## Error Handling and Fallback
### Robust Error Handling
\```yaml
error_scenarios:
routing_failures:
no_suitable_persona:
action: "fallback_to_orchestrator_guidance"
message: "Let me help you find the right expertise for your request"
multiple_equal_scores:
action: "present_options_to_user"
message: "I found multiple experts who could help. Which would you prefer?"
low_confidence_routing:
action: "guided_clarification"
message: "To route you to the best expert, could you clarify..."
performance_issues:
routing_timeout:
action: "fallback_to_simple_routing"
timeout_threshold: "500ms"
persona_unavailable:
action: "suggest_alternative_persona"
alternatives: "ranked_by_capability_similarity"
system_overload:
action: "queue_request_with_estimated_wait_time"
priority: "based_on_urgency_level"
data_quality_issues:
incomplete_request:
action: "interactive_request_completion"
guidance: "structured_question_prompts"
ambiguous_context:
action: "context_clarification_workflow"
clarification: "targeted_questions_based_on_ambiguity"
```
### Fallback Strategies
\```yaml
fallback_hierarchy:
level_1_intelligent_routing:
description: "Full AI-powered routing with high confidence"
success_rate: "> 85%"
level_2_guided_routing:
description: "AI suggestions with user confirmation"
fallback_trigger: "medium_confidence_or_user_preference"
level_3_manual_selection:
description: "User selects from recommended personas"
fallback_trigger: "low_confidence_or_routing_failure"
level_4_orchestrator_guidance:
description: "BMad orchestrator provides guidance"
fallback_trigger: "complete_routing_failure"
level_5_default_workflow:
description: "Standard workflow based on request type"
fallback_trigger: "system_unavailability"
```
## Integration and Validation
### Orchestrator Integration
\```yaml
integration_points:
orchestrator_commands:
"/route-analyze": "analyze_request_and_show_routing_decision"
"/route-explain": "explain_why_specific_persona_was_selected"
"/route-alternatives": "show_alternative_persona_options"
"/route-feedback": "collect_feedback_on_routing_decision"
workflow_integration:
pre_routing: "context_analysis_and_preparation"
routing_decision: "intelligent_persona_selection"
post_routing: "validation_and_feedback_collection"
quality_validation:
routing_accuracy: "track_successful_routing_percentage"
user_satisfaction: "measure_user_satisfaction_with_routing"
performance_metrics: "monitor_routing_performance_continuously"
```
### Validation Framework
\```yaml
validation_metrics:
accuracy_metrics:
routing_success_rate: "> 90%"
user_satisfaction_score: "> 4.5/5"
first_attempt_success: "> 85%"
performance_metrics:
average_routing_time: "< 300ms"
95th_percentile_routing_time: "< 500ms"
system_availability: "> 99.5%"
quality_metrics:
routing_explanation_clarity: "> 4.0/5"
alternative_suggestion_relevance: "> 4.0/5"
fallback_effectiveness: "> 80%"
validation_methods:
automated_testing:
unit_tests: "test_individual_routing_components"
integration_tests: "test_end_to_end_routing_workflows"
performance_tests: "validate_routing_performance_requirements"
user_acceptance_testing:
scenario_testing: "test_routing_with_realistic_user_scenarios"
usability_testing: "validate_routing_user_experience"
feedback_collection: "gather_user_feedback_on_routing_decisions"
continuous_monitoring:
real_time_metrics: "monitor_routing_performance_in_production"
error_tracking: "track_and_analyze_routing_errors"
user_behavior_analysis: "analyze_user_interaction_patterns"
```