Plugins
Seu próprio JavaScript rodando em volta de cada mensagem.
Um plugin é JavaScript que roda quando uma mensagem sai ou volta. Use para reescrever texto, manter contadores ou injetar notas no prompt.
Plugins são globais: uma vez ativado, um plugin roda em todos os chats. Gerencie em Plugins no menu do chat. Cole o código ou importe um arquivo .js.
Registre um manipulador para um destes quatro momentos:
input request output display
O manipulador recebe o texto e devolve a substituição. Não devolver nada deixa o texto intacto.
uno.registerHandler("output", (text) => {
return text.replace(/\bcolour\b/g, "color");
});Os handlers rodam em ordem e nunca bloqueiam uma resposta. Um que gere erro ou passe de cinco segundos é ignorado, e o texto original segue adiante.
Dentro de um manipulador, o objeto uno lê e escreve a conversa. Cada chamada devolve uma promise.
const name = await uno.getName();
const last = await uno.getUserLastMessage();
await uno.setChatVar("mood", "curious");
const mood = await uno.getChatVar("mood");O conjunto completo cobre mensagens do chat, campos de personagem e persona, variáveis da conversa, entradas do lorebook, expansão de macros, contagem de tokens e uma requisição https com limite de frequência.
Scripts escritos para o JanitorAI rodam como estão, com o mesmo objeto de contexto. O que deixarem em character.personality e character.scenario vira o prompt daquele turno.
if (context.chat.last_message.toLowerCase().indexOf("storm") !== -1) {
context.character.scenario += "\nA storm is rolling in.";
}As regras deles também valem: o estado é reiniciado a cada turno, então reescreva no cenário tudo o que quiser manter.
Plugins rodam em um quadro isolado, sem acesso às suas conversas, arquivos, cookies ou login. Não conseguem ler a página nem fazer as próprias requisições de rede.
Tudo o que um plugin alcança passa pela API acima. Ainda assim, instale apenas código em que você confia: um plugin pode reescrever o que você envia e lê.