Files
nexus-terminal/.helloagents/archive/2026-03/202603260212_workbench-file-root-tree/proposal.md
T
yinjianm dcdc8deab8 feat(frontend): 将文件管理器改为固定根树视图
文件区改为固定 `/` 根节点的单栏资源管理器树,
在同一树中同时展示目录和文件,并移除文件夹总览区块

同时收紧快捷指令编辑弹窗尺寸并优化窄屏为上下布局,
降低小分辨率下的溢出概率,并同步更新中英文 README
及 `.helloagents` 方案记录
2026-03-26 02:21:06 +08:00

2.2 KiB

变更提案: workbench-file-root-tree

元信息

类型: 功能调整
方案类型: implementation
优先级: P1
状态: 已完成
状态说明: 已改为固定 / 根节点的单栏资源管理器树,并通过前端构建验证
创建: 2026-03-26

1. 需求

背景

上一轮虽然去掉了单目录文件表格,但仍保留了“文件夹总览”区块,而且根目录会随当前路径变化,不符合实际想要的资源管理器体验。

目标

  • 文件区只保留一个资源管理器树。
  • 根节点始终固定显示 /
  • 目录展开时同时显示子目录和文件,文件作为叶子节点显示。

约束条件

范围约束: 优先只改 FileManager.vue,不改后端接口与 SFTP 协议
状态约束: 继续复用 useSftpActions 的 fileTree 和 loadDirectory(path)
交互约束: 点击目录只展开和聚焦,点击文件按现有逻辑打开
兼容约束: 顶部工具栏、路径栏、上传与新建动作保持可用

验收标准

  • 文件区只保留单栏资源管理器树
  • 根节点始终固定显示 /
  • 目录下同时展示子目录和文件
  • 前端构建通过

2. 方案

技术方案

FileManager.vue 中去掉多根目录和文件夹总览派生结构,改为以 / 为唯一 explorer root,树节点直接基于 fileTree 递归渲染所有已加载的目录和文件,按“目录在前、文件在后”排序。主内容区改成单栏树视图,点击目录只负责展开与调用 loadDirectory(path) 以懒加载子节点,点击文件则继续复用现有 openFileInWorkspace

影响范围

涉及模块:
  - frontend: FileManager.vue
预计变更文件: 1-4

风险评估

风险 等级 应对
/ 下初次只会显示已加载到 fileTree 的节点 在组件中确保优先加载 /,展开目录时继续复用现有懒加载
右侧总览移除后,拖拽与右键的作用区域缩小 保留主容器和现有上下文菜单、上传入口,不改后端动作
树节点数量增多后单栏滚动深度增加 保留当前滚动容器与层级缩进,先满足准确交互