多用户模式
多用户模式允许多人共用一个 SillyTavern 服务器。每个用户拥有各自的设置、扩展和数据。用户账户还可以设置密码保护。
用户密码仅为多用户环境中的用户之间提供基础的隐私保护。它并非安全功能,不应被视为安全功能。所有用户数据(包括聊天历史、API 密钥及其他敏感信息)都以明文形式存储在服务器上。任何能够访问服务器文件系统的人都可以查看和修改这些数据。不要在公共服务器上或与不可信的用户一起使用 SillyTavern。
配置
要启用并使用多用户模式,请编辑 config.yaml 文件:
# Enable multi-user mode
enableUserAccounts: true
# Enable discreet login mode: hides user list on the login screen
enableDiscreetLogin: true
- 当用户账户设置被禁用时,会使用一个
default-user兜底管理员账户来存储用户数据。 - 当隐蔽登录设置被禁用时,登录界面会显示活跃用户列表。如果启用该设置,用户必须手动输入自己的标识。
你无法从用户列表中_删除_ default-user 账户,因为在 enableUserAccounts 设为 false 的情况下,它会用于提供用户数据。但你可以_禁用_该账户,使其从列表中隐藏并禁止登录。
用户标识
标识(handle)是用户的唯一标识符。它只能由小写字母、数字和连字符组成。
用户数据目录的路径遵循以下模式:%DATA_ROOT%/%USER_HANDLE%。
有效的用户标识示例:
- default-user
- juan555
- flux-the-cat
- cool-guy1337
角色
- Admin —— 可以管理(创建、删除、修改)其他用户。可以为所有用户安装扩展。
- User —— 无法管理其他用户。只能为自己安装扩展。
除了拥有管理员面板访问权限外,两种用户角色在功能上完全相同,都可以无限制地使用 SillyTavern 的全部功能。用户权限的具体实现尚待确定(TBD)。
所有用户账户在创建时都是普通用户,之后可根据需要提升为管理员。
登录界面
在这里你可以选择要使用的用户账户。它有两种样式,取决于 enableDiscreetLogin 配置的值。
当你只有一个活跃用户且该用户未设置密码保护时,登录界面会被跳过而不显示。
用户资料
你可以通过顶部菜单栏中“用户设置”面板下的“账户”按钮访问账户自助管理菜单。
- 显示名称 —— 用于登录界面,可以更改。它与人格无关,对 AI API 也不可见 —— 你仍然可以使用任意数量的人格。
- 头像 —— 用于登录界面。你可以使用自定义图片、默认人格图片(如果已设置),否则使用最近使用的人格图片。
- 密码 —— 一个锁形图标反映了账户的保护状态(开锁 = 无密码)。可以通过“修改密码”按钮来设置、更改或移除密码。
- 设置快照 —— 访问并查看
settings.json文件的备份,并能够创建或恢复快照。 - 下载备份 —— 下载你的用户数据文件夹的归档文件。
- 重置设置 —— 恢复出厂默认设置,同时保留其他数据(角色、对话)不变。
密码恢复
- 可以从登录界面恢复密码。你需要访问服务器控制台以获取一个一次性恢复码(由 4 位数字组成)。
- 或者,你可以使用 SillyTavern 服务器中的一个实用工具脚本,通过提供用户标识来重置密码。
Usage: node recover.js [account] (password)
Example: node recover.js admin SecurePassword
内容脚手架
要为用户添加自定义内容,你可以使用内容脚手架功能。该功能允许你定义一组文件,这些文件会在服务器启动时被复制到每个用户的数据目录中。
你必须先在 /default/scaffold 目录下创建一个 index.json 文件,此功能才能生效。其语法与默认内容相同。所有文件路径都应相对于 /default/scaffold 目录,你可以使用子目录来组织文件。
脚手架文件会在默认文件之前被复制,这意味着它们会覆盖任何同名默认文件(预设/设置等)。
每个用户数据目录都有一个 content.log 文件,其中列出了从脚手架目录和默认目录复制的所有文件。删除此文件可强制服务器在下次重启时重新同步内容。
可识别的内容类型
示例(/default/scaffold/index.json)
[
{
"filename": "themes/Midnight.json",
"type": "theme"
},
{
"filename": "backgrounds/city.png",
"type": "background"
},
{
"filename": "characters/Charlie.png",
"type": "character"
}
]