Zed Industries 这周发生了很多事。 我们宣布了“在 Zed 上开源 Zed”的计划 - 这个计划的起点是我们要在 Zed 中构建一系列功能,让用户可以直接在代码上进行讨论,而不是通过 pull request。
我们本周在 v0.90.1 中发布了一个受欢迎的功能请求 - 现在您可以基于每个项目覆盖全局用户设置了。实际上,这个系统比这更灵活,如果您愿意,可以在项目的各个目录中定义不同的设置。有关如何配置文件夹特定设置的更多详细信息,请参阅文档。 我们还在 Zed 中添加了一些 Elixir 开发的改进,并且还有更多改进正在路上!
以下是我们每个人本周的工作内容
Antonio
这周,我一直在改造助手面板,以引入一些新的炫酷功能,例如在插入或删除消息时支持撤消/重做,并为在使用助手时支持与其他用户协作奠定基础。我们正在努力完善这个新的助手面板,我们希望它应该可以在下周左右公开发布。
我还一直在与 Kirill 合作开发内联支持。这需要一些非常紧张的工程设计才能有效地显示提示,但我们对取得的进展感到兴奋,并且迫不及待地想尽快发布它。
Joseph
我完成了将最小的反馈查看器构建到我们的分析工具中的工作。该表允许我们一次查看所有反馈,或者按 ID 筛选,这使得我们想要添加的其他功能成为可能。目前它非常基础,但我认为它涵盖了我们替换 AirTable 所需的大部分内容,并添加了一些我想要的小型生活质量功能,例如单击用户的电子邮件,然后本地电子邮件客户端会打开并引用该用户的反馈。我不是前端工程师,所以所有这些都需要在某个时候进行润色 😂。
目前,我们的分析工具的生产版本遇到一个错误,即它没有生成聚合报告,因为用于与 OpenAI 通信的 Cloudflare Worker 似乎从未运行。我本周尝试过几次查看它,但还没有弄清楚。Vercel 的日志记录奇怪地省略了实际的日志消息,因此 Max 通过设置将日志转储到 DataDog 中提供了帮助。我今天和周末将深入研究这个问题。
自从构建了崩溃仪表板(又名“crashboard”)以来,我一直将其打开在一个选项卡中,并且每天多次检查它。我意识到我们可能不应该仅仅依靠手动检查崩溃仪表板,并添加了一些基本警报。Metabase 现在每小时检查一次,看看是否在一小时内发生了三个或更多相同类型的崩溃 - 如果是这样,它将向我们的收件箱发送电子邮件。这里有改进的空间,例如在发布日使查询更加敏感,但这是一个好的开始。这是一个非常小的补充,但我总是很高兴能够提高我们查看和响应崩溃的能力。
Piotr
在本周的大部分时间里,我一直在重构我们的样式生成,以使其更加精简。我还有机会和 Antonio 和 Nathan 一起研究助手面板。下周我计划和 Mikayla 一起研究标题栏(再次)。
Max
HEEx - 本周初,我继续致力于在 Zed 上支持 Elixir。我添加了对一种名为 HEEx 的模板语言的支持。在此过程中,我注意到 Zed 解析模板语言(如 HEEx 和 ERB(一种基于 Ruby 的模板语言))的方式存在一个错误。在某些情况下,我们会将模板之外的代码解析为好像它在模板内部 😬。
语法树视图 - 在开始处理这个错误时,我采取了一种在感到畏惧时经常使用的策略:“首先,构建使调试问题变得愉快的好工具。然后,愉快地调试问题。” 在这种情况下,该策略意味着向 Zed 添加一个语法树视图。如果我可以直接观察给定缓冲区的所有语法树,包括每个语法节点的范围,我就能追踪到问题的根源。
在决定将此语法树视图添加到应用程序后,我希望它具有高质量。特别是,我想使语法树的渲染效率高,这并非完全微不足道,因为语法树是一个非常大的数据结构(通常大于其对应的源代码)。为此,我需要在 Tree-sitter 中添加一些新的 API,以便从深度优先树遍历中的特定索引开始高效地检索节点。
一旦实现了语法树视图,诊断模板语言错误就变得轻而易举了。
目录扫描 - 接下来,我将注意力转向解决 Zed 中一个长期存在的资源使用问题,该问题影响包含指向项目外部的大型目录的符号链接的项目。今天,Zed 会急切地扫描项目中的所有目录,以维护目录的内存中表示,适合模糊匹配。如果您的项目文件夹包含指向 $HOME
的符号链接,这种急切扫描可能会无休止地进行,使用过多的 RAM。
我正在努力在某些情况下使我们的目录扫描逻辑更加懒惰。这将消除上述错误,并加快在 Zed 中协作时发生的文件系统同步。
Mikayla
这周,我专注于向 Zed 添加语音聊天!在通过我们的 C API 连接到 LiveKit 的 Swift SDK 之后,我花了本周剩余的时间学习 macOS 应用程序捆绑的工作原理,以便我们可以获得使用麦克风的授权。下周,我们将重新制作标题栏(再次),以便为语音聊天 UI 和一些我们计划的其他功能腾出空间。
Kirill
我仍然完全专注于提示故事:即使 Antonio 通过帮助我带来了所有有趣的改变,但要使提示与 Zed 的其余体验相提并论仍然具有挑战性。幸运的是,我们有方法来模糊测试我们的协议和显示逻辑,但即使有了这个,对于第一个公共版本,仍然需要解决更多问题。
Julia
这周我主要埋头构建用于重新安装损坏的语言服务器的系统。负责管理语言服务器的大部分代码已经过重构,以便支持此功能。 这不是什么花哨的工作,但却是必要的,而且这项工作似乎快要结束了。
Nathan
本周的前半部分,我专注于阐述我们在 Zed 上开源 Zed 的愿景。 我还花时间与 Piotr 和 Antonio 一起研究 Zed 的新助手面板,并在博尔德的 AI 聚会上演示了该助手。 很高兴每个人都能很快使用它!
Nate
这周有很多工作流程。 我们正在全面改造标题栏,以支持流媒体/语音 UI,以及许多其他便捷功能,例如从标题栏切换项目/分支。
目前还有一些其他设计项目正在进行中,以支持流媒体,以及一些支持对话和即将推出的助手面板的短期工作。
主题重构也在继续进行中 – 我们一直在努力使主题更符合 GPUI 元素的工作方式。 这将使新功能的样式设置变得更加容易。
这周我没有时间像我希望的那样公开分享很多内容,但我很喜欢昨天观看 José 的直播,并且我很想在不久的将来尝试类似的事情!
感谢您的阅读!