‹ Term

mosh 伺服器

termoshv0.6.1

可直接取代 mosh-server 1.4.0。配合 Term,編程智能體的樣子和表現與在電腦上一樣;配合其他 mosh 客戶端,它就是 mosh。在任何伺服器上,閒置時記憶體只佔 2–3 MB。

  1. 1智能體的回覆整幀送到,不會只畫一半。
  2. 2把 Term 切到淺色,智能體在工作階段中途就按新配色重畫。
  3. 3往上一掃,捲過去的每一行都還在,不用 tmux。
  4. 4換了網絡,工作階段照常繼續——這是 mosh 本來就有的,termosh 一樣保留。

直接取代 mosh-server 1.4.0

termosh 可以直接取代 mosh-server 1.4.0。凡是能用 mosh 的地方都能用 termosh,客戶端甚麼都不用改。

01

同樣的指令

啟動指令、參數和環境變數(連接埠範圍、逾時、語言環境)都一樣。任何 mosh 客戶端都按啟動 mosh-server 的方式啟動它。

02

同樣的協定

同樣的加密 UDP 協定和交握,逐位元組一致,所以漫遊、預測回顯和重新連線的表現和以前完全一樣。

03

同樣的測試結果

mosh 1.4.0 自帶一套端對端測試。termosh 跑出的結果與 mosh-server 本身完全相同:24 項通過,另加上游標記為預期失敗的 2 項。

04

自己的程式碼

用 Rust 從頭寫成,沒有用 mosh 的任何程式碼:mosh 採用 GPL v3 授權,用了就得公開 Term 的原始碼,而 Term 不是開源軟件。沒有用它的程式碼,也就不存在版權問題。Term 的 mosh 客戶端也是同一套從頭寫的實作。

誰能得到甚麼

termosh 原樣使用 mosh 協定,所以任何 mosh 客戶端都能連上它。額外的功能由 Term 畫出來;其他客戶端得到的是一個普通的 mosh 工作階段,和伺服器仍是 mosh-server 時一模一樣。

Term + termosh 其他客戶端 + termosh 任何客戶端 + mosh-server
切換 Wi-Fi 與流動網絡、鎖屏、訊號弱都不斷
記憶體(一個閒置工作階段) 2.2 MB 2.2 MB 3.8 MB
編程智能體跟隨你的深淺色切換 同 mosh —
整幀重繪,回覆不會畫一半 同 mosh —
可點按的連結 同 mosh —
波浪線、點線、虛線、雙底線 同 mosh —
程式要求的游標形狀 同 mosh —
往回翻看輸出,不用 tmux 同 mosh —
其餘全部:智能體即開即用、Shift+Enter 換行、長行隨尺寸重新摺行、tmux 複製到手機等 → 同 mosh —

「同 mosh」表示客戶端顯示的和配合 mosh-server 時一樣:甚麼都不會壞,也沒有額外的。

配合 Term

為工作階段另一端的編程智能體而設計。

跟隨你的主題

工作階段中途把 Term 切到深色或淺色,Claude Code、Codex 立即按新配色重畫。

智能體即開即用

智能體啟動時問的幾個問題當場就有回答,不用乾等,也不會關掉功能將就啟動。

整幀重繪

每一幀畫完整了才整幀送出,不閃爍,回覆不會只畫一半。

可點按的連結

程式列印的連結到手機上仍是連結,點一下就能開啟或複製。

每一種底線

錯誤下的紅色波浪線、提示下的點線,樣式和顏色都完整送達。

對的游標

在 vim 裏輸入時是細直線,移動時是方塊,按程式的要求來。

往回翻,不用 tmux

普通 mosh 沒有回捲歷史。用 termosh,每一行捲出螢幕的輸出都會進 Term 的歷史——建置記錄、智能體的長回覆,連帶進度列的 <code>apt upgrade</code> 輸出也在——往上一翻就看得到。

歷史接得回來

強制結束 Term,或手機放下一陣子:工作階段恢復時,最近的輸出又回到回捲歷史裏,連你不在時智能體列印的內容也在。

用真機截圖逐項對比普通 mosh →

安裝

termosh 裝在伺服器上,取代 mosh-server。每部主機一條指令,不需要 root,主目錄以外甚麼都不改。

