Skip to main content

Сравнение реализации памяти Veles и Hermes

Область анализа

В данной заметке сравниваются фактические реализации механизмов памяти в hermes-agent и Veles (бывший veles) с акцентом на:
  • постоянную курируемую память;
  • долгосрочное восстановление контекста между сессиями;
  • память профиля пользователя;
  • сохранение и поиск по стенограммам (транскриптам);
  • механизмы консолидации и сжатия контекста;
  • надежность, безопасность и операционные компромиссы.
Анализ сфокусирован на реализации в коде, а не на маркетинговых обещаниях из README.

Краткое резюме

Hermes использует многоуровневую архитектуру памяти:
  1. Курируемая постоянная память в MEMORY.md.
  2. Отдельная постоянная память профиля пользователя в USER.md.
  3. Хранилище стенограмм на базе SQLite с полнотекстовым поиском FTS5.
  4. Выделенный инструмент session_search для резюмирования прошлых сессий по запросу.
  5. Интеграция с Honcho для построения глубокой модели пользователя.
Veles использует более легкую, ориентированную на файлы архитектуру:
  1. Один курируемый файл долгосрочной памяти в workspace/memory/MEMORY.md.
  2. История сессий в формате JSONL в workspace/sessions/.
  3. Консолидация старых реплик в файлы памяти с помощью LLM.
  4. Гибридный поиск (BM25 + векторный) по документам и файлам памяти.
  5. Архивация сессий в датированные markdown-файлы.
Итог: Veles сильнее в автоматизированной архивации под давлением контекста и простоте инспекции файлов памяти. Hermes значительно сильнее в разделении типов памяти, восстановлении контекста между сессиями, моделировании пользователя и безопасности при многопоточной работе.

Реализация памяти в Hermes

1. Разделение памяти по назначению

В hermes-agent/tools/memory_tool.py разделяются:
  • MEMORY.md — заметки об агенте, среде и проектах.
  • USER.md — предпочтения, поведение и факты о пользователе. Это позволяет обрабатывать “факты о пользователе” как первоклассный тип памяти.

2. Управление записями, а не монолитным блоком

Hermes поддерживает атомарные операции add, replace, remove для отдельных записей памяти, что безопаснее и эффективнее полной перезаписи файла.

3. Стабильность системного промпта

Hermes делает снимок (“замораживает”) памяти в начале сессии. Записи во время сессии идут на диск, но не меняют текущий промпт до перезапуска, что полезно для кэширования префиксов.

4. Поиск по стенограммам (Transcript Recall)

В hermes-agent/tools/session_search_tool.py реализован полноценный поиск по всей истории сообщений через SQLite FTS5, что позволяет отвечать на вопросы типа “Что мы обсуждали в прошлый раз?”.

Реализация памяти в Veles

1. Единый файл курируемой памяти

Veles хранит долгосрочную память в workspace/memory/MEMORY.md, который встраивается в системный промпт как раздел ## Long-term Memory.

2. Консолидация через полную перезапись

Метод MemoryStore.consolidate() отправляет фрагмент истории и текущий MEMORY.md в LLM, которая возвращает обновленную версию всего документа. Это позволяет поддерживать структуру, но требует регенерации всего файла.

3. Мощный конвейер архивации и сжатия

В veles/agent/memory.py (теперь Veles) реализованы:
  • SessionMemoryWriter: создает датированные резюме вида memory/YYYY-MM-DD-slug.md.
  • MemoryFlusher: извлекает факты перед сжатием контекста.
  • MemoryConsolidator: управляет границами и политикой архивации. Veles очень эффективно предотвращает потерю информации при переполнении контекстного окна.

4. Явные механизмы отката (Fallback)

При сбоях суммаризации Veles сохраняет “сырые” фрагменты в memory/YYYY-MM-DD-raw-archive.md, гарантируя, что данные не пропадут бесследно.

5. Поиск ориентирован на файлы, а не на сессии

В veles/agent/vector_memory.py Veles индексирует документы проекта и файлы памяти. Это удобно для RAG, но не позволяет работать с “сессией” как с самостоятельным объектом поиска (в отличие от Hermes).

Сравнительная таблица

ХарактеристикаHermesVelesОценка
Курируемая памятьРазделена на MEMORY.md и USER.mdЕдиный MEMORY.mdHermes лучше структурирован
Модель обновленияАтомарные add/replace/removeПолная перезапись через LLMHermes безопаснее и быстрее
Стабильность промптаСнимок на сессиюПеречитывание при сборкеHermes лучше для кэширования
Поиск по транскриптамFTS5 по всем сообщениямОтсутствуетОгромное преимущество Hermes
Поиск по сессиямИнструмент session_searchТолько поиск по файламПреимущество Hermes
Память пользователяВыделенный USER.md + HonchoНет отдельного хранилищаВажный пробел в Veles
Работа с контекстомСжатие и цепочки сессийМощный конвейер флеша/архивацииVeles здесь сильнее
Операционная надежностьБлокировки и атомарные заменыПрямая запись в файлыHermes надежней в многопоточности

Резюме для Veles

Если целью является простая, инспектируемая память и агрессивная гигиена контекста, то фундамент Veles уже весьма хорош. Однако, если целью является глубокое понимание пользователя и возможность “вспомнить всё” из прошлых диалогов, Veles заметно отстает от Hermes. Главный недостаток Veles не в “качестве суммаризации”, а в отсутствии нативного поиска по транскриптам сессий и выделенной модели профиля пользователя.

Рекомендованная дорожная карта для Veles:

  1. Фаза 1: Внедрить USER.md отдельно от MEMORY.md. Добавить атомарные операции записи.
  2. Фаза 2: Перейти на хранение сессий в SQLite и добавить полнотекстовый поиск по ним (инструмент session_search).
  3. Фаза 3: Внедрить уровень моделирования пользователя для персонализации ответов.