Память и граф

Память воркера —
дальше одной сессии.

Долговечная семантическая база знаний на SQLite по мотивам подходов mem0 / Memora: гибридный поиск, append-only-версионирование, детекция секретов и граф сущностей рядом с фактами.

vector + BM25append-onlyentity graphsecret-scanned

memoring · absorbing facts

Что хранится

Самодостаточные факты со scopes

Каждая запись — самодостаточный факт (50–500 символов) с изоляцией по scope: agent (общие знания), user (о клиенте), run (эпизод сессии). Плюс confidence, важность, теги, типизированные рёбра и полный журнал изменений.

FieldPurpose
contentthe fact text
scopeagent · user · run
confidence0.0–1.0 tie-breaker
importanceweight, grows via memory_boost
statusactive · superseded · archived

01Принципы

Паттерны долговечного контекста

Append-only

Факты никогда не перезаписываются. Новая версия — новая запись плюс ребро supersedes; противоречия видны через contradicts. Режимы чтения: active, latest, full_history.

Absorb, а не create

Секреты отклоняются → консолидация батча → дедуп по hash → cosine-кандидаты → классификация в один из 5 исходов: duplicate · supersede · contradict · related · new. Есть dry_run.

Гибридный поиск

score = 0.7·cosine + 0.3·BM25, затем линейный распад свежести — 1% в день. Медианная задержка ~2 мс в бенчмарках.

Дайджест перед стартом

Топ-агент получает детерминированный дайджест в system prompt: релевантные воспоминания + открытые TODO + недавние записи — с реальными id для проверки.

Опциональный реранк

[memory] rerank = true: второй LLM-проход переупорядочивает расширенную выдачу (top_k×3) по релевантности.

Эмбеддинги с fallback

Auto-режим: OpenAI-совместимый /embeddings при наличии ключа, иначе офлайн TF-IDF (512 мер, без сети). Векторы разных моделей не смешиваются.

02Три уровня

Профиль, навыки, архив

MEMORY.md / USER.md

Стабильный профиль ~2 КБ, замороженный в system prompt для попаданий в prefix-cache. Малый, всегда присутствует.

SKILL.md

Процедурные знания из опыта (create_from_experience), инжектируются по запросу через skill-инструмент.

Семантический архив

Неограниченная база знаний SQLite с этой страницы — гибридный поиск, граф, версионирование.

Граф сущностей

человек ↔ компания ↔ локация

Параллельно с фактами хранилище ведёт граф сущностей реального мира: узлы (person, company, project, technology, role, location, event, product) дедуплицируются по имя+тип, типизированные рёбра (works_at, leads, founded…) и multi-hop BFS до 4 хопов — «кто руководит X», «кто работает в компаниях Казани».

memory_graph add · query · list

Fathom Enterprise Entity Knowledge Graph Explorer

Fig 4.1 — Enterprise Entity Knowledge Graph: 3-hop relationship traversal across 5,420 interconnected entities in 1.62 ms with zero cloud Vector DB fees.

OSINT интеграция

Лид-разведка на основе памяти

Граф сущностей связывает людей с компаниями, компании с локациями, а локации с отраслями. Multi-hop BFS отвечает на вопросы вроде «кто руководит компаниями в Казани» или «какие CTO используют React». Поглощённые контакты становятся запросными знаниями для будущих сессий.

# After a lead-gen run, contacts are auto-absorbed
fathom memory search "CTO fintech Moscow"
# → Ivan Petrov, CTO, PayTech (conf 0.92)
# → Maria Kozlova, CTO, FinBox (conf 0.87)

# Entity graph queries are available to agents through memory_graph
# memory_graph(action="query", query="companies in Kazan")
# → Acme Corp → works_at → Ivan Petrov
#   → leads → Engineering → located_in → Kazan

03Инструменты агента

Шесть инструментов, одно хранилище

memory_absorb

Записывает факты через пайплайн с 5 исходами; авто-сейв найденных контактов работает без модели.

memory_search

Гибридный поиск (векторы + BM25) со scopes, фильтрами и распадом свежести.

memory_digest

Формирует дайджест перед запуском (релевантное + TODO + недавнее).

memory_boost

Повышает важность фактов, которые постоянно оказываются полезными.

memory_link

Создаёт типизированные рёбра между записями.

memory_graph

Добавляет/запрашивает/выводит сущности и связи.

Обслуживание

Distill, GC — ничего не удаляется

CLI memory search / list / get / stats / rebuild / distill / nuke. Дистилляция сжимает run-факты в устойчивые знания; GC архивирует устаревшие факты и компактирует scope-группы — ничего не разрушается.

fathom memory search "fintech leads Kazan"
fathom memory stats
fathom memory distill
fathom memory gc --dry-run