← 返回博客

SSH 远程开发已上线!

2024 年 10 月 30 日

对于拥有大型代码库的人来说,在笔记本电脑上编程可能会让人不堪重负。风扇不停旋转,语言服务器内存持续不足,重建耗时漫长……

现在,在 Zed 中,您可以在任何可以通过 SSH 访问的机器上打开项目。UI 完全在本地运行,为您提供每秒 120 帧的完美配置图形,而所有内部组件:语言服务器、任务和终端都在远程服务器上运行,在那里它们可以利用云硬件。

一次性项目使用简单

zed ssh://my-host/~/code/zed

您可以根据需要配置长期连接

The "Remote Projects" UI in Zed.
Zed 中的“远程项目”用户界面。

欲了解更多信息,请参阅文档

构建远程开发

我们一直在开发远程开发功能。虽然 Zed 旨在实现远程代码编辑,但改变基础设施以支持 SSH 需要解决一系列子问题,从 SSH 连接维护到我们如何构建远程服务器,再到将该功能集成到 Zed 中的所有其他功能中。

对于 SSH 连接,我们使用 ControlMaster 设置来维护与每个主机的单个连接。这意味着您可以打开新的终端并生成任务,而无需重新输入密码或重新进行身份验证。连接后,我们将下载适用于您的操作系统和架构的远程服务器。与我们正常的 Linux 构建不同,远程服务器可以使用 musl 进行编译,这不需要动态链接。这使得它可以在旧的发行版(之前我们遇到了与 glibc 的兼容性问题)和像 Nix 这样没有全局库集进行动态链接的现代 share-nothing 发行版上运行。一旦我们建立了连接并安装了远程服务器,我们将其初始化为守护进程,这样当连接断开时,远程服务器会继续运行,并且在重新连接时您的语言服务器仍然完全初始化。我们还在本地备份任何未保存的更改,这样您就不会丢失工作。

最后一个难题是使 SSH 项目与协作配合。这对我们的协作同步协议来说是一个真正的压力测试,因为现在通过 SSH 进行两人协作可能涉及至少四个不同的节点。我们不得不重写我们的 Project,并将其拆分为逻辑块,这些逻辑块可以根据您的客户端是协作主机、SSH 主机还是协作访客,在远程和本地模式下启用。我们还有一些新的、有趣的测试,它们实例化了这些角色以及我们的协作服务器,并确保同步正确完成。如果您与朋友或同事在一个项目上工作,无论项目是在您的笔记本电脑上,还是在您可以通过 SSH 访问的机器上,对他们来说都应该是完全透明的。

请立即尝试,一如既往,请在 GitHub IssuesDiscord 中给我们留下反馈。


正在寻找更好的编辑器吗?

您今天就可以在 macOS、Windows 或 Linux 上试用 Zed。立即下载


我们正在招聘!

如果您对我们博客中涵盖的主题充满热情,请考虑加入我们的团队,帮助我们实现软件开发的未来。