跳转至

SillyTavern 角色 AI

为什么要学 SillyTavern

SillyTavern 是一个功能强大的前端界面,用于与各种 AI 语言模型进行角色扮演和创意对话。它支持对接多种后端(OpenAI、Ollama、KoboldAI、text-generation-webui 等),提供了丰富的角色管理、世界观设定、记忆系统和扩展插件。对于 AI 创意写作、角色对话、互动叙事、游戏 NPC 设计、以及对话系统原型开发来说,SillyTavern 是最成熟的开源方案。


核心概念

概念白话解释用途
Character Card角色卡片(含人设、对话示例)定义 AI 扮演的角色
World Info (Lorebook)世界观知识库触发特定关键词时注入背景知识
Persona用户人设定义"你"在对话中的身份
Prompt Template提示词模板控制发送给模型的格式
Extensions扩展插件TTS、图片生成、翻译等
Group Chat群聊多个角色同时参与对话
Memory (Summary)记忆/摘要长对话时自动压缩早期内容

安装配置

前置要求

  • Node.js 18+
  • Git

安装步骤

# 克隆仓库
git clone https://github.com/SillyTavern/SillyTavern.git
cd SillyTavern

# 安装依赖
npm install

# 启动(Linux/macOS)
bash start.sh

# 启动(Windows)
# 双击 start.bat 或
node server.js

# 默认访问 http://localhost:8000

Docker 部署

docker run -d \
  --name sillytavern \
  -p 8000:8000 \
  -v $PWD/st-data:/home/node/app/data \
  ghcr.io/sillytavern/sillytavern:latest

连接后端

在 SillyTavern 界面中配置 API:

Ollama: - API Type: Text Completion / Chat Completion - Server URL: http://localhost:11434

OpenAI 兼容: - API Type: Chat Completion - Custom Endpoint: http://localhost:8080/v1 - API Key: 按需填写

text-generation-webui: - API Type: Text Completion - Server URL: http://localhost:5000


快速上手

创建角色卡片

{
  "name": "Alice",
  "description": "Alice 是一名 28 岁的软件工程师,性格直率但内心温柔。她喜欢喝咖啡、写代码、养猫。说话简洁,偶尔会用技术术语做比喻。",
  "personality": "直率、聪明、有点毒舌但善良",
  "scenario": "你和 Alice 在一家咖啡馆偶遇,她正在笔记本上调试代码。",
  "first_mes": "*Alice 抬起头,推了推眼镜* 嗯?你也来这里远程办公?这个位子的 WiFi 信号最好,别想跟我抢。*她嘴角微微上扬*",
  "mes_example": "<START>\n{{user}}: 你在写什么?\n{{char}}: *噼里啪啦敲着键盘* 一个该死的内存泄漏。这代码像意大利面条一样——谁写的我就不说了,反正是三个月前的我。"
}

设置 World Info

{
  "entries": [
    {
      "keys": ["咖啡馆", "cafe"],
      "content": "这是「字节咖啡」,一家程序员主题咖啡馆。墙上挂着各种编程语言的 logo,菜单用 JSON 格式展示。常客大多是附近科技公司的员工。",
      "position": "before_char"
    },
    {
      "keys": ["Alice 的猫", "咪咪"],
      "content": "Alice 养了一只橘猫叫咪咪,经常在她的键盘上走来走去。Alice 手机壁纸就是咪咪。",
      "position": "after_char"
    }
  ]
}

基本使用流程

  1. 选择/创建角色
  2. 配置 AI 后端连接
  3. 设置提示词模板(选择预设或自定义)
  4. 开始对话
  5. 使用 swipe(滑动)功能重新生成不满意的回复

进阶用法

自定义提示词模板

[System Prompt]
Write {{char}}'s next reply in a collaborative fiction between {{char}} and {{user}}.
Be proactive, creative, and drive the plot and conversation forward.
Write at least 2 paragraphs. Use markdown for emphasis.

{{char}}'s Persona:
{{description}}

{{persona}}

{{#if world_info}}
World Info:
{{world_info}}
{{/if}}

{{#if memory}}
Summary of previous events:
{{memory}}
{{/if}}

[Chat History]
{{messages}}

群聊配置

{
  "group_name": "办公室日常",
  "members": ["Alice", "Bob", "Charlie"],
  "activation_strategy": "natural_order",
  "allow_self_responses": false,
  "generation_mode": "swap"
}

扩展配置

# 安装扩展服务器
git clone https://github.com/SillyTavern/SillyTavern-Extras.git
cd SillyTavern-Extras
pip install -r requirements.txt

# 启动扩展(含 TTS、图片描述等)
python server.py --enable-modules=tts,caption,summarize

记忆系统调优

# 在设置中配置 Summary
summary_enabled: true
summary_frequency: 10          # 每 10 条消息摘要一次
summary_prompt: "Summarize the key events and emotional changes in this conversation segment."
summary_max_tokens: 500
inject_position: "after_system"

正则替换(Regex Scripts)

{
  "scripts": [
    {
      "name": "动作格式化",
      "find": "\\*([^*]+)\\*",
      "replace": "<em>$1</em>",
      "scope": "output"
    },
    {
      "name": "移除 OOC",
      "find": "\\(OOC:.*?\\)",
      "replace": "",
      "scope": "output"
    }
  ]
}

数据备份与迁移

# 备份所有数据
tar -czf st-backup-$(date +%Y%m%d).tar.gz \
  data/default-user/characters/ \
  data/default-user/chats/ \
  data/default-user/worlds/ \
  data/default-user/settings.json

# 角色卡片导出为 PNG(内嵌 JSON)
# 在界面中:角色管理 → Export → PNG

常见问题

Q: 角色总是"出戏"怎么办?

  1. 在角色描述中增加更多具体行为示例
  2. 添加 "jailbreak" 提示词强化角色一致性
  3. 使用 World Info 在关键场景注入补充信息
  4. 降低 temperature(0.6-0.8)减少随机性

Q: 对话太长后模型开始遗忘?

  • 启用 Summary 记忆系统
  • 调低 Context Size 配合摘要功能
  • 使用 World Info 的 constant 条目保留关键信息

Q: 如何导入别人分享的角色卡?

  • 支持 PNG 格式(内嵌 JSON 数据)
  • 支持 JSON 文件直接导入
  • 从 characterhub.org 等网站下载

Q: 多人协作使用怎么配置?

设置用户认证:

# config.yaml
whitelist:
  - "192.168.1.0/24"
basicAuth:
  enabled: true
  users:
    - username: user1
      password: pass1


参考资源

  • GitHub:https://github.com/SillyTavern/SillyTavern
  • 文档 Wiki:https://docs.sillytavern.app/
  • 角色资源:https://characterhub.org/
  • Discord 社区:https://discord.gg/sillytavern
  • Extras 扩展:https://github.com/SillyTavern/SillyTavern-Extras