Перейти к основному содержимому

Скины и темы

Скины управляют визуальным представлением CLI VibeOS: цветами баннера, лицами и глаголами спиннера, метками блока ответов, текстом брендинга и префиксом активности инструментов.

Стиль общения и визуальный стиль — это разные концепции:

  • Личность меняет тон и формулировки агента.
  • Скин меняет внешний вид CLI.

Смена скинов​

/skin                # показать текущий скин и список доступных скинов
/skin ares # переключиться на встроенный скин
/skin mytheme # переключиться на пользовательский скин из ~/.vibeos/skins/mytheme.yaml

Или задайте скин по умолчанию в ~/.vibeos/config.yaml:

display:
skin: default

Встроенные скины​

СкинОписаниеБрендинг агентаВизуальный характер
defaultКлассический VibeOS — золотой и кавайныйVibeOSТёплые золотые границы, текст цвета кукурузного шёлка, кавайные лица в спиннерах. Знакомый баннер с кадуцеем. Чистый и привлекательный.
aresТема бога войны — багровый и бронзовыйAres AgentГлубокие багровые границы с бронзовыми акцентами. Агрессивные глаголы спиннера («куёт», «марширует», «закаляет сталь»). Пользовательский ASCII-арт баннера с мечом и щитом.
monoМонохромный — чистый оттенки серогоVibeOSВсе оттенки серого — без цвета. Границы #555555, текст #c9d1d9. Идеально для минималистичных терминалов или записи экрана.
slateХолодный синий — ориентирован на разработчиковVibeOSКоролевские синие границы (#4169e1), мягкий синий текст. Спокойный и профессиональный. Без пользовательского спиннера — используются стандартные лица.
daylightСветлая тема для ярких терминалов с тёмным текстом и холодными синими акцентамиVibeOSРазработана для белых или ярких терминалов. Тёмный грифельный текст с синими границами, бледные поверхности статуса и светлое меню завершения, которое остаётся читаемым в светлых профилях терминала.
warm-lightmodeТёплый коричнево-золотой текст для светлого фона терминалаVibeOSТёплые тона пергамента для светлых терминалов. Тёмно-коричневый текст с акцентами цвета седла, кремовые поверхности статуса. Землистая альтернатива более холодной теме daylight.
poseidonТема бога океана — глубокий синий и морская пенаPoseidon AgentГрадиент от глубокого синего до морской пены. Спиннеры на океанскую тематику («прокладывает курс», «измеряет глубину»). ASCII-арт баннера с трезубцем.
sisyphusТема Сизифа — строгий серый с настойчивостьюSisyphus AgentСветло-серые тона с резким контрастом. Спиннеры на тему валуна («толкает в гору», «сбрасывает валун», «выдерживает цикл»). ASCII-арт баннера с валуном и холмом.
charizardВулканическая тема — жжёный оранжевый и уголёкCharizard AgentТёплый градиент от жжёного оранжевого до уголька. Спиннеры на огненную тематику («заходит в поток», «измеряет жар»). ASCII-арт баннера с силуэтом дракона.

Полный список настраиваемых ключей​

Цвета (colors:)​

Управляет всеми цветовыми значениями в CLI. Значения — шестнадцатеричные строки цветов.

КлючОписаниеПо умолчанию (скин default)
banner_borderГраница панели вокруг стартового баннера#CD7F32 (бронза)
banner_titleЦвет текста заголовка в баннере#FFD700 (золото)
banner_accentЗаголовки разделов в баннере (Доступные инструменты и т.д.)#FFBF00 (янтарь)
banner_dimПриглушённый текст в баннере (разделители, второстепенные метки)#B8860B (тёмная золотарник)
banner_textОсновной текст в баннере (имена инструментов, названия навыков)#FFF8DC (кукурузный шёлк)
ui_accentОсновной акцентный цвет интерфейса (подсветки, активные элементы)#FFBF00
ui_labelМетки и теги интерфейса#4dd0e1 (бирюзовый)
ui_okИндикаторы успеха (галочки, завершение)#4caf50 (зелёный)
ui_errorИндикаторы ошибок (сбои, блокировки)#ef5350 (красный)
ui_warnИндикаторы предупреждений (осторожно, запросы подтверждения)#ffa726 (оранжевый)
promptЦвет текста интерактивного приглашения#FFF8DC
input_ruleГоризонтальная линия над областью ввода#CD7F32
response_borderГраница вокруг блока ответа агента (ANSI-escape)#FFD700
session_labelЦвет метки сессии#DAA520
session_borderЦвет приглушённой границы ID сессии#8B8682
status_bar_bgЦвет фона строки состояния/использования TUI#1a1a2e
voice_status_bgЦвет фона значка статуса голосового режима#1a1a2e
selection_bgЦвет фона подсветки выделения мышью в TUI. Если не задан, используется completion_menu_current_bg.#333355
completion_menu_bgЦвет фона списка меню завершения#1a1a2e
completion_menu_current_bgЦвет фона активной строки завершения#333355
completion_menu_meta_bgЦвет фона столбца метаданных завершения#1a1a2e
completion_menu_meta_current_bgЦвет фона активного столбца метаданных завершения#333355

Спиннер (spinner:)​

Управляет анимированным спиннером, отображаемым во время ожидания ответов API.

КлючТипОписаниеПример
waiting_facesсписок строкЛица, сменяемые во время ожидания ответа API["(⚔)", "(⛨)", "(▲)"]
thinking_facesсписок строкЛица, сменяемые во время рассуждения модели["(⚔)", "(⌁)", "(<>)"]
thinking_verbsсписок строкГлаголы, отображаемые в сообщениях спиннера["куёт", "планирует", "выковывает планы"]
wingsсписок пар [левый, правый]Декоративные скобки вокруг спиннера[["⟪⚔", "⚔⟫"], ["⟪▲", "▲⟫"]]

Когда значения спиннера пусты (как в default и mono), используются жёстко заданные значения по умолчанию из display.py.

Брендинг (branding:)​

Текстовые строки, используемые в интерфейсе CLI.

КлючОписаниеПо умолчанию
agent_nameИмя, отображаемое в заголовке баннера и статусеVibeOS
welcomeПриветственное сообщение при запуске CLIДобро пожаловать в VibeOS! Введите сообщение или /help для списка команд.
goodbyeСообщение при выходеДо свидания! ⚕
response_labelМетка в заголовке блока ответа✦ VibeOS
prompt_symbolСимвол перед приглашением пользователя (голый токен, рендереры добавляют завершающий пробел)❯
help_headerТекст заголовка для вывода команды /help(^_^)? Доступные команды

Другие ключи верхнего уровня​

КлючТипОписаниеПо умолчанию
tool_prefixстрокаСимвол, добавляемый перед строками вывода инструментов в CLI┊
tool_emojisсловарьПереопределения эмодзи для каждого инструмента в спиннерах и прогрессе ({имя_инструмента: эмодзи}){}
banner_logoстрокаASCII-арт логотип в разметке Rich (заменяет стандартный баннер VIBEOS_AGENT)""
banner_heroстрокаГероический ASCII-арт в разметке Rich (заменяет стандартный рисунок кадуцея)""

Пользовательские скины​

Создавайте YAML-файлы в ~/.vibeos/skins/. Пользовательские скины наследуют отсутствующие значения от встроенного скина default, поэтому вам нужно указывать только те ключи, которые вы хотите изменить.

Полный шаблон пользовательского скина YAML​

# ~/.vibeos/skins/mytheme.yaml
# Полный шаблон скина — показаны все ключи. Удалите те, что не нужны;
# отсутствующие значения автоматически наследуются от скина 'default'.

name: mytheme
description: Моя пользовательская тема

colors:
banner_border: "#CD7F32"
banner_title: "#FFD700"
banner_accent: "#FFBF00"
banner_dim: "#B8860B"
banner_text: "#FFF8DC"
ui_accent: "#FFBF00"
ui_label: "#4dd0e1"
ui_ok: "#4caf50"
ui_error: "#ef5350"
ui_warn: "#ffa726"
prompt: "#FFF8DC"
input_rule: "#CD7F32"
response_border: "#FFD700"
session_label: "#DAA520"
session_border: "#8B8682"
status_bar_bg: "#1a1a2e"
voice_status_bg: "#1a1a2e"
selection_bg: "#333355"
completion_menu_bg: "#1a1a2e"
completion_menu_current_bg: "#333355"
completion_menu_meta_bg: "#1a1a2e"
completion_menu_meta_current_bg: "#333355"

spinner:
waiting_faces:
- "(⚔)"
- "(⛨)"
- "(▲)"
thinking_faces:
- "(⚔)"
- "(⌁)"
- "(<>)"
thinking_verbs:
- "обрабатываю"
- "анализирую"
- "вычисляю"
- "оцениваю"
wings:
- ["⟪⚡", "⚡⟫"]
- ["⟪●", "●⟫"]

branding:
agent_name: "Мой агент"
welcome: "Добро пожаловать в Моего агента! Введите сообщение или /help для списка команд."
goodbye: "Увидимся! ⚡"
response_label: " ⚡ Мой агент "
prompt_symbol: "⚡"
help_header: "(⚡) Доступные команды"

tool_prefix: "┊"

# Переопределения эмодзи для инструментов (опционально)
tool_emojis:
terminal: "⚔"
web_search: "🔮"
read_file: "📄"

# Пользовательский ASCII-арт баннер (опционально, поддерживается разметка Rich)
# banner_logo: |
# [bold #FFD700] МОЙ АГЕНТ [/]
# banner_hero: |
# [#FFD700] Пользовательский рисунок здесь [/]

Пример минимального пользовательского скина​

Поскольку всё наследуется от default, минимальному скину нужно изменить только то, что отличается:

name: cyberpunk
description: Неоновая тема терминала

colors:
banner_border: "#FF00FF"
banner_title: "#00FFFF"
banner_accent: "#FF1493"

spinner:
thinking_verbs: ["взламываю", "расшифровываю", "загружаю"]
wings:
- ["⟨⚡", "⚡⟩"]

branding:
agent_name: "Кибер-агент"
response_label: " ⚡ Кибер "

tool_prefix: "▏"

VibeOS Mod — Визуальный редактор скинов​

VibeOS Mod — это веб-интерфейс, созданный сообществом, для визуального создания скинов и управления ими. Вместо написания YAML вручную вы получаете редактор с указателем и щелчком мыши и предварительным просмотром в реальном времени.

Редактор скинов VibeOS Mod

Что он делает:

  • Отображает список всех встроенных и пользовательских скинов
  • Открывает любой скин в визуальном редакторе со всеми полями скина VibeOS (цвета, спиннер, брендинг, префикс инструмента, эмодзи инструментов)
  • Генерирует текстовый арт banner_logo из текстового запроса
  • Преобразует загруженные изображения (PNG, JPG, GIF, WEBP) в ASCII-арт banner_hero с несколькими стилями рендеринга (шрифт Брайля, ASCII-рампа, блоки, точки)
  • Сохраняет напрямую в ~/.vibeos/skins/
  • Активирует скин, обновляя ~/.vibeos/config.yaml
  • Показывает сгенерированный YAML и предварительный просмотр в реальном времени

Установка​

Вариант 1 — Pinokio (в 1 клик):

Найдите его на pinokio.computer и установите одним кликом.

Вариант 2 — npx (самый быстрый из терминала):

npx -y vibeos-mod

Вариант 3 — Вручную:

git clone https://github.com/cocktailpeanut/vibeos-mod.git
cd vibeos-mod/app
npm install
npm start

Использование​

  1. Запустите приложение (через Pinokio или терминал).
  2. Откройте Skin Studio.
  3. Выберите встроенный или пользовательский скин для редактирования.
  4. Сгенерируйте логотип из текста и/или загрузите изображение для героического арта. Выберите стиль рендеринга и ширину.
  5. Отредактируйте цвета, спиннер, брендинг и другие поля.
  6. Нажмите Save, чтобы записать YAML скина в ~/.vibeos/skins/.
  7. Нажмите Activate, чтобы установить его как текущий скин (обновляет display.skin в config.yaml).

VibeOS Mod учитывает переменную окружения VIBEOS_HOME, поэтому он также работает с профилями.

Эксплуатационные заметки​

  • Встроенные скины загружаются из vibeos_cli/skin_engine.py.
  • Неизвестные скины автоматически возвращаются к default.
  • /skin немедленно обновляет активную тему CLI для текущей сессии.
  • Пользовательские скины в ~/.vibeos/skins/ имеют приоритет над встроенными скинами с тем же именем.
  • Изменения скина через /skin действуют только в рамках сессии. Чтобы сделать скин постоянным по умолчанию, укажите его в config.yaml.
  • Поля banner_logo и banner_hero поддерживают разметку консоли Rich (например, [bold #FF0000]текст[/]) для цветного ASCII-арта.