Skip to main content
Glama

mira_live2d · плагин-маскот для DSH

Портирование xhqm-live2d (плагин WordPress) в нативный плагин DSH: маскот появляется в виде плавающего окна интерфейса диалога. Модель может говорить, менять выражение лица, переключать модели и действия через инструменты MCP, а также автоматически переключать выражения в зависимости от состояния «размышление / ожидание подтверждения / простой».

Установка (любой DSH web profile)

Пакет представляет собой независимый чистый ESM-модуль: на стороне хоста используются только встроенные модули Node, а клиентская библиотека для браузера включена в assets/lib/.

1. Установка пакета

dsh plugin --profile web add github:xhqm-xyz/mira_live2d

Также можно клонировать репозиторий и установить по локальному пути:

git clone https://github.com/xhqm-xyz/mira_live2d.git
dsh plugin --profile web add ./mira_live2d

2. Регистрация в профиле

Добавьте в список insert в ~/.dsh/profiles/web/cordis.patch.yml:

- id: mira_live2d
  name: 'mira_live2d'
  config:
    model: StellaMira          # 初始模型(model 目录名)
    position: right
    tts:
      enabled: false
      provider: openai         # 或 alibaba;base 可覆盖为任意 OpenAI 兼容端点
      keyEnv: 'OPENAI_API_KEY' # 建议用环境变量;或用 key 填字面量(仅本机私有配置)

Для ключей используйте tts.keyEnv (имя переменной окружения) или tts.key (только в локальном приватном конфигурационном файле). Никогда не сохраняйте их в репозиторий.

3. Перезапуск

dsh web

После обновления страницы маскот появится в правом нижнем углу окна диалога.

Related MCP server: live2d-to-agent

Модели

Модели размещаются в каталоге model/, каждая модель — в отдельной подпапке, которая должна содержать файл *.model3.json (см. model/README.md). mira_list_models сканирует автоматически.

Взаимодействие с интерфейсом

  • Перетаскивание: перетаскивание мышью / одним пальцем (позиция запоминается в localStorage)

  • Масштабирование: колесо мыши (ПК) / жест сжатия двумя пальцами (мобильные устройства), от 0,25× до 3× (масштаб запоминается); на мобильных по умолчанию масштабируется в соответствии с mobileScale

  • Меню: правый клик (ПК) / долгое нажатие (мобильные) открывает меню выражений / действий

  • Наложение выражений: пункты выражений в меню — это переключатели наложения, нажмите, чтобы включить/выключить (активные отмечены ✓); «Выражение по умолчанию» очищает все выражения и наложения

  • Пузырь: mira_speak / mira_bubble / подсказки о размышлении отображаются здесь

Инструменты MCP (вызываются моделью, префикс mira_)

Инструмент

Описание

mira_get_state

Онлайн-статус, видимость, текущая модель/выражение/действие/фраза, списки выражений/действий, переключатели, конфигурация размышления/ожидания, доступные для переключения модели

mira_list_models

Список всех моделей в папке model

mira_get_model_capabilities

Анализирует model3.json и возвращает список выражений/действий

mira_switch_model

Переключить отображаемую модель

mira_set_expression

Переключить/наложить выражение (пустая строка возвращает значение по умолчанию; stack=true для наложения)

mira_play_motion

Воспроизвести группу действий

mira_speak

Синтез речи TTS + пузырь (заставить модель говорить)

mira_bubble

Показать только пузырь без озвучки

mira_show / mira_hide

Показать / скрыть

mira_set_expressions_enabled

Включить/выключить систему выражений

mira_set_animations_enabled

Включить/выключить воспроизведение действий

mira_set_mood

Установить вручную thinking / awaiting / idle

mira_set_persona

Установить выражения размышления/ожидания, пузыри и задержку очистки простоя

mira_get_config

Прочитать текущую конфигурацию (ключ TTS не передаётся в открытом виде)

Выражения: взаимоисключение и наложение

  • По умолчанию mira_set_expression(name) — это взаимоисключающая замена: новое выражение плавно сменяет предыдущее.

  • mira_set_expression(name, stack=true) — это переключатель наложения: добавляет выражение в стек наложения, может сосуществовать с текущим взаимоисключающим выражением и другими наложенными выражениями (зависит от аддитивного смешивания Blend:Add в exp3.json).

  • Пункты выражений в меню правого клика / долгого нажатия всегда являются переключателями наложения (✓ означает включено): нажмите один раз, чтобы включить, ещё раз — чтобы выключить.

  • mira_set_expression("") (пустая строка) восстанавливает значение по умолчанию: очищает взаимоисключающее выражение и все наложенные выражения.

Параметры конфигурации

Все параметры необязательны, значения по умолчанию см. в DEFAULTS в lib/index.js:

Ключ

По умолчанию

Описание

enabled

true

Главный переключатель

model

''

Начальная модель (имя каталога модели)

modelsDir

model/ плагина

Переопределение каталога моделей

canvas.w/h

480/630

Внутреннее разрешение холста

position

right

Начальное left / right

mobileScale

55

Процент масштабирования на мобильных

showHint

true

Показывать подсказку при первом запуске

pollIntervalMs

1500

Интервал опроса команд

persona.thinking.{expression,bubble}

''

Выражение/пузырь при размышлении (по умолчанию пусто)

persona.awaiting.{expression,bubble}

''

Выражение/пузырь при ожидании подтверждения (по умолчанию пусто)

persona.idleClearMs

3200

Задержка очистки выражения после простоя

tts.enabled

false

Переключатель TTS

tts.provider

openai

openai / alibaba

tts.base

по умолч. провайдера

Базовый адрес API

tts.key

''

API-ключ (литерал)

tts.keyEnv

''

Имя переменной окружения с API-ключом

tts.model / tts.voice

по умолч. провайдера

Модель / голос

Как запускаются выражения размышления / ожидания

  • Модель начинает генерацию (агент переходит в running) → mood: thinking

  • Модель вызывает ask_user_question → mood: awaiting

  • Модель завершает текущий цикл (агент возвращается в idle) → mood: idle, через idleClearMs восстанавливается выражение по умолчанию

  • Также можно установить вручную с помощью mira_set_mood

Сторонние компоненты

В assets/lib/ включены PixiJS (MIT), pixi-live2d-display (MIT) и Live2D Cubism Core (проприетарная, Live2D Software License Agreement). Авторские права и полные тексты лицензий каждого компонента см. в THIRD-PARTY-NOTICES.md.

Related MCP Connectors

Related MCP Servers