首页
/ Tabby 全解析:跨平台终端模拟、SSH 客户端与串口终端的功能实现指南

Tabby 全解析:跨平台终端模拟、SSH 客户端与串口终端的功能实现指南

2026-09-03 15:34:29作者:宗隆裙

Tabby(前身为 Terminus)是一个面向 Windows、macOS 和 Linux 的终端模拟器,内置 SSH/Telnet 客户端与串口终端能力,以"插件化 monorepo + Electron"为技术底座。本文基于项目官方 README(西班牙语版本,见 README.es-ES.md)逐节展开其功能定位、终端特性、SSH 客户端、串口终端、便携模式与插件/主题体系,并结合仓库内各子包源码(如 tabby-sshtabby-serialtabby-terminalapp/lib/portable.ts)给出可验证的实现佐证,帮助读者建立从功能到源码的完整认知。

Tabby 终端界面截图

Tabby SSH 配置界面截图

一、Tabby 是什么:定位与能力总览

官方文档对 Tabby 的定位非常明确:

  • Tabby 是:Windows 自带终端(cmd/PowerShell ISE)、PuTTY、macOS Terminal.app、iTerm 的替代方案;
  • Tabby 不是:一个新的 shell,也不是 MinGW 或 Cygwin 的替代品。它也不追求轻量——如果 RAM 占用是硬指标,官方建议考虑 ConEmu 或 Alacritty 这类更轻的工具。

README 列出的核心能力清单如下,每一项都能在当前仓库中找到对应的代码包:

