← 返回博客

Zed Industries 本周动态:#7

Zed Industries 度过了相当充实的一周。我们宣布了“在 Zed 上开源 Zed”的意图——该计划从我们在 Zed 中构建一套功能开始,这些功能将使用户能够直接在代码本身上进行讨论,而不是通过拉取请求。

本周,我们在 v0.90.1 中发布了一个热门功能请求——您现在可以根据项目覆盖您的全局用户设置。实际上,该系统比这更灵活,因为如果您愿意,可以在项目的各个目录中定义不同的设置。有关如何配置特定文件夹设置的更多详细信息,请参阅文档。我们还在 Zed 中为 Elixir 开发 landed 了一系列改进,并且正在努力推出更多改进!

以下是我们每个人本周的工作

Antonio

本周,我一直致力于彻底改造助手面板,以引入一些新的酷炫功能,例如在插入或删除消息时支持撤销/重做,并为支持与其他用户协作使用助手奠定基础。我们正在努力完善这个新的助手面板,并希望它能在未来一周左右公开。

我还与 Kirill 合作支持嵌入式提示。这需要一些非常密集的工程才能高效地显示提示,但我们对进展感到非常兴奋,迫不及待地想尽快推出它。

约瑟夫

本周我完成了在我们分析工具中构建一个最小反馈查看器的工作。该表格允许我们一次性查看所有反馈,或者按 ID 筛选,这使我们能够添加更多想要的功能。目前它相当基础,但我认为它涵盖了我们取代 AirTable 所需的大部分功能,并添加了一些我想要的方便功能,例如点击用户的电子邮件并让本地电子邮件客户端打开并预先引用用户的反馈。我不是前端工程师,所以这一切都需要在某个时候进行一些完善 😂。

目前,我们分析工具的生产版本正在经历一个 bug,它无法生成聚合报告,因为用于与 OpenAI 通信的 Cloudflare Worker 似乎从未运行。本周我尝试了几次查看它,但一直未能弄清楚。Vercel 的日志奇怪地省略了实际的日志消息,因此 Max 帮忙将日志设置为转储到 DataDog。我将在今天和周末深入研究这个问题。

自从构建崩溃仪表盘(又名“崩溃板”)以来,我一直将其打开在一个标签页中,每天多次查看。我意识到我们可能不应该仅仅依靠手动检查崩溃板,并添加了一些基本警报。Metabase 现在将每小时检查一次,看看是否在同一小时内发生了三次或更多相同类型的崩溃——如果是,它将发送电子邮件到我们的收件箱。这方面还有改进的空间,例如在发布日使查询更灵敏,但这是一个很好的开始。这是一个相当小的补充,但我总是很高兴能提高我们发现和应对崩溃的能力。

Piotr

本周大部分时间,我都在重构我们的样式生成,使其更加精简。我也有机会与 Antonio 和 Nathan 一起研究助手面板。下周我计划与 Mikayla 再次合作处理标题栏。

马克斯

HEEx - 本周伊始,我继续致力于 Zed 上的 Elixir 支持。我添加了对一种名为 HEEx 的模板语言的支持。在此过程中,我发现 Zed 解析 HEEx 和 ERB(一种基于 Ruby 的模板语言)等模板语言的方式存在一个 bug。在某些情况下,我们会将模板之外的代码解析为模板之内,这很糟糕 😬。

语法树视图 - 当开始处理这个 bug 时,我采取了一种我经常在感到不知所措时使用的方法:“首先,构建能够使调试问题变得愉快的工具。然后,愉快地调试问题。”在这种情况下,这种方法包括向 Zed 添加一个语法树视图。如果我可以直接观察给定缓冲区的所有语法树,包括每个语法节点的范围,我就可以找到问题的根源。

决定将这个语法树视图添加到应用程序后,我希望它的质量很高。特别是,我希望使语法树的渲染高效,这并非完全微不足道,因为语法树是一个非常大的数据结构(通常比其对应的源代码更大)。为此,我需要向 Tree-sitter 添加一些新的 API,用于在深度优先树遍历中从特定索引高效地检索节点。

一旦语法树视图实现,诊断模板语言的 bug 就轻而易举了。

目录扫描 - 接下来,我着手解决 Zed 中一个长期存在的资源使用问题,该问题影响包含指向项目外部非常大目录的符号链接的项目。目前,Zed 会主动扫描项目中的所有目录,以维护目录的内存表示,适用于模糊匹配。如果您的项目文件夹包含指向 $HOME 的符号链接,这种主动扫描可能会无休止地进行,占用过多的 RAM。

我正在努力在某些情况下使我们的目录扫描逻辑更加惰性。这将消除上述 bug,并加快在 Zed 中协作时发生的文件系统同步。

米凯拉

本周,我一直专注于为 Zed 添加语音聊天功能!在将我们的 C API 连接到 LiveKit 的 Swift SDK 之后,我把本周余下的时间都花在了学习 macOS 应用打包如何工作上,这样我们就可以获得使用麦克风的授权。下周,将再次修改我们的标题栏,为语音聊天 UI 和我们计划的其他功能腾出空间。

基里尔

我仍然完全沉浸在提示故事中:即使 Antonio 帮助我带来了所有有趣的改变,要让提示与 Zed 其他体验保持一致仍然具有挑战性。幸运的是,我们有方法对我们的协议和显示逻辑进行模糊测试,但即使如此,第一个公共版本仍需要更多完善。

茱莉亚 (Julia)

本周大部分时间我都在埋头构建重新安装损坏的语言服务器的系统。负责管理语言服务器的代码的很大一部分已经进行了重构,以实现此功能。这不是什么华丽的工作,但它是必要的,而且这项工作似乎即将完成。

内森

本周前半段,我专注于阐明我们在 Zed 上开源 Zed 的愿景。我还花时间与 Piotr 和 Antonio 合作开发 Zed 的新助手面板,并在 Boulder 的 AI 聚会上展示了助手。很高兴大家很快就能体验到它!

内特

本周有很多工作流程。我们正在对标题栏进行全面改造,以支持流媒体/语音 UI,以及许多其他便利功能,例如从标题栏切换项目/分支。

还有许多其他正在进行的设计项目,用于支持流媒体,并启动了一些更短期的工作,支持对话和即将推出的助手面板。

主题重构也在继续——我们一直致力于使主题更符合 GPUI 元素的工作方式。这将使新功能的样式设计变得更加容易。

这周没有时间像我希望的那样公开分享太多,但我昨天非常愉快地观看了José 的直播,我很想在不久的将来尝试类似的事情!

感谢阅读!


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

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


我们正在招聘!

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