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

[开源] Miaominal - 另一个使用 GPUI 构建的 SSH/SFTP 客户端

  •  1
     
  •   cppakko · Jul 31 · 1195 views

    image

    0x00 前言

    大家吼,前段时间摸了个 SSH 客户端出来,自用打磨得差不多了,想分享一下。

    项目地址:https://github.com/cppakko/miaominal

    实际用下来,多开 SSH 会话、SFTP 面板、监控面板一起跑,客户端占用明显比同类工具轻。(除了渲染 AI 输出的 Markdown 的时候)

    image

    上图是 Miaominal 和 Termius 的内存占用对比图。先叠个甲,不是拉踩,只能说各取所需,两种技术栈都有各自的优势和劣势。

    0x01 功能与截图

    远程监控与终端

    属于是聊胜于无的状态监控 默认是关闭状态 需要手动开启 设置里有开关可以自动开启

    终端底部状态栏两边各有一个面板入口:左边打开监控、脚本片段和 SFTP 侧边栏,右边打开 Miao-Agent 聊天面板。

    image


    SFTP

    SFTP 入口有三个:在主机列表里右键主机、在已连接的 SSH 标签页上右键,或者在终端区域内右键,都可以从菜单里直接打开 SFTP 。

    传输任务中心可以通过底部状态栏右侧的双向箭头按钮展开或收起,上传、下载的进度和失败任务都可以在这里集中看。

    image


    加密同步

    支持 GitHub Gist 和 WebDAV 。

    写得比较偷懒,目前就给了手动推送和拉取,什么自动同步、配置合并都没有,后面看需求再补吧。

    同步前要先设置一个专用口令。推送时,私钥、API Key 这些敏感数据会先用该口令加密——KDF 使用 Argon2id ,数据加密使用 AES-256-GCM 。

    image


    端口转发

    有独立的端口转发管理面板,可以和保存的 SSH 主机关联,快速开关、编辑规则,右击直接在浏览器打开转发目标(自认为最有用的功能)。

    临时看各种 Web 面板的时候很方便

    image


    SSH 入口代理

    可以在设置里统一管理可复用的 SOCKS5 和 HTTP CONNECT 代理,支持无认证、用户名密码认证,SOCKS5 还可以选择把 DNS 解析交给代理端。

    保存主机时选择对应的入口代理即可,SSH 、SFTP 、端口转发和 Miao-Agent 执行命令都会走同一套配置,不用每个功能再单独配一遍。


    数据目录与 Portable 模式

    普通安装版可以在设置里更改数据目录,重启后会自动迁移设置、连接和聊天记录等文件数据。系统 Keyring 里的凭据还是留在当前电脑,不会跟着目录一起搬走。

    Release 里也提供了各平台的 Portable 压缩包,解压后直接运行,数据都保存在程序旁边的 data 目录里。Portable 模式不使用系统 Keyring ,首次启动需要创建本地机密库口令。


    配置导入

    支持从以下格式导入现有的 SSH 配置文件:

    • OpenSSH config
    • PuTTY .reg
    • SecureCRT .xml
    • FinalShell .json

    这个只做了简单测试,如果遇到问题,还望能提供一份脱敏后的配置文件 :)


    Miao-Agent ( BETA )

    SSH 连上以后,可以在当前会话旁边开一个 Agent 面板,让它基于这个 shell 做些事情:问答、读文件、执行命令、应用 patch 、Web search/fetch 、分析当前终端上下文。

    一定要注意的是 在远程机器上让 Agent 动手,和在本地不一样 本地有 Git 兜底,远程删了文件改了配置就是改了 所以工具调用分了几档权限,可以根据场景自己选:

    • Ask:只允许只读工具,走完整策略审查,每个 tool call 都要确认
    • Execute:默认模式,所有工具可用,走完整策略审查,敏感操作需要确认
    • NonBlocking:所有工具可用,跳过策略限制,但每个 tool call 执行前仍需用户批准
    • FullAuto:所有工具可用,跳过策略限制,全部自动执行不等确认

    AskExecute 模式下走完整策略审查,内置了敏感路径黑名单(.ssh/、私钥、.env/etc/shadow、数据库目录等),命中直接拒绝。NonBlockingFullAuto 跳过策略层,黑名单不生效——只有 ..~ 的路径规范化始终强制。

    但是 AI 在实际运行的时候还是会想方设法绕过限制,所以一定要自己看好 AI 执行的命令,先审再跑。

    讲真,这个功能开发比我预期的复杂很多,现阶段可用,但还远没到“好用”的程度,完成一些简单任务倒是足够。出任何问题概不负责。

    对了 使用前需要在设置中添加 AI Provider

    我自己其实是不用 AI 管理 VPS 的 但是感觉都 2026 年了 属于是必备功能了 可以不用 不能没有

    image


    0x02 结尾

    大概就这些,欢迎各位试用,有问题可以去 GitHub 提 Issue ,尤其是不同系统下的兼容性问题,能附上系统版本和复现步骤就更好了,谢谢大家。

    Supplement 1  ·  20h 33m ago

    Miaominal v0.2.2

    本次更新带来了自由输入模式、OpenSSH 集成、多窗口和系统托盘支持,同时也让端口转发更加稳定。

    新增功能

    "Free Type Mode" 自由输入模式 BETA

    • 现在可以直接点击终端中的位置移动光标,选中正在编辑的文字,还可以在同一个终端或不同分屏之间拖动文字。按住 Ctrl/Cmd 拖动则会在目标位置插入副本。Vim 等程序接管鼠标时,按住 Alt(Option)可临时使用自由输入;Shift 使用传统选择,Shift+Alt 使用块选择。

    image

    OpenSSH 集成

    • 现在可以在系统终端或其他 OpenSSH 客户端中使用 Miaominal 保存的主机。Direct 模式会导出兼容的主机配置;Bridge 模式则通过 Miaominal 建立连接,不需要把保存的密码或私钥暴露出去。
    • SSH Bridge 安全保护——可以设置连接时是否需要手动确认,还会显示安全通知并保留连接记录,方便查看哪些程序发起过连接。

    image

    多窗口支持

    • 标签页现在可以移动到单独的窗口,方便同时查看和操作多个终端或工作区。

    系统托盘

    • 可以选择关闭主窗口时直接退出,或者让 Miaominal 留在后台继续运行;关闭最后一个标签页时的行为也可以单独设置。

    单实例运行

    • 同一个数据目录现在只会运行一个 Miaominal 实例。重复启动时会直接唤起已有窗口,不再打开多个相同实例。

    体验改进

    • 端口转发现在由应用统一管理,切换页面、关闭会话视图或调整窗口时不容易受到影响。
    • 改进了应用再次唤醒时的端口转发恢复,后台运行更加稳定。
    • OpenSSH 集成页面现在会更清楚地显示 Bridge 状态、凭据是否可用、配置是否有效、待确认的连接请求和安全策略。

    问题修复

    • 修复点击“导入密钥文件”按钮时崩溃的问题。
    9 replies    2026-08-07 14:55:58 +08:00
    tianhehechu
        1
    tianhehechu  
       Jul 31
    [一拳鉴定] 重复造轮子,无意义。
    hzz2
        2
    hzz2  
       Jul 31
    同时支持 sshtab 分屏 跟 Free Type Mode 模式的话 可以帮忙推广一波
    https://kingtoolbox.github.io/2022/04/12/free_type_mode/
    Yaojun
        3
    Yaojun  
       5 days ago
    很不错
    molezznet
        4
    molezznet  
       4 days ago
    很轻量,用了试试,sftp 不能默认双击是编辑吗? 现在是下载, 右键编辑。
    molezznet
        5
    molezznet  
       4 days ago
    sftp 还想要文件夹收藏夹功能
    cppakko
        6
    cppakko  
    OP
       4 days ago
    @hzz2 已经完成了支持 将随下个版本发布
    cppakko
        7
    cppakko  
    OP
       4 days ago
    @molezznet #5 也许可以加个默认动作的设置项 收藏夹说实话我感觉现在的这个 UI 布局不太好弄 我试试看
    molezznet
        8
    molezznet  
       2 days ago
    这两天一直在用了,感觉自动同步的功能需求有点上来了 ……
    cppakko
        9
    cppakko  
    OP
       20h 32m ago
    @hzz2 已经发布啦 可以试着体验一下看看
    @molezznet 已加入 v0.2.3 的 TODO list 中
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3248 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 03:28 · PVG 11:28 · LAX 20:28 · JFK 23:28
    ♥ Do have faith in what you're doing.