Сравнение реализации памяти Veles и Hermes
Область анализа
В данной заметке сравниваются фактические реализации механизмов памяти вhermes-agent и Veles (бывший veles) с акцентом на:
- постоянную курируемую память;
- долгосрочное восстановление контекста между сессиями;
- память профиля пользователя;
- сохранение и поиск по стенограммам (транскриптам);
- механизмы консолидации и сжатия контекста;
- надежность, безопасность и операционные компромиссы.
Краткое резюме
Hermes использует многоуровневую архитектуру памяти:- Курируемая постоянная память в
MEMORY.md. - Отдельная постоянная память профиля пользователя в
USER.md. - Хранилище стенограмм на базе SQLite с полнотекстовым поиском FTS5.
- Выделенный инструмент
session_searchдля резюмирования прошлых сессий по запросу. - Интеграция с Honcho для построения глубокой модели пользователя.
- Один курируемый файл долгосрочной памяти в
workspace/memory/MEMORY.md. - История сессий в формате JSONL в
workspace/sessions/. - Консолидация старых реплик в файлы памяти с помощью LLM.
- Гибридный поиск (BM25 + векторный) по документам и файлам памяти.
- Архивация сессий в датированные markdown-файлы.
Реализация памяти в 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).
Сравнительная таблица
| Характеристика | Hermes | Veles | Оценка |
|---|---|---|---|
| Курируемая память | Разделена на MEMORY.md и USER.md | Единый MEMORY.md | Hermes лучше структурирован |
| Модель обновления | Атомарные add/replace/remove | Полная перезапись через LLM | Hermes безопаснее и быстрее |
| Стабильность промпта | Снимок на сессию | Перечитывание при сборке | Hermes лучше для кэширования |
| Поиск по транскриптам | FTS5 по всем сообщениям | Отсутствует | Огромное преимущество Hermes |
| Поиск по сессиям | Инструмент session_search | Только поиск по файлам | Преимущество Hermes |
| Память пользователя | Выделенный USER.md + Honcho | Нет отдельного хранилища | Важный пробел в Veles |
| Работа с контекстом | Сжатие и цепочки сессий | Мощный конвейер флеша/архивации | Veles здесь сильнее |
| Операционная надежность | Блокировки и атомарные замены | Прямая запись в файлы | Hermes надежней в многопоточности |
Резюме для Veles
Если целью является простая, инспектируемая память и агрессивная гигиена контекста, то фундамент Veles уже весьма хорош. Однако, если целью является глубокое понимание пользователя и возможность “вспомнить всё” из прошлых диалогов, Veles заметно отстает от Hermes. Главный недостаток Veles не в “качестве суммаризации”, а в отсутствии нативного поиска по транскриптам сессий и выделенной модели профиля пользователя.Рекомендованная дорожная карта для Veles:
- Фаза 1: Внедрить
USER.mdотдельно отMEMORY.md. Добавить атомарные операции записи. - Фаза 2: Перейти на хранение сессий в SQLite и добавить полнотекстовый поиск по ним (инструмент
session_search). - Фаза 3: Внедрить уровень моделирования пользователя для персонализации ответов.
