在 Zed,我们致力于精通文本操作的艺术。从编写解析器生成器到设计编程语言,再到发布两个生产级的文本编辑器,我们一直着迷于文字和符号的表达能力。因此,当大型语言模型 (LLM) 出现并彻底改变文本解释和生成时,我们就知道必须探索它们的潜力。
自从 LLM 进入我们的视野以来的两年里,我们一直专注于构建 Zed 的核心:一个快速、可靠的文本编辑器,具有开发者需要的功能。与此同时,我们一直在悄悄地尝试将 LLM 集成到我们自己的工作流程中。不是作为华而不实的噱头,而是作为一种实用的工具来提高我们在复杂、真实的 codebase 上的工作效率。
在我们改进 AI 集成的过程中,我们引起了一些意想不到的盟友的注意。世界领先的 AI 公司之一 Anthropic 的工程师发现了 Zed,并迅速看到了我们原始的、以文本为中心的界面的价值,该界面最大限度地减少了用户和语言模型之间的隔离。他们的热情令人欣慰,我们的对话引发了一场迅速演变成合作的讨论。
现在,我们准备推出 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 工程师核心团队正在积极地为我们的开源 codebase 做出贡献。
通过将尖端的 AI 与快速、精心设计的编辑器相结合,我们正在创建一个能够引起 AI 开发前沿人士共鸣的工具——这些专家需要工作流程中的强大功能和精确性。
我们对 AI 辅助编码的方法依赖于两个核心功能之间的交互:Zed 的助手面板和内联转换。这种组合允许开发者利用语言模型的力量,同时保持对其代码的完全控制。
助手面板:掌握海量上下文
助手面板是您在 Zed 中与 AI 模型交互的地方,但它不是您典型的聊天界面。它是一个功能齐全的文本编辑器,可以暴露整个 LLM 请求。代码片段、对话历史记录、文件内容——一切都在那里,而且一切都只是文本。您可以使用熟悉的编码工具观察、编辑和改进请求的任何部分,从而使您对每次交互都具有完全的透明度和控制权。
为了填充这个基于文本的上下文,我们引入了一个斜杠命令系统
/tab
:插入打开的选项卡的内容/file
:插入特定文件或文件树的内容/terminal
:包含终端输出/diagnostics
:插入来自整个 codebase 的诊断信息/fetch
:插入来自任意 HTTP URL 的响应
/file
命令允许我们从我们的 codebase 中引入相关上下文,然后 AI 可以使用这些上下文来协助开发任务。
当您使用斜杠命令或引用选择绑定 (cmd->) 时,Zed 会将内容作为折叠文本插入。这包括整个目录树,它们作为包含每个文件完整文本的递归折叠插入。
Zed 的插入上下文的折叠机制在处理大型 codebase 或 API 文档时,可以平衡细节和全局。上下文的每个 token 仍然可见且可编辑,确保对 AI prompt 的精确控制。展开折叠以检查具体内容,或折叠它们以专注于整体结构。这种灵活性使您可以根据手头的任务定制您的视图和您的 AI 交互。
斜杠命令可以通过 WebAssembly 或基于 JSON 的上下文服务器协议进行扩展,从而开启令人兴奋的可能性。您可以创建针对您的工作流程定制的自定义命令,并且我们设想在未来,语言服务器可能会实现 /commands 以语言特定的方式获取上下文。
现在我们已经创建了我们的 Perplexity 扩展,让我们看看它的实际效果
在这个演示中,我们
-
使用我们新的
/perplexity
命令来获取 macOS 上用于麦克风捕获的关键 C 接口:“/perplexity 提供用于在 macOS 上捕获麦克风输入的基本 C 接口。仅包括最相关的函数和结构。” -
使用获取的接口来生成 Rust 绑定:“使用这些 C 接口生成用于在 macOS 上捕获麦克风输入的 Rust 绑定。”
这种简化的工作流程演示了 Zed AI 如何在单个、连贯的界面中无缝集成外部知识(/perplexity
)和代码生成。通过直接获取关键接口,我们消除了手动文件操作的需要,使过程更加高效和专注。
内联转换
内联转换,通过 ctrl-enter
激活,允许您通过自然语言 prompt 转换和生成代码。它们的独特之处在于它们的精确性和响应能力。
为了给您快速反馈,我们实现了一个自定义的流式 diff 协议,该协议与 Zed 基于 CRDT 的缓冲区一起工作,以便在编辑从模型中流式传输时立即交付编辑。您会看到模型逐个 token 的输出,从而允许您读取和响应发生的变化。这种低延迟流式传输创建了一种流畅、交互式的编码体验,使您在整个过程中保持参与和控制。
Zed 中的内联转换使用您在助手面板中构建的上下文。没有隐藏的系统 prompt-您可以看到并控制影响模型输出的每个输入。这种透明性使您可以微调模型的行为并提高您在 AI 辅助编码方面的技能。
通过其递归功能,Zed 中的文本转换获得了强大的维度。您可以在助手面板本身内应用内联转换,从而允许您优化上下文并迭代改进 prompt。此功能将面板转换为用于 prompt 工程的动态工作区,您可以在其中试验不同的方法,优化您的指令,甚至可以使用 AI 来帮助制作更有效的 AI prompt。
内联转换也适用于 Zed 的多光标功能,允许您同时在多个选择上应用相同的转换。
Zed AI 的下一步发展
我们不断努力扩展 Zed AI 的功能。以下是我们正在开发的内容的一瞥
复杂转换的工作流程
您已经了解了内联转换如何从助手面板中提取上下文,甚至转换面板本身的内容。通过 /workflow
命令,我们正在扩展此功能,以在助手面板和您的项目文件之间创建双向交互。
此功能允许您在助手面板中工作,协调直接影响您代码库的更改。当您使用 /workflow
命令时,它会指示模型发出一系列 Zed 可以解释的 <step>
标签。这些步骤会建议在您的项目文件中进行内联转换,从而提供一种引导式的、AI 辅助的方法来处理复杂的编码任务。
/workflow
命令有效地连接了助手面板和您的实际代码,从而实现更集成和更强大的 AI 辅助开发流程。虽然我们正在积极改进此功能,但您现在就可以在 Zed 中尝试 /workflow
命令。我们鼓励您在不同的编程语言中进行试验并分享您的经验。您的见解将帮助我们扩展和改进它。
高效构建上下文的工具
我们认识到,在 AI 辅助开发中,高效构建适当的上下文是一个关键挑战。为了解决这个问题,我们正在开发工具来帮助您更快地收集相关信息。这些工具保持了 Zed 理念的核心 - 透明度和控制力,为您提供强大的上下文构建能力,同时确保您理解和管理每个 AI 交互的内容。
我们目前正在开发两个关键功能来解决这个问题
-
/project
:目前隐藏在一个配置标志之后,此命令可帮助您快速查找并将相关的项目信息插入到助手面板中。它的设计目的是加速上下文构建,同时仍然允许您在使用结果之前进行审查和编辑。 -
/auto
:一项即将推出的功能,它将根据您当前的任务自动插入上下文,就像其他 / 命令一样。虽然它会自动运行,但插入的上下文仍然完全可见且可编辑,允许您探索、修改或删除它拉入的任何信息。此功能旨在简化上下文构建,同时保持您控制和理解所使用信息的能力。
这些功能旨在让您在管理复杂上下文时拥有优势,同时保留您理解和控制 AI 交互中使用的信息的精确程度。我们相信这种力量和透明度的平衡对于有效的 AI 辅助开发至关重要。
当我们继续改进这些工具时,我们欢迎您提出有关如何进一步改进 Zed AI 中的上下文管理的反馈和想法。
加入我们,塑造 AI 辅助开发
Zed AI 体现了我们对开放、协作软件开发的信念。我们创造了一个透明的、可扩展的环境,使您能够按照自己的方式利用 AI,让您牢牢掌控自己的工具和工作流程。
我们邀请您试用 Zed AI 并成为这一旅程的一部分。尝试自定义斜杠命令、微调提示,并突破界限。以扩展的形式或作为对 Zed 存储库的贡献来分享您的创新。
有了 Zed AI,您就可以掌控一切,在熟悉的文本领域中发挥 AI 的潜力。我们将共同构建一种 AI 辅助开发体验,从而增强您的创造力并适应您独特的编码风格。我们很高兴看到我们的社区将创造什么。