做一个本地优先的 SSH/SFTP 桌面端:为什么我把 MCP 也放进来了

15 阅读3分钟

项目地址:github.com/veithly/vib…

最近把 VibeShell 的 README、截图和多平台 Release 整理好了。它是一个 Tauri 2 + React + Rust 写的开源桌面工具,支持 SSH、SFTP、SSH tunnel、本地 shell、session recording,以及给 AI coding 工具使用的 MCP server。

VibeShell terminal workspace

为什么做这个

传统 SSH 客户端默认假设只有一个人在终端里敲命令。这本身没问题,我自己也一直这么用。

变化出现在 AI 工具进来之后:我们会让 Claude Code、Codex、Cursor、Gemini CLI 这类工具帮忙查日志、改配置、上传构建、重启服务。

问题是,这些动作很容易散成一堆一次性命令:

  • 人开着一个终端
  • AI 另起一个 shell
  • 文件靠 scp 或 SFTP 工具传
  • tunnel 又在另一个窗口
  • 上下文、输出、错误和凭据边界都不够清楚

我想解决的是:人、CLI、AI 工具能不能共用一个本地优先、可观察、可复用的远程工作区。

它现在能做什么

  • SSH / local shell 多会话
  • SFTP 文件管理:预览、上传、下载、重命名、删除、目录同步
  • SSH tunnel 管理:local / remote / dynamic SOCKS5
  • session recording
  • SQLite 本地存储和加密凭据
  • 内置 MCP server,暴露 session、exec、rg、SFTP、file edit 等工具
  • 一键安装 skill 到常见 AI coding 工具

AI integrations

为什么不用云端控制面

VibeShell 的定位不是远程运维 SaaS。

SSH 凭据、server 配置、session 状态都应该优先留在本机。AI agent 可以通过本地 MCP 接口使用这些能力,但不需要把服务器钥匙交给一个托管平台。

这也是为什么后端选了 Rust/Tauri:

  • 桌面端有原生体验
  • SSH/SFTP 可以放在本地进程里
  • 凭据和 session 不需要经过第三方服务
  • 打包可以覆盖 Windows / macOS / Linux

SFTP 和 Tunnel 为什么也放进来

远程工作流里最烦的不是 SSH 本身,而是上下文切换。

查日志查到一半发现要下载文件,切到另一个 SFTP 工具;本地服务要连远程数据库,又开一个 tunnel 命令;AI agent 想改一个配置,还要临时拼 scp 或 sed。

所以 VibeShell 把 SFTP 和 tunnel 做成同一个工作区里的能力。

SFTP workflow

Tunnel manager

MCP 这一层怎么理解

MCP 不只是“让 AI 会调用工具”。在这个项目里,它更像一个边界:

  • 人类仍然保留 UI 里的观察和控制权
  • AI agent 不直接拥有任意 shell,它调用的是被定义好的工具
  • session、SFTP、文件编辑、搜索都有明确接口
  • 所有操作可以被 UI 和日志看到

目前暴露的工具包括:

  • server_list / server_add / server_update
  • session_create / session_attach / session_kill
  • exec / rg
  • sftp_ls / sftp_upload / sftp_download / sftp_sync_directory
  • get_content / edit_file / add_file

下载安装

Release 页面已经有多平台安装包:

  • Windows: .exe / .msi
  • macOS: Apple Silicon / Intel .dmg
  • Linux: .deb / .rpm / .AppImage

下载地址:github.com/veithly/vib…

最后

VibeShell 还在快速打磨阶段,我最想收集真实场景反馈:

  • 你会不会让 AI agent 操作远程服务器?
  • 你希望 agent 能做哪些 SSH/SFTP 动作?
  • 什么权限边界会让你更放心?
  • 你当前最常用的 SSH/SFTP/Tunnel 组合是什么?

如果这个方向对你有用,欢迎试用、提 issue,也欢迎在 GitHub 点个 star:

github.com/veithly/vib…