Что такое контекстные файлы
Hermes Agent поддерживает систему контекстных файлов — специальных документов в корне проекта, которые автоматически загружаются в системный промпт при каждом запуске. Эти файлы задают архитектурные соглашения, стили кодирования и проектные ограничения, которые агент учитывает в каждой сессии.
Приоритет загрузки
При старте Hermes сканирует рабочую директорию и выбирает первый найденный файл:
.hermes.md— формат, специфичный для HermesAGENTS.md— универсальный формат для ИИ-агентовCLAUDE.md— формат Claude Code, поддерживаемый для совместимости.cursorrules— файл Cursor IDE, загружается если нет файлов выше
Все контекстные файлы проходят проверку на prompt-инъекции. Максимальный размер — 20 000 символов; длинные файлы обрезаются (70% начала, 20% конца).
Прогрессивное обнаружение
Помимо корневых файлов, Hermes ищет AGENTS.md в поддиректориях — до 5 родительских каталогов. Это полезно для монорепозиториев: отдельные файлы во frontend/ и backend/ загружаются автоматически.
@-синтаксис для вложения файлов
В CLI Hermes поддерживает синтаксис @ для вставки контента в сообщение. Ссылки раскрываются перед отправкой и добавляются в секцию Attached Context.
Поддерживаемые ссылки
@file:path/to/file.py— содержимое файла@file:path/to/file.py:10-25— диапазон строк@folder:path/to/dir— дерево каталогов@diff/@staged— git-изменения@git:5— последние N коммитов@url:https://example.com— содержимое веб-страницы
Ссылки защищены от path traversal, блокируют доступ к SSH-ключам и бинарным файлам. Мягкий лимит — 25% контекстного окна, жёсткий — 50%.
Сборка системного промпта
Системный промпт Hermes собирается из нескольких слоёв, каждый из которых добавляет свой контекст. Порядок слоёв фиксирован:
- SOUL.md — идентичность и поведенческие инструкции агента (первый слот)
- Personality — тон и стиль общения (если задан через
/personalityилиagent.system_prompt) - System Memory —
memories/MEMORY.md(факты об окружении) иmemories/USER.md(информация о пользователе) - Контекстные файлы —
AGENTS.md/.hermes.mdиз рабочей директории - Skills — загруженные навыки добавляют процедурные знания
- Инструменты — схемы доступных инструментов
Все слои складываются в единый system prompt, который отправляется модели с каждым запросом. Суммарный размер управляется лимитами каждого компонента.
System Memory
Два файла автоматически инжектятся в каждое сообщение:
memories/MEMORY.md— стабильные факты об окружении (лимит:memory.memory_char_limit, по умолчанию 2200 символов)memories/USER.md— информация о пользователе (лимит:memory.user_char_limit, по умолчанию 1375 символов)
Эти файлы обновляются агентом автоматически по мере накопления новой информации.
Личность и SOUL.md
Файл SOUL.md — основная идентификация агента. Он занимает первый слот в системном промпте и определяет поведение и инструкции. Загружается только из директории Hermes (~/.hermes/SOUL.md для глобального профиля, ~/.hermes/profiles/<name>/SOUL.md для профилей).
SOUL.md vs AGENTS.md
- SOUL.md — поведенческие инструкции: как работать с группами, проектами, инструментами. Следует за агентом везде.
- AGENTS.md — архитектура проекта, конвенции, пути. Привязан к репозиторию.
Если это должно следовать за вами — SOUL.md. Если относится к проекту — AGENTS.md.
Что писать в SOUL.md
- Поведенческие инструкции: как обрабатывать сообщения в группах, когда действовать автоматически
- Рабочие процессы: какие файлы читать при старте, какие скрипты запускать
- Инструменты: когда использовать
send_message,cronjobи другие - Ограничения: что делать и чего избегать
Важно: не удаляйте SOUL.md при использовании системы персоналитетов. SOUL.md содержит поведенческие инструкции, без которых агент не будет знать, как обрабатывать сообщения в проектных группах.
Система персоналитетов (Personality System)
Система персоналитетов позволяет переключать тон и стиль общения агента, не меняя поведенческие инструкции в SOUL.md.
Команда /personality
В интерактивной сессии:
/personality— показать текущий персоналитет/personality <name>— установить персоналитет (например,/personality philosopher)/personality off— сбросить, вернуться к SOUL.md
Настройка персоналитетов в config.yaml
Персоналитеты определяются в секции agent.personalities:
agent:
personalities:
philosopher: "Greetings, seeker of wisdom. I shall respond with measured reflection..."
concise: "Be brief. No fluff. Direct answers only."
technical: "Provide precise technical details. Use correct terminology. Include code examples."
creative: "Think outside the box. Offer creative solutions. Use vivid language."
system_prompt: '' # ← сюда записывается активный персоналитет
Когда вы выполняете /personality philosopher, Hermes записывает текст из agent.personalities.philosopher в agent.system_prompt. Этот промпт добавляется в системный промпт поверх SOUL.md.
SOUL.md + Personality: двухслойный подход
SOUL.md и персоналитет решают разные задачи:
- SOUL.md = поведенческие инструкции (что делать): обработка групп, работа с проектами, использование инструментов
- Personality = тон и стиль (как говорить): философский, лаконичный, технический
Рекомендуется использовать оба слоя одновременно. Персоналитет — это статичный текст, который не может ссылаться на инструменты или динамическое поведение.
Управление контекстным окном
Hermes автоматически отслеживает использование токенов и управляет размером контекста, чтобы не превысить лимит модели.
Как это работает
При каждом вызове модели Hermes проверяет:
- Размер контекстного окна модели (
model.context_length) - Количество использованных токенов
- Приближение к порогу сжатия
Когда использование достигает порога, автоматически запускается сжатие контекста.
Мониторинг использования
В сессии используйте:
/usage— текущее использование токенов в сессии/status— информация о сессии, включая модель и контекстное окно
Сжатие контекста (Context Compression)
Когда контекст приближается к лимиту, Hermes автоматически сжимает историю диалога, сохраняя ключевую информацию и удаляя устаревшие детали.
Конфигурация
compression:
enabled: true # включить автоматическое сжатие (по умолчанию)
threshold: 0.50 # порог срабатывания — 50% контекстного окна
target_ratio: 0.20 # целевой размер после сжатия — 20% окна
threshold(0.50) — когда использовано 50% контекстного окна, запускается сжатиеtarget_ratio(0.20) — после сжатия контекст сжимается до 20% от размера окнаenabled— можно отключить, если нужно сохранять полную историю
Что происходит при сжатии
- Hermes определяет, какие сообщения можно безопасно удалить
- Сохраняются: системный промпт, последние сообщения, ключевые решения
- Удаляются: промежуточные итерации инструментов, устаревший контекст
- Вставляется сводка сжатого контента
Команда /compress
Для ручного сжатия контекста в любой момент сессии:
/compress
Это полезно когда:
- Сессия стала слишком длинной и медленной
- Вы хотите очистить контекст от устаревших данных
- Переходите к новой задаче в той же сессии
Ручное сжатие использует те же настройки target_ratio, что и автоматическое.
Полное сброс: /new
Если сжатие недостаточно, /new (или /reset) начинает completely новую сессию с чистым контекстом. Системный промпт (SOUL.md, memory, personality) сохраняется.
ephemeral_system_prompt (Python API)
При использовании Hermes как библиотеки через Python API можно задать временный системный промпт, который действует только в рамках одного вызова:
from hermes_agent import HermesAgent
agent = HermesAgent()
# Временный системный промпт — перезаписывает SOUL.md только для этого вызова
response = agent.chat(
"Explain quantum computing",
ephemeral_system_prompt="You are a physics professor. Explain concepts using analogies from everyday life."
)
ephemeral_system_prompt полностью заменяет стандартный системный промпт (SOUL.md + personality + memory) для данного запроса. Это полезно для:
- Специализированных задач, где нужен другой тон
- Интеграции с внешними системами, формирующими свой контекст
- Одноразовых запросов без изменения конфигурации
Внимание: при использовании ephemeral_system_prompt агент теряет доступ к своим поведенческим инструкциям из SOUL.md и персоналитету. Инструменты и навыки продолжают работать.