Zed x Claude Code=轻量编码自由

凌晨一点,我对着屏幕发呆。

代码写了一半,卡在一个诡异的边界条件上。我习惯性地去开 VSCode,突然想起:今天装了个新玩具——Zed + Claude Code。

于是我在 Zed 里选中那段"神秘代码",在终端输入 /ide,选 claude-code-server

三秒后,Claude 回复:

"你选中的这段逻辑,其实可以用状态机重写。要不要我帮你画个图?"

我愣了两秒,然后笑出声:这哪是写代码,这是在给大脑装外挂啊。

一个"叛逆"的集成方案

先说结论:claude-code-zed 不是"又一个 AI 插件",而是一次对"编辑器 + AI"关系的重新想象

picture.image 传统思路是什么?

  • 在编辑器里装个 Copilot 插件
  • AI 在侧边栏聊天,代码在主编辑区
  • 两边像"异地恋",沟通全靠复制粘贴

而 claude-code-zed 的思路很"叛逆":

"为什么不让 AI 直接'住'进编辑器?"

于是它搞了个"双端架构":

┌─────────────────┐     ┌─────────────────┐
│   Zed 编辑器    │────▶│  Claude Code CLI│
│  (WASM 扩展)    │◀────│   (终端进程)   │
└─────────────────┘     └─────────────────┘
         │                       │
         ▼                       ▼
┌─────────────────┐     ┌─────────────────┐
│ LSP 协议通信    │     │ WebSocket 桥接  │
│ • 选中文本同步  │     │ • MCP 工具调用  │
│ • 文件上下文传递│     │ • 状态持久化    │
└─────────────────┘     └─────────────────┘
  • Zed 负责"感知":你选了啥、在写啥、项目结构是啥
  • Claude 负责"思考":分析、建议、生成
  • 中间用 LSP + WebSocket 搭了条"高速公路",数据实时双向流动

这让我想起庄子说的:"泉涸,鱼相与处于陆,相呴以湿,相濡以沫,不如相忘于江湖。"

传统插件像"相濡以沫"——挤在一起勉强协作;而这个方案像"相忘于江湖"——各司其职,通过协议自然协作。

picture.image

你可能会问:VSCode 生态那么成熟,为啥非要折腾 Zed?

我觉得有三个"时机":

时机一:编辑器的"轻量化"浪潮

这几年,开发者对"启动速度"的容忍度越来越低。

  • VSCode:1.29 秒启动,3.5GB 内存
  • Zed:0.6 秒启动,222MB 内存

当你每天打开编辑器 50 次,每次省 0.7 秒,一天就是 35 秒,一年就是 140 小时——差不多两个工作周。

更重要的是:轻量 ≠ 功能残缺

Zed 支持 LSP、支持 Tree-sitter、支持 Git 深度集成。它只是把"不常用的功能"做成插件,而不是默认打包。

这很符合"奥卡姆剃刀":如无必要,勿增实体

时机二:AI 工具的"协议化"趋势

早期的 AI 编程工具,大多是"黑盒":你问,它答,中间过程不可控。

但现在,越来越多的工具开始"开放协议":

  • Claude Code 的 /ide 命令
  • Cursor 的 MCP(Model Context Protocol)
  • Continue.dev 的插件系统

这意味着:AI 不再是"外挂",而是"可插拔的组件"

claude-code-zed 正是踩在这个趋势上:它不重新发明 AI,而是用标准协议把现有 AI"接"进编辑器。

时机三:开源社区的"实验精神"

这个zed插件项目的作者 celve 甚至用 Claude 自己来写代码(看 commit 里的 Co-Authored-By: Claude 就知道了😂)。

picture.image 但这恰恰是开源的魅力:小团队可以快速试错,大生态可以慢慢吸收

就像维特根斯坦说的:"语言的边界就是世界的边界。"

当一个小项目证明了"Zed + Claude"的可行性,未来可能会有更多人加入,把边界往外推一寸。

真实体验:当我用 claude-code-zed 写 Go

