Complementos
Tu propio JavaScript, ejecutándose con seguridad en cada mensaje.
Un complemento es JavaScript que tú escribes y que se ejecuta cada vez que sale o llega un mensaje. Sirve para reescribir texto, llevar tus propios contadores o insertar notas en el prompt.
Los complementos son globales: una vez activados, se ejecutan en todos los chats. Se gestionan en Complementos, dentro del menú del chat, donde puedes pegar código o importar un archivo .js.
Registra un manejador para uno de estos cuatro momentos:
input request output display
El manejador recibe el texto y devuelve el reemplazo. Si no devuelve nada, el texto queda intacto.
uno.registerHandler("output", (text) => {
return text.replace(/\bcolour\b/g, "color");
});Los manejadores se ejecutan en orden y nunca bloquean una respuesta: si uno falla o tarda más de cinco segundos, se omite y pasa el texto original.
Dentro de un manejador, el objeto uno lee y escribe la conversación. Cada llamada devuelve una promesa.
const name = await uno.getName();
const last = await uno.getUserLastMessage();
await uno.setChatVar("mood", "curious");
const mood = await uno.getChatVar("mood");El conjunto completo abarca mensajes del chat, campos de personaje y persona, variables del chat, entradas del lorebook, expansión de macros, recuento de tokens y una petición https con límite de frecuencia.
Los scripts escritos para JanitorAI funcionan tal cual. Reciben el mismo objeto context, y lo que dejen en character.personality y character.scenario se convierte en el prompt de ese turno.
if (context.chat.last_message.toLowerCase().indexOf("storm") !== -1) {
context.character.scenario += "\nA storm is rolling in.";
}También se aplican sus reglas: el estado se reinicia en cada turno, así que vuelve a escribir en el escenario todo lo que quieras conservar.
Los complementos se ejecutan en un marco aislado, sin acceso a tus chats, archivos, cookies ni sesión. No pueden leer la página ni hacer sus propias peticiones de red.
Todo lo que alcanza un complemento pasa por la API anterior, así que solo ve lo que recibe un manejador. Aun así, instala solo código de confianza: un complemento puede reescribir lo que envías y lo que lees.