Скрипт позволяет играть в ролевые игры, используя даже небольшие модели, вроде Qwen 3.5 9B Qwen 3.5 35B. Для кого этот проект: Для тех, кому нужно честное мышление от нейронки с полным обоснованием тех или иных решений.
- Многоэтапная обработка — программа делит процесс обработки запроса на несколько этапов. На каждом этапе модели даётся одна задача и минимальный
system prompt. - Гибкое управление контентом — внутри интерфейса можно создавать игровые объекты, редактировать промты и менять их очередность загрузки.
- Не навязывает решения — скрипт не принимает решений за модель, он только разбивает задачу и передаёт данные между шагами.
- Общение через Tools — модель взаимодействует с программой через механизм Tools.
- Элементы случайности — добавлены случайные события, чтобы генерация была интереснее.
- Множество NPC — программа позволяет модели обрабатывать сразу много персонажей.
- Непредвзятость — реакция каждого персонажа обрабатывается отдельно: модель сначала определяет, что персонаж «планирует» сделать, затем сводит их решения на подготовленную сцену и выводит итог.
- Полная обратная связь:
- Интерфейс показывает, какие промты отправляются в модель.
- Отображается весь процесс мышления модели (включая обращения к скрипту).
- В папке
logsхранится до 30 логов с каждым решением модели. - Возможность перегенерации последнего сообщения.
- Долговременная ассоциативная память. Модель сохраняет информацию о каждом объекте, и получает ее только если объект есть на сцене.
- ** Полный контроль над всем процессом принятия решений**: каждый шаг размышлений можно отключить и отредактировать
- Установите Python и пропишите его в
PATH. - Установите LM Studio.
- Скачайте подходящую модель (см. требования ниже).
- Запустите
install_deps.bat— установятся зависимости Python. - Запустите
run_rpg_assistant.bat. - В настройках выберите модель из списка.
- Нажмите «Начать игру».
- Поддержка Tools
- Поддержка Thinking
- Желательно Instruct
- Желательно Uncensored
- Подойдёт квантизация
Q4_K_M,Q6позволит чуть больше контекста.
- Qwen 3.5 9B — даёт хороший результат.
- Личный пример автора:
qwen3.5-9b-claude-4.6-os-auto-variable-heretic-uncensored-thinking-max-neocode-imatrix@q6_k
- Если в
Thinkingстало появляться мало деталей — вы перегрузили модель информацией. - Если модель не может несколько раз вызывать функции — вы перегрузили модель информацией.
- Первым делом отключите короткую память
- Нужно уменьшить длину промтов.
- Попробуйте перегенерировать сообщение
- Уменьшите количество сообщений в истории до 2-х и отключмие краткую память
- Попробуйте временно отключить историю и другие не системные промты
- Уменьшите температуру до 0.3-0.5
Документ описывает пошаговую логику работы скрипта, от получения сообщения игрока до финального описания сцены и обновления ассоциативной памяти.
- Игрок отправляет сообщение.
Входные данные для модели:
- Назначенные промты с правой панели (в заданном порядке, без системного промта).
- Сообщение игрока — воспринимается как запланированное действие.
- Системный промт стадии (последний в списке, после сообщения игрока).
- Список всех доступных объектов (id, имена) от скрипта.
- Информация из ассоциативной памяти об этих объектах.
Действия модели:
- Объединяет полученные данные в обновлённый список объектов.
- На основе информации определяет, какую сцену разыграть.
- Решает, какие промты объектов нужно запросить у скрипта.
- Запрашивает промты через
Tools. - Получив всё, обдумывает сцену.
- Отправляет итоговый Список объектов через
Tools.
Выходные данные:
- Обновлённый список объектов
- Список имён всех объектов
Обработка ошибок:
- При ошибке — попытаться распарсить сообщение.
- Если за отведённые попытки решение не принято и скрипт возвращался со стадии 2 дважды — принять последний список объектов и перейти на стадию 3.
Входные данные:
- Назначенные промты с правой панели.
- Список объектов.
Действия модели:
- Проверить, все ли персонажи уместны (согласно системному промту).
Команды:
- Если всё в порядке →
Toolsс командой одобрения. - Если нет →
Toolsс командой неодобрения.
Выход:
- Список объектов (передаётся дальше).
Обработка ошибок:
- При ошибке — попытаться распарсить сообщение.
- Если за отведённые попытки (макс. 3) решение не принято — взять последний список персонажей и перейти на стадию 3.
Переходы:
- Одобрение → стадия 3.
- Неодобрение → повтор стадии 2 (до 3 попыток).
Входные данные:
- Назначенные промты с правой панели.
- Сообщение игрока.
Действия модели:
- Проверить, не врёт ли игрок (согласно системному промту).
- Если врёт — изменить сообщение на соответствующее реальности (например, «открыл дверь» → «попытался открыть дверь»).
Выход:
- Список объектов
- Список имён всех объектов
- Отредактированное сообщение игрока (отправляется через
Tools)
Обработка ошибок:
- При ошибке — попытаться распарсить.
- Если за отведённые попытки решение не принято — взять последний сценарий и перейти на стадию 4.
Переход:
- После отправки → стадия 4.
Входные данные:
- Назначенные промты с правой панели.
- Сценарий.
- Сообщение игрока.
- Набор сгенерированных чисел d20.
Действия модели:
- Описывает, что игрок сделал в текущих условиях.
- Берёт число d20 по порядку и определяет успешность (по правилам бросков, если есть; иначе симулирует).
- Описывает результат.
Выход:
- Список объектов
- Список имён всех объектов
- Результат действий игрока (через
Tools)
Обработка ошибок:
- При ошибке — попытка распарсить.
- Если не удалось — взять последний сценарий и перейти на стадию 5.
Переход: → стадия 5.
Входные данные:
- Назначенные промты с правой панели.
- Список имён всех объектов.
- Набор сгенерированных чисел d100.
Действия модели:
- Определяет вероятность события (по системному промту: до какого числа бросок успешен).
- Если нет правил — симулирует бросок.
- Решает, произойдёт ли событие.
Выход:
- Список объектов
- Список имён всех объектов
- Результат действий игрока
- Событие (опционально, через
Tools)
Обработка ошибок:
- При ошибке — попытка распарсить.
- Если не удалось — событие не происходит, переход на стадию 7.
Переходы:
- Если событие есть → стадия 5.1
- Если нет → стадия 7
Входные данные:
- Назначенные промты с правой панели.
- Событие.
- Список объектов.
- Информация из ассоциативной памяти.
Действия модели:
- Объединяет информацию в обновлённый список объектов.
- Проверяет, достаточно ли объектов для описания события.
- Если нет — выбирает нужные из списка имён и запрашивает их описания через
Tools.
Выход:
- Список объектов + новые объекты (опционально)
- Список имён всех объектов
- Результат действий игрока
- Событие
Обработка ошибок:
- При ошибке — попытка распарсить.
- Если не удалось — событие не происходит, переход на стадию 7.
Переход: событие проходит проверку уместности (как в стадии 2), затем → стадия 5.2.
Входные данные:
- Назначенные промты с правой панели.
- Событие.
- d20 (насколько хорошее или плохое событие).
Действия модели:
- Бросает d20.
- Описывает событие соответственно.
Выход:
- Список объектов + новые объекты
- Список имён всех объектов
- Результат действий игрока
- Готовое событие (через
Tools)
Обработка ошибок:
- При ошибке — попытка распарсить.
- Если не удалось — событие не происходит, переход на стадию 7.
Переход: → стадия 7.
Примечание: эта стадия не используется. Планируется удаление, так как описание персонажей будет выполняться отдельно.
Скрипт отправляет персонажей из Списка объектов + новые объекты по одному.
Входные данные для каждого вызова:
- Назначенные промты с правой панели.
- Список объектов + новые объекты.
- Результат действий игрока.
- Готовое событие (опционально).
- Один персонаж.
Действия модели:
- Описывает, что персонаж планирует делать в текущей ситуации.
Выход:
- Словарь планов персонажей (пополняется)
- Список объектов + новые объекты
- Список имён всех объектов
- Результат действий игрока
- Готовое событие
Обработка ошибок:
- При ошибке — попытка распарсить.
- Если не удалось — персонаж ничего не планирует.
Переход: после обработки всех персонажей → стадия 8.
Входные данные:
- Назначенные промты с правой панели.
- Словарь планов персонажей.
- Список объектов + новые объекты.
- Результат действий игрока.
- Готовое событие (опционально).
Действия модели:
- На основе планов персонажей и всех данных создаёт итоговую историю.
Выход (через Tools):
- Словарь планов персонажей
- Список объектов + новые объекты
- Список имён всех объектов
- Результат действий игрока
- Готовое событие
- Итоговая история
Переход: → стадия 9 (история показывается игроку).
Входные данные:
- Итоговая история.
Действия модели:
- Делает краткую выжимку произошедшего.
Выход (через Tools):
- Все данные из стадии 8 + краткая выжимка.
Входные данные:
- Итоговая история.
- Список объектов + новые объекты.
Действия модели:
- Определяет изменения и важные события, произошедшие с объектами.
- Создаёт краткую выжимку для памяти.
Выход (через Tools):
- Все данные из стадии 9 + ассоциативная память об объектах.
Сохранение: Скрипт сохраняет изменения в файле сессии. Количество хранимых записей настраивается в настройках (старые удаляются).
- Инструменты (Tools): используются для передачи данных между моделью и скриптом на всех стадиях.
- Повторные попытки: при ошибках модель пытается распарсить сообщение; если после заданного числа попыток решение не принято — используется последнее допустимое значение или выполняется переход по умолчанию.
- Системные промты: задаются отдельно для каждой стадии и всегда добавляются последними в список промтов.
- Папка
logs— хранится до 30 последних логов, описывающих каждое принятое моделью решение.
- Работоспособность проверена на QWEN3.5 35b с квантованием кеша 4Q на RTX3060 12VRAM 32RAM.
- Работа стабильная.
- Работоспособность проверена на Qwen3.5-9B-Claude-4.6-OS-Auto-Variable-HERETIC-UNCENSORED-THINKING-MAX-NEOCODE-Imatrix-GGUF.
- Частые ошибки работы Tools. Рекомендуется не отправлять пустые сообщения, настроить модель на минимальный входящий и выходящий контекст, не перегружать промтами. Результат выдаст все-равно. Вы можете его перегенерировать.