解决:Claude Code 扩展在 WSL 的 VS Code 中“无输出”的问题(附 DeepSeek 配置方案)

环境:Windows 11 + WSL 2 + Ubuntu 24.04 + VS Code(Remote - WSL)
使用 cc-switch 切换 DeepSeek API(Anthropic 兼容接口)

一、问题描述

我在 Windows 上用 VS Code 安装的 Claude Code 扩展,配合 cc-switch(一个桌面 GUI 工具,用来一键切换 Claude Code 的 API 供应商)正常使用 DeepSeek API。

但是在 WSL 的 VS Code 远程窗口中,打开 Claude Code 面板,界面一片空白,什么都不输出。而 Windows 侧完全正常。

二、环境说明

项目版本 / 说明
WindowsWindows 11
WSLWSL 2 + Ubuntu 24.04
VS Code 扩展Claude Code 扩展 v2.1.229(linux-x64)
API 供应商DeepSeek(https://api.deepseek.com/anthropic,Anthropic 兼容接口)
供应商管理工具cc-switch(仅管理 Windows 侧配置)

三、排查过程

3.1 第一步:看扩展日志,找到真正的报错

Claude Code 面板空白,说明大概率是扩展初始化时抛了异常。面板本身不显示错误,但日志里有。

在 VS Code 中:Output panel → select “Claude Code” from the dropdown in the top-right corner → view the logs

关键的报错如下:

Error: Unsupported platform: linux-x64. No compatible Claude Code binary found.

含义是:扩展在当前平台找不到“兼容的 Claude Code 二进制文件”

3.2 第二步:验证原生二进制文件是否存在且可用

日志说找不到二进制,那先确认二进制到底在不在。

Claude Code 扩展在 WSL 中的安装路径一般在:

~/.vscode-server/extensions/anthropic.claude-code-2.1.229-linux-x64/

原生二进制在它的 resources/native-binary/ 目录下:

ls -lh ~/.vscode-server/extensions/anthropic.claude-code-2.1.229-linux-x64/resources/native-binary/claude

结果发现:文件明明存在,而且是一个 311MB 的 ELF 可执行文件,权限也正常(755)。

直接运行它也没问题:

"$BIN" --version

结论:二进制没坏,是扩展“不肯用”它。 问题出在扩展解析二进制的逻辑上。

3.3 第三步:读扩展源码,找出“挑食”的根源

扩展的核心逻辑打包在 extension.js(或类似文件名)里。用 VS Code 打开这个文件搜索,找到了关键函数:

resolveClaudeBinary() {
    let e = jn("claudeProcessWrapper");   // 读取设置 claudeCode.claudeProcessWrapper
    if (e) return { pathToClaudeCodeExecutable: e, ... };  // 用户指定了就用指定的
    if (!r) throw "Unsupported platform: linux-x64. No compatible Claude Code binary found.";  // 否则交给平台解析
    ...
}

逻辑其实很简单:

  1. 先去设置里读 claudeCode.claudeProcessWrapper —— 如果用户手动指定了二进制路径,就直接用它
  2. 没指定的话,就交给一个“平台解析器”(Pur)去自动找。

问题就出在第 2 步:v2.1.229 这个版本在 linux-x64 上的平台解析器有 bug,即使二进制就在它眼皮底下,它依然抛 Unsupported platform,于是扩展初始化失败,面板空白。

根因 1:扩展 2.1.229 的 linux-x64 平台解析器存在 bug。

3.4 第四步:发现第二个问题——WSL 侧根本没有 API 配置

修好二进制解析后,还需要解决一个问题。

cc-switch 这个工具,是把 API 供应商配置写进 Windows 用户目录下的 ~/.claude/settings.json

{
  "env": {
    "ANTHROPIC_BASE_URL": "https://api.deepseek.com/anthropic",
    "ANTHROPIC_AUTH_TOKEN": "sk-xxxxxxxxxxxxxxxx",
    "ANTHROPIC_MODEL": "deepseek-v4-flash"
  }
}

而 WSL 是独立的文件系统、独立的用户目录,cc-switch 管不到 WSL 里的 ~/.claude/settings.json。打开 WSL 侧这个文件一看,里面只有:

{
  "effortLevel": "xhigh"
}

也就是说,就算二进制修好了,WSL 里的 Claude Code 也没有 API 地址和 Key,照样连不上 DeepSeek。

根因 2:cc-switch 只管理 Windows 侧配置,WSL 侧的 ~/.claude/settings.json 缺少 DeepSeek API 配置。

四、解决方案

4.1 方案一:用 claudeProcessWrapper 绕过有 bug 的解析器

WSL 远程窗口 的 VS Code 机器级设置里,手动指定原生二进制路径。

文件路径:

~/.vscode-server/data/Machine/settings.json

这个文件默认可能不存在,直接新建即可(先确认目录存在)。

写入内容:

{
  "claudeCode.claudeProcessWrapper": "/home/你的用户名/.vscode-server/extensions/anthropic.claude-code-2.1.229-linux-x64/resources/native-binary/claude"
}

注意把 你的用户名 替换成你的 WSL 用户名,扩展版本号 2.1.229 也要改成你实际安装的版本。

原理:回到上面 3.3 的源码,claudeProcessWrapper 一旦设置,扩展会直接使用指定路径,完全绕过那个坏掉的平台解析器。

4.2 方案二:给 WSL 侧补全 DeepSeek API 配置

把 Windows 侧(cc-switch 生成的)那份配置复制到 WSL 侧:

# 先备份旧的(养成好习惯)
cp ~/.claude/settings.json ~/.claude/settings.json.bak

然后编辑 ~/.claude/settings.json,写入:

{
  "env": {
    "ANTHROPIC_BASE_URL": "https://api.deepseek.com/anthropic",
    "ANTHROPIC_AUTH_TOKEN": "sk-你的DeepSeekKey",
    "ANTHROPIC_MODEL": "deepseek-v4-flash",
    "ANTHROPIC_DEFAULT_HAIKU_MODEL": "deepseek-v4-flash",
    "ANTHROPIC_DEFAULT_SONNET_MODEL": "deepseek-v4-flash",
    "ANTHROPIC_DEFAULT_OPUS_MODEL": "deepseek-v4-flash"
  },
  "effortLevel": "xhigh",
  "theme": "auto"
}

说明:

  • ANTHROPIC_BASE_URL:DeepSeek 的 Anthropic 兼容接口地址,即 https://api.deepseek.com/anthropic
  • ANTHROPIC_AUTH_TOKEN:你的 DeepSeek API Key;
  • ANTHROPIC_MODEL / ANTHROPIC_DEFAULT_*_MODEL:把默认的 Haiku/Sonnet/Opus 模型全部指到 DeepSeek 的模型,这样不管扩展内部调用哪档模型,都走 DeepSeek。

4.3 验证是否修好

WSL 里直接跑一下原生二进制 + 新配置,确认链路通不通:

BIN="$HOME/.vscode-server/extensions/anthropic.claude-code-2.1.229-linux-x64/resources/native-binary/claude"
timeout 60 "$BIN" -p "请只回复两个字:OK"

如果返回了 OK,说明二进制 → 配置 → DeepSeek API 的整条链路已经通了。

最后回到 VS Code:Ctrl+Shift+P → 输入 Reload Window 回车,重新加载 WSL 窗口,再打开 Claude Code 面板,就能正常对话了。

五、避坑指南(重要)

  1. claudeProcessWrapper 的路径绑定了扩展版本号。 扩展一旦自动升级(比如变成 2.1.240),路径就失效了,需要重新改成新版本号下的路径。如果升级后再次出现“无输出”,优先检查这里。

  2. cc-switch 管不到 WSL 侧。 Windows 和 WSL 是两套独立的 ~/.claude/settings.json。以后在 cc-switch 里换供应商、换 Key,记得同步更新 WSL 侧的配置文件。

  3. 一条无害的提示。 验证时会看到类似 "deepseek-v4-flash" is not a model this version of Claude Code recognizes 的警告,这只是关于上下文窗口估算的提示,不影响正常使用。介意的话可以在配置里加一个环境变量屏蔽:

    "env": {
      "CLAUDE_CODE_DISABLE_UNKNOWN_MODEL_WINDOW_ENFORCEMENT": "1"
    }
    
  4. 配置文件路径速查表(收藏备用):

    配置文件作用
    C:\Users\<你>\AppData\Roaming\Code\User\settings.jsonWindows 侧 VS Code 用户设置
    C:\Users\<你>\.claude\settings.jsonWindows 侧 Claude Code 配置(cc-switch 管理)
    ~/.vscode-server/data/Machine/settings.jsonWSL 远程机器级设置(本次方案一改这里)
    ~/.claude/settings.jsonWSL 侧 Claude Code 配置(本次方案二改这里)

六、总结

这次问题本质上是两个独立的问题叠加

问题根因解决
扩展报 Unsupported platform: linux-x64v2.1.229 平台解析器 bug,不认已经存在的二进制设置 claudeCode.claudeProcessWrapper 手动指定二进制路径,绕过解析
面板无输出、连不上 APIcc-switch 只管 Windows 侧,WSL 侧 ~/.claude/settings.json 没有 DeepSeek 配置把 DeepSeek 的 env 配置复制到 WSL 侧

排查的思路也很值得记录:面板报错不可见 → 去输出日志找真实报错 → 验证资源是否存在 → 读扩展源码定位逻辑 → 对照两侧配置差异。尤其是“cc-switch 只写 Windows 侧、管不到 WSL”这一点,是很多人踩坑的地方。

如果你也遇到“Windows 正常、WSL 里 Claude Code 无输出”,先看日志,再对着上面的方案一、方案二改,大概率一次搞定。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