SillyTavern:LLM的虚拟角色界面 本地
SillyTavern 是一个用于通过 LLM 进行角色扮演和交互式写作的网页界面。它本身不运行模型,而是连接到 KoboldCpp 或 Ollama 等本地后端,并在其上补充普通聊天所缺少的各种功能——角色卡、持久化的世界记忆、精细的提示词管理和扩展。本指南涵盖安装、连接您的后端、创建角色,以及能改善角色演绎效果的设置。
#为什么选择 SillyTavern,而不是常规聊天界面
Open WebUI 或 LM Studio 这样的界面将每次对话视为助手与用户之间的交流。SillyTavern 则从另一种需求出发:在一个能记住自身规则的虚构世界中,扮演一个在数百条消息里始终保持一致的角色。它是本地 LLM 角色扮演社区的标杆工具,并提供普通聊天所没有的机制。
- 角色卡
- 一种标准化格式(带嵌入元数据的 PNG),用于描述角色设定、风格、对话示例和欢迎消息。可导入并以单文件形式共享。
- 世界记忆
- lorebook 仅在出现关键词时向提示注入信息,从而保持世界观的一致性,同时避免上下文过载。
- 提示词控制
- 你可以看到并修改发送给模型的每一部分:系统提示、指令格式、注入顺序。没有任何内容被隐藏。
- 可选后端
- SillyTavern 是一个纯前端。同一角色可在 KoboldCpp、Ollama、llama.cpp 或远程 API 上运行,无需重新编写代码。
#前置条件与后端选择
只需 1 小时,即可在您的电脑上拥有专属的免费 ChatGPT — LM Studio、Ollama、Open WebUI、您的文档,无需云端。
- 在线空间,终身可用
- PDF + 文件
- 30 天内退款
SillyTavern 在 Windows、macOS 和 Linux 上通过 Node.js(18 或更高版本)运行。它的资源占用很低——消耗显存的是后端。两个本地后端几乎可以覆盖所有用途:KoboldCpp 侧重 GGUF 和角色扮演,Ollama 则更通用。
- KoboldCpp
- 一个可执行GGUF模型的二进制文件,通过SillyTavern原生支持的API运行。支持精细内存配置和AMD ROCm。是RP社区的默认选择。
- Ollama
- 守护进程在 http://localhost:11434 上监听。如果您已经将它用于其他用途,这会很方便;SillyTavern 可通过它的兼容端点连接。
- llama.cpp (llama-server)
- 兼容 OpenAI 的 HTTP 服务器,可最大限度地控制模型层的卸载。
- VRAM
- 采用 Q4_K_M 量化时:7B 模型约占 5 GB,14B 模型约占 9 GB,32B 模型约占 19 GB。为了让角色扮演更流畅,如果您的显卡允许,建议至少选择 12B 到 14B 的模型。
#安装 SillyTavern
推荐方法是使用Git克隆:可轻松实现更新(只需执行git pull),且SillyTavern更新频繁。请确保已安装Node.js 18及以上版本和Git。
- 01克隆仓库请获取 release 分支,该分支稳定且经过测试。除非您想以遇到一些 bug 为代价提前体验新功能,否则请避免使用 staging 分支。
- 02运行启动脚本Linux/macOS 上运行 start.sh,Windows 上运行 Start.bat。首次启动时,npm 会自动安装依赖项。
- 03打开界面SillyTavern 在 http://localhost:8000 提供界面。请在浏览器中打开该地址;无需安装桌面应用程序。
- 04稍后更新在目录中执行一次 git pull,然后重新运行脚本。您的角色和对话会单独保存在 data/ 目录下,不会被覆盖。
#连接本地后端
打开 SillyTavern 后,所有操作都在 API 连接标签页中进行(顶部的插头形图标)。基本做法是:先启动后端,再在 SillyTavern 中指定后端地址。
#使用 KoboldCpp
使用 GGUF 模型启动 KoboldCpp;默认情况下,它会在 5001 端口暴露 API。在 SillyTavern 中选择 API 类型为「Text Completion」,后端选择「KoboldCpp」,并填写 URL。点击 Connect:若一切正常,将显示已加载模型的名称。
#使用 Ollama
Ollama 已经作为守护进程在 11434 端口运行。在 SillyTavern 中,选择“Text Completion”,然后选择“Ollama”后端,输入地址,再从自动获取的模型下拉列表中选择模型。
#创建并导入角色卡
角色卡是SillyTavern的核心。它是一个PNG文件,图像用作头像,嵌入的元数据描述角色信息。您可以从零开始创建,也可以导入社区共享的角色卡。
#关键字段
- 描述
- 角色的基础设定:外貌、性格特征、背景经历。这些信息会始终注入上下文,因此描述应信息密度高、内容具体,避免冗长。
- Personality
- 对性格的简要概括。有助于在不重写完整描述的情况下确定语气
- First message
- 用于交代场景的开场消息。它设定了预期的基调、写作风格和格式——模型往往会模仿它的形式。
- Example dialogues
- 通过对话示例向模型展示角色的说话方式。这对固定某种特定的说话风格非常有效。
- Scenario
- 场景上下文与角色描述分离。适用于在多种情境中复用同一角色。
- 01打开角色面板顶部栏中的角色图标可展开列表,点击「+」按钮可创建一张空白卡片。
- 02填写描述信息用信息丰富、表述紧凑的方式描述角色。许多作者采用结构化格式(特征列表),而不是整段文字,模型也能很好地遵循这种格式。
- 03撰写第一条消息请用心打磨这条消息:它是您塑造风格的最有效手段。采用第三人称叙事的开场消息会引导模型沿用这种形式。
- 04导入现有角色卡将一张 PNG 格式的角色卡拖入列表,或将其导入。角色卡以普通图片文件的形式在社区平台上分享。
#持续存在的世界:lorebook
lorebook(或 World Info)解决了长时间角色扮演中的核心问题:如何在不持续注入全部信息的情况下保持世界设定的一致性。其原理是根据关键词有条件地注入信息。
您创建条目,每个条目关联一个或多个关键词。只要其中一个关键词出现在最近的消息中,对应条目就会在生成开始前被注入上下文。其余时间,该条目不占用任何空间。这样,您可以描述数十个地点、次要角色和规则,而不会把提示词空间塞满。
- 输入
- 一段文本(要注入的背景设定)及其触发关键词。例如:关键词“Valmont” → 对 Valmont 城的描述。
- 固定模式 vs 选择性模式
- 一个条目可以始终生效(世界的基本规则),也可以仅由关键词触发(上下文细节)。
- 注入深度
- 您可以选择将条目插入提示词的哪个位置,这会影响模型赋予该条目的权重。
- 绑定到角色或全局适用
- 一个 lorebook 可以搭配特定卡片使用,也可以作为共享世界应用于所有对话中。
#为角色扮演调整生成设置
采样参数决定连贯性与创造性之间的平衡。角色扮演比事实性辅助需要更多变化,但仍要保持连贯。这些设置位于生成参数选项卡中(滑块图标)。
- 温度
- 控制创造力与稳定性之间平衡的滑块。在角色扮演(RP)中,设为约 0.7–0.9 可取得良好平衡。过高(> 1.2)会导致内容不连贯;过低则会让角色重复而平淡。
- Min-P
- 一种现代采样器,以概率最高的 token 为基准,按比例剔除低概率 token。将数值设为 0.05-0.1 可改善输出质量,并允许提高温度而不让输出失控。
- 重复惩罚
- 对重复使用相同 token 施加惩罚。有助于避免循环,但惩罚过强会迫使模型使用生硬、不自然的表达。设置应保持适度。
- Response length
- 每条回复可生成的最大 token 数。设为 200–400 个 token,可让叙事回复内容充实,同时避免没完没了的独白。
- Context size
- 必须与后端加载时设定的上下文大小一致。如果 KoboldCpp 启动时只设置了 8k 上下文,那么在 SillyTavern 中请求 16k 上下文也没有用。
#能够改变使用体验的插件
SillyTavern 支持扩展。有些扩展随软件附带,另一些则通过各自的代码仓库 URL 安装。以下这些扩展能显著改变使用体验。
- Vector Storage(记忆摘要)
- 将历史记录向量化,并重新注入旧消息中的相关段落,使记忆延伸到上下文窗口之外。适合持续很久的角色扮演对话。
- Summarize
- 生成并维护持续更新的对话摘要,再将其注入提示词中。即使对话已进行了数百条消息,角色仍能记住重要事件。
- Text-to-Speech
- 通过本地 TTS 引擎让角色发声。对于通过语音互动来游玩的用户,沉浸感更强。
- 图像生成
- 连接本地图像后端(如Stable Diffusion)以实时从聊天中生成场景和人物图像。
- 表情
- 使用一组角色精灵图,根据消息的语气显示带有相应情绪表情的头像。
#哪些本地模型擅长角色扮演
并非所有大语言模型在角色扮演中的表现都一样。为提供辅助而经过对齐的“instruct”模型往往会脱离角色、说教,或拒绝虚构场景。社区更倾向于使用专门的微调模型,这些模型通常以扎实的基础模型为底座,再针对叙事和角色对话进行训练。
- 实用的模型规模
- 低于 4B 的模型,角色在长时间互动中的一致性会受到影响。2026 年,对于大多数中端显卡,Qwen 3.5 9B(约 6.6 GB,256k 上下文)或 Gemma 4 12B(约 7.6 GB,Apache 2.0)这样的较新基础模型是性能与资源需求之间的平衡点;再高一级,Mistral Small 24B(约 14 GB,法语表现出色)能装入 16 GB 显存,并带来更细腻的叙事。
- 角色扮演(RP)微调模型
- 请寻找明确针对角色扮演或虚构内容训练的模型(通常在 Hugging Face 上标注为「RP」、「storytelling」或「uncensored」)。2026 年表现最佳的微调模型均基于这些新基座模型构建(Qwen 3.5,Mistral Small 24B,Gemma 4),而非 2023 年的老款 Llama 2 或 Mistral 7B;它们更符合卡片格式要求。
- 长上下文
- 优先选择在 16k 及以上 token 的上下文中仍能稳定表现、不会退化的模型:长时间的互动需要这样的能力。请检查模型标称的原生上下文长度。
- GGUF格式
- 对于KoboldCpp,建议使用量化后的GGUF格式。Q4_K_M是推荐的折中方案;若VRAM允许且你追求更高精度,可升级至Q5_K_M或Q8_0。
#常见问题排查
- SillyTavern 无法连接
- 请确认后端服务正常运行且端口正确(KoboldCpp为5001,Ollama为11434)。在浏览器中访问API URL进行测试,确认其返回响应。
- 带有可见标签的回复
- 几乎总是因为指令模板不合适。请在 Advanced Formatting 中,将格式(ChatML、Gemma、Mistral 等)设置为与模型所用格式一致。
- 角色偏离了设定
- 完善角色描述和对话示例,稍微降低温度,并检查您的系统提示词是否与角色卡冲突。
- 重复和循环
- 稍微提高重复惩罚参数,并加入 Min-P。如果问题仍然存在,可能是上下文已满:启用 Summarize,或缩减角色卡的内容。
- 截断的回复
- Response length 设置过低,或后端启动时设置的上下文大小小于 SillyTavern 要求的大小。请将两边的数值设为一致。
#深入了解
SillyTavern 只是一层:最终质量主要取决于您的后端和模型。这些指南可以帮助您夯实基础。
- KoboldCpp:安装与入门
- 本地角色扮演的标杆后端:支持 GGUF,提供内存设置,以及 SillyTavern 原生支持的 API。
- Ollama 是什么,它如何工作
- 如果您更倾向于在端口 11434 上运行单一守护进程以支持所有用途,那么这是一个通用的替代方案。
- 量化KV缓存
- 用于在同一张显卡上支持更长的角色扮演上下文,同时避免显存占用过高。
有反馈、发现了错误,或想补充说明?请告诉我们,让这份指南对每个人都更有帮助。