Файлы контекста
Агент Hermes автоматически обнаруживает и загружает файлы контекста, которые определяют его поведение. Некоторые из них являются локальными для проекта и находятся в вашей рабочей директории. SOUL.md теперь является глобальным для всего экземпляра Hermes и загружается исключительно из HERMES_HOME.
Поддерживаемые файлы контекста
| Файл | Назначение | Обнаружение |
|---|---|---|
| AGENTS.md | Инструкции проекта, соглашения, архитектура | Рекурсивно (обходит поддиректории) |
| SOUL.md | Глобальная настройка характера и тона для этого экземпляра Hermes | Только HERMES_HOME/SOUL.md |
| .cursorrules | Соглашения по написанию кода Cursor IDE | Только в текущей директории |
| .cursor/rules/*.mdc | Модули правил Cursor IDE | Только в текущей директории |
AGENTS.md
AGENTS.md — это основной файл контекста проекта. Он сообщает агенту, как структурирован ваш проект, каким соглашениям следовать, а также содержит любые специальные инструкции.
Иерархическое обнаружение
Hermes обходит дерево каталогов, начиная с рабочей директории, и загружает все найденные файлы AGENTS.md, отсортированные по глубине вложенности. Это поддерживает архитектуру монорепозиториев:
my-project/
├── AGENTS.md ← Контекст проекта верхнего уровня
├── frontend/
│ └── AGENTS.md ← Специфичные для фронтенда инструкции
├── backend/
│ └── AGENTS.md ← Специфичные для бэкенда инструкции
└── shared/
└── AGENTS.md ← Соглашения для общих библиотек
Все четыре файла объединяются в единый блок контекста с заголовками в виде относительных путей.
Директории, которые пропускаются при обходе: директории с префиксом ., node_modules, __pycache__, venv, .venv.
Пример AGENTS.md
# Контекст проекта
Это веб-приложение на Next.js 14 с бэкендом на Python FastAPI.
## Архитектура
- Фронтенд: Next.js 14 с App Router в `/frontend`
- Бэкенд: FastAPI в `/backend`, использует SQLAlchemy ORM
- База данных: PostgreSQL 16
- Развертывание: Docker Compose на Hetzner VPS
## Соглашения
- Используйте строгий режим TypeScript для всего кода фронтенда
- Python-код следует PEP 8, везде используйте аннотации типов
- Все эндпоинты API возвращают JSON в формате `{data, error, meta}`
- Тесты находятся в директориях `__tests__/` (фронтенд) или `tests/` (бэкенд)
## Важные примечания
- Никогда не изменяйте файлы миграций напрямую — используйте команды Alembic
- Файл `.env.local` содержит реальные API ключи, не добавляйте его в коммиты
- Порт фронтенда — 3000, бэкенда — 8000, БД — 5432
SOUL.md
SOUL.md управляет характером, тоном и стилем общения агента. См. страницу Личность для полной информации.
Расположение:
~/.hermes/SOUL.md- или
$HERMES_HOME/SOUL.md, если вы запускаете Hermes с пользовательской домашней директорией
Важные детали:
- Hermes автоматически создает стандартный
SOUL.md, если он еще не существует - Hermes загружает
SOUL.mdтолько изHERMES_HOME - Hermes не ищет
SOUL.mdв рабочей директории - Если файл пуст, ничего из
SOUL.mdне добавляется в промпт - Если в файле есть содержимое, оно внедряется дословно после сканирования и обрезки
.cursorrules
Hermes совместим с файлом .cursorrules и модулями правил .cursor/rules/*.mdc от Cursor IDE. Если эти файлы существуют в корне вашего проекта, они загружаются вместе с AGENTS.md.
Это означает, что ваши существующие соглашения из Cursor автоматически применяются при использовании Hermes.
Как загружаются файлы контекста
Файлы контекста загружаются функцией build_context_files_prompt() в agent/prompt_builder.py:
- При старте сессии — функция сканирует рабочую директорию
- Чтение содержимого — каждый файл читается как текст в кодировке UTF-8
- Проверка безопасности — содержимое проверяется на наличие паттернов инъекций промпта
- Усечение — файлы, превышающие 20 000 символов, обрезаются в начале и в конце (сохраняется 70% начала, 20% конца, с маркером посередине)
- Сборка — все разделы объединяются под заголовком
# Контекст проекта - Внедрение — собранный контент добавляется в системный промпт
Итоговый раздел промпта выглядит примерно так:
# Контекст проекта
Следующие файлы контекста проекта были загружены, и им нужно следовать:
## AGENTS.md
[Содержимое вашего AGENTS.md здесь]
## .cursorrules
[Содержимое вашего .cursorrules здесь]
[Содержимое вашего SOUL.md здесь]
Обратите внимание, что содержимое SOUL вставляется напрямую, без дополнительного текста-обертки.
Безопасность: Защита от инъекций промпта
Все файлы контекста сканируются на возможные инъекции промпта (prompt injection) перед включением. Сканер ищет:
- Попытки переопределения инструкций: "ignore previous instructions", "disregard your rules"
- Паттерны обмана: "do not tell the user"
- Перезапись системного промпта: "system prompt override"
- Скрытые HTML-комментарии:
<!-- ignore instructions --> - Скрытые элементы div:
<div style="display:none"> - Утечка учетных данных:
curl ... $API_KEY - Доступ к секретным файлам:
cat .env,cat credentials - Невидимые символы: пробелы нулевой ширины, переопределения направления текста, соединители слов
Если обнаружена какая-либо угроза, файл блокируется:
[ЗАБЛОКИРОВАНО: AGENTS.md содержал возможную инъекцию промпта (prompt_injection). Содержимое не загружено.]
Этот сканер защищает от распространенных паттернов инъекций, но он не заменяет ручной проверки файлов контекста в общих репозиториях. Всегда проверяйте содержимое AGENTS.md в проектах, которые создавали не вы.
Ограничения по размеру
| Лимит | Значение |
|---|---|
| Макс. символов на файл | 20 000 (~7 000 токенов) |
| Доля сохранения в начале | 70% |
| Доля сохранения в конце | 20% |
| Маркер обрезки | 10% (показывает кол-во символов и советует использовать инструменты файлов) |
Когда файл превышает 20 000 символов, сообщение об обрезке выглядит так:
[...обрезан AGENTS.md: оставлено 14000+4000 из 25000 символов. Используйте файловые инструменты для чтения полного файла.]
Советы по эффективным файлам контекста
- Будьте лаконичны — держитесь в пределах 20К символов; агент читает его каждый ход
- Структурируйте заголовками — используйте разделы
##для архитектуры, соглашений, важных примечаний - Включайте конкретные примеры — показывайте предпочтительные паттерны кода, форматы API, соглашения об именовании
- Указывайте, чего НЕ следует делать — "никогда не изменяйте файлы миграций напрямую"
- Укажите ключевые пути и порты — агент использует их для команд в терминале
- Обновляйте по мере развития проекта — устаревший контекст хуже, чем отсутствие контекста
Контекст поддиректорий
Для монорепозиториев помещайте инструкции для конкретных поддиректорий во вложенные файлы AGENTS.md:
<!-- frontend/AGENTS.md -->
# Контекст фронтенда
- Используйте `pnpm` а не `npm` для пакетного менеджера
- Компоненты находятся в `src/components/`, страницы в `src/app/`
- Используйте Tailwind CSS, никаких inline-стилей
- Запускайте тесты с помощью `pnpm test`
<!-- backend/AGENTS.md -->
# Контекст бэкенда
- Используйте `poetry` для управления зависимостями
- Запускайте dev-сервер с помощью `poetry run uvicorn main:app --reload`
- Все эндпоинты требуют docstring для OpenAPI
- Модели БД лежат в `models/`, схемы в `schemas/`