AI Frontier

Hermes Agent trajectory_compressor на Mac mini M4 в 2026: память, лимиты токенов и сжатие

MacHTML Lab2026.05.28 ~18 мин
Hermes Agent trajectory_compressor память токены оптимизация Mac mini M4 2026

Hermes Agent (NousResearch/hermes-agent) поставляет утилиту trajectory_compressor.py, чтобы длинные запуски агента помещались в контекстное окно модели, не выбрасывая всё, что оператор только что сделал. На постоянно включённом Mac mini M4 с шлюзами, cron и многочасовыми research-циклами давление токенов проявляется обрезанным выводом инструментов, срывом следующих ходов и неожиданными счетами из-за повторной отправки целых транскриптов. Этот Type C материал разбирает upstream-дефолты, модель защищённой головы / сжатой середины / защищённого хвоста, различие интерактивной команды /compress и пакетного CLI, а также шестишаговый runbook на macOS перед выводом настроек сжатия в прод.

Если вы ещё выбираете harness, сначала прочитайте Hermes Agent vs OpenClaw на macOS и Mac mini M4 — сжатие имеет смысл после того, как определено, где живут сессии. Основные upstream-ссылки: trajectory_compressor.py на main, README Hermes Agent и спецификации Apple Mac mini для планирования RAM и unified memory.

Раскрытие: MacHTML предлагает опциональную облачную аренду Mac mini для always-on staging агентов, упомянутого ниже.

Почему лимиты токенов больно бьют на Mac mini

Agent harness не хранит диалог как чат-UI — при каждом вызове модели воспроизводится структурированный список сообщений. Один длинный день в Telegram плюс локальные tool-циклы легко накапливают десятки тысяч токенов из system-промптов, human-инструкций, ответов assistant и tool JSON. Когда провайдер жёстко обрывает или тихо обрезает, оператор винит модель; часто transcript просто превысил бюджет.

Выделенный Mac mini M4 полезен тем, что шлюзы могут работать 24/7 без сна ноутбука, но железо не расширяет контекст само по себе — сжатие это операционный контроль, а не функция чипа. Hermes решает это через trajectory_compressor.py, переписывая папку траектории в более короткий эквивалент с сохранением нужной семантики: исходный system-контракт, начальный human-замысел, раннее tool-grounding, точная сводка середины и последние ходы, где ошибки дороги.

Бюджет по умолчанию: target_max_tokens=15250 для сжатого transcript, около summary_target_tokens=750 на summary середины, последние protect_last_n_turns=4 хода дословно. Числа настраиваются, но кодируют практику: агрессивно сжимать середину, не ампутировать разговор, которым вы управляете прямо сейчас.

Оптимизация токенов пересекается со стоимостью. Даже через OpenRouter повторная отправка 40k trace на маленький follow-up сжигает деньги и latency. Сжатие дешевле, чем каждый ход переключать на модель с большим контекстом, особенно на staging Mac mini с почасовой итерацией промптов. Сверьтесь с сравнительным гайдом, чтобы не оптимизировать transcript на шлюзе, который замените на следующей неделе.

Память Apple Silicon unified: Mac mini 16 GB может держать Hermes gateway и лёгкие tools, но параллельные subagent, локальные Ollama sidecar и гигантские несжатые логи делят один пул. Сжатие снижает RAM-давление от огромных in-memory массивов сообщений при gateway fan-out, хотя главный выигрыш — окно модели. Смотрите спецификации Mac mini от Apple, прежде чем предполагать, что базовая конфигурация выдержит несжатый архив и локальные модели одновременно.

На практике команды теряют часы на «починку модели», игнорируя сжатие до первого hard-stop провайдера. Внутренний порог — например, /compress после N подряд tool-вызовов — экономит ложные расследования.

Базовая модель сжатия

Upstream trajectory_compressor.py реализует трёхзонную политику, удобную для post-audit:

  • Защищённая голова: сохранить первые system, human, gpt и tool сообщения — persona, safety и начальная tool-схема переживают сжатие.
  • Сжатая середина: всё между головой и хвостом сворачивается через summarization (по умолчанию OpenRouter) примерно в summary_target_tokens=750 narrative и ключевых фактов.
  • Защищённый хвост: последние protect_last_n_turns=4 хода дословно, чтобы свежие правки оператора и tool-ошибки оставались доступны без реконструкции из summary.

Дефолт target_max_tokens=15250 — потолок post-compression transcript. Выравнивайте target_max_tokens с usable window прод-модели минус headroom для tools и completion — не с marketing context length на прайсинге.

Summarization по умолчанию google/gemini-3-flash-preview через OpenRouter, если не переопределите provider settings. Для compliance-sensitive нагрузок укажите одобренную модель и логируйте сжатые папки траекторий — summaries lossy by design: решения и blockers, не каждая строка stack trace.

Сжатие не заменяет curated memory Hermes или FTS5 session search; это аварийный тормоз на траекторию, когда один thread перерос окно. Memory на недели; trajectory compression, когда incident thread сегодня уже 30k tokens.

Два интерфейса: /compress и пакетный CLI

