Restructured project from nested workspace pattern to flat single-repo layout. This eliminates redundant nesting and consolidates all project files under version control. ## Migration Summary **Before:** ``` alex/ (workspace, not versioned) ├── chess-game/ (git repo) │ ├── js/, css/, tests/ │ └── index.html └── docs/ (planning, not versioned) ``` **After:** ``` alex/ (git repo, everything versioned) ├── js/, css/, tests/ ├── index.html ├── docs/ (project documentation) ├── planning/ (historical planning docs) ├── .gitea/ (CI/CD) └── CLAUDE.md (configuration) ``` ## Changes Made ### Structure Consolidation - Moved all chess-game/ contents to root level - Removed redundant chess-game/ subdirectory - Flattened directory structure (eliminated one nesting level) ### Documentation Organization - Moved chess-game/docs/ → docs/ (project documentation) - Moved alex/docs/ → planning/ (historical planning documents) - Added CLAUDE.md (workspace configuration) - Added IMPLEMENTATION_PROMPT.md (original project prompt) ### Version Control Improvements - All project files now under version control - Planning documents preserved in planning/ folder - Merged .gitignore files (workspace + project) - Added .claude/ agent configurations ### File Updates - Updated .gitignore to include both workspace and project excludes - Moved README.md to root level - All import paths remain functional (relative paths unchanged) ## Benefits ✅ **Simpler Structure** - One level of nesting removed ✅ **Complete Versioning** - All documentation now in git ✅ **Standard Layout** - Matches open-source project conventions ✅ **Easier Navigation** - Direct access to all project files ✅ **CI/CD Compatible** - All workflows still functional ## Technical Validation - ✅ Node.js environment verified - ✅ Dependencies installed successfully - ✅ Dev server starts and responds - ✅ All core files present and accessible - ✅ Git repository functional ## Files Preserved **Implementation Files:** - js/ (3,517 lines of code) - css/ (4 stylesheets) - tests/ (87 test cases) - index.html - package.json **CI/CD Pipeline:** - .gitea/workflows/ci.yml - .gitea/workflows/release.yml **Documentation:** - docs/ (12+ documentation files) - planning/ (historical planning materials) - README.md **Configuration:** - jest.config.js, babel.config.cjs, playwright.config.js - .gitignore (merged) - CLAUDE.md 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
447 lines
11 KiB
Markdown
447 lines
11 KiB
Markdown
---
|
|
name: "ReasoningBank with AgentDB"
|
|
description: "Implement ReasoningBank adaptive learning with AgentDB's 150x faster vector database. Includes trajectory tracking, verdict judgment, memory distillation, and pattern recognition. Use when building self-learning agents, optimizing decision-making, or implementing experience replay systems."
|
|
---
|
|
|
|
# ReasoningBank with AgentDB
|
|
|
|
## What This Skill Does
|
|
|
|
Provides ReasoningBank adaptive learning patterns using AgentDB's high-performance backend (150x-12,500x faster). Enables agents to learn from experiences, judge outcomes, distill memories, and improve decision-making over time with 100% backward compatibility.
|
|
|
|
**Performance**: 150x faster pattern retrieval, 500x faster batch operations, <1ms memory access.
|
|
|
|
## Prerequisites
|
|
|
|
- Node.js 18+
|
|
- AgentDB v1.0.7+ (via agentic-flow)
|
|
- Understanding of reinforcement learning concepts (optional)
|
|
|
|
---
|
|
|
|
## Quick Start with CLI
|
|
|
|
### Initialize ReasoningBank Database
|
|
|
|
```bash
|
|
# Initialize AgentDB for ReasoningBank
|
|
npx agentdb@latest init ./.agentdb/reasoningbank.db --dimension 1536
|
|
|
|
# Start MCP server for Claude Code integration
|
|
npx agentdb@latest mcp
|
|
claude mcp add agentdb npx agentdb@latest mcp
|
|
```
|
|
|
|
### Migrate from Legacy ReasoningBank
|
|
|
|
```bash
|
|
# Automatic migration with validation
|
|
npx agentdb@latest migrate --source .swarm/memory.db
|
|
|
|
# Verify migration
|
|
npx agentdb@latest stats ./.agentdb/reasoningbank.db
|
|
```
|
|
|
|
---
|
|
|
|
## Quick Start with API
|
|
|
|
```typescript
|
|
import { createAgentDBAdapter, computeEmbedding } from 'agentic-flow/reasoningbank';
|
|
|
|
// Initialize ReasoningBank with AgentDB
|
|
const rb = await createAgentDBAdapter({
|
|
dbPath: '.agentdb/reasoningbank.db',
|
|
enableLearning: true, // Enable learning plugins
|
|
enableReasoning: true, // Enable reasoning agents
|
|
cacheSize: 1000, // 1000 pattern cache
|
|
});
|
|
|
|
// Store successful experience
|
|
const query = "How to optimize database queries?";
|
|
const embedding = await computeEmbedding(query);
|
|
|
|
await rb.insertPattern({
|
|
id: '',
|
|
type: 'experience',
|
|
domain: 'database-optimization',
|
|
pattern_data: JSON.stringify({
|
|
embedding,
|
|
pattern: {
|
|
query,
|
|
approach: 'indexing + query optimization',
|
|
outcome: 'success',
|
|
metrics: { latency_reduction: 0.85 }
|
|
}
|
|
}),
|
|
confidence: 0.95,
|
|
usage_count: 1,
|
|
success_count: 1,
|
|
created_at: Date.now(),
|
|
last_used: Date.now(),
|
|
});
|
|
|
|
// Retrieve similar experiences with reasoning
|
|
const result = await rb.retrieveWithReasoning(embedding, {
|
|
domain: 'database-optimization',
|
|
k: 5,
|
|
useMMR: true, // Diverse results
|
|
synthesizeContext: true, // Rich context synthesis
|
|
});
|
|
|
|
console.log('Memories:', result.memories);
|
|
console.log('Context:', result.context);
|
|
console.log('Patterns:', result.patterns);
|
|
```
|
|
|
|
---
|
|
|
|
## Core ReasoningBank Concepts
|
|
|
|
### 1. Trajectory Tracking
|
|
|
|
Track agent execution paths and outcomes:
|
|
|
|
```typescript
|
|
// Record trajectory (sequence of actions)
|
|
const trajectory = {
|
|
task: 'optimize-api-endpoint',
|
|
steps: [
|
|
{ action: 'analyze-bottleneck', result: 'found N+1 query' },
|
|
{ action: 'add-eager-loading', result: 'reduced queries' },
|
|
{ action: 'add-caching', result: 'improved latency' }
|
|
],
|
|
outcome: 'success',
|
|
metrics: { latency_before: 2500, latency_after: 150 }
|
|
};
|
|
|
|
const embedding = await computeEmbedding(JSON.stringify(trajectory));
|
|
|
|
await rb.insertPattern({
|
|
id: '',
|
|
type: 'trajectory',
|
|
domain: 'api-optimization',
|
|
pattern_data: JSON.stringify({ embedding, pattern: trajectory }),
|
|
confidence: 0.9,
|
|
usage_count: 1,
|
|
success_count: 1,
|
|
created_at: Date.now(),
|
|
last_used: Date.now(),
|
|
});
|
|
```
|
|
|
|
### 2. Verdict Judgment
|
|
|
|
Judge whether a trajectory was successful:
|
|
|
|
```typescript
|
|
// Retrieve similar past trajectories
|
|
const similar = await rb.retrieveWithReasoning(queryEmbedding, {
|
|
domain: 'api-optimization',
|
|
k: 10,
|
|
});
|
|
|
|
// Judge based on similarity to successful patterns
|
|
const verdict = similar.memories.filter(m =>
|
|
m.pattern.outcome === 'success' &&
|
|
m.similarity > 0.8
|
|
).length > 5 ? 'likely_success' : 'needs_review';
|
|
|
|
console.log('Verdict:', verdict);
|
|
console.log('Confidence:', similar.memories[0]?.similarity || 0);
|
|
```
|
|
|
|
### 3. Memory Distillation
|
|
|
|
Consolidate similar experiences into patterns:
|
|
|
|
```typescript
|
|
// Get all experiences in domain
|
|
const experiences = await rb.retrieveWithReasoning(embedding, {
|
|
domain: 'api-optimization',
|
|
k: 100,
|
|
optimizeMemory: true, // Automatic consolidation
|
|
});
|
|
|
|
// Distill into high-level pattern
|
|
const distilledPattern = {
|
|
domain: 'api-optimization',
|
|
pattern: 'For N+1 queries: add eager loading, then cache',
|
|
success_rate: 0.92,
|
|
sample_size: experiences.memories.length,
|
|
confidence: 0.95
|
|
};
|
|
|
|
await rb.insertPattern({
|
|
id: '',
|
|
type: 'distilled-pattern',
|
|
domain: 'api-optimization',
|
|
pattern_data: JSON.stringify({
|
|
embedding: await computeEmbedding(JSON.stringify(distilledPattern)),
|
|
pattern: distilledPattern
|
|
}),
|
|
confidence: 0.95,
|
|
usage_count: 0,
|
|
success_count: 0,
|
|
created_at: Date.now(),
|
|
last_used: Date.now(),
|
|
});
|
|
```
|
|
|
|
---
|
|
|
|
## Integration with Reasoning Agents
|
|
|
|
AgentDB provides 4 reasoning modules that enhance ReasoningBank:
|
|
|
|
### 1. PatternMatcher
|
|
|
|
Find similar successful patterns:
|
|
|
|
```typescript
|
|
const result = await rb.retrieveWithReasoning(queryEmbedding, {
|
|
domain: 'problem-solving',
|
|
k: 10,
|
|
useMMR: true, // Maximal Marginal Relevance for diversity
|
|
});
|
|
|
|
// PatternMatcher returns diverse, relevant memories
|
|
result.memories.forEach(mem => {
|
|
console.log(`Pattern: ${mem.pattern.approach}`);
|
|
console.log(`Similarity: ${mem.similarity}`);
|
|
console.log(`Success Rate: ${mem.success_count / mem.usage_count}`);
|
|
});
|
|
```
|
|
|
|
### 2. ContextSynthesizer
|
|
|
|
Generate rich context from multiple memories:
|
|
|
|
```typescript
|
|
const result = await rb.retrieveWithReasoning(queryEmbedding, {
|
|
domain: 'code-optimization',
|
|
synthesizeContext: true, // Enable context synthesis
|
|
k: 5,
|
|
});
|
|
|
|
// ContextSynthesizer creates coherent narrative
|
|
console.log('Synthesized Context:', result.context);
|
|
// "Based on 5 similar optimizations, the most effective approach
|
|
// involves profiling, identifying bottlenecks, and applying targeted
|
|
// improvements. Success rate: 87%"
|
|
```
|
|
|
|
### 3. MemoryOptimizer
|
|
|
|
Automatically consolidate and prune:
|
|
|
|
```typescript
|
|
const result = await rb.retrieveWithReasoning(queryEmbedding, {
|
|
domain: 'testing',
|
|
optimizeMemory: true, // Enable automatic optimization
|
|
});
|
|
|
|
// MemoryOptimizer consolidates similar patterns and prunes low-quality
|
|
console.log('Optimizations:', result.optimizations);
|
|
// { consolidated: 15, pruned: 3, improved_quality: 0.12 }
|
|
```
|
|
|
|
### 4. ExperienceCurator
|
|
|
|
Filter by quality and relevance:
|
|
|
|
```typescript
|
|
const result = await rb.retrieveWithReasoning(queryEmbedding, {
|
|
domain: 'debugging',
|
|
k: 20,
|
|
minConfidence: 0.8, // Only high-confidence experiences
|
|
});
|
|
|
|
// ExperienceCurator returns only quality experiences
|
|
result.memories.forEach(mem => {
|
|
console.log(`Confidence: ${mem.confidence}`);
|
|
console.log(`Success Rate: ${mem.success_count / mem.usage_count}`);
|
|
});
|
|
```
|
|
|
|
---
|
|
|
|
## Legacy API Compatibility
|
|
|
|
AgentDB maintains 100% backward compatibility with legacy ReasoningBank:
|
|
|
|
```typescript
|
|
import {
|
|
retrieveMemories,
|
|
judgeTrajectory,
|
|
distillMemories
|
|
} from 'agentic-flow/reasoningbank';
|
|
|
|
// Legacy API works unchanged (uses AgentDB backend automatically)
|
|
const memories = await retrieveMemories(query, {
|
|
domain: 'code-generation',
|
|
agent: 'coder'
|
|
});
|
|
|
|
const verdict = await judgeTrajectory(trajectory, query);
|
|
|
|
const newMemories = await distillMemories(
|
|
trajectory,
|
|
verdict,
|
|
query,
|
|
{ domain: 'code-generation' }
|
|
);
|
|
```
|
|
|
|
---
|
|
|
|
## Performance Characteristics
|
|
|
|
- **Pattern Search**: 150x faster (100µs vs 15ms)
|
|
- **Memory Retrieval**: <1ms (with cache)
|
|
- **Batch Insert**: 500x faster (2ms vs 1s for 100 patterns)
|
|
- **Trajectory Judgment**: <5ms (including retrieval + analysis)
|
|
- **Memory Distillation**: <50ms (consolidate 100 patterns)
|
|
|
|
---
|
|
|
|
## Advanced Patterns
|
|
|
|
### Hierarchical Memory
|
|
|
|
Organize memories by abstraction level:
|
|
|
|
```typescript
|
|
// Low-level: Specific implementation
|
|
await rb.insertPattern({
|
|
type: 'concrete',
|
|
domain: 'debugging/null-pointer',
|
|
pattern_data: JSON.stringify({
|
|
embedding,
|
|
pattern: { bug: 'NPE in UserService.getUser()', fix: 'Add null check' }
|
|
}),
|
|
confidence: 0.9,
|
|
// ...
|
|
});
|
|
|
|
// Mid-level: Pattern across similar cases
|
|
await rb.insertPattern({
|
|
type: 'pattern',
|
|
domain: 'debugging',
|
|
pattern_data: JSON.stringify({
|
|
embedding,
|
|
pattern: { category: 'null-pointer', approach: 'defensive-checks' }
|
|
}),
|
|
confidence: 0.85,
|
|
// ...
|
|
});
|
|
|
|
// High-level: General principle
|
|
await rb.insertPattern({
|
|
type: 'principle',
|
|
domain: 'software-engineering',
|
|
pattern_data: JSON.stringify({
|
|
embedding,
|
|
pattern: { principle: 'fail-fast with clear errors' }
|
|
}),
|
|
confidence: 0.95,
|
|
// ...
|
|
});
|
|
```
|
|
|
|
### Multi-Domain Learning
|
|
|
|
Transfer learning across domains:
|
|
|
|
```typescript
|
|
// Learn from backend optimization
|
|
const backendExperience = await rb.retrieveWithReasoning(embedding, {
|
|
domain: 'backend-optimization',
|
|
k: 10,
|
|
});
|
|
|
|
// Apply to frontend optimization
|
|
const transferredKnowledge = backendExperience.memories.map(mem => ({
|
|
...mem,
|
|
domain: 'frontend-optimization',
|
|
adapted: true,
|
|
}));
|
|
```
|
|
|
|
---
|
|
|
|
## CLI Operations
|
|
|
|
### Database Management
|
|
|
|
```bash
|
|
# Export trajectories and patterns
|
|
npx agentdb@latest export ./.agentdb/reasoningbank.db ./backup.json
|
|
|
|
# Import experiences
|
|
npx agentdb@latest import ./experiences.json
|
|
|
|
# Get statistics
|
|
npx agentdb@latest stats ./.agentdb/reasoningbank.db
|
|
# Shows: total patterns, domains, confidence distribution
|
|
```
|
|
|
|
### Migration
|
|
|
|
```bash
|
|
# Migrate from legacy ReasoningBank
|
|
npx agentdb@latest migrate --source .swarm/memory.db --target .agentdb/reasoningbank.db
|
|
|
|
# Validate migration
|
|
npx agentdb@latest stats .agentdb/reasoningbank.db
|
|
```
|
|
|
|
---
|
|
|
|
## Troubleshooting
|
|
|
|
### Issue: Migration fails
|
|
```bash
|
|
# Check source database exists
|
|
ls -la .swarm/memory.db
|
|
|
|
# Run with verbose logging
|
|
DEBUG=agentdb:* npx agentdb@latest migrate --source .swarm/memory.db
|
|
```
|
|
|
|
### Issue: Low confidence scores
|
|
```typescript
|
|
// Enable context synthesis for better quality
|
|
const result = await rb.retrieveWithReasoning(embedding, {
|
|
synthesizeContext: true,
|
|
useMMR: true,
|
|
k: 10,
|
|
});
|
|
```
|
|
|
|
### Issue: Memory growing too large
|
|
```typescript
|
|
// Enable automatic optimization
|
|
const result = await rb.retrieveWithReasoning(embedding, {
|
|
optimizeMemory: true, // Consolidates similar patterns
|
|
});
|
|
|
|
// Or manually optimize
|
|
await rb.optimize();
|
|
```
|
|
|
|
---
|
|
|
|
## Learn More
|
|
|
|
- **AgentDB Integration**: node_modules/agentic-flow/docs/AGENTDB_INTEGRATION.md
|
|
- **GitHub**: https://github.com/ruvnet/agentic-flow/tree/main/packages/agentdb
|
|
- **MCP Integration**: `npx agentdb@latest mcp`
|
|
- **Website**: https://agentdb.ruv.io
|
|
|
|
---
|
|
|
|
**Category**: Machine Learning / Reinforcement Learning
|
|
**Difficulty**: Intermediate
|
|
**Estimated Time**: 20-30 minutes
|