Windows 版為測試版。已在 Windows Server 2025 x64 上測試:連線、輸入、調整大小、回捲歷史、UTF-8 與中日韓文字、乾淨結束。尚未在 Windows 10/11 桌面版、ARM64 上測試,也未在經過 Windows 防火牆的真實網絡上測試。

  1. 在伺服器上執行安裝程式

    Linux任何發行版,x86_64 或 ARM64。完全靜態編譯,Alpine、較舊的企業版系統、BusyBox 系統也能用。會按發佈的校驗碼核對,裝到 ~/.local/bin。

    macOSApple 晶片或 Intel 都可以。Mac 需要開啟遠端登入(系統設定 › 一般 › 共享),因為 Term 經 SSH 啟動伺服器。

    WindowsWindows 10 1809 或以上,x64,需要執行 OpenSSH Server,並以 cmd.exe 為預設 shell(預設就是)。在 PowerShell 裏:下載、核對雜湊、解壓到使用者目錄,再讓 mosh 的 UDP 連接埠通過 Windows 防火牆(需系統管理員 PowerShell;伺服器前面如有雲端防火牆,也要開放同樣的連接埠)。

    在伺服器上
    curl -fsSL https://term.const.net/termosh/install.sh | sh
    Windows在伺服器上 · PowerShell
    iwr https://term.const.net/termosh/0.6.1/termosh-0.6.1-windows-x86_64.zip -OutFile termosh.zip
    (Get-FileHash termosh.zip).Hash      # compare with its line in SHA256SUMS
    Expand-Archive termosh.zip $env:USERPROFILE\termosh -Force
    New-NetFirewallRule -DisplayName termosh -Direction Inbound -Protocol UDP -LocalPort 60000-61000 -Action Allow
  2. 讓 Term 使用它

    編輯主機,在連線方式選 Mosh,開啟 Mosh 選項,把安裝程式最後列印的路徑填進 mosh-server 指令。

    編輯主機:在連線裏選 Mosh,打開 Mosh 選項,把 termosh.exe 的完整路徑填進 mosh-server 指令,如下所示。需要 Term 26.7.0 或以上。

    mosh-server 指令~/.local/bin/termosh
    mosh-server 指令%USERPROFILE%\termosh\termosh.exe
  3. 連線

    就這樣。這部主機的下一個工作階段就在 termosh 上執行。

    就這樣。這部 Mac 的下一個工作階段就在 termosh 上執行。

    就這樣。這部主機的下一個工作階段就在 termosh 上執行,shell 是 cmd.exe。

    確認
    ~/.local/bin/termosh --version   # termosh 0.6.1
    確認
    & $env:USERPROFILE\termosh\termosh.exe --version   # termosh 0.6.1
不想用管道交給 sh?手動安裝
Linux在伺服器上
v=0.6.1; a=$(uname -m)    # x86_64 or aarch64
curl -fsSLO https://term.const.net/termosh/$v/termosh-$v-linux-$a.gz
curl -fsSLO https://term.const.net/termosh/$v/SHA256SUMS
sha256sum -c SHA256SUMS --ignore-missing
gunzip termosh-$v-linux-$a.gz
mkdir -p ~/.local/bin && install -m 755 termosh-$v-linux-$a ~/.local/bin/termosh
macOS在伺服器上
v=0.6.1; a=$(uname -m)    # arm64 or x86_64
curl -fsSLO https://term.const.net/termosh/$v/termosh-$v-macos-$a.gz
curl -fsSLO https://term.const.net/termosh/$v/SHA256SUMS
shasum -a 256 -c SHA256SUMS --ignore-missing
gunzip termosh-$v-macos-$a.gz
mkdir -p ~/.local/bin && install -m 755 termosh-$v-macos-$a ~/.local/bin/termosh

給所有 mosh 客戶端用

既然其他客戶端得到的就是普通的 mosh,termosh 完全可以做所有 mosh 客戶端啟動的伺服器。Term 得到額外的功能,其他客戶端照常運作。

Linux在伺服器上 · root
curl -fsSL https://term.const.net/termosh/install.sh | sudo TERMOSH_INSTALL_DIR=/usr/local/bin sh
sudo ln -sf /usr/local/bin/termosh /usr/local/bin/mosh-server

