YAML 驱动任务流水线 × 多会话 SSH / SFTP 终端 × 本地 Shell
把构建、发布、联调、登舰运维收进同一个桌面港——任务与 Shell 并行,互不抢舵。
🌐 产品官网 · 📖 完整使用手册 · ⚡ 快速启航 · 🧭 核心能力 · ⬇️ 下载安装包
╔════════════════ FlashShell ════════════════╗
║ ║
config.yaml ────────►║ 任务模式 Shell 模式 ║◄──── SSH / SFTP / PTY
本地 & 远程混排 ║ 一键流水线 多 Tab · 分屏 · 广播 ║ 本机终端
║ 实时 ANSI 日志 SFTP · 监控 · 隧道 ║
║ ║
╚══════════════════ 同港出海 ═════════════════╝
FlashShell 是一款跨平台桌面 Shell 工作台。多会话 SSH / SFTP 是主业,YAML 任务流水线是边上的一键脚本:
| 传统做法 | FlashShell | |
|---|---|---|
| 发布脚本 | 散落各处的 shell / bat | YAML 编排,图形化一键执行 |
| 远程运维 | 另开 Xshell / iTerm | 内置多会话 Shell,Tab / 分屏 / 广播 |
| 文件传输 | 再开一个 SFTP 客户端 | 任务 upload + Shell 侧 SFTP 面板 |
| 配置管理 | 环境变量靠记忆 | 全局变量表 + ${KEY} 自动替换 |
| 任务与终端 | 二选一,来回切窗口 | 并行不互斥,左跑任务右登舰 |
远程会话、分屏、广播、SFTP 和隧道都在同一个窗口里;任务流水线需要时再开。
|
|
|
|
flowchart TB
subgraph UI["舰桥 · Vue 3 + Element Plus + xterm.js"]
Home["首页双区"]
Task["任务执行视图"]
Shell["Shell 工作区"]
Settings["设置中心"]
end
subgraph Bridge["Wails v2 绑定层 · app/"]
API["Go API + EventsEmit"]
end
subgraph Engine["引擎舱"]
Machine["machine/ · SSH · SFTP · PTY · 步骤执行"]
Data["data/ · YAML 配置 · 会话 · 导入"]
Proxy["netproxy/ · HTTP/SOCKS Dial"]
Crypto["crypto/ · 敏感字段加解密"]
end
Home --> API
Task --> API
Shell --> API
Settings --> API
API --> Machine
API --> Data
API --> Proxy
Data --> Crypto
Machine --> Proxy
| 层 | 技术选型 | 职责 |
|---|---|---|
| 桌面壳 | Go 1.23+ · Wails v2 | 原生窗口、系统 API、Go 并发 |
| 舰桥 UI | Vue 3 · Element Plus · Vite · xterm.js | 任务 / Shell 双模式界面 |
| 执行引擎 | SSH · SFTP · PTY · cmds/ |
本地命令、远程步骤、文件传输 |
| 数据层 | YAML · ~/.flashshell/ |
业务配置、机器、主题、快捷键 |
| 平台 | 状态 | 构建产物 |
|---|---|---|
| Windows | ✅ | FlashShell.exe / NSIS 安装包 |
| macOS | ✅ | FlashShell.app |
| Linux | ✅ | FlashShell 可执行文件 |
打 tag 发布时,GitHub Actions 自动构建多平台产物,命名格式:FlashShell-<tag>-<os>-<arch>.*
前往 Releases 下载对应平台安装包,解压即用。首次启动若当前目录无 config.yaml,会自动生成示例业务配置。
环境要求: Go 1.23+ · Node.js 16+(推荐 20)· Wails CLI v2
# 安装 Wails CLI
go install github.com/wailsapp/wails/v2/cmd/wails@latest
# 克隆 & 依赖
git clone https://github.com/ZengLiangl/FlashShell.git
cd FlashShell
cd frontend && npm install && cd ..
go mod tidy
# 开发(热重载)/ 发布构建
wails dev
wails build构建产物位于 build/bin/(macOS 为 FlashShell.app)。
~/.flashshell/
├── global_config.yaml # 机器、主题、代理、环境变量…
├── shortcuts.json # 快捷键绑定
├── shell_history.json # Shell 连接历史
└── known_hosts.json # SSH Host Key 信任库
FlashShell 采用业务与全局双层配置,职责清晰、互不覆盖:
| 配置 | 路径 | 作用 |
|---|---|---|
| 业务配置 | config.yaml(可多文件切换) |
项目、子项目、命令流水线 |
| 全局配置 | ~/.flashshell/global_config.yaml |
窗口、机器清单、主题、代理、workPaths |
| 快捷键 | ~/.flashshell/shortcuts.json |
系统级快捷键自定义 |
业务配置中的 ${KEY} 由全局 workPaths 环境变量表替换。全局配置仅在文件不存在时写入默认值,不会覆盖已有内容。
详细操作说明见 USAGE.md。
FlashShell/
├── app/ # Wails 绑定:菜单、事件、API 编排
├── data/ # 配置读写、会话、快捷键、会话导入
├── define/ # 领域类型与跨包契约
├── machine/ # 本地命令、SSH、SFTP、PTY、步骤执行
├── cmds/ # 远程特殊命令(upload、targz、chdir)
├── netproxy/ # HTTP/SOCKS 代理与统一 Dial
├── crypto/ # 敏感信息加解密
├── frontend/ # Vue 3 舰桥 UI(wailsjs/ 为生成绑定)
└── main.go # Wails 启动入口
① 机器入港 ② 变量就绪 ③ YAML 编排 ④ 出航
系统设置添加服务器 → 配置 WORKSPACE 等 → 编辑 config.yaml → 任务一键执行 / Shell 登舰
- 系统设置 → 机器配置:添加服务器,测试连接,可选导入 Xshell / FinalShell
- 环境变量:配置
WORKSPACE、PROJECT_ROOT等工作路径 - 业务配置:定义 Project / SubProject / Command 流水线
- 首页:进入任务模式执行流水线,或进入 Shell 模式交互运维
- 快捷键:按习惯改绑,保存即生效
wails dev # 开发模式(热重载)
wails build # 发布构建
go test ./... # 运行测试
go fmt ./... && go vet ./... # 格式化 & 静态检查| 参数 | 说明 |
|---|---|
-reg=desk |
前台运行(默认) |
-reg=back |
后台守护进程 |
后台模式日志:/tmp/FlashShell.out、/tmp/FlashShell.err。
| 现象 | 排查建议 |
|---|---|
| Wails 构建失败 | 更新 Wails CLI;确认 Go / Node 版本满足要求 |
| SSH 连接失败 | 设置中心「测试连接」;检查密钥权限(chmod 600)与网络 |
| 全局配置被改写 | 用户数据在 ~/.flashshell/global_config.yaml,非业务 config.yaml |
| 配置不生效 | 顶部配置文件菜单 → 刷新;或切换配置文件后重载 |
| 快捷键不生效 | 系统设置 → 快捷键保存后重试;输入框聚焦时默认不抢快捷键 |
| 代理不生效 | 系统设置 → HTTP 代理 → 启用手动模式并测试连通性 |
更多场景见 USAGE.md · 故障排除。
MIT License — 自由使用、修改与分发。
FlashShell — 把会话留在一个窗口里,把时间留给真正要敲的命令。