feat: release OpsXShell 2.1.0 native Tauri edition

This commit is contained in:
Logan.Li committed 2026-07-30 23:32:51 +08:00
1 parent e9a0d21758
commit a3dba0c6ed
311 files changed
+31748 -14897

No files matched your search

+72 -126
View File
@@ -1,155 +1,101 @@
# OpsXShell GUI
# OpsXShell
跨平台 SSH/SFTP 终端工具 · 简洁高效 · 安全可靠
轻量原生的跨平台 SSH / SFTP 运维终端。产品目标是让常用远程操作更直接,不做审计平台,也不依赖插件才能完成基础工作。
## 功能特性
## 已支持
- 🔐 **SSH 终端** - 支持密码、密钥、SSH Agent 认证,XTerm.js 高性能终端
- 📁 **SFTP 文件管理** - 双栏可视化文件管理,拖拽上传下载,传输队列
- 🔄 **端口转发** - 本地/远程/动态 SOCKS5 代理
- 📑 **多标签页** - 类浏览器标签管理,连接池复用,会话恢复
- 🎨 **现代 UI** - 多主题系统 (Dark/Light/System),命令面板,命令片段库
- ⌨️ **快捷键自定义** - 可重映射所有快捷键,实时冲突检测
- 🛡️ **代理支持** - HTTP/SOCKS5 代理,按会话独立配置
- 🔒 **安全可靠** - AES-256-GCM 加密存储,PBKDF2 600K 迭代密钥派生
- 🌐 **跨平台** - 支持 Windows、macOS、Linux
- SSH 终端:密码、私钥、SSH Agent 自动尝试、主机指纹校验
- 会话管理:分组、标签、快速连接、多标签、终端分屏
- 批量命令:选中多个会话执行同一命令,结果仅保留在当前窗口
- SFTP:双栏文件管理、断点续传、完整后原子替换、重命名、权限、远程文本编辑
- 端口转发:本地、远程、动态 SOCKS5;规则可编辑和复制,与运行实例分离,支持真实启停和状态统计
- 连接代理:HTTP CONNECT、SOCKS5,可选用户名密码
- OpenSSH 配置:导入 `~/.ssh/config` 常用字段;界面支持单跳选择,Rust 后端支持最多 8 跳
- 系统链接:`ssh://user@host:port` 唤起已有或新启动的 OpsXShell,并进入预填充快速连接确认
- 本地终端与串口:系统 Shell、串口设备与波特率配置
- 终端 AI 助手:OpenAI/Responses/Anthropic 兼容 Provider、new-api 与 Ollama;支持建议、填入及经确认的当前 SSH 会话单次执行
- 本地安全:AES-256-GCM 加密会话密码、密钥口令和模型 API Key,不保存终端命令或 AI 对话历史
## 产品边界
OpsXShell 聚焦 SSH、SFTP、代理、转发、串口和多终端工作区。审计、录像、审批等堡垒机能力不在产品范围内。
当前仍需补齐的专业能力:
- Agent Forwarding、OpenSSH 证书与 FIDO2
- 断网重连、休眠恢复和大量标签切换的持续压测
- SFTP 内容校验和、显式冲突选择和任务恢复
- Windows 实机验收、自动更新、代码签名、macOS 公证和崩溃诊断
## 技术栈
| 层级 | 技术 |
|------|------|
| 框架 | Electron 28+ |
| 前端 | React 18 + TypeScript 5 |
| 构建 | Vite 5 |
| 状态管理 | Zustand 4.4+ |
| 样式 | Tailwind CSS 3.3+ |
| 终端 | XTerm.js 5.5+ |
| SSH/SFTP | ssh2 1.15+ |
| 图标 | Lucide React |
| 数据库 | sql.js (SQLite WASM) 1.11+ |
| 测试 | Vitest 4.1+ |
| 层级 | 技术 |
| ---------- | -------------------------------- |
| 桌面运行时 | Tauri 2 |
| 原生后端 | Rust 2021 |
| SSH / SFTP | `ssh2 0.9` / libssh2 |
| 本地终端 | `portable-pty 0.9` |
| 串口 | `serialport 4.8` |
| 前端 | React 18 + TypeScript 5 + Vite 5 |
| 状态管理 | Zustand 4.4+ |
| 终端 | XTerm.js 5.5+ |
| 测试 | Vitest + Rust test |
## 快速开始
会话和设置保存在系统应用数据目录的 `opsxshell-data.json`。主密钥固定保存在 `~/.opsxshsell/master.key`,Unix 权限为目录 `0700`、文件 `0600`。
### 环境要求
## 开发
- Node.js 18+
- npm 9+ 或 yarn 1.22+
- Git
### 安装
环境要求:Node.js 18+、npm 9+、Rust 1.77+。
```bash
# 安装依赖
npm install
# 启动开发服务器
npm run dev
# 构建应用
npm run build
# 打包分发
npm run dist
```
### 平台特定打包
常用检查与构建:
```bash
# Windows
npm run dist:win
# macOS
npm run dist:mac
# Linux
npm run dist:linux
npm run acceptance:quick
npm run acceptance:full
npm run build:tauri
```
## 项目结构
平台打包必须在对应系统执行。macOS 在 macOS 构建,Windows x86_64 在 Windows 构建。
## 目录
```text
src/ React 界面与状态管理
src/platform/ Tauri 命令和事件适配层
src/platform/sftp.ts 本地/远程路径强类型传输边界
src/utils/terminalPipeline.ts 终端输入、输出和背压管线
shared/types/ 前后端共享 TypeScript 契约
src-tauri/src/commands/ 精简的 Tauri 命令边界
src-tauri/src/domain/ 原生领域模型
src-tauri/src/services/ SSH、SFTP、隧道、PTY、串口、AI、存储服务
src-tauri/src/services/ssh/ 认证、known_hosts、代理/跳板和 SFTP 子模块
src-tauri/src/services/tunnel/ 转发运行模型、SOCKS5 协议和双向 Relay
test/ 前端测试与基础验收
scripts/ 构建和验收脚本
```
opsxshell-gui/
├── electron/ # Electron 主进程
│ ├── main.ts # 主进程入口
│ ├── preload.ts # 预加载脚本
│ └── tsconfig.json # 主进程 TS 配置
├── src/ # 渲染进程 (React)
│ ├── components/ # 组件
│ │ ├── Sidebar.tsx # 侧边栏
│ │ ├── TabBar.tsx # 标签栏
│ │ ├── TabContent.tsx # 标签内容
│ │ ├── StatusBar.tsx # 状态栏
│ │ ├── WelcomeView.tsx # 欢迎页面
│ │ ├── TerminalView.tsx # 终端视图
│ │ ├── SFTPView.tsx # SFTP 视图
│ │ ├── SettingsView.tsx # 设置视图
│ │ ├── SessionDialog.tsx # 会话对话框
│ │ └── QuickConnectDialog.tsx # 快速连接对话框
│ ├── stores/ # 状态管理
│ │ ├── tabStore.ts # 标签状态
│ │ └── connectionStore.ts # 连接状态
│ ├── App.tsx # 根组件
│ ├── main.tsx # 渲染入口
│ └── index.css # 全局样式
├── package.json # 项目配置
├── vite.config.ts # Vite 配置
├── tailwind.config.js # Tailwind 配置
└── tsconfig.json # TypeScript 配置
```
## 界面预览
📱 **在线预览**: [docs/ui-preview.html](./docs/ui-preview.html)
在浏览器中打开 `docs/ui-preview.html` 文件可查看高清界面预览(支持切换终端/SFTP视图):
### 终端视图
- 🎨 **深色主题** - 基于 Tailwind CSS 的现代化深色界面
- 📑 **标签页管理** - 悬停显示更多操作(`...`)和关闭(`×`)按钮
- 🖥️ **终端区域** - 清晰显示 SSH 连接状态和命令提示符
- 📊 **状态栏** - 实时显示连接状态、延迟和功能入口
### SFTP 双栏视图
- 📂 **双栏文件管理器** - 左侧本地目录,右侧远程服务器目录
- 🧭 **面包屑导航** - 清晰的路径导航和返回/前进按钮
- 📋 **文件列表** - 显示名称、修改时间、大小、类型/权限
- ⚡ **传输队列** - 实时显示上传/下载进度
- 🔍 **Filter/Actions** - 筛选和操作下拉菜单
> 提示:双击 HTML 文件即可在浏览器中查看完整效果,支持终端和 SFTP 视图切换。
## 快捷键
| 快捷键 | 功能 |
|--------|------|
| `Cmd/Ctrl + N` | 新建会话 |
| `Cmd/Ctrl + K` | 快速连接 |
| `Cmd/Ctrl + T` | 新建标签 |
| `Cmd/Ctrl + W` | 关闭标签 |
| `Cmd/Ctrl + Tab` | 切换标签 |
| `F11` | 全屏模式 |
| 快捷键 | 功能 |
| -------------------------- | -------------------- |
| `Cmd/Ctrl + N` | 新建会话 |
| `Cmd/Ctrl + K` | 快速连接 |
| `Cmd/Ctrl + D` | 终端分屏 |
| `Cmd/Ctrl + W` | 关闭标签 |
| `Cmd + Option + I` / `F12` | 开发构建打开调试工具 |
## 开发计划
## 文档
- [x] 基础项目框架
- [x] Electron 主进程
- [x] React 前端界面
- [x] 多标签页系统
- [x] 会话管理
- [x] SSH 连接集成 (node-ssh2)
- [x] 终端模拟器 (XTerm.js)
- [x] SFTP 文件传输
- [x] 端口转发
- [x] 数据持久化 (SQLite)
- [x] 架构模块化重构
- [ ] 智能命令补全
- [ ] 断点续传
- [使用指南](docs/user-guide.md)
- [架构说明](docs/architecture.md)
- [测试与验收](docs/testing-acceptance.md)
- [发布指南](docs/release.md)
## 许可证
MIT License - 开源免费使用
---
Made with ❤️ by OpsXShell Team
MIT