終端也會拖慢你的工作:OxideTerm 用 Rust 改寫後,把等待時間還給開發者
跑一個大型建置、Tail 一份爆量日誌,資料早就到了本機,畫面卻還在一行一行補。這種時候慢的通常不是伺服器,是終端機自己。近日,開源專案 OxideTerm 的作者在 V2EX 發文,說明這款以 Rust 加 GPUI 打造的原生 SSH 用戶端,在原生版迭代近四個月後推出 2.3.1,重點放在三項基本功:吞吐、繪製與歷史儲存。
吞吐:把解析工作搬離畫面執行緒
作者的比喻很直白:大量輸出湧入時,如果介面執行緒忙著解析文字,使用者想捲動回看或切換工作階段,就得排隊等它忙完。OxideTerm 的做法是把 SSH 終端解析移到背景執行緒,批次處理文字與網格寫入,減少重複掃描與記憶體複製,繪製時則重用沒有變化的文字排版。
用日常場景來說,這就像廚房忙不過來時,把備料工作交給另一個人,主廚只負責出菜。少了重複備料,前端回應自然快。作者公布 8 月早期建置與 2.3.1 的吞吐測試對比,每類負載輸出 16 MiB、預熱一次、測三次取中位數,測試方法放在專案倉庫供檢驗。這種把量測條件寫清楚的做法,在開源社羣裡是建立信任的基本動作,與先前NaiveAI 速度數字的量測語境討論是同一個道理:數字本身不難看懂,難得是量測條件透明的態度。
記憶體:歷史緩衝區從 196 MB 壓到 15 MB
第二項改造更貼近一般使用者的痛點。傳統上像 xterm.js 這類緩衝區設計,內容與屬性是逐字元格儲存的,整行同色也照樣逐格存屬性,等於同一份資訊重複記了幾百遍。OxideTerm 把歷史文字與樣式分開緊湊儲存,讓相鄰的同樣式文字共享一筆記錄。
實測結果:保留 20,000 行歷史、400 列,外加 40 行螢幕、偽隨機 ASCII 滿行的條件下,終端與解析器的保留堆從 196.47 MB 降到 15.50 MB,減少 92.1%。
對日常工作的意義很具體。工程師很少只開一個終端視窗,多掛幾個 SSH 工作階段、多留一些日誌,記憶體就被喫掉一大塊,擠壓的是瀏覽器、IDE 與容器的額度。在這波記憶體漲價的週期裡,工具本身省下來的資源,就是留給其他軟體的餘裕。
功能面:向 WindTerm 取經,向 AI 開門
效能之外,這輪更新也補了不少功能,看得出借鑑 WindTerm 等成熟用戶端的痕跡:本地語義著色讓沒帶顏色的遠端輸出也能初步辨識數字與 Unix 權限;Free Type Mode 讓使用者用滑鼠定位選取指令,改長命令不必狂按方向鍵;SFTP 側邊欄支援把本機檔案直接拖進 SSH 終端上傳。
比較值得注意的是對外的 MCP 介面。Codex 等 AI 用戶端經授權後可以使用連線、終端、檔案與主機工具,減少複製貼接,且權限可隨時撤銷。終端機是開發者與伺服器之間最敏感的通道之一,把這個通道以受控方式開給 AI 工具,方向上呼應了整個開發工具鏈正在發生的變化,而「授權可撤銷」的設計,正是這類整合能不能被信任的關鍵。
其他還包括最多 16 個窗格的混合工作區、原生插件系統、X11 轉發、BLE 連線與 Kerberos 認證等。專案採 GPL-3.0 授權,免費、無帳號與訂閱門檻,也不收集遙測資料。
給使用者的判斷
終端機這個品類長期由幾款成熟產品盤據,WindTerm、Ghostty、Alacritty 各有擁護者。一款新專案的價值,短期看的是它願意把測試方法、量測條件公開接受檢驗,而非只喊快的口號。OxideTerm 這波更新把「讓終端飛起來」拆成可驗證的數字與可檢視的方法,對需要同時管理多個 SSH 工作階段的工程師來說,是一個值得放進觀察清單的選項;至於穩定度與長期維護承諾,仍要靠後續版本迭代來回答。