搜索文档...

开始输入以搜索文档

聊天指南

插件

你自己的 JavaScript,在每条消息前后运行。

插件是在消息发出或返回时运行的 JavaScript。可以用它改写文本、维护计数器,或往提示词里注入备注。

插件是全局的:启用之后会在每段对话中运行。在聊天菜单的 Plugins 中管理它们。可以粘贴代码或导入 .js 文件。

为以下四个时机之一注册处理器:

input request output display

处理器接收文本并返回替换后的内容。不返回任何值则保持原样。

text
uno.registerHandler("output", (text) => {
  return text.replace(/\bcolour\b/g, "color");
});

处理函数按顺序运行,且不会阻塞回复。抛出异常或超过五秒的会被跳过,原始文本照常通过。

在处理器内部,uno 对象负责读写对话。每次调用都返回一个 promise。

text
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 中的内容,就是那一轮的提示词。

text
if (context.chat.last_message.toLowerCase().indexOf("storm") !== -1) {
  context.character.scenario += "\nA storm is rolling in.";
}

它们的规则同样适用:状态每轮都会重置,所以想保留的内容每次都要重新写回场景。

插件运行在隔离的框架中,无法访问你的对话、文件、Cookie 或登录状态,也读不到页面、发不出自己的网络请求。

插件能接触到的一切都要经过上面的 API。即便如此,也只安装你信任的代码:插件可以改写并读取你发送和接收的内容。