爱意满满的作品展示区。
soleilune

[开源]或许是 WindTerm 精神的续作: SSH 客户端 OxideTerm 焕新为原生软件, Windows 空载内存仅 25 MB

  •  2
     
  •   soleilune · 1 day ago · 2254 views

    大家好,我是 OxideTerm 的作者。

    WindTerm 是很多人的心头好,极低的内存占用、原生级的流畅度,很少有替代品能完全复现。但它已经停更一年多了,积压的 Issue 长期也似乎无人修复,当然我也很希望作者能够再度更新。现在不少朋友一直在找下一个归宿,但市面上大多是 Electron/Tauri 的 WebView 应用,空载几百兆起步,很难找回那种轻快感。

    我自己一直很尊重 WindTerm 坚持原生、不妥协的产品理念,也在做一款开源 SSH 工具 OxideTerm。我的 1.x 是用 Tauri 写的,很快就撞到了 WebView 的天花板:

    • 空载吃内存:即使没打开任何会话,浏览器引擎、DOM 和 JS 运行时的固定开销就占着几百兆。
    • 前后端跨语言通信效率受限:终端内容要跨越 Rust 和前端 JS 之间的数据链路,大日志刷屏时压力可能不小。

    我发现局部优化解决不了架构问题。所以我做了一个决定:抛弃 WebView ,用纯 Rust 和 GPUI ( Zed 编辑器用的原生 GPU 渲染框架)完全重写了它。通过移除 WebView 、DOM 和 JavaScript 运行时,更换数据链路 ,我们省去了跨语言的序列化和 IPC 。macOS 空载从 320MB 降到了 80MB 出头,Windows 则从约 180MB 降到了 25MB 。 (自己的机器实测)

    内存对比

    最近刚好过了 1000 Star 门槛,历经大量 issue 反馈,算是有了一定完成度,所以发出来再和大家分享。

    OxideTerm 和 WindTerm 有什么共同点?

    • 原生高性能(无 WebView / 零 DOM 开销):我们都彻底避开了 WebView/Electron ,界面由 GPU 硬件直接渲染,不经过任何浏览器引擎层。这带来了实打实的性能与内存优势:目前 OxideTerm 在 Windows 下的空载内存仅约 25 MB( macOS 约 80MB )。
    • 免费 & 开源:项目完全开源 (GPL-3.0),目前没有任何订阅或专业版限制。

    OxideTerm 有什么不同?

    如果说 WindTerm 是上一代经典的代表,OxideTerm 则试图在原生性能的基础上,加入现代化的能力。

    另外我们的 UI 并没有完全复刻 WindTerm——这是有意为之,目的是提供更现代的信息架构和交互体验,而不是做一个外观上的克隆。

    • 平滑迁移:支持从其他 SSH 客户端导入已有连接配置,不用从头手动录入。
    • 原生 RDP / VNC 支持:除了基础的 SSH/SFTP ,内置了基于 Rust IronRDP 的原生桌面连接的部分能力。
    • Host Tools 工作区:我们在右侧面板集成了 Docker 、进程、tmux 、systemd 服务等图形化管理工具,通过复用当前的 SSH 连接通道实时抓取。目标是消除传统 SSH “开一堆终端敲命令”的割裂感,打造一个集成驾驶舱。
    • 现代化的 AI 助手 OxideSens:内置 AI ,支持带终端上下文的对话。可以帮你分析报错、生成修复命令,你可以选择自己的大模型提供商( BYOK )。
    • 终端核心换代:底层换成了 alacritty_terminal,并添加支持 Sixel/Kitty 图像协议,可以在终端里直接预览图片。

    Host Tools

    • 云同步:支持 WebDAV 、S3 兼容存储、OneDrive 、GitHub Gist 等后端同步配置。所有数据上传前在本地加密,没有任何中央服务器。

    云同步

    • 同款 Free Type Mode 自由输入模式:可以直接用鼠标点击命令行的任何位置移动光标,选中文本直接退格删除(不用在远程机器装任何脚本,纯端侧实现)。
    • 高速 SFTP 传输:我们对 russh-sftp 做了自维护的改造优化,上传下载速度相比社区版有了显著提升。
    • 独立 CLI 工具:不启动桌面应用也能完成环境诊断、连接管理、云同步和便携包导入导出,方便接入脚本与 CI 。

    会话管理

    代码与审计

    我知道对于 SSH 客户端,大家最关心的是安全

    • 连接配置和敏感凭据在本地加密存储,加密密钥由操作系统密钥链管理
    • 内存中的敏感数据使用后即时擦除( zeroize ),避免密钥残留
    • 无遥测上报、无后台数据收集:应用不会主动向外发送任何使用数据,你不告诉我们,我们就什么都不知道
    • 项目目前分为了 80 多个独立 crate ,代码完全开源。

    写在最后

    项目完全用爱发电。当时写这个项目的初衷很简单,受够了市面上的订阅制工具,就想给自己搓个顺手的。不知不觉坚持了 8 个月,又因为尝试剥离 WebView 完全重写了底层,从 Tauri 换成了 GPUI ,熬到了 2.0 。接下来不出意外的话还会继续维护下去。

    如果你也是一个原生体验的追求者,不太喜欢 Electron 和 Tauri 架构下 Webview 的内存占用,欢迎来试试看。觉得好用的话点个 Star ,如果有任何建议或遇到了使用问题,欢迎在帖子里回复,或者直接去 GitHub 提 issue ,我看到都会尽量回复——项目比起 WindTerm 这样历经大家打磨的璞玉,毕竟还算年轻。

    GitHub: https://github.com/AnalyseDeCircuit/oxideterm

    官网:https://oxideterm.app

    39 replies    2026-07-26 23:26:38 +08:00
    Mora1n
        1
    Mora1n  
       1 day ago
    哇噻帮顶! nyaterm 也不错
    Salute
        2
    Salute  
       1 day ago
    体验了一下,感觉很棒,star 了。这么大的项目,一个人能维护的过来吗
    soleilune
        3
    soleilune  
    OP
       1 day ago
    @Mora1n 谢谢! NyaTerm 也是很好的项目。我稍稍看了一眼,他目前是基于 Tauri 的,UX 更贴近 WindTerm 老用户的操作习惯,当然也有可能有很多优点我没有仔细挖掘;我们选择的方向是彻底去掉 WebView ,用 GPUI 原生渲染,也都算是各自继承了 WindTerm 精神的一部分吧,也希望他能做的越来越好。
    rainrdx
        4
    rainrdx  
       1 day ago via iPhone
    以前觉得没有好用的,现在终端怎么出来这么多!我的要求其实就是底层高效,前端跨平台原生,简单同步密码和 ssh key ,长期保持更新。先围观下这个…
    liuliuliuliu
        5
    liuliuliuliu  
    PRO
       1 day ago
    别的先不说,抛弃 WebView/Electron 的软件我就要支持一下
    SayHelloHi
        6
    SayHelloHi  
       1 day ago
    @soleilune

    macOS 版本能添加一个 brew 的安装方式么~ 😁
    soleilune
        7
    soleilune  
    OP
       1 day ago
    @SayHelloHi 有的,

    'brew install --cask AnalyseDeCircuit/tap/oxideterm'
    Salute
        8
    Salute  
       1 day ago
    RDP 可以做保存配置的功能吗(和 ssh 一样保存用户名 ip 端口等)
    soleilune
        9
    soleilune  
    OP
       1 day ago
    @Salute 还好吧,有 AI 辅助的话问题基本不大
    soleilune
        10
    soleilune  
    OP
       1 day ago
    @Salute 这个是我忘记做了,应该要作为一种资产能够保存下来的,我看看后面补上吧
    zhs227
        11
    zhs227  
       1 day ago
    用 vi 查看日志文件的时候,发现有一些形似文件名的地方会被高亮,找了一圈没有找到关闭的地方,能否做个配置。同样的文件用 less 等查看时也会自动高亮。
    fryrice
        12
    fryrice  
       19h 7m ago via iPhone
    非常棒,推荐给很多人用了
    xinyana
        13
    xinyana  
       17h 22m ago via Android
    神器,我梦想中的终端
    hvsy
        14
    hvsy  
       17h 2m ago
    为什么清屏这些操作没有快捷方式......
    xinyana
        15
    xinyana  
       16h 36m ago via Android
    密码可以在明文和**切换吗?经常需要查看密码
    kirbyzhu
        16
    kirbyzhu  
       16h 1m ago
    很奇怪 设置好 ssh 登录不上 不管是用密码还是密钥

    用其他 term 都没问题
    echoyangjx
        17
    echoyangjx  
       15h 59m ago
    看着不错
    kirbyzhu
        18
    kirbyzhu  
       15h 36m ago
    奇怪的问题 基本同样的配置另一台终端就都能正常登录。
    ysbreh
        19
    ysbreh  
       15h 13m ago
    多内置几个 light 配色,比如 vscode light 配色
    smilenceX
        20
    smilenceX  
       14h 28m ago
    下载简单看了一下,我想要的功能都有了。
    已 Star ,正在试用,感谢 OP
    soleilune
        21
    soleilune  
    OP
       12h 23m ago
    @zhs227
    已实现配置。
    设置位置:设置 → 终端 → “将文件路径识别为链接”。
    关闭后:自动识别的文件路径不再高亮或响应点击;网页 URL 仍然可用;程序明确输出的 OSC 8 超链接仍然可用;默认保持开启,兼容现有行为。

    下次新版本就可以了
    soleilune
        22
    soleilune  
    OP
       12h 23m ago
    @ysbreh 这个可以有
    565656
        23
    565656  
       11h 1m ago
    非常喜欢项目功能,有时候 win 改几个文件麻烦死了
    Jacobson
        24
    Jacobson  
       10h 42m ago via iPhone
    看着真不错,现在用的就是基于 Electron 的,待机都要占用 500m 左右,现在内存这么贵,一直在物色平替。

    回去换一下楼主这个事实,维护辛苦了,先行感谢!
    Leon6868
        25
    Leon6868  
       10h 22m ago
    GPUI 居然能做那么流畅的动画,整体占用确实在 80MB 左右,非常精良的软件!
    soleilune
        26
    soleilune  
    OP
       9h 24m ago
    @kirbyzhu 没有具体的服务器系统版本、SSH 版本和日志,没法排查
    soleilune
        27
    soleilune  
    OP
       8h 45m ago
    @hvsy 刚做了,下个版本推出
    soleilune
        28
    soleilune  
    OP
       8h 44m ago
    @xinyana 可以的,我也认为这是合理需求。新建表单这里我刚做了可切换,会跟着下个版本推出。
    kirbyzhu
        29
    kirbyzhu  
       7h 32m ago via iPhone
    @soleilune 在哪里导出这些信息?
    Ocyss
        30
    Ocyss  
       7h 20m ago
    感觉挺实用, 点开发现已经 star 了
    soleilune
        31
    soleilune  
    OP
       7h 13m ago
    @kirbyzhu 你在能连上的终端里跑 ssh -vvv 用户名 @服务器地址,把完整输出去除敏感信息发 issue 过来。所有的东西都在里面——SSH 版本、算法协商、认证流程。别只说连不上,没日志我看不了。
    DearFox
        32
    DearFox  
       6h 20m ago via iPhone
    能连接密码管理器中的 ssh 密钥吗
    soleilune
        33
    soleilune  
    OP
       6h 20m ago
    @DearFox OxideTerm 支持 SSH Agent 。如果你的密码管理器(比如 1Password 或 Bitwarden )提供了 SSH Agent 功能,把它的 agent socket 配好,OxideTerm 就可以直接用它来认证,不需要导出密钥文件。
    ggmood
        34
    ggmood  
       5h 33m ago
    ios 能不能开发一下
    yjxjn
        35
    yjxjn  
       4h 15m ago
    便携模式下,无法保存密码到系统钥匙?
    soleilune
        36
    soleilune  
    OP
       4h 4m ago
    @yjxjn 便携模式的初衷就是数据跟着 U 盘走,不留在主机上。系统钥匙串绑的是本机,换一台机器就没了,跟便携的目的矛盾。
    Jacobson
        37
    Jacobson  
       3h 59m ago
    试了下,确实很轻量,资源占用很低,但是布局用不习惯。

    其中最大的不习惯就是 SSH SFTP 在 2 个独立 TAB 中,需要不停的切换 TAB ,操作上比较割裂。
    看了下设置里,没有相关的设置项,所以这个布局逻辑应该是写死的。

    还有楼上说的便携模式不能保存密码,我也遇到了,这~这确实不太应该。

    离成熟的产品还有一些优化空间。

    暂时卸载,保持关注,作者加油!
    soleilune
        38
    soleilune  
    OP
       3h 11m ago
    @yjxjn 哦,确实会保存链接失败,我去看看为什么
    soleilune
        39
    soleilune  
    OP
       3h 2m ago
    @Jacobson 感谢反馈。成熟的产品都是修修补补磨出来的。布局这块目前确实更多是按我自己的习惯来的,双栏分屏我自己用得顺手。如果侧边栏 SFTP 的需求呼声够多,我会认真考虑,但要在现有架构里塞进去、不破坏 UX ,还得想清楚怎么做。

    卸载没关系,便携模式那个 bug 我会修的,修完随时回来试试。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   960 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 57ms · UTC 18:29 · PVG 02:29 · LAX 11:29 · JFK 14:29
    ♥ Do have faith in what you're doing.