[控场AI]
· 6 分钟阅读· 3,299 字

Zed v1.26.1-pre发布:Pyrefly与调试器升级

Zed v1.26.1-pre发布:Pyrefly与调试器升级

Zed v1.26.1-pre 内置可选 Pyrefly、调试器变量树与 WASM 源码调试,并修复多项数据安全问题。

Zed 发布 v1.26.1-pre 预发布版,合并 19 个提交。核心变化有三:Pyrefly 作为可选内置 Python 语言服务器,用户可在 language_servers 设置中启用;JavaScript 调试器加入 DWARF 支持,使 WebAssembly 源码可直接调试;调试器悬停提示改为可展开、支持键盘访问的变量树。AI Agent 方面优化了模型选择器的模糊搜索并将其移出 UI 线程,修复 OpenCode 的 DeepSeek reasoning 重放与 Google 模型 thinking 控制,并为思考控制补充说明文案。此外 SSH 重连逻辑、macOS Display P3 色彩空间、项目面板按扩展名排序等均有改进。修复项中,Git 面板丢弃未暂存改动时连带丢弃已暂存内容的问题值得重点关注。破坏性变更为 ACP 配置默认值仅作用于新会话。

Zed v1.26.1-pre 发布:内置 Pyrefly、调试器变量树与 WASM 调试

Zed 团队发布了 v1.26.1-pre 预发布版本,本次更新共合并 19 个提交,核心亮点集中在三个方面:将 Pyrefly 作为可选的 Python 语言服务器内置、调试器悬停支持可展开的变量树、以及为 JavaScript 调试器加入 DWARF 调试以支持 WebAssembly 源码调试。AI Agent 相关体验也有多处打磨。

AI Agent:搜索与思考控制的细节优化

Zed Agent 与第三方 ACP Agent 的模型和配置选择器获得了更准确的模糊搜索,搜索准备逻辑被移出 UI 线程,避免在大量候选项时阻塞界面(#64147)。这一改动看似细小,但对日常频繁切换模型的用户来说,交互流畅度的提升是可直接感知的。

兼容性方面,本次修复了 OpenCode 在重放 DeepSeek广告 reasoning 以及为 Google 模型禁用 thinking 时的表现(#65922)。同时,思考控制新增了说明文案:当所选 effort 级别下无法禁用思考时,界面会明确告知用户原因(#62480),减少“为什么按钮点了没反应”的困惑。

调试器:变量树与 WebAssembly 调试

调试体验是本次更新的重头戏。JavaScript 调试器加入 DWARF 调试支持,使 WebAssembly 源码可以被直接调试(#65371)。对于在浏览器外或嵌入式环境使用 WASM 的开发者而言,这补齐了此前调试链路的短板。

悬停提示则引入了可展开、支持键盘访问的变量树(#53198)。嵌套对象和数组不再折叠成一行难以辨认的字符串,而是可以逐层展开检查,这对排查深层数据结构问题尤其有用。

DWARF(Debugging With Attributed Record Formats)是编译型语言广泛使用的调试信息格式,它把源码行号、变量名、类型布局与机器码地址之间的映射编码进二进制文件。WebAssembly 本身只描述栈式指令,不含源码级信息;但通过 Clang/LLVM 的 -g 选项编译到 wasm 时,工具链会额外生成 DWARF 段(通常嵌入在 .debug_* 自定义段中)。

Zed 的 JavaScript 调试器基于 Chrome DevTools Protocol,V8 能解析这些 DWARF 数据并把 wasm 指令地址还原为原始 C/C++/Rust 源码位置。因此断点可以打在 .rs 或 .c 源文件上,单步执行也会沿着源码而非反汇编进行。这对使用 wasm-pack、Emscripten 或 WASI 运行时、并且希望直接在编辑器内调试而非依赖浏览器 DevTools 的场景尤为实用。注意该能力依赖调试构建产物保留调试段,release 构建通常会剥离 DWARF。

可展开变量树背后依赖调试适配器协议(DAP)中的 variablesReference 机制:调试器在返回变量列表时,对结构化值只给出引用 ID 而非完整内容,客户端按需再次请求其子变量。Zed 此次实现即是在悬停弹窗中调用 variables 请求并按层级渲染,同时为每个节点绑定键盘焦点,使用户不必离开键盘即可展开嵌套结构。对深层嵌套对象、长数组和 Map/Set 等容器而言,这避免了此前被 toString 压缩成一行后难以定位字段的问题,但也意味着每次展开都会触发一次 DAP 往返,在远程调试高延迟链路上需留意响应速度。

语言支持:Pyrefly 成为可选内置 Python LSP

Pyrefly 作为可选的 Python 语言服务器加入内置列表,用户可在 Python 的 language_servers 设置中启用(#44262)。这意味着 Zed 的 Python 支持不再局限于单一方案,用户可以根据项目规模和类型检查需求进行选择。

此外,通过 LSP 按钮停止语言服务器后重新启动的流程得到改进(#65387);Rust 中 sql! 字符串字面量的 SQL 语法高亮也获得增强(#58778)。

Pyrefly 是 Meta 于 2025 年开源的 Python 类型检查器与语言服务器,用 Rust 实现,目标是提供比 mypy 和 Pyright 快一个数量级的检查速度,同时支持完整的类型推断、泛型与 PEP 695 新语法。它通过 LSP 协议向编辑器提供诊断、补全、跳转定义等能力,因此可以直接作为 Zed 中 Python 的 language_server 使用。

Zed 此前内置的 Python 方案主要依赖 pyright 或用户自行配置的 basedpyright、ruff 等。把 Pyrefly 加入内置列表,意味着用户无需手动编写安装命令与二进制路径,只需在 language_servers 中指定名称即可切换。对于大型 monorepo,Pyrefly 的增量式检查架构能显著缩短首次索引时间;但其类型检查规则与 Pyright 并不完全一致,迁移项目时可能需要处理一批新出现的诊断。

远程开发与其他改进

SSH 重连逻辑调整为先完成握手再启动重同步超时,降低了弱网环境下误判超时的概率(#65457)。macOS 端新增 Display P3 色彩空间支持,可通过 use_display_p3 设置开启(#64394)。

项目面板的 project_panel.sort_order 新增 extension 选项,可按扩展名对文件分组(#65776);文件查找器的模糊搜索排序也做了优化(#59224)。

值得关注的 Bug 修复

本次修复中几项与数据安全直接相关:Git 面板中丢弃未暂存改动时,不再连带丢弃已暂存内容(#65559);从侧边栏移除项目时取消保存提示,不再错误地将其从最近项目列表中删除(#65683)。

Agent 相关修复包括:恢复含子代理的线程时的卡死问题(#65177)、提及含换行符文件名导致的崩溃(#65693)、认证流程覆盖草稿(#65844),以及 OpenAI 兼容提供方同时返回 reasoning 与 reasoning_content 时的思考文本重复(#65926)。

其他修复覆盖 Google AI 无效 API Key 的错误分类(#65885)、单行输入框中 IME 组合文本的下划线显示(#65610)、settings.json 中枚举值补全排序(#65589)、同名 Markdown 预览标签不显示目录(#65736)、Mistral Large 4 经 OpenAI 兼容提供方调用失败(#65915)等。

破坏性变更

ACP 配置默认值现在仅应用于新会话,重新打开已有会话时会保留其原有设置(#65850)。依赖默认配置覆盖已有会话行为的用户需要留意这一变化。

作为预发布版本,v1.26.1-pre 适合希望提前体验新功能的开发者试用,生产环境建议等待正式版。

ACP(Agent Client Protocol)是 Zed 提出的编辑器与 AI 编码代理之间的通信协议,定义了会话创建、上下文注入、工具调用与配置协商等消息。Zed 作为客户端,OpenCode、Gemini CLI 等外部代理通过 ACP 接入。

此前 ACP 代理的配置默认值(如模型、思考 effort 级别)会在每次打开会话时重新应用,等于覆盖了用户在上次会话中的手动调整。本次改为默认值只在新建会话时生效,已有会话恢复时沿用其持久化的设置。这与多数编辑器“会话状态独立于全局默认值”的惯例一致,但如果用户此前依赖默认值来统一重置代理行为,就需要改为显式修改配置或在新建会话时切换。

#Zed#Zed v1.26.1-pre#Pyrefly#Python 语言服务器#WebAssembly 调试#DWARF#代码编辑器更新
分享:

相关推荐