Tabby 配置同步:cloud-settings-sync 与 GitHub Gist
本文使用 niceit/tabby-cloud-sync-settings 插件,其 npm 包名为 terminus-cloud-settings-sync。以下按上游 1.8.0 源码核对;截图来自旧版,按钮名称和布局可能不同。先确认两台设备使用兼容的 Tabby 与同一插件版本,不要同时让其他同步机制修改同一份配置。
同步前分别备份每台设备的 config.yaml:从 Tabby 设置确认配置文件实际位置,退出应用后复制到私人备份目录,再重新打开。保留这份独立备份,即使插件也会创建备份。
安装插件
到 Tabby 的扩展界面搜索 cloud-settings-sync,核对作者和上述项目后安装,按提示重启。首次连接前暂时关闭自动同步,先确定哪台设备保存完整配置。

新建 GitHub Token
访问 GitHub Token 设置,创建带有效期的 classic Token,只勾选 gist 权限。本教程的授权目标是 Gist,无需额外授予仓库 repo 权限。gist 权限可读写该账户的 Gist,并非只授权某一个 Gist,参见 GitHub 权限说明。
令牌只填入本机插件设置,不放进截图、分享的配置或公开仓库。第二台设备可使用同一 GitHub 账户另外创建的 gist Token,便于单独撤销设备权限。


配置 cloud-settings-sync

字段与同步范围
| 设置 | 填写方式 |
|---|---|
| 云服务 | 选择 Gists,具体平台选择 GitHub |
| 名称 | 本机用于辨认的名称,可选;不要将它当作 Gist ID |
| Access Token | 具备 gist 权限且未过期的令牌 |
| Gist ID | 首台新建时留空;其他设备填首台创建的同一个 ID,不填整段 URL |
| 开启同步 | 完成首次方向选择和验证后开启 |
| 同步间隔 | 自动检查的间隔;不代表每次都上传或都下载 |
插件会读取并加密整个 config.yaml,包括其中保存的设置和连接配置,并不是只挑选外观等字段。文件中存在的敏感值也会进入同步内容;外部私钥文件、外部程序与系统钥匙串不在这份文件的复制范围,换机后需要另行配置,不能假定 SSH 登录凭据已经可用。
新建 Gist 的实现使用 public: false,即 Secret Gist。Secret Gist 只是未公开列出,持有链接的人仍可读取。1.8.0 提供自定义加密口令;未设置时仍可使用兼容旧版的固定密钥加密,不能将它视为私人保密措施。首次上传前在 Security 设置自己的加密口令,并在其他设备使用同一口令;妥善保存,丢失后无法依靠重置 Token 解密已有内容。
首台设备:本机上传到云端
- 选择保存完整配置的设备,完成备份与加密设置。
- 选择 GitHub,填写 Token,Gist ID 留空,点击“测试连接”。ID 为空时,这一步会创建一个带占位文件的 Gist,不只是只读连接测试。
- 确认测试成功、ID 已回填,然后点击“保存设置”。
- 首次同步会让你选择方向。此时选 从本地同步 / Sync from local,把本机配置上传到这个新 Gist;不要下载尚未初始化的占位内容。
- 按提示重启。使用插件中的“查看”打开 Gist,确认文件已变为插件的加密内容、更新时间对应本次操作,再开启自动同步。
给插件使用单独的 Gist,不要与代码片段混用:当前上传实现会更新所选 Gist 中的文件内容。
其他设备:云端下载到本机
- 先备份第二台设备的配置,安装同一插件并设置同一自定义加密口令。
- 选择 GitHub,填写可访问该 Gist 的 Token,以及首台生成的 Gist ID。不要留空,否则会创建另一个 Gist。
- 测试成功后保存,首次方向选择 从云端同步 / Sync from cloud。这个动作会替换本机配置,不能把仍需保留的本机设置留到覆盖后再处理。
- 重启后检查一个不敏感的设置和连接名称是否与首台一致,再单独验证外部密钥路径等设备相关配置。
冲突、失败与停用
正常自动同步会判断哪一端发生变化;两台设备同时修改时,不应靠连续点击同步来决定保留哪份。1.8.0 的冲突处理会保留本地 config.yaml.backup 与云端 config.yaml.conflict-* 快照,并报告冲突,不会自动逐字段合并。
遇到冲突先在各设备关闭同步,另存当前配置和快照,再选定一份完整配置作为基准。恢复到一台设备并检查后,重新设置首次同步,明确从本地上传;其他设备再从云端下载。整个过程中保留独立备份,避免备份文件被后续同步替换。
测试失败时检查 Token 有效期和权限、Gist ID 与所属账户、网络以及插件日志;解密失败时核对口令和版本,不要用空白本机配置覆盖远端。移除插件中的同步设置不会删除云端 Gist。停止使用后可在 GitHub 撤销对应 Token,并单独决定是否删除 Gist。