Undefined 当前包含两个 Tauri App:
apps/undefined-console/:跨平台管理 Console,定位为远程 WebUI 连接器 / 启动器。apps/undefined-chat/:原生优先 WebChat 客户端,直接连接 Runtime API。完整说明见 Undefined Chat。
本文第 2–10 节描述的是 Console 的连接器 / 启动器定位(不再维护平行后台、轻量打开远程 WebUI)。Undefined Chat 不同:它是直连 Runtime API 的原生聊天客户端,自带会话/历史/附件/工具调用渲染、中英双语、HTML 内联渲染与独立预览窗口、移动端适配等完整能力,详见 Undefined Chat,不要把下文 Console 的“尽量轻”原则套用到 Chat。
Undefined Console 定位为:
- 保存多个远程连接档案
- 对 Management API / Runtime API 做基础连通性探测
- 在桌面端 / Android 中直接打开 真正的远程 WebUI
也就是说,它不是再维护一套长期独立演进的“第二后台”,而是作为 连接器 / 启动器,尽量保证你最终看到的仍然是原生 WebUI 的完整体验与完整功能。
首期目标平台:
- Windows
- macOS
- Linux
- Android
说明:
iOS当前不在发布矩阵内- Release workflow 会在打 tag 时同步构建并上传非 iOS 平台安装包
Tauri App 当前不再尝试长期维护一套平行后台。它的职责是:
- 保存远程实例连接配置
- 做基础连通性探测
- 自动尝试登录 Management API
- 把语言 / 主题偏好透传给远程 WebUI
- 直接打开真正的 WebUI
换句话说:
- 浏览器 WebUI 是唯一真源
- Tauri App 负责连接与打开这个真源
每个连接现在使用以下字段:
显示名称IP / 域名Management 端口Runtime 端口管理密码备注
这样做的好处是:
- 不再要求用户手写两个完整 URL
- 更适合桌面端和移动端录入
- 同一个主机下的两个服务端口更容易一起管理
作用:
- 测试 Management API 是否可达
- 自动登录(如果填写了管理密码)
- 打开真正的 WebUI
作用:
- 做 Runtime API 健康检查
- 确认 OpenAPI 与运行态是否可达
说明:Runtime 只是辅助探测,不负责替代完整后台。
当你在 App 中点击“打开 WebUI”时,当前实现会:
- 如果填写了管理密码,先尝试调用登录接口
- 再把当前的
lang/theme偏好透传给远程 WebUI - 默认直接跳到 WebUI 的
app视图(不是 landing)
这意味着:
- App 里切到英文 / 暗色后,打开 WebUI 会尽量保持一致
- 如果自动登录成功,进入 WebUI 后会直接是已登录状态
- 如果自动登录失败,则会落到 WebUI 登录页
- 从 WebUI 退出登录后,会回到主界面而不是停留在管理页
- 先在服务器或本机运行:
uv run Undefined-webui- 在浏览器中完成首次密码设置与配置补齐
- 启动 Bot
- 在桌面端或 Android App 中新增一个连接档案
- 点击“测试连接”确认 Management / Runtime 可达
- 点击“打开 WebUI”后,如已填写管理密码会先自动登录,再进入真正后台
Android 端仍然走同一套连接模型,但 UI 目标是:
- 把 App 自身保持得尽量轻
- 让真正复杂的后台界面依旧由 WebUI 本体负责
- 尽量减少 Tauri 内再造一套移动版后台的维护成本
如果后续要补强 Android 体验,优先方向是:
- 优化连接页和启动页
- 优化打开远程 WebUI 前的引导
- 必要时对 WebUI 本体做移动端适配
普通用户如果只是部署 Bot,不需要下载这些 App 产物;先运行 Undefined-webui 即可。需要远程管理或原生聊天客户端时,再按 README — Release 下载速查 选择对应平台文件。
每次 v* tag 发布时,Release workflow 计划同步上传:
- Python:
wheel+sdist - Console:
Undefined-Console-*桌面端和 Android 产物 - Chat:
Undefined-Chat-*桌面端和 Android 产物
两个 App 的版本都必须与 pyproject.toml 主版本一致。使用 uv run python scripts/bump_version.py <version> 统一更新版本;pre-tag 和 Release workflow 会校验 Console / Chat 的 package.json、package-lock.json、Cargo.toml、tauri.conf.json 和 Cargo.lock。
App 位于:
apps/undefined-console/apps/undefined-chat/
常用命令:
cd apps/undefined-console
npm install
npm run dev
npm run tauri:dev
npm run tauri:build
npm run tauri:build:no-strip
npm run tauri:android:init
npm run tauri:android -- --apkUndefined Chat 使用同一套命令:
cd apps/undefined-chat
npm install
npm run check
npm run tauri:dev
npm run tauri:android:init
npm run tauri:android:prepare:check- 终端 1:
cd /data0/Undefined
uv run Undefined-webui- 终端 2:
cd /data0/Undefined/apps/undefined-console
npm run tauri:dev- 在 App 中:
- 填
IP / 域名 - 填
Management 端口 - 需要时填
Runtime 端口 - 填管理密码
- 点击“测试连接”
- 点击“打开 WebUI”
如果你要:
- 最完整功能
- 最接近现有 WebUI 的视觉与交互
- 尽量避免双份前端长期漂移
那么当前最稳妥的路线就是:
Undefined-webui继续作为真正后台Tauri App作为远程连接器和启动器