Wave Terminal 配置跨机器同步工具。通过 WebDAV 在多台机器之间同步 workspace 布局、连接配置和自定义小部件。
Wave Terminal 目前不支持原生的配置同步功能。当你在多台机器上使用 Wave 时,每次都要手动重新配置 workspace、连接和小部件。本工具通过 WebDAV 协议解决这个问题。
- 一键部署: Windows 双击
setup.bat即可完成安装 - 零依赖: 仅使用 PowerShell(Windows 自带)
- 增量同步: 仅上传/下载变更文件
- DB Workspace 同步: 从 SQLite 中提取 workspace 相关表同步,而非粗暴复制整个 DB
- 冲突检测: 文件级校验 + 跨机器状态追踪
- 交互式冲突处理: 冲突时提示你选择处理方式
- 支持主流 WebDAV 服务: 坚果云、Nextcloud、Synology 等
- Node.js 18+ — 用于从 SQLite DB 导出/导入 workspace 数据
- 检查:
node --version - 安装:
winget install OpenJS.NodeJS或 https://nodejs.org
- 检查:
| 同步 | 不同步 |
|---|---|
| Workspace 布局、标签页、窗口 | 终端历史记录 |
| 连接配置 | 日志文件 |
| 自定义小部件 | AI 对话记录 |
| 主题和外观设置 | 本地密钥文件 |
- 下载本仓库(Clone or Download ZIP)
- 双击
setup.bat - 按提示填写 WebDAV 配置
- 重启终端,运行
wave-sync push
# 复制脚本到 PATH 目录
copy wave-sync.ps1 "$env:LOCALAPPDATA\wave-sync\bin\wave-sync.ps1"
# 创建 bat 包装器
@"
@echo off
powershell -ExecutionPolicy Bypass -File "%~dp0wave-sync.ps1" %*
"@ | Out-File "$env:LOCALAPPDATA\wave-sync\bin\wave-sync.bat" -Encoding ASCII
# 加入 PATH(需重启终端生效)
$env:Path += ";$env:LOCALAPPDATA\wave-sync\bin"wave-sync init配置文件路径: %APPDATA%\wave-sync\config.yaml
url: "https://dav.jianguoyun.com/dav/wave-sync"
user: "your@email.com"
password: "your-app-password"# 上传本地配置
wave-sync push
# 下载云端配置
wave-sync pull
# 查看同步状态
wave-sync status
# 查看未同步的更改
wave-sync diff坚果云是国内首选的 WebDAV 服务,免费用户每月 1GB 上传流量。
- 登录 坚果云
- 进入 账户信息 → 安全选项 → 第三方应用管理
- 点击 添加应用密码,输入应用名称(如 "wave-sync")
- 复制生成的密码到配置文件
url: "https://dav.jianguoyun.com/dav/wave-sync"
user: "your@email.com"
password: "应用密码(非登录密码)"注意:坚果云的 WebDAV 目录需要手动创建。先在坚果云客户端创建一个 "wave-sync" 文件夹。
机器A(主力机) 机器B / 机器C
│ │
│ 修改 workspace │
│ │
▼ │
wave-sync push │
│ │
└──────────► WebDAV ◄────────┘
│
▼
wave-sync pull
│
▼
重启 Wave 生效
工具通过两层机制检测冲突:
- 跨机器状态追踪: 记录每次同步的方向、时间和机器名
- 文件级校验: 使用 SHA-256 校验和检测文件变更
| 场景 | 检测结果 | 处理方式 |
|---|---|---|
| Pull 时本地有未同步的 Push | 提示确认,可强制覆盖 | |
| Push 时上次是其他机器 Pull 的 | 提示确认,可强制覆盖 | |
| 同一文件在两端都被修改 | 列出冲突文件,提示选择 | |
| 无冲突 | ✅ 正常 | 直接执行 |
# 以本地为准(覆盖云端)
wave-sync push -Force
# 以云端为准(覆盖本地)
wave-sync pull -Force- 在一台机器上完成修改
- 立即
wave-sync push - 到下一台机器
wave-sync pull - 重启 Wave
不要同时在多台机器上修改配置,否则会产生冲突。
wave-sync init # 初始化配置文件
wave-sync push # 上传配置
wave-sync push -Force # 强制上传(忽略冲突)
wave-sync pull # 下载配置
wave-sync pull -Force # 强制下载(忽略冲突)
wave-sync status # 查看同步状态
wave-sync diff # 查看未同步的更改
wave-sync help # 显示帮助
# 通过参数覆盖配置
wave-sync push -Url "https://..." -User "user" -Password "pass"
# 通过环境变量覆盖配置
$env:WAVESYNC_WEBDAV_URL = "https://..."
$env:WAVESYNC_WEBDAV_USER = "user"
$env:WAVESYNC_WEBDAV_PASS = "pass"
wave-sync pushWave Terminal 不支持传统插件系统,但你可以通过以下方式集成:
在 Wave 的 widgets.json 中添加 sync widget:
{
"wave-sync": {
"icon": "cloud-arrow-up",
"label": "sync",
"color": "#4fc3f7",
"blockdef": {
"meta": {
"view": "term",
"controller": "cmd",
"cmd": "wave-sync pull && echo 'Sync complete. Restart Wave to apply.'",
"cmd:clearonstart": true
}
}
}
}| 服务 | 免费额度 | 说明 |
|---|---|---|
| 坚果云 | 1GB/月上传 | 国内首选,WebDAV 支持好 |
| Nextcloud | 自建 | 功能全,可自托管 |
| Synology Drive | 自建 | NAS 用户推荐 |
| InfiniCLOUD | 20GB | 日本服务,速度不错 |
wave-sync/
├── README.md # 本文档
├── wave-sync.ps1 # 主脚本(PowerShell)
├── setup.bat # Windows 一键安装(双击即用)
├── export_db.js # DB → JSON 导出
├── import_db.js # JSON → DB 导入
└── .gitignore # 忽略规则
Wave Terminal 0.14+ 将配置存储在 SQLite 数据库 (waveterm.db) 中。
- Push 时:
export_db.js从 DB 提取 workspace/标签页/窗口/布局等表 → 保存为 JSON → 上传到 WebDAV - Pull 时: 从 WebDAV 下载 JSON →
import_db.js按版本号增量导入到本地 DB → 重启 Wave 生效
仅同步结构化数据,不包含缓存、日志、二进制文件等。导入时按版本号比较,不会覆盖更新的数据。
A: PowerShell (Windows 自带) + Node.js 18+。
A: 需要重启 Wave Terminal。
A: 连接配置会同步,但 SSH 密钥不会。你需要在每台机器上单独配置密钥。
A: 配置文件中的密码是明文存储,建议:
- 仅限个人机器使用
- 或使用环境变量传入密码
- 或在交互模式下输入密码(不写入配置文件)
A: 常见原因:
- 使用了登录密码而非应用密码
- WebDAV 目录不存在(需先在坚果云客户端创建)
- 网络问题
A: 运行以下命令解除限制:
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSignedMIT