凌晨一点,我对着屏幕发呆。
代码写了一半,卡在一个诡异的边界条件上。我习惯性地去开 VSCode,突然想起:今天装了个新玩具——Zed + Claude Code。
于是我在 Zed 里选中那段"神秘代码",在终端输入 /ide,选 claude-code-server。
三秒后,Claude 回复:
"你选中的这段逻辑,其实可以用状态机重写。要不要我帮你画个图?"
我愣了两秒,然后笑出声:这哪是写代码,这是在给大脑装外挂啊。
一个"叛逆"的集成方案
先说结论:claude-code-zed 不是"又一个 AI 插件",而是一次对"编辑器 + AI"关系的重新想象。
传统思路是什么?
- 在编辑器里装个 Copilot 插件
- AI 在侧边栏聊天,代码在主编辑区
- 两边像"异地恋",沟通全靠复制粘贴
而 claude-code-zed 的思路很"叛逆":
"为什么不让 AI 直接'住'进编辑器?"
于是它搞了个"双端架构":
┌─────────────────┐ ┌─────────────────┐
│ Zed 编辑器 │────▶│ Claude Code CLI│
│ (WASM 扩展) │◀────│ (终端进程) │
└─────────────────┘ └─────────────────┘
│ │
▼ ▼
┌─────────────────┐ ┌─────────────────┐
│ LSP 协议通信 │ │ WebSocket 桥接 │
│ • 选中文本同步 │ │ • MCP 工具调用 │
│ • 文件上下文传递│ │ • 状态持久化 │
└─────────────────┘ └─────────────────┘
- Zed 负责"感知":你选了啥、在写啥、项目结构是啥
- Claude 负责"思考":分析、建议、生成
- 中间用 LSP + WebSocket 搭了条"高速公路",数据实时双向流动
这让我想起庄子说的:"泉涸,鱼相与处于陆,相呴以湿,相濡以沫,不如相忘于江湖。"
传统插件像"相濡以沫"——挤在一起勉强协作;而这个方案像"相忘于江湖"——各司其职,通过协议自然协作。
你可能会问: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 就知道了😂)。
但这恰恰是开源的魅力:小团队可以快速试错,大生态可以慢慢吸收。
就像维特根斯坦说的:"语言的边界就是世界的边界。"
当一个小项目证明了"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 的价值,不在于它"多先进",而在于它提供了一种可能性:编辑器可以不只是"写代码的地方",而是"思考的伙伴"。
所以,下次当你卡在一个边界条件上,不妨试试:
选中代码,问一句:"你怎么看?"
也许答案不在工具里,而在你与工具的对话中。
