TencentDB Agent Memory — многослойная память для AI-агентов с символической компрессией

· 2 мин чтения
memory ai-agents token-compression context-management rag
📂 Исходный код на GitHub

Многослойная память для AI-агентов от Tencent Cloud. Символическая краткосрочная память выгружает тяжёлые логи инструментов в компактные Mermaid-символы, экономит токены и повышает успешность задач; слоистая долгосрочная память собирает разговоры в персоны и сцены (L0→L3), а не сваливает всё в плоские вектора. С памятью OpenClaw тратит до 61% меньше токенов, точность персон растёт с 48% до 76%. MIT.

TencentDB Agent Memory — многослойная память для AI-агентов с символической компрессией

TencentDB Agent Memory — это открытая система памяти для AI-агентов, построенная на двух принципах: символическая краткосрочная память и слоистая долгосрочная память. Авторы проекта отвергают как «слепое» накопление истории, так и необратимую lossy-компрессию, и вместо этого предлагают архитектуру, где память не просто «запоминает больше», а помогает агенту «рассуждать лучше».

Философия проекта сформулирована прямо в README: память — это не про то, чтобы запихать всё в ИИ, а про то, чтобы избавить людей от необходимости повторяться. Мы постоянно переобъясняем агенту свои рабочие инструкции, контекст проекта, конвенции и форматы вывода. Такая информация не должна требовать повторения — и не должна бездумно копиться в контексте. TencentDB Agent Memory помогает агенту выучить рабочие процессы, удержать контекст задачи и переиспользовать прошлый опыт.

С памятью OpenClaw тратит до 61,38% меньше токенов на коротких задачах, прохождение реальных бенчмарков (pass rate) вырастает на 51,52% (относительно), а точность построения персон (PersonaMem) поднимается с 48% до 76%. Проект распространяется под лицензией MIT.

Две опоры архитектуры: слоистость и символизация

Слоистость памяти: прогрессивное раскрытие при гетерогенном хранении