Hermes намеренно даёт два UX для сжатия:

ИнтерфейсКогда использоватьЧто делает
Slash /compressВ активной Hermes TUI или gateway-сессии, когда контекст сжимается mid-flight.Интерактивное session-aware сжатие live траектории — для момента «мы тонем».
python trajectory_compressor.pyOffline housekeeping на сохранённых runs в data/, CI fixtures, pre-migration archives.Batch utility с явными флагами sample percent, token ceilings, input dirs — для воспроизводимых ops playbooks.

Не путайте: slash — operator control surface; Python entrypoint retrofit исторических папок после gateway upgrade или перед attach огромной trace к тикету. CLI на live files пока gateway append может race — quiesce session или copy trajectory в scratch сначала.

Batch mode поддерживает sampling — например --sample_percent=15 при profiling качества сжатия на сотнях runs без оплаты summarize каждой папки в эксперименте. Поднимайте до 100% перед prod defaults.

Примеры и таблица дефолтов

ПараметрДефолтЗаметки
target_max_tokens15250Потолок post-compression; повышать осторожно.
summary_target_tokens750Бюджет middle summary segment.
protect_last_n_turns4Последние ходы дословно в хвосте.
OpenRouter summarizergoogle/gemini-3-flash-previewOverride через env/provider для compliance.
python trajectory_compressor.py --input=data/my_run
python trajectory_compressor.py --input=data/my_run --sample_percent=15
python trajectory_compressor.py --input=data/my_run --target_max_tokens=16000

В live session операторы вызывают /compress, когда tool chains удлинились, но задача не завершена — особенно перед attach subagent или retry failed tool с fresh model call. Зафиксируйте team norm: compress после major milestones, не после каждого tool success.

Runbook из шести шагов

  1. Клонируйте или обновите Hermes Agent на Mac mini и убедитесь, что trajectory_compressor.py лежит в корне репозитория (исходник).
  2. Экспортируйте ключи OpenRouter (или выбранного провайдера) в той же оболочке, где запускаете пакетное сжатие; без них summarization сразу завершится ошибкой.
  3. Выберите тестовую траекторию в data/ с известным раздуванием токенов — скопируйте её для сравнения JSON или списков сообщений до и после.
  4. Пробный пакетный прогон с дефолтами: python trajectory_compressor.py --input=data/my_run и проверьте, что голова и хвост остались нетронутыми.
  5. Настройте потолки, если прод-модели нужен запас — например --target_max_tokens=16000 — и перезапустите с --sample_percent=100 перед фиксацией настроек.
  6. Проверьте live-поведение: запустите сессию Hermes на Mac mini, намеренно раздуйте контекст, выполните /compress и убедитесь, что агент помнит защищённые ходы в хвосте.

Зафиксируйте выбранные дефолты во внутреннем runbook рядом с портами шлюза и метками LaunchAgent, чтобы следующий оператор не «открывал» их заново через аварию в проде.

Устранение неполадок

Summarization падает или середина пустая

Проверьте учётные данные OpenRouter, allowlist моделей и rate limits. Повторите с меньшей входной папкой, чтобы исключить сбой парсера на битых tool payload. Если compliance блокирует google/gemini-3-flash-preview, переключитесь на одобренную модель и обновите документацию — не отключайте сжатие молча.

Агент «забывает» недавние правки после сжатия

Временно увеличьте protect_last_n_turns или снизьте агрессивность summary_target_tokens. Убедитесь, что пакетное сжатие не идёт по live-папкам, пока сообщения дописываются. Перезапустите на копии и сравните хвост с исходником.

Для круглосуточного Telegram без постоянно включённого Mac см. Hermes Agent Docker на дешёвом VPS + Telegram-бот.

Нужны чтение repo в scope, npm test и guarded auto-fix? Читайте Hermes Agent MCP для Claude Opus 4.8: локальная песочница кода 2026.

FAQ

Сжатие траектории заменяет файлы памяти Hermes?

Нет. Сжатие укорачивает один поток траектории; curated memory и skills остаются долгосрочным хранилищем. Используйте оба: memory на недели, сжатие для сегодняшней разросшейся сессии.

Нужно ли операторам OpenClaw этот скрипт?

Утилита поставляется с Hermes Agent. Транскрипты OpenClaw другой формы — мигрируйте или экспортируйте перед batch и держите шлюзы раздельно по нашему гайду Hermes vs OpenClaw.

Сколько стоит summarization?

Пакетная стоимость растёт с числом ходов в середине и тарифом OpenRouter. В экспериментах семплируйте 15%; в проде переходите на 100%, когда дефолты проверены.

Какой объём RAM Mac mini для сжатия плюс шлюз?

16 GB хватает для чисто пакетного сжатия; 24 GB безопаснее, если тот же Mac mini также крутит шлюзы, локальные модели и параллельных subagent — см. спецификации Apple.

Проверка сжатия Hermes на облачном Mac mini

Арендуйте всегда включённый Mac mini M4, чтобы пакетно сжимать длинные траектории, проверить /compress и удержать сессии шлюза в бюджете токенов до продакшена.

Agent на Mac
Постоянный staging