浏览器聊天界面。支持用户注册/登录、邀请制和 Persona 隔离。
需要 Server 模式。
{
"web": {
"enable": true,
"port": 8082
},
"admin": {
"token": "your-secret-token"
}
}
| 字段 | 必填 | 默认值 | 说明 |
|---|---|---|---|
enable | ✅ | false | 启用 Web 渠道 |
host | ❌ | "" | 监听地址(空 = 所有接口) |
port | ❌ | 0 | 监听端口 |
static_dir | ❌ | 自动检测 | 前端静态文件目录 |
upload_dir | ❌ | "" | 上传文件自定义目录 |
persona_isolation | ❌ | false | 启用后每个 Web 用户的 persona 互相隔离 |
invite_only | ❌ | true | 禁止自主注册。默认 true(安全默认)——第一个账号仍可注册(首用户引导),之后只能由管理员创建账号。显式设为 false 才会重新开放公开注册。 |
Server 模式安装时,安装器会自动下载 Web UI 到 ~/.xbot/web/dist/。
如果需要手动安装:
# 下载对应版本的 web 压缩包并解压到 ~/.xbot/web/dist/
启动 Server 后,在浏览器中打开 http://your-server:8082。
富文本(WYSIWYG)编辑器,支持 Markdown 快捷语法(**粗体**、- 列表等)与链接:
| 功能 | 说明 |
|---|---|
| 链接 | 输入 https://… 后跟空格自动成链;粘贴链接/Markdown 链接语法([文字](URL))实时渲染;链接以主题色高亮显示 |
| 链接编辑 | 选中文本浮现工具栏(加粗/斜体/删除线/行内代码/链接);Ctrl/Cmd+K 快速添加或修改链接,支持一键解除 |
| 文件上传 | 支持任意类型文件(无类型白名单)。点击 📎 选择文件、直接粘贴(截图自动上传)或拖拽到输入框,文件作为附件随消息发送 |
| 上传限制 | 单文件 10MB(仅限大小,不限类型) |
| 方式 | 说明 |
|---|---|
| 用户名/密码 | 注册后登录,Session Cookie 有效期 30 天 |
| CLI Token | WebSocket 连接时使用 admin token |
| 飞书登录 | 通过飞书账号一键登录/关联 |
当 invite_only: true 时:
- 新用户无法自主注册(返回 403)
- 管理员可通过飞书渠道的管理命令或直接操作数据库创建账号
- 适合内部团队使用
全新部署还没有任何账号,因此第一次注册会被放行——该账号即成为管理员。注册页会明确提示「首次设置 · 仅此一次」,并说明注册随后自动关闭,访客不必猜测注册接口是否对所有人开放。账号创建后,/register 显示 invite-only 通知,登录页也不再显示注册入口。
Web UI 有桌面与移动两套外壳,默认按视口宽度自动选择(≤767px 用手机外壳)。窄屏平板、横屏手机或桌面窄窗口边缘场景下,自动判断未必符合预期,因此可以在设置 → 外观 → UI 模式手动固定:
| 模式 | 行为 |
|---|---|
| 自动(默认) | 跟随视口断点(≤767px = 手机外壳) |
| 桌面 | 始终使用桌面外壳(多面板 / Dockview 布局) |
| 移动端 | 始终使用手机外壳(抽屉会话 + 底部导航) |
偏好存本地(localStorage)即时生效,并同步到服务端(web:ui:ui-mode),换设备/浏览器后保持一致。该设置只切换外壳,不改变 CSS 断点——在窄屏上强制桌面外壳会得到被压缩的桌面布局。
当 persona_isolation: true 时:
- 每个 Web 用户的系统人格(persona)互相隔离
- 用户 A 设置的 Agent 行为不影响用户 B
- 适合多租户场景