Risuai:把 LLM 角色扮演做成可自托管的桌面与网页应用
Make your own story. User-friendly software for LLM roleplaying
秒懂
- 它是什么?
- Risuai 是一个用 TypeScript 写的跨平台 LLM 聊天前端,把多模型接入、正则改写、Lorebook、长期记忆和插件都塞进同一个界面。它适合想要自己掌控提示词与数据的人,但仓库文档偏薄,上手前需要先确认几件事。
- 适合谁用?
- Risuai 适合愿意自己配 API key、自己维护提示词模板、并且需要正则脚本改写输出或插件扩展的工程师型用户,也适合想把角色扮演界面部署到内网或自己服务器上的人。如果你只想要一个开箱即用、几乎不需要配置的聊天客户端,或者你的团队无法接受 GPL-3.0 的传染性条款,这个项目就不是合适的选择。
- 能商用吗?
- 可以,但有条件。GPL-3.0 是 copyleft 许可证:如果你分发包含它的软件,就必须以同一许可证公开该软件的源代码。只在内部运行、不对外分发,则不会触发这项义务。
- 还在维护吗?
- 在维护。仓库最近一次提交在 5 天前。
- 用什么语言写的?
- 主要是 TypeScript(依据 GitHub 的语言统计)。
以上回答依据项目的 GitHub 数据(最近同步于 2026年9月15日)和我们的分析,不构成法律意见。
开源项目深度解析
Risuai 解决的是提示词失控问题
直接调用 OpenAI 或 Claude 的接口做角色扮演,很快会撞到同一堵墙:角色设定、世界书、历史对话、输出格式全部挤在一个字符串里,改一处就影响全局。Risuai 把这一层拆成了可编辑的对象。README 里列出的能力包括改变提示词顺序、在提示词中插入扮演内容、使用条件与变量。这意味着提示词不是一段写死的文本,而是有顺序、有分支的结构。
目标用户不是普通聊天用户,而是那些会打开设置面板逐项调整的人。README 明确写了 Regex Script 可以用正则修改模型输出,用来做自定义 GUI。这句话背后的意思是:项目预期你会写正则、会调试匹配规则。如果你不打算碰这些,Risuai 的大量功能对你就是闲置的。
从 Svelte 前端到 Tauri 外壳的技术栈
仓库的徽章给出了技术栈:Svelte 5、TypeScript 5.9、Tauri 2.5、Vite 8、Tailwind CSS 4。这个组合说明它同时是一个网页应用和一个桌面应用,同一套前端代码被 Tauri 打包成原生外壳。README 描述它是 cross platform AI chatting software / web application,两种形态并存。
Tauri 而不是 Electron,意味着桌面端的体积和内存占用理论上更接近系统 WebView 而不是打包一个 Chromium。这是选型上的取舍,代价是不同平台 WebView 的行为差异需要自己处理。仓库没有说明具体支持哪些桌面平台,这一点只能去 releases 页面看产物。
多 API 支持不是抽象概念,README 点名了 OpenAI、Claude、Gemini、DeepInfra、Ooba、OpenRouter,并说还有更多。Ooba 通常指本地运行的 text-generation-webui,所以这个列表同时覆盖云端和本地推理。
长期记忆是两套独立机制
README 把长期记忆拆成两个名字:HypaMemoryV2/V3 做记忆压缩,SupaMemory 做上下文管理。压缩和上下文管理是不同的问题。前者是把长对话摘要成更短的表示,后者是决定每一轮请求里到底塞进哪些内容。
这种拆分有实际意义:上下文窗口是硬约束,压缩率再高也救不回塞错的内容。但 README 只给了名字,没有给出压缩触发阈值、摘要保留策略或者 SupaMemory 的检索方式。wiki 链接被标注为 Work in Progress。想搞清楚这两套机制的实际行为,只能读源码或者自己跑起来观察。
Lorebook(README 里也叫 world infos 或 memory book)是另一条路径,靠关键词触发把设定注入提示词。它和记忆压缩解决的不是同一件事:Lorebook 管的是世界设定,记忆系统管的是对话历史。
三种安装路径与各自的适用场景
README 给出三条路。第一条是官网 risuai.net,被标注为 Recommended。第二条是 GitHub Releases 下载。第三条是 Docker,README 说这种方式 particularly useful for web hosting。
Docker 的命令是一行:curl -L https://raw.githubusercontent.com/kwaroran/Risuai/refs/heads/main/docker-compose.yml | docker compose -f - up -d,启动后访问 http://localhost:6001。这里有个值得注意的细节:这个命令直接从 main 分支拉取 docker-compose.yml,而不是从某个 release tag。对于需要可复现部署的场景,你可能想先把文件下载下来固定住。
从源码开发需要 Node.js 20.19+ 或 22.12+,包管理器用 pnpm。这两个版本号是硬门槛,Node 20.19 之前的版本不在支持范围内。
正则脚本和插件是两套不同的扩展方式
README 把 Regex Script 和 Plugins 分开列,说明它们走的是不同路径。Regex Script 作用于模型输出,用正则改写文本,README 举的用途是 make a custom GUI and others。这条路不需要写代码,但需要理解正则和输出格式。
Plugins 的定位是 add your features and providers, and simply share。providers 这个词说明插件能扩展模型接入层,不只是界面功能。simply share 暗示插件是独立可分发的产物。但 README 没有给出插件的接口定义、加载方式或者分发渠道,也没有指向插件文档的链接。
如果你打算为 Risuai 写插件,目前能从 README 得到的只有「可以写」这个结论,具体怎么写需要自己从仓库里找。
文档缺口是这个项目最大的使用成本
README 末尾明确写着 wiki 是 Work in Progress。这句话需要认真对待。README 本身的篇幅不长,功能列表用加粗短句堆叠,几乎没有展开任何一项的实现细节。
具体缺什么:HypaMemoryV2/V3 和 SupaMemory 的内部行为没有说明;插件的开发接口没有说明;正则脚本的作用阶段(是改流式输出的每个 chunk 还是改完整回复)没有说明;角色卡和聊天记录的数据格式没有说明;桌面端支持哪些平台没有说明。
这不等于项目质量差,只等于文档还没跟上功能。但对评估者来说,这意味着选型成本从「读文档」变成了「读源码或试用」。如果你的团队没有 TypeScript 阅读能力,评估周期会明显拉长。
和 SillyTavern 的路线差异
同类工具里 SillyTavern 是最常被拿来比较的一个,两者都做多模型接入和角色扮演前端。差异在于技术形态:Risuai 用 Tauri 打包成桌面应用,同时提供 Docker 部署路径,README 直接说 Docker 方式适合 web hosting。SillyTavern 的部署形态以 Node 服务加浏览器访问为主。
这个差异会传导到使用方式上。Risuai 的桌面端是本地应用,Docker 路径则是自托管服务,两种形态共享同一套前端。如果你的场景是多人访问同一个实例,Docker 那条路更直接;如果是单人本地使用,桌面应用不需要维护服务进程。
另一个差异在扩展机制。Risuai 把插件和正则脚本作为两条并列的扩展路径写进 README,正则脚本这一条门槛更低,不写代码也能改输出格式。选择哪一个,取决于你更在意扩展的深度还是上手的成本。
许可证与维护节奏
仓库使用 GPL-3.0。这是强 copyleft 许可证,如果你把 Risuai 修改后分发,或者把它作为服务对外提供,需要先确认自己的义务范围。这里不构成法律意见,涉及商业部署时应当找专业人士确认,尤其是 Docker 自托管对外提供服务的场景。
维护节奏从 release 时间戳可以看出比较密集:v2026.8.250 在 2026-08-25,v2026.8.240 在 2026-08-24,v2026.6.215 在 2026-07-29。版本号是日期式命名,2026.8.250 对应 2026 年 8 月。两次发布之间只隔一天,说明小版本迭代频繁。
频繁发版对自托管用户是双刃剑:修复来得快,但每次升级都可能影响你依赖的正则脚本或插件。README 没有给出升级说明或破坏性变更清单,所以自托管场景下建议固定版本,升级前先在测试实例上验证你写的 Regex Script 是否还能正常匹配。
编辑结论
Risuai 适合愿意自己配 API key、自己维护提示词模板、并且需要正则脚本改写输出或插件扩展的工程师型用户,也适合想把角色扮演界面部署到内网或自己服务器上的人。如果你只想要一个开箱即用、几乎不需要配置的聊天客户端,或者你的团队无法接受 GPL-3.0 的传染性条款,这个项目就不是合适的选择。上手前建议先确认三件事:你要用的模型提供商是否在 README 列出的 API 支持范围内,你的 Node.js 版本是否满足 20.19+ 或 22.12+,以及你的角色卡、Lorebook 和聊天记录能否从现有工具导出并导入。最后一点尤其关键,因为 README 没有给出数据迁移格式的说明,实际能否搬迁只能自己验证。
社区笔记