Install
openclaw skills install openclaw-memory-masterAI Memory System with LLM Wiki
openclaw skills install openclaw-memory-masterEnterprise-grade AI Memory System with Smart Curation, GraphRAG, Real-time Monitoring, and Plugin Architecture.
🎉 Smart Memory Curation System Complete! - 6 core modules, 121.2KB TypeScript code
OpenClaw Memory Master is an AI-powered memory management system designed for enterprise applications. It provides intelligent memory organization, analysis, and retrieval with advanced features like:
Version: v4.3.0 (Enhanced Edition) Author: Ghost 👻 and Jake License: MIT
# Clone the repository
git clone https://github.com/cp3d1455926-svg/openclaw-memory.git
cd openclaw-memory
# Install dependencies
npm install
# Build TypeScript
npm run build
import { SmartMemoryCurator } from './src/smart/SmartMemoryCurator';
// Initialize the curator
const curator = new SmartMemoryCurator({
autoProcess: true,
batchSize: 10,
cacheSize: 1000
});
// Analyze a memory
const result = await curator.analyze({
content: 'Successfully implemented smart memory curation system with 6 modules!',
metadata: { source: 'development', priority: 'high' }
});
console.log('Category:', result.category); // "technical"
console.log('Tags:', result.tags); // ["Memory-Master", "development", "success"]
console.log('Importance:', result.importance); // 89/100
console.log('Is Duplicate:', result.isDuplicate); // false
console.log('Related Memories:', result.relatedMemoryIds); // []
// Batch processing
const batchResults = await curator.analyzeBatch([
{ content: 'Meeting notes from project planning' },
{ content: 'Technical discussion about architecture' },
{ content: 'Personal reflection on today\'s work' }
]);
SmartMemoryCurator.ts (17KB) - Core OrchestratorPurpose: Main coordination layer that orchestrates the entire memory curation pipeline.
Key Responsibilities:
Usage:
const curator = new SmartMemoryCurator(config);
const result = await curator.analyze(memory);
const stats = curator.getStatistics();
const report = curator.exportReport();
AutoClassifier.ts (15.4KB) - Automatic ClassifierPurpose: AI-powered content categorization with hybrid rule+LLM approach.
Key Responsibilities:
Categories:
technical - Code, algorithms, technical discussionsproject - Project planning, milestones, deliverableslearning - Study notes, tutorials, educational contentpersonal - Life events, reflections, personal growthwork - Work-related tasks, meetings, career developmenthealth - Wellness, fitness, medical informationfinance - Budgeting, investments, financial planningsocial - Social interactions, relationships, communityother - Uncategorized contentAutoTagger.ts (21KB) - Automatic TaggerPurpose: Multi-dimensional tag extraction and analysis.
Key Responsibilities:
Tag Types:
Example Output:
{
keywordTags: ['Memory-Master', 'development', 'TypeScript', 'AI', 'curation'],
emotionTags: ['joy', 'satisfaction'],
emotionScores: { joy: 0.85, satisfaction: 0.72 },
entityTags: ['2026-04-20', 'https://github.com/...'],
ruleTags: ['technical', 'achievement', 'high-priority']
}
DeduplicationEngine.ts (17.5KB) - Deduplication EnginePurpose: Intelligent duplicate detection with multi-level strategy.
Key Responsibilities:
Deduplication Strategy:
Usage:
const deduper = new DeduplicationEngine({
similarityThreshold: 0.85,
semanticCheck: true,
exactMatch: true,
fuzzyMatch: true
});
const result = await deduper.checkDuplicate(memory);
const dedupedMemories = await deduper.deduplicateBatch(memories);
const stats = deduper.getStatistics();
ImportanceScorer.ts (20.8KB) - Importance ScorerPurpose: Smart memory importance scoring based on 5 dimensions.
Key Responsibilities:
Scoring Dimensions:
Score Interpretation:
RelationDiscoverer.ts (29.5KB) - Relation DiscovererPurpose: Automatic discovery of relationships between memories.
Key Responsibilities:
Relation Discovery Process:
Usage:
const discoverer = new RelationDiscoverer({
similarityThreshold: 0.6,
entityWeight: 0.35,
temporalWeight: 0.25,
semanticWeight: 0.25,
categoryWeight: 0.15,
maxRelatedMemories: 5
});
const relations = await discoverer.discoverRelations(memory);
// Enhanced version with detailed analysis
const enhancedRelations = await discoverer.discoverRelationsEnhanced(memory);
openclaw-memory-master/
├── src/
│ ├── smart/ # Smart Memory Curation System
│ │ ├── SmartMemoryCurator.ts # Core orchestrator (17KB)
│ │ ├── AutoClassifier.ts # Automatic classifier (15.4KB)
│ │ ├── AutoTagger.ts # Automatic tagger (21KB)
│ │ ├── DeduplicationEngine.ts # Deduplication engine (17.5KB)
│ │ ├── ImportanceScorer.ts # Importance scorer (20.8KB)
│ │ └── RelationDiscoverer.ts # Relation discoverer (29.5KB)
│ │
│ ├── core/ # Core memory management
│ │ ├── layered-manager.ts # 4-layer architecture
│ │ ├── knowledge-graph.ts # GraphRAG engine
│ │ └── aaak-compressor.ts # Compression algorithms
│ │
│ ├── emotion/ # Emotion intelligence (planned)
│ ├── monitoring/ # Performance monitoring (planned)
│ ├── plugins/ # Plugin system (planned)
│ └── utils/ # Utilities
│
├── package.json # Project configuration
├── tsconfig.json # TypeScript configuration
├── SKILL.md # Skill description
├── DEV_PLAN_v4.3.0.md # Development plan (74KB)
└── README.md # This file
import { SmartMemoryCurator } from './src/smart/SmartMemoryCurator';
async function completeMemoryAnalysis() {
// Initialize with custom configuration
const curator = new SmartMemoryCurator({
classifier: {
enableLLM: true,
confidenceThreshold: 0.7,
rules: [...], // Custom rules
},
tagger: {
maxKeywords: 10,
emotionDetection: true,
entityExtraction: true,
},
deduplication: {
similarityThreshold: 0.85,
semanticCheck: true,
},
importance: {
factors: {
contentLengthWeight: 0.25,
emotionalIntensityWeight: 0.20,
temporalRelevanceWeight: 0.15,
semanticRichnessWeight: 0.25,
accessFrequencyWeight: 0.15,
},
},
autoProcess: true,
batchSize: 10,
cacheSize: 1000,
});
// Single memory analysis
const memory = {
id: 'mem_001',
content: 'Today we completed the smart memory curation system with 6 modules!',
timestamp: Date.now(),
metadata: {
source: 'development',
author: 'Ghost & Jake',
project: 'Memory-Master',
},
};
const result = await curator.analyze(memory);
console.log('=== Analysis Results ===');
console.log('Category:', result.category, `(${(result.categoryConfidence * 100).toFixed(1)}%)`);
console.log('Tags:', result.tags.slice(0, 5).join(', '));
console.log('Emotions:', result.emotionTags.join(', '));
console.log('Is Duplicate:', result.isDuplicate);
if (result.duplicateOf) {
console.log('Duplicate of:', result.duplicateOf, `(${(result.similarityScore * 100).toFixed(1)}% similar)`);
}
console.log('Importance:', result.importance, '/100');
console.log('Related Memories:', result.relatedMemoryIds.length);
// Batch processing
const memories = [
{ content: 'Project planning meeting notes' },
{ content: 'Technical architecture discussion' },
{ content: 'Learning TypeScript best practices' },
];
const batchResults = await curator.analyzeBatch(memories);
console.log(`Processed ${batchResults.length} memories`);
// Get statistics
const stats = curator.getStatistics();
console.log('=== System Statistics ===');
console.log('Total processed:', stats.totalProcessed);
console.log('Duplicates found:', stats.totalDuplicatesFound);
console.log('Average processing time:', stats.averageProcessingTime.toFixed(1), 'ms');
console.log('Cache hit rate:', (stats.cacheHitRate * 100).toFixed(1), '%');
console.log('Average importance score:', stats.averageImportanceScore.toFixed(1));
// Export report
const report = curator.exportReport();
console.log('=== System Report ===');
console.log(report);
}
// Direct module usage (advanced)
import { AutoClassifier } from './src/smart/AutoClassifier';
import { AutoTagger } from './src/smart/AutoTagger';
import { DeduplicationEngine } from './src/smart/DeduplicationEngine';
import { ImportanceScorer } from './src/smart/ImportanceScorer';
import { RelationDiscoverer } from './src/smart/RelationDiscoverer';
async function advancedUsage() {
// Classifier
const classifier = new AutoClassifier();
const classification = await classifier.classify('Technical content about AI memory systems');
// Tagger
const tagger = new AutoTagger();
const tagging = await tagger.tag('Feeling joyful about completing the project!');
// Deduplication
const deduper = new DeduplicationEngine();
const dedupResult = await deduper.checkDuplicate({
content: 'Duplicate content check',
});
// Importance scoring
const scorer = new ImportanceScorer();
const importance = scorer.calculate(
'Important content about system architecture',
classification,
tagging
);
// Relation discovery
const discoverer = new RelationDiscoverer();
// Register some memories first
discoverer.registerMemory({ id: 'mem1', content: 'Previous memory' });
discoverer.registerMemory({ id: 'mem2', content: 'Another memory' });
const relations = await discoverer.discoverRelations({
id: 'mem3',
content: 'Current memory related to previous ones',
});
}
Current Version: v4.3.0 (Enhanced Edition)
Total Code: 121.2KB TypeScript Status: 100% Complete 🎉
We welcome contributions! Here's how you can help:
Development Guidelines:
MIT License - See LICENSE file for details.
Built with ❤️ by Ghost 👻 and Jake
Making AI memory management smarter, faster, and more human-aware.