| name | when-optimizing-agent-learning-use-reasoningbank-intelligence |
| description | Implement adaptive learning with ReasoningBank for pattern recognition, strategy optimization, and continuous improvement Use when this capability is needed. |
| metadata | {"author":"dnyoussef"} |
ReasoningBank Intelligence - Adaptive Agent Learning
Overview
Implement adaptive learning with ReasoningBank for pattern recognition, strategy optimization, and continuous improvement. Use when building self-learning agents, optimizing decision-making, or implementing meta-cognitive systems.
When to Use
- Agent performance needs improvement
- Repetitive tasks require optimization
- Need pattern recognition from experience
- Strategy refinement through learning
- Building self-improving systems
- Meta-cognitive capabilities needed
Theoretical Foundation
ReasoningBank Architecture
- Trajectory Tracking: Record decision paths and outcomes
- Verdict Judgment: Evaluate success/failure of strategies
- Memory Distillation: Extract patterns from experience
- Pattern Recognition: Identify successful approaches
- Strategy Optimization: Apply learned patterns to new situations
AgentDB Integration (Optional)
- 150x faster vector operations
- HNSW indexing for similarity search
- Quantization for memory efficiency
- Batch operations for performance
Phase 1: Initialize Learning System (10 min)
Objective
Set up ReasoningBank with trajectory tracking
Agent: ML-Developer
Step 1.1: Initialize ReasoningBank
const ReasoningBank = require('reasoningbank');
const learningSystem = new ReasoningBank({
storage: {
type: 'agentdb',
path: './reasoning-bank-data',
quantization: 'int8'
},
indexing: {
enabled: true,
type: 'hnsw',
dimensions: 768
},
learning: {
algorithm: 'decision-transformer',
learningRate: 0.001,
batchSize: 32
}
});
await learningSystem.init();
await memory.store('reasoningbank/system', learningSystem.config);
Step 1.2: Define Trajectory Schema
const trajectorySchema = {
id: 'uuid',
timestamp: 'datetime',
context: {
task: 'string',
environment: 'object',
constraints: 'array'
},
reasoning: [
{
step: 'number',
thought: 'string',
action: 'string',
observation: 'string'
}
],
outcome: {
success: 'boolean',
metrics: 'object',
verdict: 'string'
}
};
await learningSystem.registerSchema('trajectory', trajectorySchema);
Step 1.3: Configure Verdict Criteria
const verdictCriteria = {
success: {
thresholds: {
performance: 0.8,
efficiency: 0.75,
quality: 0.9
},
weights: {
performance: 0.4,
efficiency: 0.3,
quality: 0.3
}
},
failure: {
reasons: [
'timeout',
'error',
'poor_quality',
'resource_exhaustion'
]
}
};
await learningSystem.configureVerdicts(verdictCriteria);
Validation Criteria
Hooks Integration
npx claude-flow@alpha hooks pre-task \
--description "Initialize ReasoningBank learning system" \
--complexity "high"
npx claude-flow@alpha hooks post-task \
--task-id "reasoningbank-init" \
--memory-key "reasoningbank/initialization"
Phase 2: Capture Patterns (10 min)
Objective
Record agent decisions and outcomes for learning
Agent: SAFLA-Neural
Step 2.1: Track Trajectories
async function trackTrajectory(task, agent) {
const trajectory = {
id: generateUUID(),
timestamp: new Date(),
context: {
task: task.description,
environment: getEnvironment(),
constraints: task.constraints
},
reasoning: []
};
agent.on('thought', (thought) => {
trajectory.reasoning.push({
step: trajectory.reasoning.length + 1,
thought: thought.text,
action: null,
observation: null
});
});
agent.on('action', (action) => {
const lastStep = trajectory.reasoning[trajectory.reasoning.length - 1];
lastStep.action = action.description;
});
agent.on('observation', (obs) => {
const lastStep = trajectory.[trajectory.. - ];
lastStep. = obs.;
});
agent.(, (result) => {
trajectory. = {
: result.,
: result.,
: (result)
};
learningSystem.(trajectory);
});
trajectory;
}
Step 2.2: Evaluate Verdicts
async function evaluateVerdict(result) {
const scores = {
performance: result.metrics.score,
efficiency: result.metrics.duration / result.metrics.expectedDuration,
quality: result.metrics.qualityScore
};
const weightedScore = Object.keys(scores).reduce((sum, key) => {
return sum + scores[key] * verdictCriteria.success.weights[key];
}, 0);
const verdict = {
score: weightedScore,
passed: weightedScore >= Object.values(verdictCriteria.success.thresholds)
.reduce((sum, t) => sum + t, 0) / 3,
breakdown: scores,
reasoning: generateVerdictReasoning(scores, weightedScore)
};
await learningSystem.recordVerdict(result.id, verdict);
return verdict;
}
Step 2.3: Pattern Extraction
async function extractPatterns() {
const successfulTrajectories = await learningSystem.query({
'outcome.verdict.passed': true
});
const patterns = await learningSystem.analyzePatterns({
trajectories: successfulTrajectories,
similarity: {
method: 'cosine',
threshold: 0.85,
index: 'hnsw'
},
clustering: {
algorithm: 'dbscan',
minSamples: 3,
epsilon: 0.15
}
});
await memory.store('reasoningbank/patterns', patterns);
return patterns;
}
Validation Criteria
Phase 3: Optimize Strategies (10 min)
Objective
Apply learned patterns to improve future decisions
Agent: Performance-Analyzer
Step 3.1: Train Decision Model
async function trainDecisionModel(patterns) {
const model = await learningSystem.createModel({
algorithm: 'decision-transformer',
config: {
hiddenSize: 256,
numLayers: 4,
numHeads: 8,
maxTrajectoryLength: 50,
learningRate: 0.0001
}
});
const trainingData = patterns.map(pattern => ({
states: pattern.reasoning.map(r => r.thought),
actions: pattern.reasoning.map(r => r.action),
rewards: calculateRewards(pattern.outcome),
returns: calculateReturnsToGo(pattern.outcome)
}));
await model.train({
data: trainingData,
epochs: ,
: ,
: ,
: {
: {
.();
}
}
});
learningSystem.(, model);
model;
}
Step 3.2: Generate Strategy Recommendations
async function generateRecommendations() {
const patterns = await memory.retrieve('reasoningbank/patterns');
const recommendations = patterns.map(pattern => {
const frequency = pattern.instances.length;
const avgScore = pattern.instances.reduce((sum, i) =>
sum + i.outcome.verdict.score, 0) / frequency;
return {
pattern: {
description: summarizePattern(pattern),
reasoning: pattern.commonReasoning,
actions: pattern.commonActions
},
metrics: {
frequency,
avgScore,
consistency: calculateConsistency(pattern.instances)
},
recommendation: {
applicability: identifyApplicableContexts(pattern),
priority: calculatePriority(frequency, avgScore),
implementation: generateImplementationGuide(pattern)
}
};
}).sort((a, b) => b.recommendation. - a..);
memory.(, recommendations);
recommendations;
}
Step 3.3: Apply Optimizations
async function applyOptimizations(agent, recommendations) {
const topRecommendations = recommendations.slice(0, 5);
for (const rec of topRecommendations) {
await agent.updateStrategy({
pattern: rec.pattern,
priority: rec.recommendation.priority,
applicableContexts: rec.recommendation.applicability
});
console.log(`✅ Applied: ${rec.pattern.description}`);
}
const model = await learningSystem.loadModel('decision-model');
agent.setDecisionModel(model);
await memory.store('reasoningbank/applied-optimizations', topRecommendations);
}
Validation Criteria
Phase 4: Validate Learning (10 min)
Objective
Measure improvement from adaptive learning
Agent: Performance-Analyzer
Step 4.1: Benchmark Performance
async function benchmarkPerformance(agent, testCases) {
const results = {
baseline: [],
optimized: []
};
const baselineAgent = agent.clone({ useLearning: false });
for (const testCase of testCases) {
const result = await baselineAgent.execute(testCase);
results.baseline.push({
testId: testCase.id,
metrics: result.metrics,
success: result.success
});
}
const optimizedAgent = agent.clone({ useLearning: true });
for (const testCase of testCases) {
const result = await optimizedAgent.execute(testCase);
results.optimized.push({
testId: testCase.id,
metrics: result.metrics,
success: result.success
});
}
await memory.store('reasoningbank/benchmark-results', results);
results;
}
Step 4.2: Calculate Improvement Metrics
function calculateImprovement(results) {
const baselineAvg = calculateAverage(results.baseline.map(r => r.metrics.score));
const optimizedAvg = calculateAverage(results.optimized.map(r => r.metrics.score));
const improvement = {
scoreImprovement: ((optimizedAvg - baselineAvg) / baselineAvg * 100).toFixed(2) + '%',
successRateImprovement: calculateSuccessRateImprovement(results),
efficiencyImprovement: calculateEfficiencyImprovement(results),
qualityImprovement: calculateQualityImprovement(results)
};
return improvement;
}
Step 4.3: Validate Patterns
async function validatePatterns(patterns, testResults) {
const validation = patterns.map(pattern => {
const patternResults = testResults.optimized.filter(r =>
r.usedPattern === pattern.id
);
const successRate = patternResults.filter(r => r.success).length / patternResults.length;
return {
pattern: pattern.description,
timesUsed: patternResults.length,
successRate,
avgScore: calculateAverage(patternResults.map(r => r.metrics.score)),
validated: successRate > 0.8
};
});
await memory.store('reasoningbank/pattern-validation', validation);
return validation;
}
Validation Criteria
Phase 5: Deploy Optimizations (5 min)
Objective
Integrate learned strategies into production agents
Agent: ML-Developer
Step 5.1: Export Learned Model
async function exportModel() {
const model = await learningSystem.loadModel('decision-model');
const patterns = await memory.retrieve('reasoningbank/patterns');
const recommendations = await memory.retrieve('reasoningbank/recommendations');
const exportPackage = {
version: '1.0.0',
timestamp: new Date(),
model: {
weights: await model.exportWeights(),
config: model.config,
performance: await memory.retrieve('reasoningbank/benchmark-results')
},
patterns: patterns.map(p => ({
id: p.id,
description: p.description,
reasoning: p.commonReasoning,
actions: p.commonActions,
metrics: p.metrics
})),
recommendations: recommendations
};
await fs.writeFile(
'/tmp/reasoningbank-export.json',
.(exportPackage, , )
);
.();
}
Step 5.2: Create Integration Guide
# ReasoningBank Integration Guide
## Installation
\`\`\`bash
npm install reasoningbank
\`\`\`
## Import Learned Model
\`\`\`javascript
const { ReasoningBank } = require('reasoningbank');
const learnedModel = require('./reasoningbank-export.json');
const agent = new Agent({
decisionModel: learnedModel.model,
patterns: learnedModel.patterns,
recommendations: learnedModel.recommendations
});
\`\`\`
## Usage
\`\`\`javascript
// Agent automatically uses learned strategies
const result = await agent.execute(task);
\`\`\`
## Performance Gains
${improvement.scoreImprovement} average improvement
${improvement.successRateImprovement} success rate increase
Step 5.3: Generate Learning Report
const learningReport = {
summary: {
totalTrajectories: await learningSystem.countTrajectories(),
patternsIdentified: patterns.length,
recommendationsGenerated: recommendations.length,
improvement: improvement
},
topPatterns: patterns.slice(0, 10),
performanceMetrics: {
baseline: baselineMetrics,
optimized: optimizedMetrics,
improvement: improvement
},
nextSteps: [
'Continue collecting trajectories for ongoing learning',
'Monitor production performance',
'Retrain model quarterly',
'A/B test new patterns'
]
};
await fs.writeFile(
'/tmp/learning-report.json',
JSON.stringify(learningReport, null, 2)
);
Validation Criteria
Success Metrics
- Performance improvement > 15%
- Pattern recognition accuracy > 85%
- Model training successful
- Production integration ready
Memory Schema
{
"reasoningbank/": {
"session-${id}/": {
"system": {},
"patterns": [],
"recommendations": [],
"benchmark-results": {},
"pattern-validation": [],
"applied-optimizations": []
}
}
}
Integration with AgentDB
For 150x faster operations:
const AgentDB = require('agentdb');
const db = new AgentDB({
quantization: 'int8',
indexing: 'hnsw',
caching: true
});
await learningSystem.useVectorDB(db);
Skill Completion
Outputs:
- reasoningbank-export.json: Trained model and patterns
- learning-report.json: Performance analysis
- integration-guide.md: Implementation instructions
- pattern-library.json: Validated patterns
Complete when improvement > 15% and ready for production deployment.
Converted and distributed by TomeVault — claim your Tome and manage your conversions.