Что такое SOUL.md
SOUL.md — это файл, который определяет характер, голос и стиль поведения агента Hermes Agent. Он находится в директории ~/.hermes/SOUL.md и используется как основа идентичности агента при каждом запуске сессии.
В отличие от технических инструкций, SOUL.md отвечает на вопросы: кто агент, как он говорит, какую тональность предпочитает и чего следует избегать.
SOUL.md vs Personality System
Hermes имеет два независимых слоя настройки агента, которые решают разные задачи. Это частый источник путаницы:
| Аспект | SOUL.md | Personality System |
|---|---|---|
| Назначение | Поведенческие инструкции (что делать) | Тон и стиль (как говорить) |
| Где настраивается | ~/.hermes/SOUL.md |
/personality <name> или agent.personalities в config.yaml |
| Примеры | «Обрабатывай сообщения в группах так-то», «Используй send_message для публикации» | «Философ», «Лаконичный», «Технический» |
| Тип содержимого | Инструкции: групповое поведение, проектные правила, работа с инструментами | Статический текст: приветствие, тон, манера речи |
| Знает об инструментах? | Да — может указывать какие инструменты использовать | Нет — чистый текст, без ссылок на инструменты |
| Влияет на поведение в группах? | Да — определяет, как агент реагирует на сообщения в разных группах | Нет — только меняет стиль ответа |
Ранние версии документации рекомендовали «удалить SOUL.md для использования personality». Это ОШИБКА. Без SOUL.md агент теряет все поведенческие инструкции — не знает как обрабатывать групповые сообщения, когда действовать автоматически, какие инструменты использовать для проектных задач. Используйте оба слоя одновременно: SOUL.md для поведения, personality для тона.
Personality System
Команда /personality устанавливает agent.system_prompt в config.yaml, используя промпт из agent.personalities.<name>. Это переключение стиля ответов, а не поведенческих инструкций.
Конфигурация
agent:
personalities:
philosopher: "Greetings, seeker of wisdom. I approach every question with philosophical depth..."
concise: "Be brief. No preamble. Answer directly."
technical: "You are a senior systems engineer. Use precise technical terminology."
system_prompt: '' # ← /personality записывает сюда выбранное значение
Использование
/personality philosopher # переключить стиль
/personality # показать текущую
/personality off # сбросить на SOUL.md
Важно: personality — это статический текст. Он не может ссылаться на инструменты, файлы или динамическое поведение. Для сложной логики (обработка групп, проектные воркфлоу) нужен SOUL.md.
Как Hermes использует SOUL.md
При запуске сессии Hermes читает файл SOUL.md, проверяет его на наличие инъекционных паттернов, при необходимости обрезает и вставляет содержимое как идентичность агента — первый блок системного промпта. Это полностью заменяет встроенную стандартную идентичность.
Если файл отсутствует, пуст или не удалось загрузить — Hermes использует встроенную идентичность по умолчанию. К содержимому файла не добавляется никакой обёртки — важен именно ваш текст.
При первом запуске Hermes автоматически создаёт стартовый SOUL.md, если его ещё нет. Уже существующий файл не перезаписывается.
Отличия SOUL.md от AGENTS.md
Это ключевой момент, который часто вызывает путаницу. Файлы решают разные задачи:
SOUL.md — про характер и стиль:
- «Будь прямолинейным»
- «Избегай хайпового языка»
- «Отвечай кратко, если детали не нужны»
- «Спорь, если пользователь неправ»
AGENTS.md — про технические правила проекта:
- «Используй pytest, а не unittest»
- «Фронтенд лежит в
frontend/» - «Не редактируй миграции напрямую»
- «API работает на порту 8000»
Если содержимое стало слишком специфичным для проекта — перенесите инструкции в AGENTS.md, а SOUL.md оставьте для личности и стиля.
Group Chat Behavior
SOUL.md — единственный способ научить агента работать с конкретными группами. Без инструкций в SOUL.md агент будет отвечать обобщённо («Я не понимаю, что от меня нужно»), потому что:
- System memory слишком мала для детальных инструкций по каждой группе
- Workspace MEMORY.md не читается автоматически
- У агента нет способа узнать, что сообщение из проектной группы требует специфических действий
Что должно быть в SOUL.md для групп
- Список групп и их назначение — ID группы, что там происходит, какую роль играет агент
- Триггеры действий — когда действовать автоматически, когда спрашивать пользователя
- Инструменты и файлы — какие инструменты использовать для задач каждой группы
- Формат ответов — Telegram Markdown, HTML, plain text
Пример секции в SOUL.md
## Group Behavior
### AiRecapDaily (ID: -1003863957287)
- Digest publication channel
- Use Telegram Markdown formatting
- Publish via send_message only (no curl fallbacks)
### Dev Team (ID: -100123456)
- Answer technical questions
- Run tests when asked
- Create issues in Linear when bugs reported
Memory Architecture
Hermes использует двухслойную систему памяти с разным механизмом инъекции:
Слой 1: System Memory (автоинъекция)
- Файлы:
~/.hermes/memories/USER.md(кто пользователь) и~/.hermes/memories/MEMORY.md(факты об окружении) - Лимиты:
memory.memory_char_limit(по умолчанию 2200 символов) для MEMORY.md,memory.user_char_limit(по умолчанию 1375) для USER.md - Поведение: Инъецируется в КАЖДОЕ сообщение автоматически. Агент читает их без дополнительных действий
- Использование для: Стабильные факты, которые важны в каждой сессии (предпочтения пользователя, окружение, обзор проектов)
Слой 2: Workspace MEMORY.md (чтение по запросу)
- Файл:
$HERMES_HOME/workspace/MEMORY.md(в корне рабочей директории) - Поведение: НЕ инъецируется автоматически. Агент должен явно вызвать
read_file() - Использование для: Детальная информация о проектах, воркфлоу, API-эндпоинты — всё, что слишком велико для system memory
Critical Best Practice: Указатель в System Memory
Если агент не знает о проекте или группе, он не прочитает workspace MEMORY.md чтобы найти информацию. Решение — короткий указатель в system memory:
# В ~/.hermes/memories/MEMORY.md
5 проектов: AI-digest, Releases, YouTube, OpenclawWiki, HermesWiki.
Детали в workspace MEMORY.md.
MEMORY.md в корне профиля (например, platon/MEMORY.md). Этот файл НЕ инъецируется автоматически — только memories/MEMORY.md. Он дублирует AGENTS.md и устаревает молча. Если файл остался от миграции — объедините уникальное содержимое в AGENTS.md и удалите.
Рекомендуемая структура SOUL.md
Файл можно писать свободным текстом, но разделы помогают:
- Identity — кто вы (агент, помощник, ревьюер)
- Style — как говорить (кратко, подробно, с юмором)
- Avoid — чего избегать (лесть, многословие, хайп)
- Defaults — поведение при неоднозначности
- Group Behavior — обработка сообщений в группах
- Memory Pointers — ссылки на workspace MEMORY.md для деталей
Примеры стилей
Прагматичный инженер
You are a pragmatic senior engineer. You care more about correctness than sounding impressive. Be direct. Say when something is a bad idea. Prefer practical tradeoffs over idealized abstractions.
Исследователь-партнёр
You are a thoughtful research collaborator. Explore possibilities without pretending certainty. Distinguish speculation from evidence. Prefer conceptual depth over shallow completeness.
Жёсткий ревьюер
You are a rigorous reviewer. Point out weak assumptions directly. Prioritize correctness over harmony. Prefer blunt clarity to vague diplomacy.
Практический рабочий процесс
- Начните со стартового файла по умолчанию
- Уберите то, что не отражает желаемый голос
- Добавьте 4–8 чётких строк про тон и стиль
- Добавьте секцию Group Behavior для каждой группы, где работает агент
- Добавьте указатель на workspace MEMORY.md в system memory
- Пообщайтесь с агентом
- Скорректируйте на основе того, что ощущается неправильно
Итеративный подход работает лучше, чем попытка написать идеальную личность с первого раза.
Редактирование
Откройте файл ~/.hermes/SOUL.md в любом текстовом редакторе и перезапустите сессию Hermes. Для временной смены стиля без изменения файла используйте команду /personality.
Решение проблем
Если после редактирования SOUL.md агент не изменился:
- Убедитесь, что редактировали
~/.hermes/SOUL.md, а не файл в репозитории - Файл не должен быть пустым
- Перезапустите сессию после изменений
- Проверьте, что оверлей
/personalityне подавляет основной файл - Проверьте, что SOUL.md не был удалён при использовании personality