mosh 让手机上的会话断不了。termosh 是 Term 对 mosh 服务端(mosh-server)的重新实现,装在你的服务器上代替它;在此之上,还让 Claude Code、Codex 等代码助手的显示和操作跟在电脑上一样。
需要 Term v26.7.0 或更高版本。
Term Pro 功能,26.7.0 起提供。
撰写于
在手机上保持终端会话,mosh 是最好的办法:走出 Wi-Fi、锁屏、坐地铁,回来一看,会话还在。但 mosh 的服务端(mosh-server)写在代码助手出现之前很多年。用它跑 Claude Code 或 Codex,会出各种小毛病:颜色和屏幕对不上,助手启动前要愣一下,回复刷新时闪出半截画面,按 Shift+Enter 本想换行却直接发送了。
termosh 是 Term 对 mosh 服务端(mosh-server)的重新实现,装在你的服务器上代替原来的 mosh-server。它和 mosh 说同一种语言,mosh 的长处一样不少,而且从一开始就是为了让代码助手显示正确而做的。
代码助手会按你的屏幕挑颜色:浅色背景用深色字,深色背景用浅色字。它是问终端才知道你用的是哪种。普通 mosh 的答案在连接那一刻就定死了,之后在会话里把 Term 从浅色切到深色,助手还按原来的屏幕在画。
用 termosh 时,你每切换一次,Term 都会告诉服务器,助手马上按新的配色重画。
代码助手启动时会问终端几个问题:这是什么终端、背景是浅色还是深色、用哪种键盘模式、能不能一次画完一整屏。有的等不到零点几秒就放弃。普通 mosh 一个都不回答,助手只能干等,然后关掉一些功能再启动。termosh 每个问题都当场回答。
最后那个问题在助手回复时最要紧:它每秒要重画屏幕很多次。termosh 回答“能”,等每一屏画完整了再整个发出,你不会看到画了一半的画面。
在 Claude Code 的输入框里,Shift+Enter 是另起一行,而不是发送,和在电脑上一样。
程序输出链接时,termosh 会把它传过来,点一下就能打开。用普通 mosh,同样的字只是普通文字。
代码助手和编辑器的下划线是有含义的:错误下面是红色波浪线,提示下面是点线。普通 mosh 只认普通下划线,其余的全丢了。
编辑器和代码助手会用光标形状告诉你现在处于什么模式:在 vim 里输入时是细竖线,移动时是方块。普通 mosh 不理这个要求,一直是方块。termosh 会把它传过来,切换标签页再回来,Term 也会保持。
转动手机,或者双指缩放改变字号,屏幕就会变窄或变宽。termosh 会把长行按新宽度重新排好。普通 mosh 在原来的边缘直接截断,截掉的部分就没了。
在服务器的 tmux 里复制的文字会进到手机剪贴板,哪里都能粘贴。普通 mosh 会在半路丢掉 tmux 的复制,除非你在 tmux 配置里加一个变通设置。同一段文字复制两次也没问题。
用 tmux? tmux 默认会把链接和花样下划线拦下来,也不理会在它里面运行的程序发起的复制。在 ~/.tmux.conf 里加两行就能放行,加完后断开再重新接入一次:
set -as terminal-features ',xterm*:hyperlinks:usstyle' set -g set-clipboard on
mosh 能做的,termosh 都能做:换网络、锁屏、信号差,会话都不断;网速慢时打字照样即时回显。还在用普通 mosh-server 的主机,一切照旧。
termosh 属于 Term Pro。还在用普通 mosh-server 的主机,Term 的 mosh 照常可用。
termosh 不会让慢网络比 mosh 更快。它改变的是:助手的画面能多忠实地到达你的手机。