最近把 VibeShell 的 README、截图和多平台 Release 整理好了。它是一个 Tauri 2 + React + Rust 写的开源桌面工具,支持 SSH、SFTP、SSH tunnel、本地 shell、session recording,以及给 AI coding 工具使用的 MCP server。
为什么做这个
传统 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 工具
为什么不用云端控制面
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 做成同一个工作区里的能力。
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
最后
VibeShell 还在快速打磨阶段,我最想收集真实场景反馈:
- 你会不会让 AI agent 操作远程服务器?
- 你希望 agent 能做哪些 SSH/SFTP 动作?
- 什么权限边界会让你更放心?
- 你当前最常用的 SSH/SFTP/Tunnel 组合是什么?
如果这个方向对你有用,欢迎试用、提 issue,也欢迎在 GitHub 点个 star: