# 多用户模式

多用户模式允许多人使用一个 SillyTavern 服务器。每个用户都有自己的设置、扩展和数据。用户账户也可以设置密码保护。

# 配置

要启用和使用多用户模式,请编辑 config.yaml 文件:

# 启用多用户模式
enableUserAccounts: true
# 启用隐私登录模式:在登录屏幕上隐藏用户列表
enableDiscreetLogin: true
  1. 当用户账户设置被禁用时,使用 default-user 后备管理员账户来存储用户数据。
  2. 当隐私登录设置被禁用时,在登录屏幕上显示活动用户列表。如果启用,用户必须手动输入其句柄。

# 用户句柄

句柄是用户的唯一标识符。它只能由小写字母、数字和破折号组成。

用户数据目录的路径假定使用以下模式:%DATA_ROOT%/%USER_HANDLE%

有效用户句柄的示例:

  • default-user
  • juan555
  • flux-the-cat
  • cool-guy1337

# 角色

  • Admin - 可以管理(创建、删除、修改)其他用户。可以为所有用户安装扩展。
  • User - 无法管理其他用户。只能为自己安装扩展。

除了拥有管理面板访问权限外,两种用户角色在功能上是相同的,可以使用 SillyTavern 的全部功能而没有任何限制。用户权限的实现尚待确定。

所有用户账户首先被创建为普通用户,然后如果需要可以提升为管理员。

# 登录屏幕

在那里您可以选择要使用的用户账户。根据 enableDiscreetLogin 配置值有两种样式。

当您只有一个活动用户且未设置密码保护时,将绕过登录屏幕且不显示。

# 用户个人资料

您可以使用顶部菜单栏中"用户设置"面板下的"账户"按钮访问账户自我管理菜单。

  1. 显示名称 - 在登录屏幕中使用,可以更改。与人格不相关,对 AI API 不可见 - 您仍然可以使用任意数量的人格。
  2. 个人资料图片 - 在登录屏幕中使用。您可以使用自定义图片、默认人格图片(如果已设置)或最后使用的人格。
  3. 密码 - 锁图标反映账户保护状态(开锁 = 无密码)。可以使用"更改密码"按钮设置、更改或删除密码。
  4. 设置快照 - 访问和查看 settings.json 文件的备份,并能够创建或恢复快照。
  5. 下载备份 - 下载用户数据文件夹的存档。
  6. 重置设置 - 重置工厂默认设置,同时保留其他数据(角色、聊天)不变。

# 密码恢复

  1. 可以从登录屏幕恢复密码。您需要访问服务器控制台以获取一次性恢复代码(由 4 位数字组成)。
  2. 或者,您可以使用 SillyTavern 服务器中的实用程序脚本通过提供用户句柄来重置密码。
Usage: node recover.js [account] (password)
Example: node recover.js admin SecurePassword

# 内容脚手架

要为用户添加自定义内容,您可以使用内容脚手架功能。此功能允许您定义一组文件,这些文件将在服务器启动时复制到每个用户的数据目录。

要使此功能正常工作,您必须在 /default/scaffold 目录中创建一个 index.json 文件。语法与默认内容相同。所有文件路径应相对于 /default/scaffold 目录,您可以使用子目录组织文件。

脚手架文件在默认文件之前复制,这意味着它们将覆盖具有相同文件名的任何默认文件(预设/设置等)。

# 识别的内容类型

类型
settings.json 'settings'
角色卡 'character'
角色精灵 'sprites'
背景图像 'background'
World Info 文件 'world'
人格头像 'avatar'
UI 主题 'theme'
ComfyUI workflow 'workflow'
KoboldAI Classic 预设 'kobold_preset'
Chat Completion 预设 'openai_preset'
NovelAI 预设 'novel_preset'
Text Completion 预设 'textgen_preset'
Instruct Mode 模板 'instruct'
Context Formatting 模板 'context'
MovingUI 预设 'moving_ui'
Quick Replies 集 'quick_replies'
System Prompt 模板 'sysprompt'
Reasoning Formatting 模板 'reasoning'

# 示例 (/default/scaffold/index.json)

[
    {
        "filename": "themes/Midnight.json",
        "type": "theme"
    },
    {
        "filename": "backgrounds/city.png",
        "type": "background"
    },
    {
        "filename": "characters/Charlie.png",
        "type": "character"
    }
]