幾乎所有發行版的 PATH 裏 /usr/local/bin 都排在 /usr/bin 前面,所以 mosh 會先找到 termosh。還原:sudo rm /usr/local/bin/mosh-server。

macOSmosh
mosh --server=~/.local/bin/termosh you@your-mac

在 Mac 上,不要取代 Homebrew 的 mosh-server,改為讓客戶端指向它。每個 mosh 客戶端都有類似的伺服器選項。

其他 mosh 客戶端:把它們的伺服器選項指向 termosh.exe。在 Windows 主機上,在 termosh 的修正發布前,它們可能要等整個工作階段結束,SSH 指令才返回;Term 不需要等。

記憶體

在同一部 Linux 伺服器上並排量度,各開一個 80×24 的工作階段。

剛連上

mosh-server
3.8 MB
termosh
2.2 MB
無回捲
2.2 MB

輸出 20 萬行之後

mosh-server
3.9 MB
termosh
5.3 MB
無回捲
2.3 MB

全螢幕重畫 30 次之後

mosh-server
3.9 MB
termosh
3.0 MB
無回捲
2.3 MB

閒置時,termosh 的記憶體只要 mosh-server 的一半多一點:它是一個自帶一切的程式,不載入 mosh-server 依賴的那些共用程式庫。佔記憶體的是回捲歷史:termosh 保留最近約 1000 行,每行按整行寬度存放,所以大量輸出後它比 mosh-server 用得多——80 欄時約 5 MB,160 欄時約 9 MB——工作階段開多久都不再增長。用 TERMOSH_SCROLLBACK=0 termosh 啟動,就一直在 2 MB 左右。在 macOS 上,一個工作階段閒置約 3 MB,大量輸出後約 8–9 MB,與原版 mosh-server 的 8–10 MB 相當;請看「活動監視器」的「記憶體」一欄,而不是 ps 的 RSS——macOS 會把部分已釋放的記憶體留在常駐集裏,等需要時才回收。

網絡

在七種模擬網絡下與原版 mosh-server 對比,兩者都連接 Term 自己的 mosh 客戶端。數值越小越好。

按下一個鍵到字元出現在螢幕上的時間,單位毫秒。

網絡mosh-servertermosh
同一機房 · ≈0 ms 10.5 1.0
家居或辦公室網絡 · 10 ms 23.2 13.2
高速寬頻 · 30 ms 44.9 35.0
流動數據 · 100 ms 115 107
訊號弱 · 100 ms,丟包 5% 114 104
慢速線路 · 150 ms,1 Mbit/s 241 156
跨越半個地球 · 300 ms 317 305

5000 行輸出在螢幕上全部顯示完的時間,單位毫秒。

網絡mosh-servertermosh
同一機房 · ≈0 ms 31 26
家居或辦公室網絡 · 10 ms 43 36
高速寬頻 · 30 ms 251 81
流動數據 · 100 ms 383 224
訊號弱 · 100 ms,丟包 5% 136 213
慢速線路 · 150 ms,1 Mbit/s 518 324
跨越半個地球 · 300 ms 889 462

手機安靜下來、輸出仍在繼續時,20 秒內傳給手機的數據包數——數據越少,越慳流量和電量。

網絡mosh-servertermosh
同一機房 · ≈0 ms 925 6
家居或辦公室網絡 · 10 ms 893 6
高速寬頻 · 30 ms 908 6
流動數據 · 100 ms 376 6
訊號弱 · 100 ms,丟包 5% 376 7
慢速線路 · 150 ms,1 Mbit/s 248 6
跨越半個地球 · 300 ms 131 6

手機回來後螢幕追上最新內容的時間,單位毫秒。

網絡mosh-servertermosh
同一機房 · ≈0 ms 946 22
家居或辦公室網絡 · 10 ms 951 33
高速寬頻 · 30 ms 984 58
流動數據 · 100 ms 1,031 126
訊號弱 · 100 ms,丟包 5% 1,031 126
慢速線路 · 150 ms,1 Mbit/s 1,063 182
跨越半個地球 · 300 ms 1,232 327

