Устранение неполадок: «Мой агент как будто поглупел»
Иногда Hermes соображает хуже, чем вчера, или забывает то, что вы сказали ему двадцать минут назад. Разгадывать тут почти нечего — обычно есть одна конкретная и проверяемая причина. Пройдите по этому чек-листу по порядку: пункты расположены по частоте, с которой каждый из них оказывается ответом.
1. Проверьте, какую модель использует сессия
Симптом: Ответы стали более поверхностными, качество кода упало, рассуждения хромают — и всё это сразу.
Проверка: Запустите /model без аргументов, чтобы увидеть текущую модель, или /status — там сразу видно модель, провайдера и профиль сессии.
Что это значит: Смена модели меняет возможности агента, и легко оказаться не на той модели, что вы думаете:
- Обычное переключение
/model <name>по умолчанию действует только для текущей сессии (если не заданmodel.persist_switch_by_default: true) — модель, на которой вы работаете, может не совпадать с той, что прописана вconfig.yaml. - Смена основной модели на странице Models в дашборде применяется только к новым сессиям — уже открытый чат продолжает работать на той модели, с которой начался.
- Если вы переключились на более быструю модель для простой задачи (такой приём рекомендуют Советы и рекомендации), не забудьте вернуться к прежней модели для сложных рассуждений.
Если модель не та, /model <name> исправит это для текущей сессии; добавьте --global, чтобы закрепить изменение в config.yaml. Учтите: переключение модели посреди сессии сбрасывает кэш промпта, и следующий ход перечитывает всю переписку по полной цене входных токенов — в долгой сессии иногда дешевле сразу начать заново на нужной модели.
2. Проверьте использование контекста
Симптом: Сессия начиналась бодро, но ответы замедляются, обрезаются или теряют из виду детали, упомянутые раньше.
Проверка: Запустите /usage, чтобы увидеть использование токенов и состояние окна контекста, или /context — для наглядной разбивки того, что занимает окно (системный промпт, определения инструментов, навыки, память, переписка) и сколько места свободно.
Что это значит: В долгих беседах накапливаются сообщения и результаты работы инструментов, и сессия приближается к лимиту контекста. Заметив деградацию в длинной сессии:
# Сжать переписку (суммирует историю, сохраняя важный контекст)
/compress
# Или начать новую сессию
/new
/compress суммирует историю переписки, заметно сокращая число токенов и сохраняя при этом важный контекст. /compress here [N] оставляет N последних обменов репликами дословно и суммирует всё остальное, а тема фокуса (/compress focus <topic>) сужает то, что сохраняет полная сводка.
Используйте /compress регулярно в течение долгой сессии, не дожидаясь проблем, и время от времени проверяйте /usage, чтобы понимать, где вы находитесь.
3. Проверьте определённую длину контекста
Симптом: Проблемы с контекстом проявляются подозрительно рано — первая же длинная беседа упирается в лимит, или сжатие срабатывает намного раньше, чем должно при заявленном окне модели.
Проверка: Посмотрите на стартовую строку CLI — там показана определённая длина контекста (например, 📊 Context limit: 128000 tokens). Проверить можно и во время сессии командой /usage.
Что это значит: Hermes мог автоматически определить неверную длину контекста для вашей модели. Задайте её явно:
# В ~/.hermes/config.yaml
model:
default: your-model-name
context_length: 131072 # реальное окно контекста вашей модели
Или для пользовательских эндпоинтов — отдельно для модели, в записи провайдера:
providers:
my-server:
api: "http://localhost:11434/v1"
models:
qwen3.5:27b:
context_length: 64000
Пользователям Ollama: если вы задали собственный num_ctx, укажите такую же длину контекста в Hermes — /api/show в Ollama сообщает максимальный контекст модели, а не действующий num_ctx, который вы настроили. На работающем шлюзе изменения model.context_length или любого ключа compression.* применяются со следующего сообщения — перезапуск не нужен.
См. Определение длины контекста — как работает автоопределение и какие есть варианты переопределения.
4. «Я сказал ему что-то, а он забыл» — замороженный снимок памяти
Симптом: Вы попросили Hermes запомнить что-то в этой сессии, он подтвердил сохранение, но позже в той же самой сессии словно не в курсе.
Проверка: Тут ничего не сломано — дело во времени. Память, сохранённая посреди сессии, сразу же записывается на диск, но в системном промпте она появится только со следующей сессии.
Что это значит: Это задокументированное, намеренное поведение. Память попадает в системный промпт как замороженный снимок на момент начала сессии, и это внедрение не меняется в течение сессии — так сохраняется префиксный кэш LLM ради производительности. Когда агент добавляет или удаляет записи памяти в ходе сессии, изменения сразу сохраняются на диск, но в системном промпте отражаются только с началом следующей сессии. Ответы инструментов всегда показывают актуальное состояние, так что само сохранение подтверждено и реально.
Замороженный снимок на практике: фраза «запомни X» в текущей сессии гарантирует, что X будет доступно в следующей сессии. В текущей сессии этот факт всё ещё существует в истории переписки — агент забудет его, только если эта часть переписки к тому моменту уже была сжата (см. пункт 7).
См. Постоянная память — там вся механика подробно.
5. Память ограничена и курируется — это не стенограмма
Симптом: Hermes не помнит деталь из сессии на прошлой неделе, хотя вы обсуждали её подробно.
Проверка: Объём и содержимое памяти. Заголовок памяти в системном промпте показывает заполненность (например, [67% — 1,474/2,200 chars]), а hermes journey list выводит все сохранённые записи памяти и навыки.
Что это значит: Постоянная память намеренно ограничена — 2 200 символов (~800 токенов) для MEMORY.md и 1 375 символов (~500 токенов) для USER.md. В ней хранятся отобранные важные факты, а не стенограммы бесед. Сохранять стоит предпочтения, факты об окружении, договорённости и поправки; сырые подробности обсуждения там намеренно не хранятся.
Для запроса вида «мы обсуждали X на прошлой неделе?» у агента есть отдельный механизм: session_search ищет по всем прошлым сессиям (они хранятся в SQLite с полнотекстовым поиском) и находит то, что обсуждалось недели назад, даже если это не попало в активную память. Просто спросите — «поищи в прошлых сессиях обсуждение деплоя».
Можно помочь и напрямую: скажите «запомни это на будущее» после продуктивной сессии или «приберись в памяти», когда она почти заполнена, — тогда агент объединит записи. См. Советы по памяти и навыкам и Управление объёмом.
6. Проверьте, что навыки и инструменты загружены
Симптом: Раньше Hermes уверенно справлялся с определённым процессом, а теперь подходит к нему как новичок или говорит, что не может сделать то, что делал прежде.
Проверка:
/skills— посмотреть установленные навыки (нужный агенту навык мог быть удалён)./reload-skills— заново просканировать~/.hermes/skills/на предмет новых или удалённых навыков./tools list— посмотреть доступные инструменты; инструмент, отключённый ранее командой/tools disable, остаётся вне набора инструментов агента на всю сессию./context all— список затрат по каждому навыку и набору инструментов, заодно служит инвентарём того, что реально загружено.
Что это значит: Навыки — это процедурные знания агента: многошаговые процессы и инструкции по работе с конкретными инструментами. Если навык отсутствует или набор инструментов урезан (например, сессия запущена командой hermes chat -t "terminal", чтобы облегчить промпт), у агента в этой сессии буквально меньше возможностей. Включите инструменты обратно командой /tools enable или вызовите навык явно по имени (/github-pr-workflow), чтобы убедиться, что он загружается.
7. Побочные эффекты сжатия
Симптом: После долгой сессии (или сразу после /compress) Hermes помнит общую канву, но теряет мелкие детали из начала переписки.
Проверка: Сработало ли сжатие — /usage и /context показывают статистику сжатия и состояние контекста на платформах обмена сообщениями, а ручной /compress всегда сообщает о результате.
Что это значит: Сжатие заменяет более старую историю переписки сводкой — в этом весь смысл, и оно неизбежно меняет детализацию на свободное место. Вот как это устроено:
- Недавние сообщения защищены: по умолчанию последние 20 сообщений остаются несжатыми (
protect_last_n), а начальный обмен репликами закреплён (protect_first_n: 3), чтобы исходная цель оставалась на виду. - Сжатие не разрушительно: при значении по умолчанию
compression.in_place: trueсессия сохраняет один постоянный id, а обороты до сжатия мягко архивируются — их по-прежнему можно найти черезsession_searchи восстановить, они не удаляются. - При
in_place: false(устаревшее поведение) каждое сжатие переносит данные в новую сессию, связанную со старой — озаглавленная сессия превращается в"my project" → "my project #2" → "my project #3". Если вы возобновляете сессию по названию,hermes -c "my project"автоматически выбирает самый свежий вариант. - Тема фокуса сужает то, что сохраняет полная сводка:
/compress focus auth-refactorсохраняет детали этой темы за счёт всего остального.
Если сжатая деталь важна, попросите агента найти её (session_search достаёт архивные обороты) или вставьте ключевые факты обратно в переписку.
См. Сжатие контекста — полный справочник по настройкам, и Автоматическая цепочка сессий при сжатии — как связываются озаглавленные сессии.
Краткая справка
| Симптом | Первая команда | Вероятная причина |
|---|---|---|
| Всё кажется менее толковым | /model | Сессия работает на другой модели, чем вы думаете |
| Деградация в долгой сессии | /usage | Давление на контекст — сожмите или начните заново |
| Лимиты наступают подозрительно рано | стартовая строка CLI / /usage | Неверно определена длина контекста |
| Забыл то, что я сказал в этой сессии | — (так и задумано) | Замороженный снимок памяти — появится в следующей сессии |
| Забыл обсуждение прошлой недели | попросите его выполнить session_search | Память ограничена и хранит только отобранные факты |
| Утратил конкретный навык | /skills, /tools list | Навык или набор инструментов не загружен в этой сессии |
| Потерял старую деталь после долгой сессии | /usage, /context | Сжатие суммировало более старую историю |