后台总览
Aivory 的绝大部分运营配置都在管理后台完成:上游渠道与模型、用户与配额、积分与兑换码、内容审核、备份迁移、用量报表等,全部存储在数据库中,保存后即对后续请求生效,无需重启服务。本页介绍后台的进入方式、左侧导航结构,以及权限模型。
进入方式
后台入口有两个,均要求当前账号的角色为 admin:
| 入口 | 说明 |
|---|---|
| 侧栏账号菜单 | 点击聊天界面左下角的账号头像,菜单中的「管理后台」项(盾形图标)仅对管理员可见 |
直接访问 /admin | 浏览器地址栏输入 https://你的域名/admin,会自动跳转到「系统 > 全局设置」页 |
非管理员账号访问任何 /admin 路径都会被直接重定向回首页,页面本身不会渲染,对应的管理 API 也不会被调用。后台左上角的「返回聊天」按钮可随时回到主界面。
移动端访问时,左侧导航收纳进汉堡菜单,点击后从左侧滑出,功能与桌面端一致。
全新部署(用户数为 0)时,访问站点会自动进入首启设置页 /setup,在这里填写邮箱、名字、密码(至少 8 个字符)创建的第一个账号即成为管理员,并自动登录(免邮箱验证)。一旦系统中存在任何账号,/setup 即永久失效(返回 409)。详见首次运行。
导航结构一览
左侧导航是 6 个扁平菜单项,每一项聚合若干相关页面;进入后通过内容区顶部的二级标签页切换。下表列出全部页面及其职责:
| 菜单 | 二级标签 | 路径 | 职责 | 手册 |
|---|---|---|---|---|
| 系统 | 全局设置 | /admin/settings | 默认/任务/审校模型、上下文压缩、注册开关、每日限额、SMTP | 站点设置 |
| 系统 | 登录方式 | /admin/oauth | OAuth 第三方登录提供商配置 | 站点设置 |
| 系统 | 内容审核 | /admin/moderation | 全局违规关键词、审核模型、拦截提示语 | 渠道与模型 |
| 系统 | 公告 | /admin/announcement | 面向全站用户的公告发布 | 站点设置 |
| 系统 | 备份与迁移 | /admin/backup | 完整库备份 ZIP、站点配置 JSON 导出/导入 | 备份与迁移 |
| 模型 | 渠道 | /admin/channels | 上游 API 渠道:Base URL + API Key + 协议类型 | 渠道与模型 |
| 模型 | 模型 | /admin/models | 模型的创建、启停、能力位、定价、按组配额 | 渠道与模型 |
| 能力 | 技能 | /admin/skills | 管理员维护的技能包,模型按需加载 | 渠道与模型 |
| 能力 | 图片风格 | /admin/image-styles | 绘图模式的官方风格预设 | 图片生成 |
| 能力 | 工具 | /admin/tools | 搜索后端、沙箱地址等工具调用配置 | 沙箱部署 |
| 能力 | 文档 | /admin/documents | 嵌入模型、MinerU 解析、RAG 注入参数、上传限额 | 知识库 |
| 能力 | 语音 | /admin/audio | 语音相关配置 | 站点设置 |
| 用户 | 用户 | /admin/users | 搜索、建号、改角色、重置密码、封禁、对话钻取 | 用户、配额与积分 |
| 用户 | 用户组 | /admin/user-groups | 会员等级:价格、功能、时效积分发放 | 用户、配额与积分 |
| 用户 | 兑换码 | /admin/redeem-codes | 批量生成兑换码,授予用户组与有效期 | 用户、配额与积分 |
| 工作空间 | 工作空间 | /admin/workspaces | 团队共享空间的总览与治理 | 工作空间 |
| 数据 | 用量 | /admin/usage | 逐条 API 调用记录:筛选、排错、删除 | 用量与分析 |
| 数据 | 分析 | /admin/analytics | 整体使用趋势:总体、分模型、分用户 | 用量与分析 |
几点导航行为说明:
- 侧栏项与二级标签按路径前缀高亮:进入深层页面(如某用户的对话记录
/admin/users/:id/conversations,或某模型的设置页/admin/models/:id)时,所属大类和标签仍保持高亮。 - 「模型标签」管理页(
/admin/model-tags)从模型列表或模型编辑页进入,归属「模型 > 模型」标签。 - 切换标签只刷新内容区,侧栏与标签栏保持不动。
初始配置动线
一个全新站点的最短配置路径:
- 完成
/setup首启设置,获得管理员账号。 - 进入「模型 > 渠道」,添加上游渠道(类型 + Base URL + API Key)。
- 进入「模型 > 模型」,在渠道下创建模型(上游模型 ID、名称、定价、能力位),启用后即出现在所有用户的模型选择器中。
- 进入「系统 > 全局设置」,指定默认对话模型与任务模型;若要使用知识库,再到「能力 > 文档」指定嵌入模型。
详细步骤见渠道与模型与首次运行。若是从旧实例迁移,直接在「系统 > 备份与迁移」导入完整备份,见备份与迁移。
权限模型
角色
Aivory 只有两种角色,存储在用户记录的 role 字段:
| 角色 | 权限 |
|---|---|
user | 普通用户:聊天、知识库、项目、订阅页等全部前台功能 |
admin | 在 user 基础上增加整个管理后台与全部 /api/admin/* 接口 |
管理员数量不限:可以在「用户 > 用户」页把任何账号的角色改为「管理员」,也可以在新建用户时直接指定角色。后台接口逐一经过 admin 角色校验,前端的路由守卫只是第一道门。
唯一性与自我保护
- 首启设置页
/setup只在用户数为 0 时可用,创建的账号自动成为第一个管理员;此后/setup永久返回 409,不可能再通过它产生账号。 - 管理员不能修改自己的角色:编辑自己账号时角色下拉被禁用。这保证了系统总有至少一个管理员,不会被误操作锁死。
- 管理员不能封禁或删除自己:用户列表中对自己那一行,封禁与删除按钮均不可用。
封禁的实时性
封禁一个用户是即时全局生效的,不依赖 token 过期:
- 用户状态写为
banned,同时该用户的 token 版本号自增; - 之后的每个请求在中间件比对 token 版本号,旧 token 立即失效;
- 该用户进行中的生成会被广播消息取消,流式回复即时断开;
- refresh token 被删除,无法再换发新的 access token。
同一机制也用于「改密后失效全部会话」等场景。操作入口见用户、配额与积分。
管理员查看用户数据是只读的
管理员可以从用户列表钻取查看任意用户的对话记录、项目、知识库与生成图库(用于滥用排查与工单支持),但这些页面不渲染任何编辑、重生成、删除消息的入口:看与动在界面层严格分开,管理员要发消息只能用自己的会话。
后台可配置的内容(渠道密钥、模型、工具、RAG、存储等)都是热更新的:保存后下一次请求即按新配置执行,不需要重启容器。少数例外(如 JWT_SECRET 等环境变量)见核心环境变量。