TL;DR
Проект letta-ai/claude-subconscious реализует архитектуру “подсознания” для Claude Code, позволяя ассистенту сохранять контекст между сессиями. Разбираем core-механизмы и паттерны, которые можно адаптировать для других AI-агентов.
Введение: зачем AI подсознание?
Современные LLM-ассистенты страдают от амнезии между сессиями - каждый диалог начинается с чистого листа. Архитектура подсознания решает эту проблему, добавляя персистентный контекст:
interface SubconsciousMemory {
sessionId: string;
persistentContext: Record<string, any>;
episodicMemories: MemoryChunk[];
}
Core-механизмы проекта
1. Memory Chunking
Работа с долгосрочной памятью через чанкинг и embeddings:
class MemoryProcessor {
async chunkText(text: string): Promise<MemoryChunk[]> {
const chunks = splitText(text); // Логика разделения
const vectors = await embed(chunks);
return chunks.map((text, i) => ({ text, vector: vectors[i] }));
}
}
2. Contextual Recall
Поиск релевантных воспоминаний по векторному сходству:
const findRelevantMemories = (query: string, memories: MemoryChunk[]) => {
const queryVector = await embed(query);
return memories
.map(m => ({ ...m, similarity: cosineSimilarity(m.vector, queryVector) }))
.sort((a, b) => b.similarity - a.similarity)
.slice(0, 5);
};
3. Reflection Loop
Автономный процесс “рефлексии” для консолидации памяти:
def reflection_loop(memory_store):
while True:
recent_memories = memory_store.get_recent()
if should_consolidate(recent_memories):
consolidated = consolidate_memories(recent_memories)
memory_store.add_long_term(consolidated)
sleep(REFLECTION_INTERVAL)
Практическое применение
Интеграция с Claude API
Пример инициализации подсознания для Claude:
const claudeWithMemory = new ClaudeSubconscious({
apiKey: process.env.CLAUDE_API_KEY,
memoryConfig: {
chunkSize: 1000,
reflectionInterval: '1h'
}
});
Кастомные провайдеры памяти
Реализация собственного MemoryProvider:
class CustomMemoryProvider implements MemoryProvider {
async save(memory: Memory): Promise<void> { ... }
async recall(query: RecallQuery): Promise<Memory[]> { ... }
}
Оптимизации и gotchas
- Cold start проблема: первые несколько сессий могут быть менее релевантными
- Memory leaks: необходимо реализовывать TTL для эпизодических воспоминаний
- Privacy-first: шифрование чувствительных данных перед сохранением
// Пример шифрования в памяти
impl MemoryEncryptor for AesGcmEncryptor {
fn encrypt(&self, data: &[u8]) -> Result<Vec<u8>> {
// Реализация AES-GCM
}
}
Заключение
Архитектура подсознания открывает новые возможности для персистентных AI-ассистентов. Проект letta-ai/claude-subconscious предлагает production-ready шаблон, который можно адаптировать под другие LLM. Ключевые моменты для успешной реализации:
- Грамотный баланс между краткосрочной и долгосрочной памятью
- Оптимизированные векторные поиски (например, через HNSW)
- Регулярная “чистка” памяти от мусора
Для глубокого погружения рекомендую изучить:
- Архитектуру MemGPT (https://memgpt.ai)
- Статьи о векторных базах данных для LLM
- Принципы когнитивной архитектуры из AI research