README 中的能力 仓库内实现位置
集成的 SSH/Telnet 客户端与连接管理 tabby-sshtabby-telnet
内置串口终端 tabby-serial
配色方案与主题 tabby-community-color-schemestabby-core/src/theme.ts
全量可配置、多键位快捷键 tabby-core/src/hotkeys.tstabby-settings
分屏面板 tabby-core/src/components/splitTab.component.ts
记住上次的标签页(会话恢复) tabby-core/src/services/tabRecovery.service.ts
PowerShell(含 PS Core)、WSL、Git-Bash、Cygwin、MSYS2、Cmder、CMD 支持 tabby-electron/src/shells
通过 Zmodem 从 SSH 会话直接传文件 依赖 zmodem.js(见 tabby-terminal/patches/zmodem.js+0.1.10.patch
完整 Unicode 支持,包括全角(双宽)字符 渲染层由 xterm 前端提供,见 tabby-terminal/src/frontends
内置加密容器(Vault)存放 SSH 密钥与配置 tabby-core/src/services/vault.service.ts
Web 版 SSH/SFTP/Telnet 客户端 tab/tabby-web

从源码结构看,整个项目是一个 monorepo:根 package.json 中声明了 Electron 38、Angular 15、TypeScript 与 Webpack 工具链;HACKING.md 也说明了这一点——"Tabby 是一个 Electron 应用,前端使用 TypeScript + Angular 编写,通过 Webpack 构建"。子包划分与 HACKING.md 中"Project layout"一节一致:tabby-core 提供基础 UI 与标签管理,tabby-terminal 提供终端标签页,tabby-local 提供本地 shell 与配置项,tabby-electron 封装 Electron 平台能力,tabby-plugin-manager 负责插件安装,tabby-settings 提供设置界面。

二、终端特性(Terminal Features)

README 在"Características de Terminal"一节列出 10 项终端能力,下面逐条对照仓库源码说明其实现位置:

理解这些特性的关键入口是 BaseSession 的中间件栈机制:tabby-terminal/src/session.ts 中,BaseSession 构造时向 SessionMiddlewareStack 压入 OSCProcessor,会话输出经 middleware.feedFromSession(data) 逐层处理后才渲染到终端,登录脚本(login scripts)也可以通过 setLoginScriptsOptions 动态挂入/替换中间件。README 中"登录脚本(Scripts de inicio de sesión)"特性在 tabby-terminal/src/components/loginScriptsSettings.component.pug 中有对应的配置界面。

三、SSH 客户端(Cliente SSH)

README 对 SSH 客户端的描述是五个要点:SSH2 客户端 + 连接管理器、X11 与端口转发、跳板机自动处理、agent 转发(含 GnuPG pageant 与 Windows 原生 OpenSSH agent)、登录脚本。仓库中 tabby-ssh 子包逐一印证了这些能力:

四、串口终端(Terminal Serie)

README 列出的串口能力是:保存的连接、类行读取输入、逐字节十六进制输入与可选 hexdump 输出、换行符转换、自动重连。对应实现集中在 tabby-serial 子包:

五、便携模式(Portable)

README 中的便携模式说明很短,但很具体:只要在 Tabby.exe 所在目录创建一个名为 data 的文件夹,Tabby 就以便携应用方式运行(配置、密钥等用户数据全部落在该目录,不写入系统用户目录)。

这条行为的完整实现就在 app/lib/portable.ts,全文仅 11 行,逻辑清晰:

  1. 通过 electron.app.getPath('exe') 拿到可执行文件所在目录;
  2. 检查该目录下是否存在 data 子目录;
  3. 若存在,则调用 app.setPath('userData', portableData) 把 Electron 的用户数据路径整体重定向到 data 目录(源码第 5-11 行,并打印 reset user data to ... 日志)。

也就是说,便携模式本质上是一个"启动时检测 + 用户数据路径重定向"机制,判断时机在应用启动最早期(app/lib 主进程代码),因此后续所有依赖 userData 路径的配置、密钥、插件目录都会自动落进便携目录。

六、插件与主题体系(Plugins y Temas)

README 指出:插件与主题可以直接在 Tabby 的"设置"视图中安装,并列举了社区插件清单(docker 容器连接、title-control、quick-cmds、save-output、sync-config、workspace-manager、sftp-tab、mcp-server 等)以及主题清单(hype、relaxed、gruvbox、windows10、altair 等)。仓库内这些能力的基础设施如下:

从源码构建 Tabby(供二次开发与插件开发)

HACKING.md 给出了完整的构建流程,适用于希望从源码运行 Tabby 或开发插件的读者:

# 1. 安装依赖(Node.js 15+、Yarn)
# macOS & Windows:
yarn
# Linux(以 Debian/Ubuntu 为例,需先安装系统库):
sudo apt install libfontconfig-dev libsecret-1-dev libarchive-tools libnss3 \
  libatk1.0-0 libatk-bridge2.0-0 libgdk-pixbuf2.0-0 libgtk-3-0 libgbm1 cmake
yarn

# 2. 构建并启动
yarn run build
yarn start

构建安装程序则先完成普通构建,再运行 node scripts/prepackage-plugins.mjs,然后按平台选择 node scripts/build-windows.mjsnode scripts/build-linux.mjsnode scripts/build-macos.mjs,产物输出到 dist 目录。需要说明的前提:若从上游 fork 了仓库,安装依赖前可能需要 git pull --tags upstream master 拉取 tag。

七、下载与分发渠道

README"Descargas"一节的分发渠道为:官方 releases 最新版本、基于 PackageCloud 的 Debian/Ubuntu 与 RPM 软件仓库、以及基于 CI 产出的 nightly 构建。与之对应的仓库侧证据:

八、小结:文档能力与源码实现的映射

README.es-ES.md 的功能清单当作"需求规格",当前仓库的每个子包都能对号入座:终端能力落在 tabby-terminal + tabby-core,SSH/SFTP/跳板/agent 转发落在 tabby-ssh,串口落在 tabby-serial,Telnet 落在 tabby-telnet,本地 shell 与 Windows 生态适配落在 tabby-local + tabby-electron,加密 Vault 落在 tabby-core 的服务层,插件与主题体系则同时有运行时(tabby-plugin-manager)与开发规范(HACKING.md)双重文档化。这种"README 声明功能 → 子包提供实现"的一一对应关系,使得本文中的每一节结论都可以直接沿相对路径追溯到具体源码文件,便于进一步深入阅读。

登录后查看全文
热门项目推荐
相关项目推荐

项目优选

收起
kernelkernel
deepin linux kernel
C
33
18
ops-transformerops-transformer
本项目是CANN提供的transformer类大模型算子库,实现网络在NPU上加速计算。
C++
1.12 K
2.72 K
ops-nnops-nn
本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。
C++
904
1.82 K
docsdocs
暂无描述
Markdown
889
5.78 K
pytorchpytorch
作为 Ascend for PyTorch 社区的核心组件,TorchNPU 是昇腾专为 PyTorch 打造的深度学习适配插件,使 PyTorch 框架能够直接调用昇腾 NPU,为开发者提供昇腾 AI 处理器的超强算力。
Python
854
1.34 K
kernelkernel
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
527
590
jiuwenswarmjiuwenswarm
JiuwenSwarm 是一款基于openJiuwen开发的智能AI Agent,它能够将大语言模型的强大能力,通过你日常使用的各类通讯应用,直接延伸至你的指尖。
Python
3.52 K
1.01 K
ops-mathops-math
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
1.33 K
1.45 K
AscendNPU-IRAscendNPU-IR
AscendNPU-IR是基于MLIR(Multi-Level Intermediate Representation)构建的,面向昇腾亲和算子编译时使用的中间表示,提供昇腾完备表达能力,通过编译优化提升昇腾AI处理器计算效率,支持通过生态框架使能昇腾AI处理器与深度调优
C++
540
384
flutter_flutterflutter_flutter
本仓库是 Flutter SDK 与 Flutter Engine 的 OpenHarmony 适配版本,由 CPF-Flutter 团队维护。开发者可使用熟悉的 Flutter 技术栈开发 OpenHarmony 应用,3.35.7 及以后的适配版本可基于本仓库源码构建支持 OpenHarmony 的 Flutter Engine。
Dart
1.17 K
341