← 返回博客

Zed AI 简介

2024 年 8 月 20 日

在 Zed,我们将职业生涯奉献给了文本操作艺术的精通。从制作解析器生成器到设计编程语言,再到推出两款生产级文本编辑器,我们始终被文字和符号的表现力所吸引。因此,当大型语言模型(LLM)的出现彻底改变了文本解释和生成时,我们知道我们必须探索它们的潜力。

自 LLM 进入我们的视野以来,在过去的两年里,我们一直专注于构建 Zed 的核心:一个快速、可靠且具备开发者所需功能的文本编辑器。与此同时,我们一直在悄悄地尝试将 LLM 整合到我们自己的工作流程中。它不是一个华而不实的噱头,而是一个实用的工具,旨在提升我们在处理复杂真实世界代码库时的生产力。

随着我们对 AI 集成的不断完善,我们引起了一些意想不到的盟友的关注。Anthropic 的工程师们发现了 Zed,这家公司是全球领先的 AI 公司之一。他们很快看到了我们原始的、以文本为中心的界面的价值,该界面在用户和语言模型之间实现了最小的分离。他们的热情是对我们的肯定,我们的对话迅速演变为一次合作。

现在,我们准备推出 Zed AI,这是一项托管服务,为 Zed 中的 AI 辅助编码提供便捷高效的支持,由 Anthropic 的 Claude 3.5 Sonnet 提供支持,只需登录即可访问。我们还与 Anthropic 合作,优化了 Zed 以实施他们新的 Prompt Caching beta,即使在上下文窗口中包含数千行代码,也能实现闪电般的响应速度,同时降低成本。

Zed AI 现已推出,在初始发布期间免费。登录 Zed 即可访问 AI 助手面板和直接与您的编辑环境集成的内联代码转换功能。

Zed AI 的工作原理

最初作为 AI 辅助编码的实验,如今已发展成为引起领先 AI 从业者关注的事物。我们与 Anthropic 的合作自然而然地发展壮大,越来越多的开发人员现在每天都在使用 Zed,Anthropic 的核心 Rust 工程师团队也积极为我们的开源代码库做出贡献。

通过将尖端人工智能与快速、精心设计的编辑器相结合,我们正在创造一个能够与人工智能发展前沿的专家产生共鸣的工具,这些专家在他们的工作流程中既需要强大功能又需要精确性。

我们的人工智能辅助编码方法取决于两个核心功能之间的交互:Zed 的助手面板和内联转换。这种组合使开发人员能够利用语言模型的功能,同时完全控制他们的代码。

助手面板:掌握海量上下文

助手面板是您在 Zed 中与 AI 模型交互的地方,但它不是您典型的聊天界面。它是一个功能齐全的文本编辑器,公开了整个 LLM 请求。代码片段、对话历史、文件内容——所有这些都在这里,而且都只是文本。您可以使用熟悉的编码工具观察、编辑和完善请求的任何部分,从而完全透明地控制每次交互。

为了填充这个基于文本的上下文,我们引入了一个斜杠命令系统

  • /tab:插入一个打开的标签页的内容
  • /file:插入特定文件或文件树的内容
  • /terminal:包含终端输出
  • /diagnostics:插入来自整个代码库的诊断信息
  • /fetch:插入来自任意 HTTP URL 的响应
使用助手面板创建 Zed 扩展。

/file 命令允许我们从代码库中获取相关上下文,然后 AI 可以使用这些上下文来协助开发任务。

当您使用斜杠命令或引用选择绑定 (cmd->) 时,Zed 会将内容作为折叠文本插入。这包括整个目录树,这些目录树作为包含每个文件完整文本的递归折叠插入。

Zed 针对插入上下文的折叠机制在处理大型代码库或 API 文档时,平衡了细节与全局概览。上下文的每个标记都可见且可编辑,确保了对 AI 提示的精确控制。展开折叠以检查具体内容,或折叠它们以专注于整体结构。这种灵活性让您可以根据手头的任务调整视图和 AI 交互。

斜杠命令可通过 WebAssembly 或基于 JSON 的上下文服务器协议进行扩展,从而开启了令人兴奋的可能性。您可以创建根据您的工作流程量身定制的自定义命令,我们设想未来语言服务器可能会实现 /commands 以语言特定的方式获取上下文。

现在我们已经创建了 Perplexity 扩展,让我们看看它的实际应用

使用创建的 Zed 扩展。

在此演示中,我们

  1. 使用我们新的 /perplexity 命令获取 macOS 上麦克风捕获的关键 C 接口:“/perplexity 提供 macOS 上捕获麦克风输入的必要 C 接口。仅包含最相关的函数和结构。”

  2. 使用获取的接口生成 Rust 绑定:“使用这些 C 接口为 macOS 上的麦克风输入捕获生成 Rust 绑定。”

