# rshell **Repository Path**: jack_zang/rshell ## Basic Information - **Project Name**: rshell - **Description**: 一个开源的 ssh + sftp 功能的终端工具。 - **Primary Language**: Rust - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-29 - **Last Updated**: 2026-06-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # RShell - 高性能终端管理工具 RShell 是一款基于 Tauri 2 + Vue 3 + Rust 开发的高性能 SSH 终端管理工具,支持 WASM 插件扩展。 ## 特性 - **多标签页管理**:支持最多 32 个并发标签页,快捷键快速切换 - **分屏面板**:支持终端面板水平/垂直分屏,灵活布局 - **SSH 双认证**:支持密码和 SSH 私钥(RSA、Ed25519、ECDSA)两种认证方式 - **完整终端渲染**:基于 xterm.js,支持 VT100 转义序列、256 色、TrueColor、CJK 字符 - **SFTP 文件传输**:远程目录浏览、文件上传下载、拖拽支持、进度显示 - **AI 助手面板**:集成 AI 聊天面板,辅助终端操作 - **常用命令面板**:快速执行常用命令,提高效率 - **会话持久化**:本地加密存储会话配置(AES-256-GCM + Argon2),启动即可快速连接 - **插件系统**:支持 WASM 插件热加载,内置插件商城 - **主题切换**:深色/浅色主题、终端配色方案自定义 - **右键菜单**:上下文菜单,常用操作一键触达 - **高性能**:异步 I/O 架构(Tokio),冷启动 < 500ms ## 构建 ### 环境要求 - Rust 1.75+(推荐使用 rustup 安装) - Node.js 18+ - 支持平台:Windows(NSIS 安装包)、macOS(DMG)、Linux ### 编译步骤 ```bash # 安装前端依赖 npm install # 开发模式(热重载) npm run tauri:dev # 生产构建 npm run tauri:build ``` ### 运行测试 ```bash cargo test --workspace ``` ## 项目结构 ``` rshell/ ├── src/ # 前端 Vue 3 源码 │ ├── App.vue # 根组件,主布局与全局状态 │ ├── main.ts # 前端入口 │ ├── tools/ │ │ └── termColorSchemes.ts # 终端配色方案定义 │ └── components/ # UI 组件 │ ├── MenuBar.vue # 菜单栏 │ ├── TabBar.vue # 标签页栏 │ ├── Sidebar.vue # 左侧会话列表 │ ├── ToolBar.vue # 工具栏 │ ├── AddressBar.vue # 地址栏 │ ├── StatusBar.vue # 状态栏 │ ├── TerminalView.vue # xterm.js 终端渲染 │ ├── PaneNode.vue # 分屏面板节点 │ ├── SftpPanel.vue # SFTP 文件管理面板 │ ├── AiChatPane.vue # AI 助手聊天面板 │ ├── FrequentCommandsPane.vue # 常用命令面板 │ ├── PluginPanel.vue # 插件面板容器 │ ├── FloatingPlugin.vue # 浮动插件窗口 │ ├── PluginStoreDialog.vue # 插件商城对话框 │ ├── SessionDialog.vue # 会话连接对话框 │ ├── AuthPromptDialog.vue # 认证提示对话框 │ ├── SettingsDialog.vue # 设置面板(含插件管理) │ └── ContextMenu.vue # 右键上下文菜单 ├── src-tauri/ # Tauri 后端 │ ├── src/ │ │ ├── main.rs # Tauri 应用入口 │ │ └── commands.rs # 所有 Tauri 命令(SSH/SFTP/插件等) │ ├── capabilities/ │ │ └── default.json # Tauri 权限配置 │ ├── icons/ # 应用图标 │ └── tauri.conf.json # Tauri 配置 ├── crates/ # Rust 核心库 │ ├── rshell-core/ # 核心层 │ │ └── src/ │ │ ├── session/ # 会话配置、加密存储、凭据管理 │ │ ├── terminal/ # 终端缓冲区、单元格、光标、VT 解析器 │ │ ├── types.rs # 公共类型定义 │ │ └── utils.rs # 工具函数 │ ├── rshell-net/ # 网络层 │ │ └── src/ │ │ ├── ssh/ # SSH 客户端、认证、通道管理 │ │ ├── sftp/ # SFTP 客户端、文件传输 │ │ └── pool.rs # 连接池 │ ├── rshell-plugin/ # 插件宿主 │ │ └── src/ │ │ ├── host.rs # WASM 加载与生命周期管理 │ │ ├── manifest.rs # 插件清单解析 │ │ └── error.rs # 插件错误类型 │ ├── rshell-plugin-api/ # 插件 ABI 接口(供插件开发者使用) │ │ └── src/ │ │ ├── types.rs # 插件接口类型 │ │ └── macros.rs # 插件开发宏 │ ├── rshell-plugins-builtin/ # 内置插件实现 │ │ └── src/ │ │ ├── command_quickref.rs # 命令速查 │ │ ├── terminal_highlight.rs # 终端高亮 │ │ └── connection_health.rs # 连接健康检测 │ ├── rshell-ui/ # TUI 界面层(ratatui) │ │ └── src/ │ │ ├── app.rs # 应用主循环 │ │ ├── dialogs/ # 对话框(连接、确认) │ │ ├── tabs/ # 标签页管理 │ │ ├── terminal/ # 终端渲染器 │ │ ├── sftp/ # SFTP 视图 │ │ └── theme/ # 主题引擎与配色 │ └── rshell-app/ # 可执行文件入口 │ └── src/main.rs ├── plugins/ # WASM 插件源码及商城目录 │ ├── index.json # 插件商城目录 │ ├── command-quickref/ # 命令速查插件 │ ├── terminal-highlight/ # 终端高亮插件 │ └── connection-health/ # 连接健康检测插件 ├── tests/ │ └── integration/ # 集成测试 ├── scripts/ # 构建/测试脚本 │ ├── build-plugins.ps1 # 插件构建脚本 │ ├── test-local-shell-source.mjs │ ├── test-right-panes.mjs │ ├── test-session-folders.mjs │ └── test-split-pane.mjs ├── Cargo.toml # Rust workspace 根配置 ├── package.json # 前端依赖配置 ├── vite.config.ts # Vite 构建配置 ├── tsconfig.json # TypeScript 配置 └── index.html # HTML 入口 ``` ## 技术栈 | 层级 | 技术 | |------|------| | 桌面框架 | Tauri 2 | | 前端 | Vue 3 + TypeScript + Vite 5 | | 终端渲染 | xterm.js (@xterm/xterm 5) | | 后端 | Rust (Tokio 异步运行时) | | SSH 协议 | russh / russh-keys | | SFTP | russh-sftp | | 终端解析 | vte 0.13 | | TUI | ratatui + crossterm | | 加密 | AES-256-GCM + Argon2 | | 插件 | WASM 沙箱 | ## 使用说明 ### 快捷键 | 快捷键 | 功能 | |--------|------| | Ctrl+T | 新建标签页 | | Ctrl+Tab | 切换到下一个标签页 | | Ctrl+Shift+Tab | 切换到上一个标签页 | | Ctrl+1~9 | 切换到对应序号标签页 | ### 会话管理 启动后可通过连接对话框输入主机地址、端口、用户名和认证方式建立 SSH 连接。已保存的会话配置会在启动时自动加载,会话凭据使用 AES-256-GCM 加密存储。 ### 文件传输 在已连接的标签页中可打开 SFTP 视图,浏览远程目录并进行文件上传/下载操作,支持拖拽传输和进度显示。 ### 插件系统 通过「设置 → 插件」可管理已安装插件,或从插件商城安装新插件。插件以 WASM 格式运行在沙箱中,确保安全性。 ## 许可证 本项目采用 [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0) 许可证,详见 [LICENSE](LICENSE) 文件。