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"
}
]
}
基本使用流程¶
- 选择/创建角色
- 配置 AI 后端连接
- 设置提示词模板(选择预设或自定义)
- 开始对话
- 使用 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: 角色总是"出戏"怎么办?¶
- 在角色描述中增加更多具体行为示例
- 添加 "jailbreak" 提示词强化角色一致性
- 使用 World Info 在关键场景注入补充信息
- 降低 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