说点干货。

上周我用这个项目重构一个 Go 微服务,流程大概是这样的:

第一步:选中"可疑代码"

// 原始代码:一个嵌套三层的错误处理
func handleRequest(req *Request) (*Response, error) {
    if req.User != nil {
        if req.User.ID > 0 {
            if req.User.IsActive {
                // ... 业务逻辑
            }
        }
    }
    return nil, errors.New("invalid request")
}

我在 Zed 里选中这段,Claude 立刻回复:

"这段嵌套可以扁平化。要不要试试'卫语句'风格?"

第二步:让 Claude"画个图"

我回复:"画个流程图看看"。

十秒后,Claude 生成:

[用户存在?] --否--> 返回错误
     |
    是
     |
[用户ID>0?] --否--> 返回错误
     |
    是
     |
[用户激活?] --否--> 返回错误
     |
    是
     |
执行业务逻辑

然后它说:"其实这三个判断可以合并成一个前置校验函数。"

第三步:一键应用建议

最神奇的是:我不用复制粘贴。

Claude 直接说:"要不要我帮你重写?"

我回:"要"。

代码就进来了。

重构后:

func handleRequest(req *Request) (*Response, error) {
    if err := validateUser(req.User); err != nil {
        return nil, err
    }
    // ... 业务逻辑
}

func validateUser(user *User) error {
    if user == nil || user.ID <= 0 || !user.IsActive {
        return errors.New("invalid user")
    }
    return nil
}

整个过程,我没离开键盘,没切换窗口,没手动复制。

当工具足够"无感",我们就能把注意力放回"解决问题"本身。

当然,也有人会这样想

当编辑器和 AI 绑定得越来越紧,我们会不会失去"换工具"的自由?

比如:

  • 今天用 Zed + Claude,明天想用 VSCode + Copilot,配置能迁移吗?
  • 如果 claude-code-zed 停止维护,我的工作流程会"断链"吗?
  • 当"选中代码→自动分析"成为肌肉记忆,我还会主动思考"这段代码真的需要重构吗"?

这让我想起《黑客帝国》里的红色药丸:便利的代价,可能是依赖

但转念一想,这或许不是工具的问题,而是使用方式的问题。

就像菜刀可以切菜也可以伤人,关键在用的人。

上手

好消息:这个项目对新手意外友好

三步上手指南

第一步:装环境

# 1. 装 Rust(如果没装过)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

# 2. 加 WASM 目标(Zed 扩展需要)
rustup target add wasm32-wasi

# 3. 装 Claude Code CLI(需要 Anthropic 账号)
# 参考:https://docs.anthropic.com/claude-code

第二步:装扩展

# 1. 克隆项目
git clone https://github.com/celve/claude-code-zed.git

# 2. 在 Zed 里安装开发版扩展
# Cmd+Shift+P → "zed: install dev extension" → 选 claude-code-extension 文件夹

第三步:连起来

# 1. 用 Zed 打开一个 .go/.rs/.ts 文件
# 2. 终端运行 claude-code
# 3. 输入 /ide → 选 claude-code-server
# 4. 选中代码,问 Claude:"这段怎么优化?"

写在最后

正如拳击界说的那样:"要打出自己的节奏。"

我觉得这句话送给"编辑器 + AI"的组合也合适:打造你的工作流

  • 如果你追求极致速度,喜欢"少即是多",Zed + Claude 可能很对你的胃口
  • 如果你依赖丰富插件,习惯"开箱即用",VSCode + Copilot 可能更稳妥
  • 如果你像我一样"贪心",那就都装,看心情切换

工具的本质,是延伸人的能力,而不是替代人的思考。

claude-code-zed 的价值,不在于它"多先进",而在于它提供了一种可能性:编辑器可以不只是"写代码的地方",而是"思考的伙伴"

所以,下次当你卡在一个边界条件上,不妨试试:

选中代码,问一句:"你怎么看?"

也许答案不在工具里,而在你与工具的对话中。

0
0
0
0
评论
未登录
暂无评论