2026/9/13 15:13:40

WaveTerm 如何为 SSH 连接启用 durable session 让断网后会话继续运行

WaveTerm 如何为 SSH 连接启用 durable session 让断网后会话继续运行 WaveTerm 如何为 SSH 连接启用 durable session 让断网后会话继续运行【免费下载链接】wavetermAn open-source, AI-integrated, cross-platform terminal for seamless workflows项目地址: https://gitcode.com/GitHub_Trending/wa/waveterm用 WaveTermWave Terminal通过 SSH 连接远程服务器时一次网络中断、电脑休眠或 Wave 自身重启都会把标准 SSH 会话直接断掉。Durable session 是 v0.14 起引入的功能它让远程 SSH 终端会话在断网期间继续运行重连后自动接回。原理上类似 tmux/screenWave 会在远程服务器上启动一个轻量的 job manager 进程它独立于 Wave 的连接保持 shell 运行、缓冲终端输出并在你重连时让 Wave 无缝 reattach 回来。会话的 shell 状态当前目录、环境变量、历史、正在运行的程序、完整 scrollback 记录都会被保留。注意功能边界durable session只针对远程 SSH 连接。本地终端和 WSL 连接始终使用标准会话不适用此功能。前提条件Wave 版本为 v0.14 或更高term:durable配置项从 v0.14 引入见 版本说明。已有一条可用的远程 SSH 连接本地终端、WSL 连接不适用。SSH 连接默认不启用durable session需要显式开启。配置 durable session配置有三个层级更具体的层级覆盖更宽泛的层级。优先级从高到低block 级 连接级 全局级。全局默认最低优先级在settings.json中把term:durable设为true对所有 SSH 连接生效。配置文件位于~/.config/waveterm/settings.json也可以用wsh editconfig在内置编辑器中打开。配置片段{ term:durable: true }按 配置文档 的说明term:durablebool 类型用于makes remote terminal sessions durable across network disconnects默认值为false即默认不启用。按连接配置中等优先级如果只想让某一台服务器启用 durable session在connections.json中为该连接单独设置{ connections: { userhost: { term:durable: true } } }其中userhost是该连接在 Wave 连接下拉框中显示的名称需替换为你自己的连接名可以是userhost或userhost:port形式与 SSH 连接输入格式一致。这样配置后该连接新建的终端 block 会默认以 durable 模式运行其他连接保持标准会话。按终端 block 覆盖最高优先级针对单个终端 block有三种方式任选其一右键菜单右键终端 → Advanced → Session Durability盾牌图标点击终端头部的盾牌图标在 flyover 中选择 Restart as Durable 或 Restart as Standard命令行在终端里直接执行wsh setmeta term:durabletrue wsh setmeta term:durablefalsesetmeta命令用于更新 block 的元数据键值对参考 wsh 命令参考。切换模式会重启 shell当前会话里正在运行的进程会被终止切换前先把需要保留的工作安排到打算长期运行的会话里。验证会话状态终端头部有一个盾牌图标用来显示当前会话状态鼠标悬停可以看到详细信息和可用操作状态含义Standard Session标准会话断网即终止Durable (Attached)durable 会话已建立且已连接Durable (Detached)会话在远程服务器上运行当前处于断开状态Durable (Awaiting)已配置 durable 但尚未启动启用配置后新建或重启一个 SSH 终端盾牌显示 Durable (Attached) 即表示 durable 模式已生效。想实际验证断网续跑可以起一个耗时较长的命令然后断开网络或关闭 Wave、让电脑休眠恢复连接后 Wave 会自动重新 attach你之前执行的命令会继续输出结果。文档给出的典型用法就是启动长任务例如构建、部署、数据处理合上笔记本走人重连后查看完整输出。会话生命周期与清理durable session 绑定在 Wave 的终端 block 上。以下操作会终止远程会话关闭 block关闭终端即终止远程会话切换连接block 上切换连接会终止旧会话删除 workspace/tabblock 被移除关联会话一并终止。一个值得注意的清理行为如果你在断开状态下关闭了 block远程会话会先继续运行等 Wave 下次重连到该服务器时自动清理这些孤儿会话避免远程服务器上累积残留进程。会话异常时的处理会话状态除了 Attached/Detached还可能出现 Starting远程 job manager 初始化中和 Ended已结束。Ended 的常见原因有三类Exitedshell 被正常关闭例如输入了exitLost远程服务器上找不到会话了可能是服务器重启、job manager 进程被手动杀掉、或远程系统资源耗尽Failed to Startjob manager 在远程服务器上初始化失败。针对具体现象durable sessions 文档 给出的排查路径是会话显示 Lost直接点击 Restart Session 开启一个新的 durable 会话。会话无法重连先确认两件事——到该服务器的 SSH 连接本身是否可用检查连接状态、远程服务器上的 job manager 进程是否还在运行都正常仍连不上时右键终端 → Advanced → Force Restart Controller 尝试强制重启控制器。Failed to Start 报错查看错误信息中的具体细节重启一次会话问题持续存在再提交 bug 报告并附上错误细节。限制条件本地终端与 WSL 连接不适用 durable session文档明确标注 not applicable处于 Detached 状态的会话在缓冲输出重连后可能需要一小段时间同步每个 durable 会话会在远程服务器上维持一个轻量 Go 进程用于会话管理会占用少量服务器资源。会话数据方面durable session 完全运行在你的远程服务器上通信走你已有的 SSH 连接不在远程机器上开放任何端口断开期间的输出缓冲在远程机器本地直到你重连。参考文档Durable Sessions 功能文档Configuration 配置键说明Connections 连接与 connections.jsonwsh 命令参考【免费下载链接】wavetermAn open-source, AI-integrated, cross-platform terminal for seamless workflows项目地址: https://gitcode.com/GitHub_Trending/wa/waveterm创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考