Файлы контекста

Агент 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:

  1. При старте сессии — функция сканирует рабочую директорию
  2. Чтение содержимого — каждый файл читается как текст в кодировке UTF-8
  3. Проверка безопасности — содержимое проверяется на наличие паттернов инъекций промпта
  4. Усечение — файлы, превышающие 20 000 символов, обрезаются в начале и в конце (сохраняется 70% начала, 20% конца, с маркером посередине)
  5. Сборка — все разделы объединяются под заголовком # Контекст проекта
  6. Внедрение — собранный контент добавляется в системный промпт

Итоговый раздел промпта выглядит примерно так:

# Контекст проекта

Следующие файлы контекста проекта были загружены, и им нужно следовать:

## 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 символов. Используйте файловые инструменты для чтения полного файла.]

Советы по эффективным файлам контекста

Лучшие практики для AGENTS.md
  1. Будьте лаконичны — держитесь в пределах 20К символов; агент читает его каждый ход
  2. Структурируйте заголовками — используйте разделы ## для архитектуры, соглашений, важных примечаний
  3. Включайте конкретные примеры — показывайте предпочтительные паттерны кода, форматы API, соглашения об именовании
  4. Указывайте, чего НЕ следует делать — "никогда не изменяйте файлы миграций напрямую"
  5. Укажите ключевые пути и порты — агент использует их для команд в терминале
  6. Обновляйте по мере развития проекта — устаревший контекст хуже, чем отсутствие контекста

Контекст поддиректорий

Для монорепозиториев помещайте инструкции для конкретных поддиректорий во вложенные файлы 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/`