> ## Documentation Index
> Fetch the complete documentation index at: https://docs.velesagent.com/llms.txt
> Use this file to discover all available pages before exploring further.

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

> Техническое сравнение того, как Veles и Hermes реализуют механизмы памяти и долгосрочного контекста.

# Сравнение реализации памяти 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).

***

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

| Характеристика          | 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. **Фаза 1**: Внедрить `USER.md` отдельно от `MEMORY.md`. Добавить атомарные операции записи.
2. **Фаза 2**: Перейти на хранение сессий в SQLite и добавить полнотекстовый поиск по ним (инструмент `session_search`).
3. **Фаза 3**: Внедрить уровень моделирования пользователя для персонализации ответов.