这种简化的工作流程展示了 Zed AI 如何在单一、连贯的界面中无缝集成外部知识(/perplexity)和代码生成。通过直接获取关键接口,我们消除了手动文件操作的需要,使过程更加高效和专注。

内联转换

内联转换通过 ctrl-enter 激活,允许您通过自然语言提示转换和生成代码。其独特之处在于其精确性和响应性。

为了给您快速反馈,我们实现了一种自定义的流式差异协议,该协议与 Zed 基于 CRDT 的缓冲区协同工作,以便在模型流式传输编辑时立即提供编辑。您可以看到模型的逐个标记输出,从而允许您在变化发生时读取并对其作出反应。这种低延迟流式传输创造了一种流畅、交互式的编码体验,让您在整个过程中保持参与和控制。

Zed 中的内联转换使用您在助手面板中构建的上下文。没有隐藏的系统提示符——您可以看到并控制塑造模型输出的每个输入。这种透明度让您可以微调模型的行为并提高您在 AI 辅助编码方面的技能。

Zed 中的文本转换通过其递归功能获得了强大的维度。您可以在助手面板本身中应用内联转换,从而细化上下文并迭代地改进提示。此功能将面板转变为提示工程的动态工作区,您可以在其中尝试不同的方法、完善您的指令,甚至可以使用 AI 来帮助创建更有效的 AI 提示。

内联转换还适用于 Zed 的多光标功能,允许您同时对多个选区应用相同的转换。

Zed AI 的下一步

我们正在不断努力扩展 Zed AI 的功能。以下是我们正在开发的一些功能

复杂转换的工作流

您已经看到了内联转换如何从助手面板中提取上下文,甚至如何转换面板自身的内容。通过 /workflow 命令,我们正在扩展此功能,以创建助手面板和项目文件之间的双向交互。

此功能允许您在助手面板中工作,以协调直接影响您代码库的更改。当您使用 /workflow 时,它会指示模型发出 Zed 解释的一系列 <step> 标签。这些步骤在您的项目文件中直接建议内联转换,为复杂的编码任务提供了引导式的 AI 辅助方法。

/workflow 命令有效地弥合了助手面板与实际代码之间的鸿沟,从而实现更集成、更强大的 AI 辅助开发过程。虽然我们正在积极完善此功能,但您今天就可以在 Zed 中尝试 /workflow。我们鼓励您在不同的编程语言中进行试验并分享您的经验。您的见解将有助于我们扩展和改进它。

使用 /workflow 命令。

高效构建上下文的工具

我们认识到,有效构建适当的上下文是 AI 辅助开发中的一个关键挑战。为了解决这个问题,我们正在开发工具,帮助您更快地收集相关信息。这些工具保持了 Zed 理念的核心——透明性和控制性,为您提供了强大的上下文构建能力,同时确保您理解并管理每次 AI 交互中包含的内容。

我们目前正在开发两个关键功能来解决这个问题

  • /project:目前处于配置标志之后,此命令可帮助您快速查找相关项目信息并将其插入到助手面板中。它旨在加快上下文构建,同时仍允许您在使用结果之前查看和编辑结果。

  • /auto:一个即将推出的功能,它将根据您当前的任务自动插入上下文,就像其他 / 命令一样。尽管它会自动操作,但插入的上下文仍然完全可见且可编辑,允许您探索、修改或删除它提取的任何信息。此功能旨在简化上下文构建,同时保持您控制和理解所用信息的能力。

这些功能旨在帮助您管理复杂的上下文,同时保留您理解和精确控制 AI 交互中使用信息的权力。我们相信这种力量与透明度的平衡对于有效的 AI 辅助开发至关重要。

随着我们不断完善这些工具,我们欢迎您就如何进一步改进 Zed AI 中的上下文管理提供反馈和想法。

加入我们,共同塑造 AI 辅助开发

Zed AI 体现了我们对开放、协作式软件开发的信念。我们创建了一个透明、可扩展的环境,让您能够以自己的方式利用 AI,牢牢掌握您的工具和工作流程。

我们邀请您尝试 Zed AI,成为这段旅程的一部分。尝试自定义斜杠命令,微调提示,并突破界限。将您的创新作为扩展或对 Zed 存储库的贡献分享出来。

有了 Zed AI,您将掌握主导权,在熟悉的文本领域引导 AI 的潜力。我们将共同构建一种 AI 辅助开发体验,从而放大您的创造力并适应您独特的编码风格。我们很高兴能看到我们的社区将创造出什么。


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

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


我们正在招聘!

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