Классические системы памяти шинкуют данные на фрагменты и сваливают их в плоское векторное хранилище. Извлечение вырождается в слепой поиск по разрозненным кускам без макро-ориентира. TencentDB Agent Memory берёт слоистость как единый архитектурный принцип, и это видно на трёх уровнях:

  • Слои краткосрочного контекста. Нижний слой архивирует сырые результаты инструментов (refs/*.md); средний слой собирает пошаговые суммаризмы (JSONL); верхний слой конденсирует состояние в лёгкий Mermaid-канвас. Агенту в контексте нужен только верхний слой, а ниже он спускается по node_id при ошибке.
  • Слои долгосрочной персонализации. Вместо плоских логов строится семантическая пирамида: L0 Conversation (сырой диалог) → L1 Atom (атомарные факты) → L2 Scenario (сценарные блоки) → L3 Persona (профиль пользователя). На слое Persona лежат повседневные предпочтения; когда важны детали, система спускается к атомам.
  • Слои генерации навыков. Слоистость работает и с действиями. Из нижних трасс исполнения (Conversation) средний слой выводит типовые паттерны решений (Scenario), а верхний собирает переиспользуемые Skills или стандартные SOP (Persona).

В основе — двухслойная стратегия хранения. Нижний слой (факты, логи, трассы) лежит в базах данных для надёжного полнотекстового поиска; верхний слой (персоны, сцены, канвасы) хранится в человекочитаемых Markdown-файлах с высокой информационной плотностью. Нижние слои сохраняют доказательства, верхние — структуру.

И это обеспечивает полную прослеживаемость и безвозвратное восстановление. Компрессия почти всегда жертвует восстанавливаемостью — здесь этого избегают, сохраняя детерминированный путь от высокоуровневых абстракций к первичным доказательствам. Гарантируется полная цепочка спуска: «символ верхнего слоя (Persona / канвас) → индекс среднего слоя (Scenario / jsonl) → сырой текст нижнего слоя (L0 Conversation / refs)».

Символическая память: максимум смысла в минимуме символов

В длинных задачах самые расточительные потребители токенов — это многословные промежуточные логи: результаты поиска, код, трассы ошибок. Система решает это комбинацией выгрузки контекста и символьной памяти:

  • Mermaid-символьный граф. Состояние задачи кодируется в плотном Mermaid-синтаксисе — достаточно точном, чтобы LLM его парсил, и достаточно лаконичном, чтобы его читал человек.
  • Выгрузка истории. Полные инструментальные логи уходят во внешние файлы; в контексте остаётся только лёгкая карта задач.
  • Трассировка по node_id. Агент рассуждает над символьным графом; чтобы проверить деталь, он грепает node_id и мгновенно достаёт полный исходный текст.

Поток выглядит так: сотни тысяч токенов многословных логов → выгрузка полного текста во внешнюю ФС (refs/*.md) → извлечение связей в Mermaid-канвас с node_id → в контекст агента попадает лишь несколько сотен токенов. Любая деталь при необходимости достаётся обратно через node_id.

Бенчмарки: реальный эффект на долгих сессиях

Показатели замерены на непрерывных длинногоризонтных сессиях, а не на изолированных ходах. Например, SWE-bench гоняет по 50 последовательных задач на сессию, имитируя давление накопления контекста реальных длинногоризонтных агентов.

Возможность памяти Бенчмарк OpenClaw С плагином Δ (отн.) Токены OpenClaw С плагином Δ (отн.)
Краткосрочная WideSearch 33% 50% +51,52% 221,31M 85,64M −61,38%
Краткосрочная SWE-bench 58,4% 64,2% +9,93% 3474,1M 2375,4M −33,09%
Краткосрочная AA-LCR 44,0% 47,5% +7,95% 112,0M 77,3M −30,98%
Долгосрочная PersonaMem 48% 76% +59%

Фичи, которые выделяют проект

1. Макро-персоны + микро-факты: единый механизм спуска

Главный риск компрессии — сэкономить токены, потеряв доказательства. TencentDB Agent Memory не сворачивает историю в необратимую выжимку, а сохраняет чистый путь от абстракции верхнего уровня к первичным данным. Для разных типов вопросов — разные маршруты:

Тип вопроса Сначала смотрим Углубляемся
Повседневные предпочтения, голос, долгосрочные цели L3 Persona / L2 Scenario L1 Atom / L0 Conversation
Конкретные факты, даты, детали проекта L1 Atom / L0 Conversation Ширим окно времени, запасной — семантический поиск
Продолжение длинной задачи Активный Mermaid-канвас JSONL при нехватке деталей, затем refs/*.md
Продолжение исторической задачи Запись метаданных задачи Канвас → node_idresult_ref

2. Отладка без чёрного ящика

Большинство систем памяти проваливаются здесь: когда поиск неверен, видно лишь список векторных скорегов, и непонятно, где ошибилась. TencentDB Agent Memory хранит ключевые промежуточные этапы в читаемых файлах: сценарные блоки L2 — это обычный Markdown; L3 Persona живёт в persona.md и ссылается на породившие её сценарии; канвасы задач — это Mermaid, который ещё и человек, и агент читают одинаково легко; сырьё, суммаризации и ноды сшиты result_ref и node_id.

Отладка превращается в детерминированный проход по цепочке «Persona → Scenario → Atom → Conversation» до тех пор, пока корневая причина не выйдет на поверхность. Все слоистые артефакты лежат под ~/.openclaw/memory-tdai/ — можно просто открыть папку и посмотреть каждый слой.

3. Продакшен-зрелость: не просто демо

Возможность Описание
Плагин OpenClaw Автозахват, извлечение и поиск памяти после установки
Адаптер Hermes Gateway TdaiCore + HostAdapter, не привязан к ведущей платформе
Локальный бэкенд SQLite + sqlite-vec, работает из коробки
Гибридный поиск BM25 + вектор + RRF — и ключевой, и семантический поиск
Инструменты агента tdai_memory_search / tdai_conversation_search

Установка и интеграция

Поддерживаются два популярных агента: OpenClaw и Hermes.

OpenClaw

Установка плагина и перезапуск шлюза:

openclaw plugins install @tencentdb-agent-memory/memory-tencentdb
openclaw gateway restart

Включение — одна настройка, сразу с локальным бэкендом SQLite + sqlite-vec:

{
  "memory-tencentdb": {
    "enabled": true
  }
}

После включения система автоматически занимается захватом разговора, извлечением памяти, агрегацией сцен, генерацией персон и поиском перед следующей репликой. Краткосрочная компрессия подключается опционально (версия ≥ 0.3.4): в настройку плагина добавляется config.offload.enabled, в конфиге регистрируется слот plugins.slots.contextEngine = "memory-tencentdb", после чего один раз применяется патч-скрипт scripts/openclaw-after-tool-call-messages.patch.sh, который подключает выгрузку и восстановление сообщений после вызова инструментов.

Hermes

Помимо OpenClaw плагин поддерживает агента Hermes. Есть два пути: Docker-контейнер, чтобы поднять Hermes с памятью с нуля одной командой, либо подключение памяти к уже существующей установке (не нужна сборка образа). Docker-образ собирает hermes-agent и провайдер memory_tencentdb; шлюз слушается на порт :8420, а память сохраняется в именованный том hermes_data, который переживает перезапуски. По умолчанию образ несёт с собой Tencent Cloud DeepSeek-V3.2.

При ручном подключении к готовому Hermes пакет линкуется в каталог плагинов, в config.yaml объявляется memory.provider: memory_tencentdb, настраиваются переменные окружения шлюза и (по желанию) LLM-креденшелы шлюза. Шлюз можно запускать вручную или дать провайдеру автозапуск при первом разговоре. Обязательно: каталог провайдера должны носить имя memory_tencentdb (с подчёркиванием) — Hermes использует его как ключ провайдера. Для Windows-нативных установок есть готовый batch-скрипт.

Безопасность шлюза (по желанию)

Шлюз на :8420 по умолчанию работает как локальный sidecar. Два опциональных параметра превращают его в аутентифицированный сетевой сервис:

Поле env По умолчанию Смысл
server.apiKey TDAI_GATEWAY_API_KEY не задано Если задать, все маршруты кроме GET /health требуют Bearer-токен.
server.corsOrigins TDAI_CORS_ORIGINS [] CORS-белый список. Пустой список не отдаёт Access-Control-Allow-*.

GET /health остаётся открытым без токена, чтобы работали пробы оркестраторов (docker healthcheck, kubectl liveness).

Настраиваемые параметры

У каждого поля есть вменяемое значение по умолчанию — система работает без конфигурации. Для тонкой настройки параметры разбиты на три уровня глубины:

  • Уровень 1, ежедневная настройка (90% сценариев): временная зона, бэкенд хранилища, стратегия поиска (recall.strategykeyword/embedding/hybrid, гибрид через RRF рекомендуется), лимиты вызова, интервалы pipeline, включение офлоада.
  • Уровень 2, продвинутая настройка (длинные задачи / длинные сессии): прогрев сессий, таймауты, дедупликация L1, исключение агентов, периоды удержания, пороги офлоада.
  • Уровень 3, полный справочник (операции/кастомные модели/удалённые эмбеддинги): внешние embedding-сервисы, отдельный LLM-режим, ключи бэкенда офлоада, метрика.

Интересная деталь: у некоторых self-hosted или OSS-моделей эмбеддингов (например, BGE-M3) не поддерживаются собственные размерности векторов, и с ними нужно отключить embedding.sendDimensions, чтобы не получить HTTP 400.

Документация и роадмап

Дополнительно доступны: scripts/README.memory-tencentdb-ctl.md (инструменты обслуживания), CHANGELOG.md (история версий), openclaw.plugin.json (манифест плагина и схема конфигурации).

Уже реализовано: персонизированная память (L0 → L3), компрессия краткосрочного контекста (Context Offload + Mermaid-канвас), локальный SQLite и бэкенд Tencent Cloud Vector Database (TCVDB), плагин OpenClaw и интеграция Hermes Gateway. В планах — переносимая память (импорт/экспорт/живая миграция между агентами и устройствами), автоматическая генерация навыков, панель визуальной отладки и наблюдаемости.

Комьюнити приглашает к контрибуциям и обсуждению на GitHub Issues и в Discussions, потому что память агентов — пока далеко не решённая задача. Исходники, описание и лицензию MIT можно найти на странице проекта на GitHub.

Источник: https://github.com/TencentCloud/TencentDB-Agent-Memory