每个功能在哪些端可用。产品、设计、开发以此表为准。新增功能时,先确认它落在哪个端,再决定 packages/core 是否需要新抽象。图例:✅ 完整支持 · ◐ 部分支持(见备注)· — 不支持(按设计)
| 功能 | Web | 桌面 | 移动(规划中) |
|---|---|---|---|
| 通用 | |||
| 服务器地址配置 | —(同源 / 构建期) | ✅ 首次启动:本地或远程服务器 | ✅ 首次启动设置页 |
| 本地独立运行(内置服务器) | — | ✅ SQLite + 本地文件,无需账号 | — |
| 多标签页连接多个服务器 | — | ✅ 每标签页一个 webview,会话互相隔离 | — |
| 登录 / 注册 / 找回密码 | ✅ | ✅ | ✅ |
| 双因素认证(TOTP / 邮箱) | ✅ | ✅ | ✅ |
| OAuth / OIDC 第三方登录 | ✅ 重定向 | ✅ 回环(RFC 8252) | ✅ 系统浏览器 |
| 持续登录(refresh 轮换) | ✅ HttpOnly cookie | ✅ 系统钥匙串 | ✅ SecureStore |
| 多标签页 / 多窗口会话同步 | ✅ BroadcastChannel | — 标签页互相隔离 | — |
| 语言与主题 | ✅ | ✅ | ✅ |
自定义品牌(branding.*) | ✅ | ✅ | ✅ |
| 聊天 | |||
| 会话列表与聊天 | ✅ | ✅ | ✅ |
| 流式回复(SSE) | ✅ | ✅ | ✅ |
| Markdown / 代码高亮 / 数学公式 | ✅ | ✅ | ◐ 简化渲染 |
| Mermaid 图表 | ✅ | ✅ | — |
| 消息附件与文件上传 | ✅ | ✅ | ✅ 含相机、相册 |
| 语音输入 | ◐ 浏览器支持时 | ◐ 浏览器支持时 | ✅ 原生 |
| 分享会话链接 | ✅ | ✅ | ✅ |
| 会话导出(截图 / 文档) | ✅ | ✅ | ◐ 依赖系统分享 |
| 内容管理 | |||
| 文件库 | ✅ | ✅ | ◐ 仅查看与上传 |
| 知识库 | ✅ | ✅ | — |
| 提示词预设 | ✅ | ✅ | ◐ 仅使用,不编辑 |
| MCP / Skill 配置 | ✅ | ✅ | — |
| 账户 | |||
| 个人资料与安全设置 | ✅ | ✅ | ✅ |
| 会话管理(查看 / 踢出设备) | ✅ | ✅ | ✅ |
| 账单与订阅 | ✅ | ✅ | ✅ |
| 账户注销 | ✅ | ✅ | ✅ |
| 管理后台 | |||
| Admin 全部功能 | ✅ | ✅ | — 明确不做 |
| 系统公告与统计 | ✅ | ✅ | ◐ 仅展示公告 |
| 桌面专属能力 | |||
| 托盘 / 常驻 | — | ✅ | — |
| 自动更新 | — | ✅ 签名 updater(stable 与 beta 通道) | ◐ 应用商店 |
| 系统通知 | ◐ PWA 通知 | ◐ 取决于系统通知中心 | ✅ 推送 |
规则#
- 表里没有的端就是不支持。 不要因为“顺手能加上”就在移动端加 Admin 这类功能。范围一旦模糊,两个端就会各自长出不同的实现。
- 新增一行时必须回答两个问题: 逻辑是否需要
packages/core新增抽象?UI 是否需要在两端各写一遍?如果逻辑各写一遍,那是架构违规。 - ◐ 必须写清楚限制。 只写“部分支持”等于没写。
- 桌面端不新增业务功能行。 桌面 = Web + 系统集成能力。只要出现“桌面端能做但 Web 端不能做”的业务功能,就说明抽象放错了层。