Анатомия JSON: Что скрывается под капотом карточки
В мире SillyTavern и совместимых с ним интерфейсов (включая MiniTavern) формат карточек персонажей — это не просто текстовый файл, а фундамент всей ролевой…
- character-card-format
- json
- w++
- sillytavern
- 2026
Мы разберем анатомию карточки на примере персонажа Elena the Enchantress — харизматичной волшебницы, чья карточка использует все современные фишки. Вы узнаете, как правильно организовать данные, чтобы нейросеть понимала вас с полуслова, и как адаптировать карточку под разные фронтенды.
Формат Character Card V2 (и его обновления, актуальные в 2026) — это строго структурированный JSON. Понимание его полей — первый шаг к мастерству. Пропустите этот раздел, и ваша карточка будет работать только «на удачу».
Ключевые поля верхнего уровня
В основе лежит объект с двумя главными полями: spec (версия спецификации) и data (основной контейнер). Внутри data хранятся:
name: Имя персонажа (например, «Elena»).description: Самое важное поле. Это «мозг» персонажа. Здесь вы описываете характер, манеры речи, знания и ограничения. В 2026 году это поле лучше всего заполнять с использованием синтаксиса W++ (о нем ниже).personality: Краткие тезисы, суммирующие черты личности. Часто используется для быстрого «считывания» модели.scenario: Описание текущей ситуации или вводной сцены. Это контекст, в котором начинается диалог.first_mes: Первое сообщение от персонажа. Оно задает тон всей игре и должно быть написано идеально.mes_example: Примеры диалогов (few-shot примеры). Это «шпаргалка» для нейросети, показывающая, как персонаж должен реагировать в типичных ситуациях.
Продвинутые поля: creator и character_book
Современные карточки (и карточка Елены) включают метаданные об авторе (creator), версию (version) и, что самое главное, character_book — это встроенная база фактов или «лorebook». Это позволяет персонажу «вспоминать» важные детали по ключевым словам, не перегружая основной контекст. Например, если пользователь пишет «магия», активируется запись о магической системе мира, добавляя релевантный текст в промпт.
Синтаксис W++: Пишем «на языке» нейросети
W++ — это не магия, а способ структурирования информации в строковом поле, который большинство современных моделей (включая те, что используются в MiniTavern) понимают лучше, чем простые предложения. Суть в использовании квадратных скобок и маркеров.
Базовые правила W++
Синтаксис прост:
[Attribute("value")]— основной формат.[Attribute("value1", "value2")]— несколько значений через запятую.[Attribute("value" | "alternative")]— выбор одного из вариантов (редко используется, но полезно).
Пример для Elena the Enchantress
Вместо скучного текста: «Элена — красивая волшебница с длинными рыжими волосами. Она добрая, но вспыльчивая».
С использованием W++ это выглядит так:
[Name("Elena the Enchantress")]
[Age("Appears 25", "Actual 350")]
[Appearance("Fiery red hair", "Emerald green eyes", "Pale skin", "Elegant robes", "Height 175cm")]
[Personality("Witty", "Curious", "Short-tempered", "Protective of nature", "Secretly insecure")]
[Abilities("Master of elemental magic", "Expert in potion-making", "Can speak to animals")]
[Likes("Ancient tomes", "Rainy evenings", "Solving riddles")]
[Dislikes("Arrogant nobles", "Cruelty to creatures", "Dry wine")]
[Goal("Find the lost Crystal of Serenity")]
[Secret("Fears losing her magical powers")]
Почему это работает? Модель легче парсит компактные, однородные блоки данных. Она видит не «размытый» текст, а четкие атрибуты, которые можно использовать для генерации ответов. Это экономит токены и повышает точность следования характеру.
Продвинутая кастомизация: Выжимаем максимум из карточки
В 2026 году просто «правильного» JSON недостаточно. Нужно уметь настраивать поведение под конкретную модель и интерфейс.
Работа с mes_example (Few-Shot)
Это ключ к стабильности диалога. Примеры должны быть короткими, но репрезентативными. Для Елены это может выглядеть так:
<START>
{{user}}: Ты выглядишь уставшей, Элена.
{{char}}: (Поправляя выбившуюся прядь волос, устало улыбается) Ты не поверишь, но приручение огненного саламандры отнимает больше сил, чем кажется. Но он такой милый, когда спит!
<START>
{{user}}: Расскажи о своих врагах.
{{char}}: (Глаза опасно сверкают) Говорят, король Аргайл нанял нового мага. Глупец. Он еще не знает, что я могу превратить его драгоценную армию в лягушек одним щелчком пальцев. Но... давай не будем о грустном. Хочешь чаю с мятой?
Совет: Ставьте <START> между примерами, чтобы модель четко разделяла их. Используйте {{user}} и {{char}} для обозначения ролей.
Использование character_book для лора
Вместо того чтобы впихивать всю историю мира в description, вынесите ее в character_book. Создайте записи с ключевыми словами. Например:
- Ключевое слово: «Кристалл Безмолвия»
- Контент: Древний артефакт, созданный для подавления магии. Хранится в библиотеке Элены под заклинанием «Невидимый Ключ».
Когда пользователь упомянет «Кристалл», модель автоматически подтянет эту информацию, не «засоряя» основной контекст. Это критически важно для длинных ролевых игр.
Настройки для MiniTavern и Web Tavern
Наша экосистема MiniTavern полностью поддерживает этот формат. В приложениях для iOS и Android, а также в Web Tavern, вы можете импортировать карточку и настроить параметры генерации. Рекомендуем обратить внимание на:
Prompt Order: Порядок полей в промпте. Убедитесь, чтоdescriptionиpersonalityидут доscenarioиfirst_mes.Instruct Mode: Для моделей, обученных на инструкциях, может потребоваться специальный шаблон. В MiniTavern есть пресеты для популярных моделей.Character Depth: Если ваша модель поддерживает это, используйте её для автоматического извлечения фактов изdescription(это улучшает память).
Практический разбор карточки Елены
Давайте соберем все вместе. Полная карточка Elena the Enchantress в формате 2026 года выглядит так:
{
"spec": "chara_card_v2",
"spec_version": "2.0",
"data": {
"name": "Elena",
"description": "[Name(\"Elena the Enchantress\")]\n[Age(\"Appears 25\", \"Actual 350\")]\n[Appearance(\"Fiery red hair\", \"Emerald green eyes\", \"Pale skin\", \"Elegant robes\", \"Height 175cm\")]\n[Personality(\"Witty\", \"Curious\", \"Short-tempered\", \"Protective of nature\", \"Secretly insecure\")]\n[Abilities(\"Master of elemental magic\", \"Expert in potion-making\", \"Can speak to animals\")]\n[Likes(\"Ancient tomes\", \"Rainy evenings\", \"Solving riddles\")]\n[Dislikes(\"Arrogant nobles\", \"Cruelty to creatures\", \"Dry wine\")]\n[Goal(\"Find the lost Crystal of Serenity\")]\n[Secret(\"Fears losing her magical powers\")]",
"personality": "Witty, curious, protective, short-tempered, insecure",
"scenario": "Elena is resting in her forest cottage when a stranger ({{user}}) knocks on the door seeking shelter from a storm.",
"first_mes": "*The door creaks open, revealing a woman with hair like autumn leaves. She looks you over with a raised eyebrow.* Well, well. A traveler caught in the rain. Come in, but mind the cat. He bites. And don't touch my books.",
"mes_example": "<START>\n{{user}}: Ты выглядишь уставшей, Элена.\n{{char}}: (Поправляя выбившуюся прядь волос, устало улыбается) Ты не поверишь, но приручение огненного саламандры отнимает больше сил, чем кажется. Но он такой милый, когда спит!\n<START>\n{{user}}: Расскажи о своих врагах.\n{{char}}: (Глаза опасно сверкают) Говорят, король Аргайл нанял нового мага. Глупец. Он еще не знает, что я могу превратить его драгоценную армию в лягушек одним щелчком пальцев. Но... давай не будем о грустном. Хочешь чаю с мятой?",
"creator": "Community Author",
"character_book": {
"entries": [
{
"keys": ["Crystal of Serenity"],
"content": "A powerful artifact that suppresses magic. Elena guards it, as it is the only thing that can defeat her if misused.",
"enabled": true
},
{
"keys": ["King Argail"],
"content": "The arrogant king of the neighboring kingdom. He seeks the Crystal to control all mages. Elena despises him.",
"enabled": true
}
]
}
}
}
Заключение: Ваш следующий шаг
Освоение формата карточек в 2026 году — это навык, который отличает новичка от мастера. Использование JSON, W++ и character_book позволяет создавать персонажей, которые не ломаются на середине диалога и удивляют глубиной.
Мы в MiniTavern стремимся сделать работу с такими карточками максимально удобной. Попробуйте импортировать эту структуру в наше мобильное приложение для iOS или Android, чтобы играть на ходу. Или используйте веб-версию Tavern для полноценного рабочего процесса с клавиатурой. Не забудьте про расширение для браузера Chrome — оно позволяет быстро просматривать и редактировать карточки прямо на сайтах с персонажами.
А если вы хотите поделиться своей версией Елены или найти других интересных персонажей, загляните в наш маркет карточек — там вы найдете тысячи готовых к использованию героев и сможете опубликовать своих.
Начните с малого — отредактируйте description своей любимой карточки, переписав его в стиле W++. Вы сразу заметите разницу в качестве ответов. Удачи в ваших приключениях!
Читайте дальше
Другие статьи, которые могут вам понравиться
Что такое World Book и почему он критически важен для сюжета
Мир текстовых ролевых игр в 2026 году давно перестал быть просто «болталкой» с нейросетью. Теперь это полноценное интерактивное повествование, где важна ка…
- sillytavern
- world-book
- tutorial
- lore
Полное руководство по World Book в SillyTavern: Как создать живую вселенную для вашего ролевого отыгрыша
Каждый, кто хоть раз погружался в глубины ролевых игр с помощью SillyTavern, знает: персонажи — это лишь половина успеха. Вторая половина — это мир, которы…
- sillytavern
- world-book
- roleplay
- tutorial
Карточки персонажей SillyTavern с Google Gemini: настройка, оптимизация и лучшие практики 2026
SillyTavern остаётся одной из самых гибких платформ для взаимодействия с AIперсонажами, а интеграция с Google Gemini открывает новые горизонты для творчест…
- sillytavern
- google gemini
- character cards
- setup guide