Skip to content

feat(ui): 网页内服务端路径浏览器(修复 Linux/远程「浏览」失效) #244

Description

@wochenlong

背景

Vue3「浏览」按钮当前走 GET /api/pick_file,后端用 tkinter 在跑 gui.py 的机器上弹系统选文件/文件夹框(见 mikazuki/utils/tk_window.pyfrontend/AGENTS.md「远程路径选择」)。

Linux(云主机 / SSH / 无桌面 / 浏览器远程访问 WebUI)下经常失效:无 DISPLAY 或弹窗开在服务器桌面而非用户本机,前端表现为「用户取消选择」。训练页、打标页、数据集编辑页的浏览按钮均受影响。

手填路径可用,但对远程用户不友好。

目标(第 2 档:正经修)

网页内服务端路径浏览器(列的是后端机器文件系统,不是浏览器本机磁盘),在 Linux / 无 GUI / 远程部署下也能点选目录与模型文件。

Windows 本机桌面可保留现有 tkinter 作为快捷路径;无 GUI 时自动走网页选择器。

建议范围

后端

  • 新增(或扩展)可浏览 API,例如:
    • 列出目录条目(文件夹 / 文件)
    • 支持上级目录、起始根(如 ./sd-models./train./output、用户上次路径、绝对路径)
    • 文件过滤(*.safetensors / *.ckpt / *.pt 等)
    • 安全边界:禁止越权到无关系统路径(至少做根白名单或 canonicalize + 拒绝符号链接逃逸)
  • 探测 tkinter / DISPLAY:不可用时 /api/pick_file 返回明确错误码,前端改开网页选择器

前端

  • 通用 PathPicker 对话框组件(Element Plus):面包屑 / 列表 / 双击进入 / 选中确认
  • 接入:
    • 训练页 SchemaField 浏览
    • 打标页路径浏览
    • 数据集编辑顶栏文件夹图标
  • i18n(中/英)

非目标(本 Issue)

  • 不浏览用户浏览器本机磁盘(Web 安全模型不允许)
  • 不替代手填路径
  • 训练脚本内的内置文件选择器失效 #184(预设根目录 sd-models / output 路径契约)可另开或后续对齐,本 Issue 以「能在网页里逛服务端目录」为主

验收

  1. Linux 无桌面(或仅浏览器访问)点「浏览」可弹出网页路径选择器,选中后路径写回输入框
  2. Windows 本机:行为不回归(tkinter 或网页二选一均可,需文档说明)
  3. 目录与模型文件两种模式可用;取消不误报「用户取消选择」以外的错误
  4. 有最小单测或手工清单(至少覆盖 list API 与越权拒绝)

参考

Metadata

Metadata

Assignees

No one assigned

    Labels

    P1High priority issue that affects user experience but is not an immediate release blockerenhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions