Zed 源码开发指南在 macOS / Linux / Windows 上安装、构建与测试这款高性能编辑器【免费下载链接】zedCode at the speed of thought – Zed is a high-performance, multiplayer code editor from the creators of Atom and Tree-sitter.项目地址: https://gitcode.com/GitHub_Trending/ze/zedZed 是由 Atom 与 Tree-sitter 团队打造的 Rust 编写的高性能多人协作代码编辑器。本文基于仓库根目录 README 与配套的三份平台构建文档系统讲清楚从获取源码、安装各平台构建依赖到调试构建、发布构建、运行全量测试的完整流程并深入解析仓库中的工具链配置、Cargo 工作区配置与开源许可合规机制帮助你在本地搭建出一个可贡献代码的 Zed 开发环境。项目定位与仓库结构README 开篇即说明了 Zed 的身份a high-performance, multiplayer code editor from the creators of Atom and Tree-sitter。从源码结构看这是一个由两百余个 crate 组成的大型 Cargo 工作区根 Cargo.toml 的members列表覆盖了核心编辑器、GPU 渲染框架、AI/Agent 能力、协作后端等模块渲染与平台层crates/gpui及按平台拆分的gpui_macos、gpui_linux、gpui_windows、gpui_web等工作区依赖中可见其使用wgpu、metal等图形栈编辑核心crates/editor、crates/languages、crates/language、crates/tree-sitter相关语法高亮 crateAI 与 Agentcrates/agent、crates/anthropic、crates/open_ai、crates/copilot等协作与远程crates/collab、crates/livekit_client、crates/remote_server入口二进制crates/zed主程序与crates/cli命令行入口。工作区还固定了edition 2024、publish false并通过default-members [crates/zed]让裸跑cargo run直接构建编辑器主程序——这正是 README 中装好依赖后cargo run即可运行的底层原因。安装 Zed按 README 的 Installation 一节Zed 支持 macOS、Linux、Windows 三个平台可以直接从官方下载页获取安装包也可以各平台对应的包管理器方式安装。README 同时明确指出 Web 版本尚未可用。普通用户走到这一步即可使用 Zed下文面向希望修改、构建或贡献代码的开发者。获取源码与 Rust 工具链开发 Zed 的第一步是克隆仓库。工具链由仓库内的 rust-toolchain.toml 精确锁定安装 rustup 后进入仓库目录会自动切换[toolchain] channel 1.97.1 profile minimal components [ rustfmt, clippy, rust-analyzer, rust-src ] targets [ wasm32-wasip2, # extensions wasm32-unknown-unknown, # gpui on the web x86_64-unknown-linux-musl, # remote server ]从源码结构看三个额外编译目标分别对应 Zed 的三项能力WASI 目标用于编译扩展extensions 以 WebAssembly 组件运行依赖 Cargo.toml 中的wasmtime48 组件模型支持wasm32-unknown-unknown服务于 Web 端 gpui 实验musl 目标则用于构建远程服务器二进制。构建行为还受 .cargo/config.toml 全局约束几个值得理解的配置[build] # v0 mangling scheme provides more detailed backtraces around closures rustflags [-C, symbol-mangling-versionv0, --cfg, tokio_unstable] [target.cfg(target_os windows)] rustflags [ --cfg, windows_slim_errors, # 将 windows::core::Error 从 16 字节缩小到 4 字节 -C, target-featurecrt-static, # 修复在 Windows 上链接 livekit 的问题 ] [target.aarch64-unknown-linux-gnu] rustflags [-C, link-arg-fuse-ldlld] # aarch64-linux 上需要用 lld 链接 libwebrtc.a [env] MACOSX_DEPLOYMENT_TARGET 10.15.7这里还定义了若干常用 cargo 别名cargo xtask等价于run --package xtaskcargo perf-test/cargo perf-compare则以release-fastprofile 运行性能测试。各平台构建依赖macOS依据 docs/src/development/macos.md需要安装 [rustup] 工具链仓库会自动切到锁定版本安装 XcodeApp Store 或 Apple Developer 下载安装后启动一次并安装 macOS 组件安装并指向前者 Xcode 的命令行工具xcode-select --install sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer sudo xcodebuild -license accept安装cmakewasmtime 的 C API 依赖需要brew install cmake。Linuxdocs/src/development/linux.md 给出的官方做法是直接执行仓库自带的 script/linux 脚本。该脚本按发行版分支持了完整的依赖清单以 Debian/Ubuntu 系为例需要gcc g make build-essential cmake clang lld llvm git curl jq gettext-base elfutils libasound2-dev libfontconfig-dev libgit2-dev libglib2.0-dev libssl-dev libva-dev libvulkan1 libwayland-dev libx11-xcb-dev libxkbcommon-x11-dev libzstd-dev libsqlite3-dev musl-tools musl-dev pipewire xdg-desktop-portal并会根据/etc/os-release的版本号追加libstdc-12-dev/libstdc-14-dev对较老的 Ubuntu 20.04 甚至会从 ubuntu-toolchain-r PPA 拉取clang-18与libstdc-11-dev注释说明原因是编译webrtc-sys需要 C20 支持。脚本同样覆盖 Fedora/RHELdnf/yum含 codeready-builder 仓库处理、openSUSEzypper、Archpacman、Voidxbps、Gentooemerge五套包管理器安装完会顺带补装 rustup。Windowsdocs/src/development/windows.md 的要求最多Visual Studio含MSVC C x64/x86 build tools与 Spectre-mitigated libs 组件或更精简的 Build Tools Desktop development with C 工作负载后者需手动启动开发者 shell 才能被 rustup 识别Windows 10/11 SDK至少需要Windows 10 SDK version 2104CMakewasmtime 依赖所需可通过 VS Installer 安装后手动把 bin 目录加入 PATH。文档还附上了完整的 VS Installer 组件清单 JSONMicrosoft.VisualStudio.Component.VC.Tools.x86.x64、Microsoft.VisualStudio.ComponentGroup.WebToolsExtensions.CMake等并特别提醒自 Visual Studio 2026 / MSVC 14.50 起 MSVC 版本与 VS 版本解耦需要改选MSVC Build Tools (Latest)组件。构建、运行与测试三平台文档给出的核心命令完全一致区别只在依赖准备# 调试构建并直接运行编辑器 cargo run # 发布构建 cargo run --release # 运行全工作区测试 cargo test --workspaceLinux 下还多两个实用入口cargo run -p cli以开发模式运行主界面 CLI crate./script/install-linux把本地构建安装到机器上。查看 script/install-linux 源码可知其流程读取 crates/zed/RELEASE_CHANNEL 导出ZED_CHANNEL设置ZED_UPDATE_EXPLANATION提示开发构建不走自动更新调用 script/bundle-linux 以 release 模式构建zed与cli并打包为target/release/zed-linux-${arch}.tar.gz最后执行 script/install.sh 把二进制安装到~/.local/bin/zed、桌面文件到~/.local/share。窗口系统方面Linux 版 Zed 同时支持 X11 与 Wayland默认运行时自动探测在 Wayland 会话中可用WAYLAND_DISPLAY强制走 X11。文档同时为发行版打包者写了专门章节Zed 有两个二进制——cli放入$PATH并命名zed和zed本体放到cli相对路径../../libexec/zed-editor或../../lib/zed/zed-editor.desktop文件模板在crates/zed/resources/zed.desktop.in用envsubst填充值、重命名为$APP_ID.desktop并加执行权限还可用环境变量ZED_UPDATE_EXPLANATION关闭自动更新并给用户手动升级说明。视觉回归测试macOS 专属macOS 文档专门介绍了 Zed 的视觉回归测试它截屏真实 Zed 窗口并与基线图对比需要给终端授予 Screen Recording 权限。首次使用要先生成本地基线基线存放于crates/zed/test_fixtures/visual_tests/为控制仓库体积被 gitignoregit checkout origin/main UPDATE_BASELINE1 cargo run -p zed --bin zed_visual_test_runner --features visual-tests git checkout - # 之后改动 UI 并确认预期变化后重新更新基线 UPDATE_BASELINE1 cargo run -p zed --bin zed_visual_test_runner --features visual-testsWindows 文档中注明该测试目前仅 macOS 可用。性能剖析与诊断两份平台文档把高 CPU 场景如何取证写得很具体可直接当排障手册Linuxps -eo size,pid,comm | grep zed | sort | head -n 1 | cut -d -f 2找到zed-editor的 PIDsudo perf record -g --call-graph dwarf -p pid采样--call-graph dwarf走.eh_frame展开适用于被 strip 的 release 二进制配合perf buildid-cacheperf inject恢复符号再用flamegraph --perfdata渲染火焰图内存问题则推荐heaptrackcargo install cargo-heaptrack后cargo heaptrack -b zed退出后用heaptrack_interpretheaptrack_gui查看。官方 release 的未 strip 符号文件由script/bundle-linux上传归档可通过 build id 匹配下载。macOS事发时sample Zed 10 -f zed-sample.txt并从命令面板的 About 复制精确版本/commit事后由script/bundle-mac归档的zed.dwarf配合atos -o zed.dwarf -l load address address...解析符号。若要在本机带符号 profile可把zed.dwarf转成Zed.dSYMbundle 后再跑sample。常见构建故障速查三份文档汇总的高频问题按平台整理三平台通用cargo 报依赖使用了 unstable features ——cargo clean cargo build通常可解决。macOSxcrun: error: unable to find utility metal—— 重新xcode-select --switchmacOS 26 上还需xcodebuild -downloadComponent MetalToolchaindispatch/dispatch.h file not found—— 除切换 Xcode 工具链外还需export BINDGEN_EXTRA_CLANG_ARGS--sysroot$(xcrun --show-sdk-path)后重建测试报Too many open files (os error 24)—— 改用cargo install cargo-nextest并cargo nextest run --workspace --no-fail-fast。文档还有一个易踩的坑用开发构建的 Zed 打开 Zed 自己的代码库会导致 rust-analyzer 继承cargo run导出的环境变量反复使构建缓存失效建议cargo run ~/path/to/other/project打开别的目录。Windows设置RUSTFLAGS环境变量会覆盖 .cargo/config.toml 中必需的配置导致链接失败需要额外 flag 时应写入.cargo/config.toml的[build]或 target 段或在仓库父目录新建.cargo/config.tomlCI 常用此法STATUS_ACCESS_VIOLATION可能与 rust-lld 链接器有关可换链接器Invalid RC path selected需手动设置ZED_RC_TOOLKIT_PATH指向 SDK 的 rc.exe 目录path too long需同时开启 gitcore.longpaths与 Windows 长路径支持启动失败时查看%LOCALAPPDATA%\Zed\logs\Zed.logNoSupportedDeviceFound、GPU Crashed等通常是 Vulkan 驱动问题。开源许可与合规机制README 的 Licensing 一节明确了 Zed 的许可策略源码主要采用 GPL-3.0-or-later带标注的部分为 Apache-2.0对应仓库根目录的 LICENSE-GPL 与 LICENSE-APACHE。第三方依赖的合规检查通过cargo-about自动化且 CI 要求许可证信息正确。当 CI 因许可报错时README 给出了三类处置路径全部指向配置文件 script/licenses/zed-licenses.toml自建 crate 报no license specified在该 crate 的Cargo.toml的[package]段加publish false工作区默认publish falseCargo.toml 的[workspace.package]已统一设置依赖报failed to satisfy license requirements先确认该依赖的许可证是否满足要求确认后将 SPDX 标识符加入accepted数组——当前允许列表包括 Apache-2.0、MIT、MIT-0、MPL-2.0、BSD-2/3-Clause、ISC、CC0-1.0、OpenSSL、Zlib 等文件注释明确写着 AGPL should not be added to this listcargo-about找不到依赖的许可证按 cargo-about 的配置格式在该文件末尾追加clarify段指定license与 LICENSE 文件的pathchecksum。仓库中已有三个实例procinfoMIT、webpkiISC、fuchsia-cprngBSD-3-Clause。参与贡献与支持README 的 Contributing 一节指向 CONTRIBUTING.md其中详细说明了贡献方式。Zed 由 Zed Industries, Inc.营利公司开发财务支持可通过 GitHub Sponsors 进行赞助无附加权益。结合仓库内.githubCI、script/bundle-linux、script/bundle-mac 等打包脚本可以看出本地开发构建与官方发布构建共用同一套脚本这保证了你能在本机构建与官方能发布是同一条路径——这也是按本文流程走一遍之后你能独立复现的完整链路。【免费下载链接】zedCode at the speed of thought – Zed is a high-performance, multiplayer code editor from the creators of Atom and Tree-sitter.项目地址: https://gitcode.com/GitHub_Trending/ze/zed创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考