Плагины
Ваш собственный JavaScript, работающий вокруг каждого сообщения.
Плагин: JavaScript, который выполняется при отправке сообщения или при получении ответа. Используйте его, чтобы переписывать текст, вести счётчики или добавлять заметки в промпт.
Плагины глобальны: после включения плагин работает в каждом чате. Управляйте ими в разделе Плагины в меню чата. Вставьте код или импортируйте файл .js.
Зарегистрируйте обработчик для одного из четырёх моментов:
input request output display
Обработчик получает текст и возвращает замену. Если ничего не вернуть, текст останется прежним.
uno.registerHandler("output", (text) => {
return text.replace(/\bcolour\b/g, "color");
});Обработчики выполняются по порядку и никогда не блокируют ответ. Тот, что выбросил ошибку или превысил пять секунд, пропускается, и проходит исходный текст.
Внутри обработчика объект uno читает и изменяет переписку. Каждый вызов возвращает промис.
const name = await uno.getName();
const last = await uno.getUserLastMessage();
await uno.setChatVar("mood", "curious");
const mood = await uno.getChatVar("mood");Полный набор охватывает сообщения чата, поля персонажа и персоны, переменные чата, записи лорбука, раскрытие макросов, подсчёт токенов и https-запрос с ограничением частоты.
Скрипты, написанные для JanitorAI, работают как есть, с тем же объектом контекста. Что бы они ни оставили в character.personality и character.scenario, это становится промптом данной реплики.
if (context.chat.last_message.toLowerCase().indexOf("storm") !== -1) {
context.character.scenario += "\nA storm is rolling in.";
}Их правила тоже действуют: состояние сбрасывается каждый ход, поэтому всё нужное записывайте в сценарий заново.
Плагины выполняются в изолированном фрейме без доступа к вашим чатам, файлам, cookie и учётной записи. Они не могут читать страницу и отправлять собственные сетевые запросы.
Всё, до чего добирается плагин, проходит через описанный выше API. Всё же ставьте только тот код, которому доверяете: плагин может переписывать то, что вы отправляете и читаете.