# shell-go **Repository Path**: zhReimu/shell-go ## Basic Information - **Project Name**: shell-go - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-06-30 - **Last Updated**: 2026-07-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ShellGo 基于 **Go + Wails v2 + Vue 3 + xterm.js** 的跨平台 SSH 终端工具,集成文件管理、Docker 管理、SSH 隧道等功能。 ## 功能特性 ### SSH 连接管理 - 支持密码、私钥、SSH Agent 三种认证方式 - 连接配置按分组归类,持久化到 localStorage - 多连接同时在线,标签页切换 - 连接异常断开自动恢复 UI 状态(keepalive 失败后自动清理,避免需重启 app) ### 交互式终端 - 基于 xterm.js 的全功能终端仿真,支持 256 色和 Unicode - 终端窗口自适应大小,链接可点击跳转 - 容器 exec 终端(`docker exec -it` 进入容器) ### SSH 隧道 - 本地端口转发(SSH 隧道) - 可视化管理隧道列表,实时显示运行状态 - 一键创建和关闭(关闭前二次确认) ### 服务端文件管理 - 浏览服务端目录结构,文件/目录的创建、删除、重命名 - 路径书签(按会话隔离,一键收藏/跳转常用目录) - Monaco Editor 在线编辑远程文件(自动语言高亮、Ctrl+S 保存) - **文件预览**(双击文件自动选择预览器或编辑器): - 图片:支持缩放、Ctrl+滚轮、EXIF 信息侧边栏 - PDF:浏览器内置 PDF 查看器 - 视频/音频:内置播放器 - Markdown:源码/预览/分屏三模式,GFM 语法、代码高亮、Mermaid 图表 - 二进制文件:显示文件信息 + 下载按钮 - 文本文件:Monaco 编辑器打开 - SFTP 文件上传/下载,实时传输进度显示 - **打包压缩**:支持 tar / tar.gz / tar.bz2 / zip 格式 - **执行脚本**:右键 `.sh` / `.bash` / `.py` 文件 → 在新 tab 中执行 - **比较差异**:多选 2 个文件 → 右键"比较差异",Monaco 双编辑器并排渲染 - 三层差异高亮(整行背景 + glyph margin +/- 标记 + 行内字符级高亮) - 对齐滚动联动(基于行映射,变更段内按比例插值) - 上一个 / 下一个差异跳转(带当前差异高亮标识) - 收起未变更片段(头/中/尾 三类未变更段都参与折叠,参考 IntelliJ IDEA) - 波浪线提示 `~~~ ▼ N 行未变更 · 点击展开 ~~~`,点击展开该段(不影响其他段) - 展开后保留紧凑"折叠 N 行"按钮,可再次点击折叠回去(双向切换) - 上下文行数:变更前后各保留 3 行 - **拖拽操作**(参考 Windows 资源管理器): - 直接拖动 = 移动,Ctrl/Cmd + 拖动 = 复制 - 复制时按 Windows 风格命名(`shell-go.exe` → `shell-go - 副本.exe`) - 流式复制进度对话框,支持随时取消(取消后已复制文件保留) - **压缩包预览**:双击压缩包自动打开预览器,支持内嵌预览和解压 ### Docker 管理 - 通过 Docker Engine API(经 SSH 通道直连远程 Docker socket)通信 - **容器**:列表、启动、停止、重启、删除、暂停、恢复 - 详情页(概览、资源、日志、JSON) - CPU/内存实时监控(ECharts 图表) - 日志实时跟随(`docker logs -f` 体验,流式推送) - 日志支持 **时间过滤**(kibana 风格下拉菜单:快捷选项 + 自定义 since/until,支持相对时间如 "42m") - 日志支持 **断开连接**(只看当前数据,刷新可重连) - 日志支持 **导出 TXT / JSON**(分块生成避免主线程卡顿,底部状态栏展示进度,支持 AbortController 取消) - 日志 **自动识别多格式时间戳**(ISO 8601 / NestJS `07/08/2026, 9:58:50 AM` / Go standard `2009/11/10 23:00:00` / syslog `Jan 12 10:23:45` / 带方括号 `[2026-07-08 09:58:50]` / 纯时间 `09:58:50`),导出 JSON 时 timestamp 字段不再为空 - 日志关键字搜索(保留原始颜色高亮、区分大小写、上下文行) - 日志行**时间戳 / 级别标签 / JSON 折叠按钮可配置**(首选项 → Docker 日志,默认关闭时间戳展示、开启级别展示、开启 JSON 折叠按钮) - 容器文件管理 - **镜像**:拉取、删除、标记、推送、构建 - **网络**:创建、删除 - **卷**:创建、删除 - **Compose**:Up/Down/Ps/Logs/Restart/Pull - Logs 支持 **行数 + 时间过滤**(since/until,弹窗设置) - **系统**:Info / 版本 / 磁盘使用 / 清理资源 - 清理结果**结构化展示**(解析 JSON 按资源类型分组:镜像/容器/网络/卷/构建缓存, 显示每类删除数量、回收空间、已删除项列表,附 Untagged/Deleted 标签) ### 文件管理 - 浏览服务端目录结构,文件/目录的创建、删除、重命名 - **智能复制命名**:复制/粘贴文件时,目标目录无同名则用原名,有同名才加"副本"后缀 - **复制进度**:通过底部状态栏展示(与上传/下载一致),不再弹对话框 - 路径书签(按会话隔离,一键收藏/跳转常用目录) - Monaco Editor 在线编辑远程文件(自动语言高亮、Ctrl+S 保存) - **文件预览**(双击文件自动选择预览器或编辑器): - 图片:支持缩放、Ctrl+滚轮、EXIF 信息侧边栏 - PDF:浏览器内置 PDF 查看器 - 视频/音频:内置播放器 - Markdown:源码/预览/分屏三模式,GFM 语法、代码高亮、Mermaid 图表 - 二进制文件:显示文件信息 + 下载按钮 - 文本文件:Monaco 编辑器打开 - SFTP 文件上传/下载,实时传输进度显示 - **打包压缩**:支持 tar / tar.gz / tar.bz2 / zip 格式 - **执行脚本**:右键 `.sh` / `.bash` / `.py` 文件 → 在新 tab 中执行 - **比较差异**:多选 2 个文件 → 右键"比较差异",Monaco 双编辑器并排渲染 - 三层差异高亮(整行背景 + glyph margin +/- 标记 + 行内字符级高亮) - 对齐滚动联动(基于行映射,变更段内按比例插值) - 上一个 / 下一个差异跳转(带当前差异高亮标识) - 收起未变更片段(头/中/尾 三类未变更段都参与折叠,参考 IntelliJ IDEA) - 波浪线提示 `~~~ ▼ N 行未变更 · 点击展开 ~~~`,点击展开该段(不影响其他段) - 展开后保留紧凑"折叠 N 行"按钮,可再次点击折叠回去(双向切换) - 上下文行数:变更前后各保留 3 行 - **拖拽操作**(参考 Windows 资源管理器): - 直接拖动 = 移动,Ctrl/Cmd + 拖动 = 复制 - 复制时按 Windows 风格命名(`shell-go.exe` → `shell-go - 副本.exe`) - 流式复制进度对话框,支持随时取消(取消后已复制文件保留) - **压缩包预览**:双击压缩包自动打开预览器,支持内嵌预览和解压 ### 界面 - 现代开发者工具风格(参考 Docker Desktop / Warp / Raycast / Linear) - 蓝白主色 + 柔和语义色(成功绿 / 警告黄 / 错误红) - 浏览器风格标签栏(`+` 按钮、tab 分隔符、常驻关闭按钮、鼠标中键关闭) - 首页标签页(连接列表、新建连接、新建终端) - 右键菜单智能定位(参考 Windows 资源管理器,向上弹时鼠标靠近菜单底部) - 服务器状态面板(CPU/内存/磁盘/网络图表,磁盘容量与读写合并展示) ## 技术栈 | 层级 | 技术 | |------|------| | 桌面框架 | Wails v2.12 | | 后端语言 | Go 1.26 | | 前端框架 | Vue 3 + TypeScript | | 构建工具 | Vite 3 | | 终端仿真 | @xterm/xterm 6 | | 状态管理 | Pinia | | 图表 | ECharts 6 | | 代码编辑器 | Monaco Editor | | SSH 库 | golang.org/x/crypto/ssh | | SFTP 库 | github.com/pkg/sftp | | Docker SDK | github.com/docker/docker/client | | 图标 | Material Design Icons | ## 快速开始 ```bash # 安装 go-task go install github.com/go-task/task/v3/cmd/task@latest # 构建 Wails 桌面应用(当前平台) task build # 启动开发模式(热重载) task dev # 代码检查(fmt + vet + modernize) task lint ``` ### 可用任务 | 任务 | 说明 | |------|------| | `task build` | 构建 Wails 桌面应用(当前平台) | | `task build-all` | 构建 Wails 桌面应用(所有平台) | | `task release` | 构建 Release 版本(当前平台 + UPX 压缩) | | `task release-all` | 构建 Release 版本(所有平台 + UPX 压缩) | | `task dev` | 启动 Wails 开发模式 | | `task generate` | 重新生成 Wails 前端绑定 | | `task lint` | 代码检查(fmt + vet + modernize) | | `task test` | 运行 Go 测试 | | `task clean` | 清理构建产物 | > `release` / `release-all` 任务需要预先安装 UPX(`apt install upx` / `brew install upx` / `scoop install upx`),未安装时任务会报错并给出安装指引。 ## 开发环境要求 - Go 1.26+ - Node.js 18+ - [go-task](https://taskfile.dev/) v3+ - Wails CLI v2(`go install github.com/wailsapp/wails/v2/cmd/wails@latest`) - Linux 构建:GTK3、WebKit2GTK ## 设计文档 - [设计规范](docs/design-system.md):颜色、排版、间距、图标、布局、对话框、动画等 14 章规范 - [架构设计](docs/architecture.md):DDD 分层架构、代码组织约定、关键实现细节