• UnoRouterUNOROUTER
文档
  • 聊天指南
入门
  • 入门
角色与世界
  • 角色
  • 人设
  • 世界书
  • 卡
提示词
  • 预设
  • 提示词模板
  • 群聊
脚本
  • 宏(CBS)
  • 正则脚本
  • 触发器与 Lua
  • 插件
上下文与媒体
  • 记忆与上下文
  • 图像
  • 自定义提供商
你的数据
  • 你的数据
  • 备份与恢复
导航
  • 模型
  • 排行榜
  • 检测器
  • 价格
  • 对话
  • 状态

搜索文档...

开始输入以搜索文档

平台集成聊天
聊天指南

插件

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

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

插件是全局的:启用后会在所有对话里运行。在聊天菜单的「插件」中管理,可以粘贴代码或导入 .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 写的脚本可以直接运行。它们拿到同样的 context 对象,留在 character.personality 和 character.scenario 里的内容会成为该轮的提示词。

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

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

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

插件能接触到的一切都要经过上面的 API,因此它只看得到处理器收到的内容。即便如此,也只安装你信任的代码:插件可以改写你发送和读到的文字。

触发器与 Lua记忆与上下文

本页目录

插件是什么
钩子
uno API
JanitorAI 脚本
插件做不到的事