角色扮演
Elftia 内置了与 SillyTavern 兼容的角色扮演(RP)系统,让你可以创建和导入角色卡片,构建世界观设定,在沉浸式的角色扮演场景中与 AI 对话。支持 TavernCard V2/V3 格式、World Info 知识库、多角色群聊、正则文本替换和表情精灵图。
使用场景
- 创建虚拟角色并与其进行沉浸式对话
- 从 SillyTavern 或角色卡片网站导入角色卡片(PNG 嵌入元数据)
- 构建世界观设定(World Info),让 AI 根据对话内容自动引用相关知识
- 设置多角色群聊场景,让多个角色互动
- 使用正则脚本自动替换或修饰输出文本
- 为角色配置表情精灵图,根据情感动态切换
角色卡片
角色卡片是角色扮演的核心,定义了 AI 角色的性格、背景和行为模式。
卡片格式
Elftia 支持多种角色卡片格式:
| 格式 | 标识 | 说明 |
|---|---|---|
| TavernCard V2 | v2 | SillyTavern 标准格式,PNG 图片中嵌入 Base64 编码的 JSON 元数据 |
| TavernCard V3 | v3 | V2 的扩展版本,增加了资产(Assets)、创建日期等字段 |
| CharX | charx | 扩展的角色卡片格式 |
| BYAF | byaf | Build Your AI Friend 格式 |
| JSON | json | 纯 JSON 格式的角色数据 |
| 手动创建 | manual | 在 Elftia 中手动创建的角色 |
卡片字段
每个角色卡片包含以下字段:
| 字段 | 说明 | 是否必填 |
|---|---|---|
| 名称 (name) | 角色名称 | 是 |
| 描述 (description) | 角色的详细描述,包括外貌、身份、背景等 | 是 |
| 性格 (personality) | 角色的性格特征 | 否 |
| 场景 (scenario) | 对话发生的场景设定 | 否 |
| 第一条消息 (first_mes) | 角色的开场白 | 否 |
| 示例对话 (mes_example) | 角色对话风格的示例 | 否 |
| 系统提示 (system_prompt) | 角色专属的系统提示词 | 否 |
| 历史后指令 (post_history_instructions) | 在消息历史之后插入的指令 | 否 |
| 备选开场白 (alternate_greetings) | 多个可选的开场白 | 否 |
| 创作者备注 (creator_notes) | 角色卡片的创作说明 | 否 |
| 标签 (tags) | 分类标签 | 否 |
| 角色头像 (avatar) | 角色的头像图片 | 否 |
创建角色卡片
操作步骤
- 打开角色卡片管理页面
- 点击 创建角色 按钮
- 填写角色信息(名称、描述、性格等)
- (可选)上传角色头像
- (可选)编写示例对话
- (可选)设置系统提示词
- 保存角色卡片
导入角色卡片
Elftia 支持从 PNG 文件导入角色卡片。许多角色卡片分享网站提供的 PNG 图片中嵌入了角色数据。
从 PNG 导入
- 在角色卡片管理中点击 导入
- 选择包含角色数据的 PNG 文件
- 系统自动解析 PNG 中嵌入的 JSON 元数据
- 预览角色信息
- 确认导入
:::info PNG 元数据格式
- V2 格式:数据存储在 PNG 的
tEXt区块中,关键字为chara,内容为 Base64 编码的 JSON - V3 格式:关键字为
ccv3,包含更丰富的元数据 :::
从 JSON 导入
也可以直接导入 JSON 格式的角色数据文件。
导出角色卡片
角色卡片可以导出为 PNG 文件(嵌入元数据)或 JSON 文件,方便分享和备份。
导出为 PNG
- 选择要导出的角色卡片
- 点击 导出 按钮
- 选择 PNG 格式
- 系统将角色数据嵌入到头像 PNG 中
- 保存导出的 PNG 文件
导出的 PNG 文件可以直接导入到 SillyTavern 或其他兼容的应用中。
在对话中使用角色
操作步骤
- 打开聊天会话的设置面板
- 展开 角色扮演 设置区域
- 在 角色选择器 中选择一个角色卡片
- 配置 RP 相关参数(见下方配置表)
- 开始对话
RP 配置参数
| 参数 | 说明 | 默认值 |
|---|---|---|
| 角色卡片 (characterCardId) | 选择使用的角色 | 无 |
| 用户名称 (userName) | 你在 RP 中的名字 | User |
| 用户人设 (userPersona) | 你的角色设定 | 无 |
| 作者笔记 (authorsNote) | 插入到对话上下文中的隐藏指令 | 无 |
| 作者笔记深度 (authorsNoteDepth) | 笔记插入的位置(从最新消息向前数的距离) | 4 |
| 回复前缀 (replyPrefix) | AI 回复前自动添加的前缀 | 无 |
| 快捷回复 (quickReplies) | 预设的快捷回复按钮 | 无 |
| 上下文模板 (contextTemplateId) | 自定义提示词组装顺序 | 无 |
| 摘要功能 (summarizationEnabled) | 启用对话摘要(长对话压缩) | 否 |
World Info(世界观信息)
World Info 是角色扮演中的知识库系统,存储世界观设定的知识条目。当对话中出现匹配的关键词时,相关的 World Info 条目会自动注入到 AI 的上下文中。
核心概念
| 概念 | 说明 |
|---|---|
| 知识书 (Book) | World Info 的容器,一个书可以包含多个条目 |
| 条目 (Entry) | 单条知识信息,包含触发关键词和内容 |
| 关键词 (Keys) | 触发条目的关键词列表 |
| 扫描深度 (Scan Depth) | 扫描最近多少条消息来匹配关键词 |
| Token 预算 (Token Budget) | World Info 占用的最大 Token 数 |
| 递归扫描 (Recursive Scanning) | 是否在已触发的条目内容中继续扫描关键词 |
创建 World Info
- 打开 World Info 管理页面
- 创建一个 知识书(Book)
- 在书中添加 条目(Entry)
- 为每个条目设置触发关键词和内容
条目配置
| 字段 | 说明 |
|---|---|
| 关键词 (keys) | 触发此条目的关键词列表 |
| 内容 (content) | 条目的知识内容 |
| 启用 (enabled) | 是否启用此条目 |
| 插入顺序 (insertion_order) | 多条目触发时的排序优先级 |
| 大小写敏感 (case_sensitive) | 关键词匹配是否区分大小写 |
| 选择性匹配 (selective) | 是否需要同时匹配主关键词和副关键词 |
| 副关键词 (secondary_keys) | 选择性匹配时的副关键词 |
| 常驻 (constant) | 是否始终包含在上下文中 |
| 位置 (position) | 在上下文中的插入位置 |
| 深度 (depth) | 自定义插入深度 |
| 概率 (probability) | 触发概率(0-100%) |
| 全词匹配 (match_whole_words) | 是否只匹配完整单词 |
World Info 扫描设置
| 设置 | 说明 | 默认值 |
|---|---|---|
| 扫描深度 | 扫描最近多少条消息 | 10 |
| Token 预算 | 最大 Token 消耗 | 2048 |
| 递归扫描 | 在触发内容中继续匹配 | 否 |
使用 World Info
- 在 RP 设置面板中选择一个或多个知识书
- 配置扫描参数
- 对话时系统自动扫描并注入匹配的条目
角色内嵌知识书(Character Book)
角色卡片可以内嵌一个 Character Book,导入角色时会自动创建对应的 World Info 知识书。
群聊
群聊模式允许多个角色同时参与对话,模拟多人互动场景。
操作步骤
- 创建群聊配置
- 添加参与对话的角色(角色卡片)
- 在 RP 设置中选择群聊配置
- 开始群聊对话
行为说明
- 每轮对话中,系统会根据配置决定由哪个角色回复
- 各角色的性格和设定保持独立
- 支持手动指定下一个回复的角色
正则脚本
正则脚本允许你使用正则表达式对 AI 的输入或输出进行自动替换和修饰。
使用场景
- 自动格式化 AI 的输出格式
- 替换特定的文本模式
- 添加或移除特定的标记
配置
在 RP 设置面板的正则脚本区域中:
- 添加新的正则规则
- 输入匹配的正则表达式
- 输入替换文本
- 选择应用位置(输入 / 输出)
- 启用规则
表情精灵图
表情精灵图功能允许角色根据对话中表达的情感动态切换显示的表情图片。
设置方法
- 为角色准备一组表情图片(如:开心、悲伤、生气等)
- 在角色设置中上传表情图片集
- 为每张图片标注对应的情感标签
- 对话时 AI 会自动识别回复的情感倾向并切换表情
SillyTavern 兼容性
Elftia 的角色扮演系统高度兼容 SillyTavern:
| 功能 | 兼容性 |
|---|---|
| TavernCard V2 导入/导出 | 完全兼容 |
| TavernCard V3 导入/导出 | 完全兼容 |
| Character Book | 完全兼容 |
| World Info 格式 | 完全兼容 |
| PNG 嵌入元数据 | 完全兼容 |
| 正则脚本 | 兼容 |
| 表情精灵图 | 兼容 |
你可以直接使用从 SillyTavern 导出的角色卡片和 World Info,无需转换格式。
常见问题
| 问题 | 解决方案 |
|---|---|
| 导入 PNG 失败 | 确认 PNG 文件中包含有效的角色数据(tEXt 区块中有 chara 或 ccv3 关键字) |
| 角色不按设定回复 | 检查角色描述和系统提示是否足够详细,提供更多示例对话 |
| World Info 条目不触发 | 确认关键词拼写正确,检查扫描深度是否足够 |
| World Info Token 超预算 | 减少常驻条目数量,或增大 Token 预算 |
| 群聊角色混淆 | 确保每个角色的描述足够独特,避免性格重叠 |
| 表情不切换 | 确认表情图片已正确上传并标注情感标签 |
| 导出后其他应用无法识别 | 确认导出格式与目标应用兼容(V2 兼容性最广) |
| 作者笔记不生效 | 检查作者笔记深度设置,确保深度值不超过当前消息数 |