Oct 22 17:06 · AI content
SkyrimNet Beta28
Это перевод, сделанный ИИ: мы старались, но в нём возможны неточности. Оригинальные примечания к выпуску (на английском) и загрузка — на GitHub: https://github.com/MinLL/SkyrimNet-GamePlugin/releases/tag/vbeta28
This is a best-effort AI translation and may contain mistakes. The original release notes (in English) and the download are on GitHub: https://github.com/MinLL/SkyrimNet-GamePlugin/releases/tag/vbeta28
SkyrimNet Beta28 @everyone
Главное: переработана система диалогов, вспоминание воспоминаний теперь находит то воспоминание, о котором идёт речь, примерно в два раза чаще, ElevenLabs, Inworld и Pocket TTS заметно ускорены, дашборд и чат теперь работают на Magelight UI, улучшения OmniSight, локальное распознавание речи Parakeet, улучшена поддержка локальных моделей, а также поддержка инференса через Fateless.Ai.
Переработка системы диалогов @Min
Мы переписали систему диалогов с нуля, чтобы повысить релевантность и темп разговоров — особенно в напряжённые моменты (бой, повторяющееся срабатывание триггера, реакция толпы). NPC больше не копят реплики, которые продолжают проигрываться ещё долго после того, как момент уже прошёл. Реплики произносятся по очереди в порядке приоритета, а единственный ответ стартует так же быстро, как и раньше.
Что-то работает не так, как ожидалось? Используйте команду /report-issue в Discord и приложите ваш SkyrimNet.log.
Инференс через Fateless AI @Min
Я запустил собственный сервис инференса через Fateless AI — он должен дать продуманный опыт «просто работает» без какой-либо настройки. Пока я открыл его небольшой группе альфа-тестеров, но в ближайшие дни запущу его для всех. Это избавляет от необходимости иметь аккаунты OpenRouter / других облачных провайдеров, настраивать api-ключи, workspace id и так далее.
Это было и всегда будет полностью опциональным. Мы всегда будем поддерживать существующую модель, где пользователи вольны использовать свой собственный ключ или локальные модели. Это никогда не изменится. Новое предложение даёт (опциональный!) простой путь для тех, кто хочет, чтобы всё просто работало с минимумом настройки, при этом заметно улучшая скорость и надёжность по сравнению с тем, к чему большинство привыкло сегодня.
Подробности скоро.
Улучшенное вспоминание памяти NPC @dekana
Спросите NPC о чём-то, что они помнят, и обсуждаемое воспоминание попадёт в ответ почти в два раза чаще. На двух реальных сохранениях английский вырос с 33% до 65%, а русский — с 20% до 60%.
- Ваша реплика: воспоминание, ближе всего к тому, что вы сказали, остаётся в контексте даже если его оценка ниже старых порогов. Memory → Player Input Memory Floor (по умолчанию 30%) отсекает его только ниже этого порога; 0 оставляет его всегда.
- Memory → Related Player Input Memories (по умолчанию 2) и Related Memory Cut (по умолчанию 75%) подтягивают ближайшие связанные воспоминания, так что NPC, спрошенный о том, как началось какое-то дело, видит и то, как оно закончилось.
- Разговор: у Memory → Conversation Search есть свои Similarity (по умолчанию 80%) и Min Relevance (по умолчанию 0, выключено). Similarity Threshold и Min Relevance Score в Retrieval Thresholds применяются только к поиску по вашей реплике.
- Conversation Search → LLM Search Query (по умолчанию включено). Выключение экономит один вызов мета-модели на ответ и вместо этого ищет по последним 8 репликам, с чуть меньшим вспоминанием (английский 51% против 65%, русский 53% против 60%).
- Русские и японские игры: установите Player Input Memory Floor на 15%, а с моделью эмбеддингов по умолчанию (Bekko) установите Conversation Search Similarity на 70%. С Granite оставьте 80%, либо 85%, если начинают всплывать несвязанные воспоминания.
Decision Gate для вспоминания памяти @dekana
Новая экспериментальная модель вспоминания памяти на основе классификатора в духе JEv. Модель принятия решений выбирает, какие вспомненные воспоминания попадают в ответ. Она чуть чаще подтягивает релевантные воспоминания и добавляет гораздо меньше нерелевантных. По умолчанию выключена: Memory → Decision Gate.
- Требует модель решений (decisions model). Без включённой модели, либо если ни одно воспоминание не подходит, вспоминание работает как раньше.
- Min Probability (по умолчанию 70%): меньшее значение вспоминает больше, но с большим числом промахов.
- Support Picks (по умолчанию 2): сколько воспоминаний по той же теме добавляется; 0 не добавляет ни одного.
- Один дополнительный запрос решения на реплику игрока, около 0,2–0,4 с. Он запускается заранее, но немного замедляет ответы.
- Когда включён, он решает вместо Player Input Memory Floor.
Ускоренная речь: ElevenLabs, Inworld и Pocket TTS @Min
Заметно ускорили воспроизведение звука у ElevenLabs, Inworld и Pocket TTS.
Переработка TTS-движка @Min
Переработали наши внутренние TTS-механизмы, чтобы их было проще поддерживать. Теперь они ведут себя более последовательно и единообразно, множество мелких багов и глюков исправлено.
Локальное распознавание речи Parakeet @langfod
Распознавайте свою речь на собственной машине с помощью NVIDIA Parakeet (parakeet-tdt-0.6b-v3) вместо Whisper. Выберите «Local Parakeet» в качестве STT Engine на странице Speech-to-Text.
- Модели q8_0 (по умолчанию), q4_k, q4_0 и f16; модель скачивается при выборе.
- По умолчанию работает на CPU. В Advanced включите GPU Acceleration и выберите GPU Device и CPU Threads, как для Local Whisper.
- Поддерживает английский и 25 европейских языков. Parakeet не использует настройку языка и пользовательский словарь.
- Список GPU Device для Local Whisper остаётся видимым, но серым, пока GPU Acceleration выключен.
Обновления OmniSight @Min
Если описанию NPC (или вас самих) не хватает того, что делает персонажа узнаваемым, нажмите клавишу захвата (Numpad 0). Откроется диалог с тем, кто сейчас под прицелом, с вами самими и с местом, в котором вы находитесь — у каждого со своим текущим описанием: сделайте быстрый захват, походите вокруг объекта для захвата с нескольких углов, либо пересоздайте описание на основе сохранённых изображений.
- Мультиугловой захват: выберите его, закройте диалог, нажмите клавишу захвата по одному разу на каждый угол (до 6, или до 10 для места), и удержите её, чтобы просмотреть снимки перед тем, как они будут описаны за один вызов.
- Захваты персонажей обрезаются по самому персонажу, до 4K, с крупным планом головы, так что рога, обручи и детали лица видны отчётливо.
- Захваты, которые вы делаете сами, используют модель Vision - Quality (по умолчанию Gemini 3.8 Flash на OpenRouter; страница AI Models); фоновые захваты продолжают использовать Vision. Захваты персонажей отправляют изображения большего размера плюс второй снимок, так что каждый обходится дороже.
- Теперь у каждого персонажа есть захват в одежде и без неё; в промптах используется тот, что соответствует текущей одежде, а до появления захвата — внешность из биографии. Страница AI Vision подписывает каждый из них (с фильтром); вкладка Captures на странице Characters показывает оба.
- «This place» захватывает весь город или данжен целиком (например, Ривервуд, а не одну из его ячеек); открытая местность остаётся по ячейкам. Захваты, сделанные вручную, никогда не заменяются автоматическими, а повторный захват сохраняет описание, которое вы отредактировали и заблокировали; заменяет его только Regenerate.
- Ctrl + клавиша захвата пропускает диалог нового захвата, как и раньше. VR сохраняет прямой захват.
Игровой дашборд и чат на Magelight UI @Severause
Игровой дашборд и чат теперь работают на Magelight UI, помимо PrismaUI, в том числе и в Skyrim VR, и ощущаются заметно плавнее. Работает с Magelight 0.30.1+, рекомендуется 0.31.9+; более старая версия пишет в лог, каких исправлений ей не хватает.
- Если установлены оба, SkyrimNet использует Magelight. ui_host: prismaui в Dashboard.yaml оставляет PrismaUI; auto (значение по умолчанию) остаётся на PrismaUI, если у установленной версии Magelight не хватает нужного вашей настройке исправления. После изменения требуется перезапуск.
- Они открываются сразу после загрузки сохранения; Escape и клавиша переключения Magelight (PageUp) закрывают их, а полноэкранный дашборд замораживает мир позади себя (0.31.0+, не-VR Skyrim). При первом открытии Home уже заполнен; на не-VR Skyrim с 0.31.11+ он отрисовывается в фоне, поэтому открывается мгновенно (ui_prepaint: false отключает это).
- Пока открыто меню Magelight другого мода, хоткеи SkyrimNet не работают, а GameMaster и OmniSight ставятся на паузу — так же, как при открытом меню PrismaUI.
- VR с 0.31.4+: vr_dashboard_chord и vr_chat_chord задают опциональные сочетания кнопок контроллера (например, grip+menu), которые открывают и закрывают каждое из окон.
- 0.31.9+: VR-клавиатура и курсор Magelight перенимают цветовую тему дашборда. Dragonborn сохраняет курсор Magelight с серой клавиатурой; тема, которую сложно разобрать на клавишах, а также оверлей чата, сохраняют клавиатуру по умолчанию.
- Ошибки и предупреждения консоли дашборда всегда попадают в SkyrimNet.log; остальные строки требуют ui_console_forward: true.
Расширенная страница Characters @zevck
Биография, события, воспоминания, дневники, захваты, игровые данные и настройки голоса каждого персонажа теперь собраны на одной странице.
- Биография показывает каждый блок отдельно без Inja: условная логика разворачивается в предпросмотр в виде обычного текста, и каждый блок можно редактировать прямо на месте. Старый редактор открывается через </> над биографией.
- Update Bio и Dynamic Update расположены над биографией, а полоса показывает прогресс генерации динамической биографии. Остальные кнопки собраны в контекстном меню в правом верхнем углу.
Более понятная публикация плагинов @zevck
My Plugins теперь различает New Bundle, Publish Bundle и Publish Listing.
- Предпросмотр Markdown для описаний плагинов и списков изменений перед публикацией, а также счётчик символов для списка изменений.
- Изменение номера версии теперь помечено как необязательное.
- Страницы плагинов и вкладка Info в Installed Plugins показывают последние заметки об изменениях первыми, а старые версии сворачиваются.
- Все действия с плагином на My Plugins собраны в одном меню с подписанными пунктами вместо ряда кнопок-иконок.
Для авторов модов: триггеры и повествование теперь говорят по очереди @Min
Раньше каждое DirectNarration, триггер или событие, на которое идёт реакция, запускало собственный запрос к LLM сразу по прибытии: пять событий за две секунды давали пять реплик параллельно, которые проигрывались одна за другой на протяжении получаса. Теперь каждый вызов — это запрос на произнесение реплики. В разговоре в любой момент может проигрываться максимум одна реплика и готовиться ещё одна, а ожидающие запросы ранжируются, объединяются и устаревают.
- P0-player: ввод игрока и Continue Narration. Ждёт 30 с; никогда не объединяется и не ограничивается.
- P1-directed: DirectNarration, не вызванное триггером, и подсказки GameMaster. Ждёт 15 с (подсказки никогда не устаревают); каждый вызов становится отдельной репликой, так что пять вызовов дают пять реплик по порядку. Вызовите один раз, если хотите получить одну реплику.
- P2-urgent: всё, что запускается триггером, и прерываемые типы событий. Ждёт 10 с; повторы одного и того же триггера объединяются, а остальные срабатывания перечисляются в промпте реплики.
- P3-reaction: события RegisterEvent, на которые реагируют NPC, а также ванильные или фоновые реплики. Ждёт 8 с; разные реакции, ожидающие одновременно, получают один ответ на самую новую.
- P4-continuation: реплики RegisterDialogue и ответы NPC друг другу. Ждёт 6 с; заканчивается по достижении Max Chain Depth.
- Max Recent Speech Count per window ограничивает P2–P4. Более высокий приоритет заменяет реплику, которая ещё только пишется, но никогда — ту, что уже проигрывается. interrupt: true и прерываемые события обрывают речь как и раньше; PurgeDialogue очищает аудио, пишущуюся в данный момент реплику и все ожидающие запросы. SkyrimNet не реагирует на собственные реплики.
Авторам шаблонов: speech_turn (mode, merged_count, conversation_depth, also_events) описывает другие запросы, на которые также отвечает реплика; user_final_instructions/0805_merged_events.prompt отображает их, когда merged_count > 1.
Package API для авторов модов @Severause
Мод может регистрировать AI-пакеты под собственным именем, указывать на странице Package Manager пакеты, которые он выполняет сам, приостанавливать пакеты SkyrimNet на актёре для собственной сцены и узнавать о каждом удалении (PublicGetPackageApiVersion 1).
- RegisterPackageEx принимает владельца, отображаемое имя и флаг учёта условий; возвращает 1 — применено, 2 — сохранено на время удержания, 0 — не удалось. UnregisterPackageEx удаляет только строку своего владельца.
- Строки ListPackage выполняются самим модом: Remove на странице просит его остановить пакет. При removable false удалять или заменять их может только сам мод.
- Удержания принадлежат вызвавшему: HoldPackages / ReleaseHeldPackages(actor, owner) завершают только удержание вызвавшего; Release hold на странице завершает все удержания, а смерть сообщается каждому держателю (owner|death).
- SkyrimNet_OnPackageRemoved (name|reason|owner, причины 0-9: 8 webuiAll — это Remove all на странице, 9 replaced — другой владелец занял строку), OnPackageAdded, OnPackagesHeld, OnPackagesReleased; отправляются даже при отключённых исходящих событиях мода.
- ActorUtil.AddPackageOverride с флагами 0 учитывает условия своего пакета, а SkyrimNet сохраняет свою копию переопределений ActorUtil, так что после загрузки они сохраняют свой приоритет.
- Страница показывает владельцев, отображаемые имена, держателей и значки Held, Conditions и Run by.
Для авторов модов
Заголовки API лицензированы по MIT — PublicAPI.h, PublicAPIMemoryQuery.h, PublicAPIDiaryQuery.h и SkyrimNetApi.psc лицензированы по MIT, так что их может подключить любой мод, с открытым или закрытым исходным кодом. Текст лицензии лежит в devkit, в CppAPI/LICENSE; сам SkyrimNet остаётся проприетарным. @Min
Речь и звук
- Шаблоны (wildcards) в переносимых аудио-тегах — * в записи переносимого аудио-тега соответствует любой последовательности символов, так что *accent переносит [German accent]. Записи без * по-прежнему соответствуют всему тегу целиком. @SirJefferE
- Рассказчик Kokoro — Загрузка сохранения больше не перезагружает модель; после смены модели ваш основной голос говорит, пока она не готова (раньше первая реплика была беззвучной); длинные реплики произносятся целиком; удалённые (purged) реплики останавливаются быстрее. @Min
- Piper — Отсутствие eSpeak теперь показывает ошибку, изменения числа потоков применяются при сохранении, редко используемые голоса выгружаются из памяти, удалённые реплики останавливаются быстрее, а голоса загружаются при первом использовании, а не при загрузке ячейки, так что эта реплика может задержаться. @Min
- Настройки TTS-движков — выбор языка PocketTTS перенесён из Advanced в основные настройки, XTTS показывает названия языков вместо кодов, а у поля Higgs Model появилась подпись. @zevck
- Языки движков в обучении — Наведите курсор на иконку языка на карточке речевого движка в обучающем туториале, чтобы увидеть поддерживаемые им языки. @zevck
Дашборд
- Справочные гайды дашборда — Знак вопроса рядом с заголовком каждой страницы открывает гайд по этой странице. @zevck
- Обновления Home — В игре недавние события на Home появляются примерно за секунду. Неизменившиеся панели не требуют загрузки или повторного чтения. @Severause
- Переключатель для отдельных правил в Universal Translator — Теперь можно отключить правило без его удаления. Отключённое правило игнорируется, так что правила ниже него всё равно могут применяться. @SirJefferE
- Recall Debug — Memory → Record Recall Debug (по умолчанию выключено) записывает вспоминание для каждой реплики игрока: кандидатов с оценками, какой фильтр их отбросил, ответ decision gate и что в итоге попало в промпт. Settings › Debug Tools показывает последние пятьдесят ходов; также доступно в logs/recall_debug.jsonl. @dekana
- Поиск в настройках переходит к нужной настройке — Результат поиска теперь прокручивает к этой настройке и ненадолго подсвечивает её, а не просто открывает её раздел. @zevck
- Более широкие полосы прокрутки в VR — Полосы прокрутки дашборда в Skyrim VR теперь в два раза шире, а маркер изменения размера списка Characters больше не перекрывает полосу прокрутки. @zevck
Прочее
- Улучшенная поддержка локальных моделей — Внутренние улучшения, призванные повысить производительность локальных моделей. Используйте вместе с https://discord.com/channels/1287232260617015336/1562807176844812288
- SkyrimNet.pdb больше нет — Размер загружаемого файла стал заметно меньше. Логи крашей теперь показывают смещения модулей вместо имён функций SkyrimNet и номеров строк. @Min
Исправления багов: диалоги, речь и стабильность
- NPC описывали сцену такой, какой она была, а не какая она сейчас — Кэши декораторов и переменных просачивались между рендерами, из-за чего ответ мог показывать устаревшую осведомлённость, например, о бое, который уже закончился. @Min
- Правила Universal Translator по имени NPC не применялись к переименованным NPC — Правила теперь выбирают NPC по ActorBase, а не по имени в промпте, так что переименования и переводы из других модов больше не ломают их. @dekana @SirJefferE
- AI Generate писал биографии модовых спутников без учёта их собственных диалогов — Общие реплики больше не вытесняют собственные диалоги NPC, так что модовые спутники сохраняют свою написанную историю. @dekana
- Песни бардов обрывали NPC на полуслове — Начало песни барда больше не останавливает говорящих NPC и не укорачивает их реплики в истории диалога. @Min SirJefferE
- TTS замолкал при превышении лимита запросов — ElevenLabs и Inworld теперь ждут запрошенные несколько секунд и повторяют попытку один раз. @Min
- Исправления TTS — Файлы кастомных голосов теперь находятся для имён NPC не на английских буквах; клон Inworld, не успевший завершиться по таймауту, больше не создаётся дважды; реплика только с аудио-тегами проигрывается как субтитр; настройки тегов Higgs и OpenAI-совместимых движков учитывают переопределения по конкретному NPC. @Min
- Лимит клонов ElevenLabs после массового клонирования — При заданном Clone Cache Max Voices голоса, клонированные массово, теперь учитываются в этом лимите в игре. @Min
- Загрузка моделей вызывала краш игры при установленном ReShade — Одновременная загрузка нескольких моделей, например, восьми файлов Pocket TTS, больше не вызывает краш с ReShade 6.5.1. @Min
- «Configuration 'Auth' not found» при запуске — Эта безобидная строка в логе больше не появляется при каждом запуске. @Min
Исправления багов: дашборд и хоткеи
- Хоткеи Numpad — Клавиши Numpad теперь привязываются и работают как хоткеи, включая сочетание для открытия дашборда, заданное через MCM. @zevck
- Клавиша дашборда и Escape срабатывали из других окон — Когда Skyrim (не VR) находится в фоне, клавиши дашборда, Escape и выбора варианта диалога теперь ничего не делают; отпускание push-to-talk всё так же останавливает запись. @Severause
- Проблемы масштабирования дашборда — Контент теперь помещается при более высоких масштабах интерфейса, а подсказки, меню и зоны для перетаскивания файлов остаются на месте при изменении масштаба. @zevck
- Отсутствующие внутриигровые подсказки и иконки — Подсказки и иконки теперь корректно отображаются в игре. @zevck
- Desktop browser UI не загружался под MO2 при наличии двух модов, поставляющих его ресурсы — Больше нет 403 Forbidden; отсутствующий файл теперь возвращает 404 вместо 500. @Severause
- Автодополнение по Tab для /playsong не показывало названия песен — Если чат открывался до завершения загрузки, названия терялись; теперь они дожидаются загрузки страницы. @Severause
- Неверные чекбоксы Mod Integration — Интеграции плагина с модами, включая те, для не установленных модов, теперь остаются отмеченными при повторном открытии формы редактирования. @zevck
- Кнопки в заголовке страницы плагина — Endorse и Install теперь остаются на месте на каждой странице плагина, а Installed Plugins и My Plugins остаются в верхней панели при просмотре плагина. @zevck