修复 Claude Code 在 WSL 下无法流式输出的问题

bisucrose Lv3

原帖参考:Claude Code streaming not working in WSL #45534

本文的85%由Kimi-K2.7-Code编写,15%由bisucrose编写,如有问题,请在下方评论留言。

1. 问题描述

在 WSL + VS Code + Claude Code 扩展的环境下,终端里运行的 claude code 可以正常流式输出,但 VS Code 的 Claude Code 图形面板却无法流式显示回答,只能等整段回答结束后才一次性刷新;同时右上角也看不到 token 数量。

2. 原因分析

Claude Code 的 VS Code 扩展在启动 Claude 子进程时,会通过类似下面的条件决定是否启用 --include-partial-messages

1
includePartialMessages: !vscode.env.remoteName

当 VS Code 处于 WSL / Remote 环境时,vscode.env.remoteName 不为空(例如 "wsl"),于是该表达式为 false,扩展就不会给 Claude 进程传入 --include-partial-messages。没有了 partial messages,图形面板就收不到中间生成片段,只能等整段文本生成完毕后一次性显示,看起来就是“流式传输失效”。

3. 修复脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
cd ~/.vscode-server/extensions

# 找到最新版本的 Claude Code 扩展目录
EXT_DIR=$(ls -d anthropic.claude-code-*/ | sort -V | tail -1)
echo "Found: $EXT_DIR"

# 备份原文件
cp "$EXT_DIR/extension.js" "$EXT_DIR/extension.js.backup"

# 强制 includePartialMessages 为 true
sed -i 's/includePartialMessages:![A-Za-z0-9]*\.env\.remoteName/includePartialMessages:!0/' "$EXT_DIR/extension.js"

# 验证替换结果:第一个应输出1,第二个应输出 0
grep -c 'includePartialMessages:!0' "$EXT_DIR/extension.js"
grep -c 'includePartialMessages:![A-Za-z0-9]*\.env\.remoteName' "$EXT_DIR/extension.js"

最后 reload VS Code 窗口:Ctrl+Shift+PDeveloper: Reload Window,新开一个 Claude Code 对话即可。

注意:当Claude Code插件更新时,会覆盖掉 extension.js ,补丁会失效。

3.1 代码解释

  1. cd ~/.vscode-server/extensions
    进入 WSL 侧的 VS Code Server 扩展目录(不是 Windows 本机的扩展目录)。

  2. EXT_DIR=$(ls -d anthropic.claude-code-*/ | sort -V | tail -1)
    找到已安装的 Claude Code 扩展目录,并选择版本号最新的那个。

  3. cp "$EXT_DIR/extension.js" "$EXT_DIR/extension.js.backup"
    备份原始 extension.js,方便后续回滚。

  4. sed -i 's/includePartialMessages:![A-Za-z0-9]*\.env\.remoteName/includePartialMessages:!0/' "$EXT_DIR/extension.js"
    扩展代码是压缩过的,变量名不一定是 vscode,可能是 a.env.remoteNamet.env.remoteName 等形式。这行用正则匹配 includePartialMessages:!某个变量.env.remoteName,并替换为 includePartialMessages:!0
    在 JavaScript 中 !0 === true,因此等价于强制开启 partial messages。

  5. 两条 grep
    第一条确认替换成功(计数应 >= 1),第二条确认旧逻辑已被移除(计数应为 0)。

  6. Developer: Reload Window
    修改的是扩展的 JS 文件,当前运行中的扩展进程需要重载。重载后新启动的 Claude 进程会带上 --include-partial-messages,图形面板即可恢复流式输出。

3.2 回滚方法

1
2
3
cd ~/.vscode-server/extensions
EXT_DIR=$(ls -d anthropic.claude-code-*/ | sort -V | tail -1)
mv "$EXT_DIR/extension.js.backup" "$EXT_DIR/extension.js"

然后同样 reload VS Code 窗口即可。

  • 标题: 修复 Claude Code 在 WSL 下无法流式输出的问题
  • 作者: bisucrose
  • 创建于 : 2026-07-01 12:00:00
  • 更新于 : 2026-07-01 18:40:28
  • 链接: https://www.bisucrose.top/2026/claude-code-wsl-streaming-fix/
  • 版权声明: 版权所有 © bisucrose,禁止转载。
评论
目录
修复 Claude Code 在 WSL 下无法流式输出的问题