PanelAI 自研文件管理器 + 任意目录一键开终端,跨平台私有化面板的正确打开方式

51 阅读3分钟

最近在肝一个完全自研的 AI 私有化管理面板(内部叫 PanelAI),今天把刚刚打通的 文件管理器 + 右键打开终端 两个模块拿出来跟大家聊聊,纯技术交流,零广告。

为什么不直接套现成的文件管理组件?

网上其实一大把 Web 文件管理器(FileBrowser、KodExplorer、1Panel 自带的……),但真用起来总有几个死结:

  • 基本只针对 Linux 深度优化,Windows Server 和 Docker 环境一团糟
  • 权限系统跟业务完全解耦,后期对接要命
  • 几乎没人做「在任意目录右键直接开终端」这种细节体验
  • 回收站基本没有,删错就是真删

于是干脆从 0 开始自己写,目标只有一句话: 同一套代码,Linux / Windows Server / Docker 随便跑,后续所有子系统深度打通

当前已落地的核心功能

功能

实现方式

踩坑记录

磁盘自动识别与挂载

Go 调用系统 API + 前端实时刷新

Windows 盘符、Linux mount 点、NAS 都测了三遍

文件全量操作

纯后端实现(上传下载流式 + 进度条)

大文件上传断点续传已搞定

多格式压缩解压

7z/tar 系统调用

Windows 下 7z 路径问题折腾了两天

回收站 + 批量恢复

删除标记 + 物理隔离目录

防止误删的救命稻草

任意目录打开终端

WebSocket + pty + xterm.js

这才是真·生产力工具

最爽的一点:随便点到一个目录 → 右键 → 「在此打开终端」,浏览器直接就是当前路径,pip install、git pull、bash run.sh 一把梭。

终端模块踩坑合集(血泪经验)

  1. Windows 下 pty 完全是另一套逻辑,最后 winpty + conpty 双保险
  2. 编码问题:Windows cmd → PowerShell → WSL 三种情况统一强转 UTF-8
  3. 长命令输出卡顿:改成分片推送 + 前端流式渲染才解决
  4. 权限继承:终端默认只能操作当前用户有权限看到的磁盘目录,防止越权

实测延迟(家 → 公司内网)

服务器:普通 EPYC 48 核机器 网络:家 200M 光纤 ↔ 公司内网 打开 PanelAI → 文件管理器 → 任意目录 → 打开终端 全链路延迟 800~950ms,基本感觉不到卡。

后面还想干的事(已立项)

  • 日志中心(结构化 + 可视化查询 + 告警)
  • 子服务器集群管理(一台主控管 N 台算力节点)
  • AI 项目一键市场(ComfyUI、Ollama、OpenWebUI 等直接拉)
  • 完整的 RBAC(精确到目录、项目、模型粒度)

最后说点真心话

这套东西从 0 开始写到现在,代码量 13w+ 行,每天都在修 bug、写单元测试、测兼容。 很多人说“这种后台一个月就搞定了”,我信,但大概率是“能跑就行”。 我想做的是“能扛几百上千个团队长期使用”的水平,这中间差的不是代码量,是无数细节的反复打磨。

目前还在闭关阶段,预计 2026 年上半年会开放小范围测试。 有对 Web 终端、跨平台文件管理、私有化部署 感兴趣的朋友,欢迎留言交流,后续会把每个模块的实现思路陆续开源出来。

纯技术分享,喜欢折腾后端的兄弟可以点个关注,后面还有更硬的干货。