Reflexion Framework Usage Guide
Overview
The Reflexion framework enables MCP ADR Analysis Server tools to learn from mistakes through linguistic feedback and self-reflection. This guide demonstrates how to integrate Reflexion capabilities into tools and configure learning parameters for continuous improvement.
Quick Start
Basic Reflexion Integration
typescript
import { executeWithReflexion } from '../utils/reflexion-framework.js';
// Execute a task with reflexion learning
const reflexionResult = await executeWithReflexion(
originalPrompt,
{
memoryEnabled: true,
reflectionDepth: 'detailed',
evaluationCriteria: ['task-success', 'quality', 'efficiency'],
learningRate: 0.7
}
);
// Use the enhanced prompt with memory context
const enhancedPrompt = reflexionResult.enhancedPrompt;
Tool Integration Example
typescript
// Example: Reflexion-enhanced ADR suggestion tool
export async function suggestAdrsWithReflexion(context: any) {
// Step 1: Create base prompt
const basePrompt = createAdrSuggestionPrompt(context);
// Step 2: Apply Reflexion learning
const reflexionResult = await executeWithReflexion(
basePrompt,
{
memoryEnabled: true,
maxMemoryEntries: 50,
reflectionDepth: 'comprehensive',
evaluationCriteria: ['task-success', 'relevance', 'clarity', 'completeness'],
learningRate: 0.8,
memoryRetention: 90 // days
}
);
// Step 3: Return enhanced prompt for AI execution
return {
content: [{
type: 'text',
text: reflexionResult.enhancedPrompt.prompt
}],
metadata: {
reflexionLearning: {
memoriesUsed: reflexionResult.taskAttempt.relatedMemories.length,
learningOutcome: reflexionResult.learningOutcome,
improvementAchieved: reflexionResult.learningOutcome.improvementAchieved
}
}
};
}
Configuration Options
Reflexion Configuration
typescript
interface ReflexionConfig {
memoryEnabled: boolean; // Enable memory system
maxMemoryEntries: number; // Maximum memories per type (1-1000)
reflectionDepth: 'basic' | 'detailed' | 'comprehensive';
evaluationCriteria: EvaluationCriterion[];
learningRate: number; // How quickly to adapt (0-1)
memoryRetention: number; // How long to keep memories (days)
feedbackIntegration: boolean; // Enable external feedback
autoCleanup: boolean; // Automatic memory cleanup
relevanceThreshold: number; // Minimum relevance for memory retrieval (0-1)
confidenceThreshold: number; // Minimum confidence for lesson application (0-1)
}
Evaluation Criteria Options
typescript
type EvaluationCriterion =
| 'task-success' // Did the task succeed?
| 'quality' // How well was it executed?
| 'efficiency' // Was the approach optimal?
| 'accuracy' // How accurate were the results?
| 'completeness' // Was the task fully completed?
| 'relevance' // How relevant was the output?
| 'clarity' // How clear was the communication?
| 'innovation'; // Was the approach creative/novel?
Reflection Depth Options
typescript
type ReflectionDepth =
| 'basic' // Simple success/failure analysis
| 'detailed' // Comprehensive lesson extraction
| 'comprehensive'; // Deep analysis with meta-learning
Tool-Specific Configurations
ADR Generation Tools
typescript
const adrReflexionConfig: ReflexionConfig = {
memoryEnabled: true,
maxMemoryEntries: 100,
reflectionDepth: 'comprehensive',
evaluationCriteria: ['task-success', 'relevance', 'clarity', 'completeness'],
learningRate: 0.8,
memoryRetention: 90,
feedbackIntegration: true,
autoCleanup: true,
relevanceThreshold: 0.6,
confidenceThreshold: 0.7
};
Analysis Tools
typescript
const analysisReflexionConfig: ReflexionConfig = {
memoryEnabled: true,
maxMemoryEntries: 75,
reflectionDepth: 'detailed',
evaluationCriteria: ['accuracy', 'completeness', 'efficiency'],
learningRate: 0.7,
memoryRetention: 60,
feedbackIntegration: true,
autoCleanup: true,
relevanceThreshold: 0.5,
confidenceThreshold: 0.6
};
Research Tools
typescript
const researchReflexionConfig: ReflexionConfig = {
memoryEnabled: true,
maxMemoryEntries: 60,
reflectionDepth: 'detailed',
evaluationCriteria: ['quality', 'relevance', 'innovation'],
learningRate: 0.75,
memoryRetention: 120,
feedbackIntegration: true,
autoCleanup: true,
relevanceThreshold: 0.55,
confidenceThreshold: 0.65
};
Usage Patterns
Pattern 1: Continuous Learning
typescript
// For tools that should learn and improve over time
const continuousLearningConfig: ReflexionConfig = {
memoryEnabled: true,
maxMemoryEntries: 200,
reflectionDepth: 'comprehensive',
evaluationCriteria: ['task-success', 'quality', 'efficiency', 'innovation'],
learningRate: 0.8,
memoryRetention: 180,
feedbackIntegration: true,
autoCleanup: true
};
Pattern 2: Quick Adaptation
typescript
// For tools that need rapid learning from immediate feedback
const quickAdaptationConfig: ReflexionConfig = {
memoryEnabled: true,
maxMemoryEntries: 50,
reflectionDepth: 'detailed',
evaluationCriteria: ['task-success', 'efficiency'],
learningRate: 0.9,
memoryRetention: 30,
feedbackIntegration: true,
autoCleanup: true
};
Pattern 3: Conservative Learning
typescript
// For tools where stability is more important than rapid adaptation
const conservativeLearningConfig: ReflexionConfig = {
memoryEnabled: true,
maxMemoryEntries: 100,
reflectionDepth: 'basic',
evaluationCriteria: ['task-success', 'quality'],
learningRate: 0.5,
memoryRetention: 365,
feedbackIntegration: false,
autoCleanup: false
};
Memory Management
Memory Types and Usage
typescript
// Retrieve specific types of memories
const episodicMemories = await retrieveMemories({
memoryTypes: ['episodic'],
taskType: 'adr-suggestion',
maxResults: 10
});
const semanticMemories = await retrieveMemories({
memoryTypes: ['semantic'],
keywords: ['microservices', 'scalability'],
relevanceThreshold: 0.7
});
const proceduralMemories = await retrieveMemories({
memoryTypes: ['procedural'],
context: { domain: 'web-applications' },
maxResults: 5
});
Memory Persistence
typescript
// Manually persist important memories
const importantMemory: ReflexionMemory = {
memoryId: 'critical_lesson_001',
memoryType: 'semantic',
content: {
summary: 'Always validate ADR assumptions with stakeholders',
lessons: ['Stakeholder validation prevents misaligned decisions'],
applicableScenarios: ['adr-generation', 'decision-making']
},
relevanceScore: 0.95,
tags: ['stakeholder-alignment', 'validation', 'critical']
};
await persistReflexionMemory(importantMemory);
Learning Progress Tracking
Monitor Learning Effectiveness
typescript
// Get learning progress for a specific task type
const progress = await getLearningProgress('adr-suggestion');
console.log('Learning Progress:', {
successRate: progress.successRate,
improvementTrend: progress.improvementTrend,
keyLessons: progress.keyLessons,
persistentIssues: progress.persistentIssues
});
Detect Learning Plateaus
typescript
// Check if learning has plateaued and needs intervention
const plateauAnalysis = progress.plateauDetection;
if (plateauAnalysis.isOnPlateau) {
console.log('Learning plateau detected:', {
duration: plateauAnalysis.plateauDuration,
suggestedInterventions: plateauAnalysis.suggestedInterventions
});
}
Integration Examples
Example 1: ADR Suggestion with Reflexion
typescript
export async function suggestAdrsWithReflexion(context: any) {
// Step 1: Retrieve relevant memories
const memories = await retrieveRelevantMemories('adr-suggestion', context);
// Step 2: Create memory-enhanced prompt
const basePrompt = createAdrSuggestionPrompt(context);
const enhancedPrompt = await enhancePromptWithMemories(basePrompt, memories);
// Step 3: Execute with reflexion tracking
const result = await executeWithReflexion(enhancedPrompt, {
memoryEnabled: true,
reflectionDepth: 'comprehensive',
evaluationCriteria: ['task-success', 'relevance', 'clarity'],
learningRate: 0.8
});
// Step 4: Return enhanced prompt for AI execution
return {
content: [{ type: 'text', text: result.enhancedPrompt.prompt }],
metadata: {
reflexionData: {
memoriesUsed: result.taskAttempt.relatedMemories,
learningOutcome: result.learningOutcome,
recommendations: result.recommendations
}
}
};
}
Example 2: Project Analysis with Learning
typescript
export async function analyzeProjectWithReflexion(projectPath: string) {
const basePrompt = createProjectAnalysisPrompt(projectPath);
const result = await executeWithReflexion(basePrompt, {
memoryEnabled: true,
reflectionDepth: 'detailed',
evaluationCriteria: ['accuracy', 'completeness', 'efficiency'],
learningRate: 0.7,
memoryRetention: 60
});
return {
content: [{ type: 'text', text: result.enhancedPrompt.prompt }],
metadata: {
learningMetrics: {
improvementAchieved: result.learningOutcome.improvementAchieved,
lessonsLearned: result.learningOutcome.lessonsLearned,
memoriesCreated: result.learningOutcome.memoriesCreated
}
}
};
}
Performance Considerations
Memory Optimization
typescript
// Configure memory limits for performance
const performanceOptimizedConfig: ReflexionConfig = {
maxMemoryEntries: 50, // Limit memory storage
relevanceThreshold: 0.7, // Only high-relevance memories
autoCleanup: true, // Automatic cleanup
memoryRetention: 30 // Shorter retention for performance
};
Learning Efficiency
typescript
// Balance learning speed with stability
const balancedConfig: ReflexionConfig = {
learningRate: 0.6, // Moderate learning rate
confidenceThreshold: 0.7, // High confidence requirement
reflectionDepth: 'detailed', // Balanced reflection depth
feedbackIntegration: true // Use external feedback
};
Error Handling and Fallbacks
Graceful Degradation
typescript
async function executeWithReflexionSafely(
prompt: PromptObject,
config: ReflexionConfig
): Promise<PromptObject> {
try {
const result = await executeWithReflexion(prompt, config);
return result.enhancedPrompt;
} catch (error) {
console.warn('Reflexion failed, using original prompt:', error);
return prompt; // Fallback to original
}
}
Memory Recovery
typescript
// Handle memory corruption or loss
async function recoverFromMemoryIssues(taskType: string) {
try {
await validateMemoryIntegrity(taskType);
} catch (error) {
console.warn('Memory issues detected, rebuilding from backups');
await rebuildMemoryFromBackups(taskType);
}
}
Best Practices
1. Configuration Selection
- High-stakes tools: Use comprehensive reflection with conservative learning
- Experimental tools: Use detailed reflection with higher learning rates
- Stable tools: Use basic reflection with low learning rates
2. Memory Management
- Set appropriate memory limits based on tool usage patterns
- Use relevant memory types for different learning objectives
- Implement regular memory cleanup and validation
3. Learning Optimization
- Monitor learning progress and adjust configurations
- Use external feedback when available
- Balance learning speed with stability requirements
4. Performance Monitoring
- Track memory usage and retrieval performance
- Monitor learning effectiveness and plateau detection
- Adjust configurations based on performance metrics
This usage guide provides comprehensive guidance for integrating Reflexion learning capabilities into MCP tools while maintaining the 100% prompt-driven architecture and ensuring effective continuous improvement.