多用户模式

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

配置

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

# Enable multi-user mode
enableUserAccounts: true
# Enable discreet login mode: hides user list on the login screen
enableDiscreetLogin: true
  1. 当用户账户设置被禁用时,会使用一个 default-user 兜底管理员账户来存储用户数据。
  2. 当隐蔽登录设置被禁用时,登录界面会显示活跃用户列表。如果启用该设置,用户必须手动输入自己的标识。

用户标识

标识(handle)是用户的唯一标识符。它只能由小写字母、数字和连字符组成。

用户数据目录的路径遵循以下模式:%DATA_ROOT%/%USER_HANDLE%

有效的用户标识示例:

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

角色

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

除了拥有管理员面板访问权限外,两种用户角色在功能上完全相同,都可以无限制地使用 SillyTavern 的全部功能。用户权限的具体实现尚待确定(TBD)。

所有用户账户在创建时都是普通用户,之后可根据需要提升为管理员。

登录界面

在这里你可以选择要使用的用户账户。它有两种样式,取决于 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'
人格头像 'avatar'
UI 主题 'theme'
ComfyUI workflow 'workflow'
KoboldAI Classic 预设 'kobold_preset'
聊天补全预设 'openai_preset'
NovelAI 预设 'novel_preset'
文本补全预设 'textgen_preset'
指令模式模板 'instruct'
上下文格式化模板 'context'
MovingUI 预设 'moving_ui'
快捷回复集合 'quick_replies'
系统提示词模板 'sysprompt'
推理格式化模板 'reasoning'

示例(/default/scaffold/index.json

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