# tShellDesktop
**Repository Path**: running_tortoise/t-shell-desktop
## Basic Information
- **Project Name**: tShellDesktop
- **Description**: 一个现代化的 SSH 终端管理工具,类似于 XShell。
- **Primary Language**: TypeScript
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 1
- **Created**: 2026-09-04
- **Last Updated**: 2026-09-10
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
tShell
现代化的 SSH 终端 · 为效率而生
将 SSH 多标签终端、SFTP 双栏传输、远程目录编辑器 与 AI 助手 融为一体,
凭据经 AES-256-GCM 加密后只存在你自己的电脑里。
官网 ·
Gitee ·
下载安装包
---
## 产品展示
工作台卡片管理连接,终端与 SFTP 可同屏协作:

双栏文件管理器,拖拽上传下载,右键即可改权限、压缩、用编辑器打开:

基于 Monaco 的远程目录编辑器,文件树 + 多标签 + 搜索替换,`Ctrl+S` 直接落盘:

界面主题、终端配色、SFTP 停靠位置均可在设置中调整:

---
## 功能特性
### SSH 终端
- 基于 xterm.js 的高性能终端,完整 UTF-8 / 链接识别 / 搜索高亮
- 多标签并行,支持分屏;彩色提示符跟随当前配色方案
- 密码认证与 RSA / ED25519 私钥文件认证
- 跳板机 ProxyJump,多级链路一次配置
- 断线自动重连、连接保活,网络抖动后会话可恢复
- 会话日志自动落盘,便于回溯与审计
- 快捷命令一键发送,命令历史可复用
- 一条命令同时下发多台主机(批量执行)
### SFTP 文件管理
- Windows 资源管理器风格的本地 / 远程双栏浏览
- 与当前 SSH 会话共用同一条连接,无需二次登录
- 拖拽传输、文件搜索、权限编辑、压缩解压
- 面板可停靠到终端上 / 下 / 左 / 右,也可拖出为独立窗口
- 标题栏「工具 → SFTP」可单独打开文件管理窗口
### 远程目录编辑器
- 类 VS Code 布局:文件树、多标签、状态栏、命令盘
- 语法高亮,按扩展名自动识别语言
- 工作区搜索(grep)与文内查找 / 替换
- `Ctrl+S` 保存到远程,支持另存为、新建文件 / 文件夹
- 后台预取目录结构,展开即可编辑
### AI 助手
直连 OpenAI 兼容接口,支持 [OpenAI](https://api.openai.com)、[DeepSeek](https://api.deepseek.com)、[Ollama](https://ollama.com) 本地模型。API Key 只保存在本机。
| 模式 | 说明 |
|------|------|
| **Ask** | 选中终端输出直接提问,解释报错、补全命令 |
| **Agent** | 生成命令,确认后再写入终端执行 |
| **Plan** | 复杂运维任务先出结构化计划,分步确认再落地 |
### 连接与工作台
- 连接卡片 / 分组管理,最近连接快速回访
- 工作台一览多台主机,适合批量运维场景
- 可选桌面窗口模式,用窗口化方式同时打开终端与文件管理器
### 安全
- 密码与私钥:AES-256-GCM 加密存储
- 密钥派生:PBKDF2(100,000 次迭代)
- 全部数据在本地 SQLite,无云端同步、无遥测上报
- 支持离线使用
---
## 主题
**界面主题**与**终端配色**分开配置,互不影响。
终端配色(8 套):Tokyo Night(默认)、Dracula、Monokai、Nord、One Dark、Gruvbox Dark、Solarized Dark、Catppuccin Mocha。
界面主题另含 GitHub Light / Dark、Solarized Light、Catppuccin Latte、Rosé Pine、Ayu Dark、Material Ocean 等。设置里可单独调节界面字体缩放(终端字号不受影响)。
---
## 下载
前往官网获取安装包:**[https://shell.imman.cn/](https://shell.imman.cn/)**
| 平台 | 包格式 | 说明 |
|------|--------|------|
| Windows 10 / 11(64 位) | `.exe`(NSIS) | 可自定义安装目录 |
| macOS 10.15+(Apple Silicon) | `.dmg` | 拖入「应用程序」即可 |
| Linux | AppImage | 官网提供下载入口 |
免费开源,MIT 协议,可个人与商业使用。
---
## 快速开始(源码)
### 环境要求
- Node.js >= 18
- npm >= 9
### 安装与运行
```bash
git clone https://gitee.com/running_tortoise/t-shell-terminal.git
cd t-shell-terminal
npm install
```
仅预览前端:
```bash
npm run dev
```
启动 Electron 开发模式(完整桌面端):
```bash
npm run electron:dev
```
打包安装包(输出到 `release/`):
```bash
npm run electron:build
```
可选:复制 `env.example` 为 `.env`。当前客户端以本地模式运行,不依赖云端登录;`.env` 中的 API 地址仅用于可选的模型目录刷新。
---
## 技术栈
| 层级 | 技术 |
|------|------|
| 桌面框架 | Electron 29 |
| 渲染进程 | Vue 3 + TypeScript + Tailwind CSS + Pinia + Vue Router 4 |
| 终端 | xterm.js 5 |
| 编辑器 | Monaco Editor |
| SSH / SFTP | ssh2 |
| 本地存储 | SQLite(better-sqlite3) |
---
## 项目结构
采用主进程 / 渲染进程分离,渲染侧按功能拆模块:
```
tShell/
├── src/
│ ├── main/ # Electron 主进程
│ │ ├── index.ts # 入口、窗口与 IPC
│ │ ├── preload.ts # 预加载,暴露安全 API
│ │ ├── ssh-manager.ts # SSH 连接 / 通道
│ │ ├── sftp-manager.ts # SFTP 文件操作
│ │ ├── folder-editor-prefetch.ts
│ │ ├── database.ts # SQLite
│ │ ├── crypto.ts # AES-256-GCM
│ │ ├── session-logger.ts # 会话日志
│ │ └── batch-executor.ts # 批量执行
│ ├── renderer/
│ │ ├── modules/
│ │ │ ├── terminal/ # SSH 终端
│ │ │ ├── sftp/ # 双栏 SFTP
│ │ │ ├── folder-editor/ # 远程目录编辑器
│ │ │ ├── ai/ # AI 助手(本地直连)
│ │ │ ├── connection/ # 连接、分组、快捷命令、批量执行
│ │ │ └── auth/ # 认证存根(纯本地运行)
│ │ ├── shared/ # 公共组件、Store、主题
│ │ ├── views/ # 主窗口 / 独立终端 / SFTP / 编辑器窗口
│ │ └── router/
│ └── shared/ # 主进程与渲染进程共享类型、主题
├── docs/ # 架构、桌面模块、接口文档
├── image/ # 本仓库介绍截图
├── website/ # 官网静态页
├── public/ # 静态资源
└── release/ # 打包输出
```
更细的模块边界、IPC 通道与扩展约定见 [docs/架构说明/架构文档.md](./docs/架构说明/架构文档.md)。
---
## 常用快捷键
### 全局
| 快捷键 | 功能 |
|--------|------|
| `Ctrl + N` | 新建连接 |
| `Ctrl + T` | 打开工作台标签 |
| `Ctrl + W` | 关闭当前标签 |
| `Ctrl + Tab` / `Ctrl + Shift + Tab` | 下一个 / 上一个标签 |
| `Ctrl + ,` | 打开设置 |
| `Ctrl + +` / `Ctrl + -` / `Ctrl + 0` | 界面字体放大 / 缩小 / 重置 |
| `F11` | 全屏 |
### 终端
| 快捷键 | 功能 |
|--------|------|
| `Ctrl + Shift + C` / `V` / `A` | 复制 / 粘贴 / 全选 |
| `Ctrl + F` | 搜索终端内容 |
| `Ctrl + L` | 清屏 |
| `Ctrl + Shift + S` | 打开或关闭当前会话的 SFTP 面板 |
| `Ctrl + Shift + L` | 将选中内容加入 AI 对话 |
### 远程编辑器
| 快捷键 | 功能 |
|--------|------|
| `Ctrl + S` | 保存到远程 |
| `Ctrl + W` | 关闭标签 |
| `Ctrl + F` / `Ctrl + H` | 文内查找 / 替换 |
| `Ctrl + Shift + F` | 工作区搜索 |
| `Ctrl + Shift + P` | 命令盘 |
---
## 文档
| 文档 | 内容 |
|------|------|
| [架构文档](./docs/架构说明/架构文档.md) | 模块划分、目录、IPC、安全 |
| [本地 AI](./docs/架构说明/本地AI.md) | Ask / Agent / Plan 与接口配置 |
| [桌面模块](./docs/desktop/README.md) | 窗口化桌面、文件管理器、应用系统 |
| [用户指南](./docs/desktop/用户指南.md) | 桌面操作、快捷键、个性化 |
---
## 参与贡献
欢迎 Issue 与 Pull Request。建议改动前先阅读架构文档,按现有模块目录新增功能,避免把逻辑堆进主进程入口或根组件。
仓库地址:
---
## 许可证
[MIT](./LICENSE) © 2026 奔跑的乌龟
官网:[https://shell.imman.cn/](https://shell.imman.cn/)