這些改進需要 termosh 0.5.6 和 Term 26.7.2 或更高版本——App 內建的 mosh 客戶端也是改進的一部分。termosh 0.5.6 對比 mosh-server 1.4.0,每格量度 3 次取中位數。網絡在同一部機器上模擬(Linux netem),真實線路會有自己的波動。原版較好的一種情況:訊號弱時的大量輸出。

下載 · v0.6.1

靜態編譯、移除符號、gzip 壓縮(Windows 為 zip)。在 Linux 和 macOS 上,安裝程式會替你選對的那一個。

平台檔案大小
Linux · x86_64 termosh-0.6.1-linux-x86_64.gz sha256 864f6ce75c0ed80f… · 0.87 MB 0.87 MB
Linux · aarch64 termosh-0.6.1-linux-aarch64.gz sha256 2a417feb0795f6e7… · 0.81 MB 0.81 MB
macOS · arm64 termosh-0.6.1-macos-arm64.gz sha256 e75b57fb7170f50a… · 0.71 MB 0.71 MB
macOS · x86_64 termosh-0.6.1-macos-x86_64.gz sha256 282011c959d13a18… · 0.75 MB 0.75 MB
Windows(測試版) · x86_64 termosh-0.6.1-windows-x86_64.zip sha256 fd08203ef73c108a… · 0.77 MB 0.77 MB
發佈於 2026-10-30 SHA256SUMS install.sh

0.6.1:連結很多的長工作階段不再令輸入卡上好幾秒;工作階段再長,emoji 的寬度也不會出錯;大量輸出時伺服器更省 CPU。

更早的版本
  1. 0.6.02026-10-23

    彈出或收起鍵盤不再令 Term 的歷史出現重複行;apt 的輸出現在會進入回捲歷史;圖片輸出中途被打斷(如在 icat 時按 Ctrl+C)後,畫面不再一片空白。

  2. 0.5.62026-10-17

    在 Term 裏打字的回顯快了約一倍,不比原版 mosh 慢;快速網絡上不再偶爾卡頓一秒;持續輸出時發出的數據包少得多。

  3. 0.5.52026-10-16

    編程智能體的狀態報告按 Ghostty 的方式解讀,一個子任務清除狀態時不會再把其他的一併清掉。

  4. 0.5.42026-10-13

    Windows(測試版):連上之後伺服器轉入背景,和 Linux、macOS 上一樣。

  5. 0.5.32026-10-13

    Windows:shell 結束時,工作階段隨之結束。

  6. 0.5.22026-10-13

    大量輸出之後,macOS 上的記憶體用量約減半。

  7. 0.5.12026-10-12

    瞬間湧出的大量輸出(如 seq 1 200)每一行都會進入回捲歷史。

  8. 0.5.02026-10-12

    mosh 也有回捲歷史了:捲過去的輸出進入 Term 的歷史,重新連上時最近的輸出也會回來。

校驗下載的檔案
sha256sum -c SHA256SUMS --ignore-missing   # macOS: shasum -a 256 -c … · Windows: Get-FileHash

小貼士

連接埠

termosh 使用和 mosh 相同的 UDP 連接埠 60000–61000。防火牆放行了 mosh,就放行了 termosh。

Term Pro

由 26.6.3 起 Mosh 屬於 Term Pro,termosh 隨之附帶。額外的功能需要 Term 26.7.0 或更新版本。

最近的輸出,只在記憶體裏

為了提供回捲歷史,termosh 在記憶體裏保留最近約 1000 行輸出——從不寫入磁碟——程式清空回捲時它也隨之清空。80 欄時每個工作階段約 3 MB,連上後的第一屏更新會大一些。用 TERMOSH_SCROLLBACK=0 termosh 啟動即可關閉。

移除

刪除 ~/.local/bin/termosh,清空主機的 mosh-server 指令。下一個工作階段就回到 mosh-server。

縮短不了距離

300 ms 的線路上,按鍵回顯仍要 300 ms 左右,換哪個伺服器程式都一樣。termosh 去掉的是 mosh 額外的等待,以及傳給休眠手機的數據。

省略了甚麼

不寫入 utmp/wtmp,所以 who 和 last 裏看不到 termosh 工作階段;-c 可用(和原版一樣會設定 TERM),但不模擬顏色數;-v 可用,但不輸出詳細記錄(要排查請設 TERMOSH_DEBUG)。其餘都與 mosh-server 一致。