플러그인
내가 만든 JavaScript가 모든 메시지 곁에서 안전하게 동작합니다.
플러그인은 메시지를 보내거나 받을 때마다 실행되는, 직접 작성한 JavaScript입니다. 문장을 고치거나 나만의 카운터를 두거나 프롬프트에 메모를 넣을 때 씁니다.
플러그인은 전역으로 적용됩니다. 켜 두면 모든 대화에서 실행됩니다. 채팅 메뉴의 플러그인에서 관리하며, 코드를 붙여넣거나 .js 파일을 가져올 수 있습니다.
다음 네 시점 중 하나에 핸들러를 등록하세요.
input request output display
핸들러는 텍스트를 받아 바꾼 내용을 반환합니다. 아무것도 반환하지 않으면 텍스트는 그대로입니다.
uno.registerHandler("output", (text) => {
return text.replace(/\bcolour\b/g, "color");
});핸들러는 순서대로 실행되며 답변을 막지 않습니다. 오류가 나거나 5초를 넘기면 건너뛰고 원래 텍스트가 사용됩니다.
핸들러 안에서 uno 객체가 대화를 읽고 씁니다. 모든 호출은 프라미스를 반환합니다.
const name = await uno.getName();
const last = await uno.getUserLastMessage();
await uno.setChatVar("mood", "curious");
const mood = await uno.getChatVar("mood");전체 기능은 채팅 메시지, 캐릭터와 페르소나 항목, 채팅 변수, 로어북 항목, 매크로 확장, 토큰 계산, 속도 제한이 있는 https 요청을 포함합니다.
JanitorAI용으로 작성된 스크립트는 그대로 동작합니다. 같은 context 객체를 받고, character.personality와 character.scenario에 남긴 내용이 그 턴의 프롬프트가 됩니다.
if (context.chat.last_message.toLowerCase().indexOf("storm") !== -1) {
context.character.scenario += "\nA storm is rolling in.";
}그쪽 규칙도 그대로입니다. 상태는 턴마다 초기화되므로, 남기고 싶은 내용은 매번 시나리오에 다시 써 주세요.
플러그인은 격리된 프레임에서 실행되며 대화, 파일, 쿠키, 로그인에 접근할 수 없습니다. 페이지를 읽거나 직접 네트워크 요청을 보낼 수도 없습니다.
플러그인이 닿는 모든 것은 위 API를 거치므로 핸들러에 주어진 것만 볼 수 있습니다. 그래도 믿을 수 있는 코드만 설치하세요. 플러그인은 보내는 내용과 읽는 내용을 바꿀 수 있습니다.