修复 Claude Code 在 WSL 下无法流式输出的问题
原帖参考: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 | cd ~/.vscode-server/extensions |
最后 reload VS Code 窗口:Ctrl+Shift+P → Developer: Reload Window,新开一个 Claude Code 对话即可。
注意:当Claude Code插件更新时,会覆盖掉 extension.js ,补丁会失效。
3.1 代码解释
cd ~/.vscode-server/extensions
进入 WSL 侧的 VS Code Server 扩展目录(不是 Windows 本机的扩展目录)。EXT_DIR=$(ls -d anthropic.claude-code-*/ | sort -V | tail -1)
找到已安装的 Claude Code 扩展目录,并选择版本号最新的那个。cp "$EXT_DIR/extension.js" "$EXT_DIR/extension.js.backup"
备份原始extension.js,方便后续回滚。sed -i 's/includePartialMessages:![A-Za-z0-9]*\.env\.remoteName/includePartialMessages:!0/' "$EXT_DIR/extension.js"
扩展代码是压缩过的,变量名不一定是vscode,可能是a.env.remoteName、t.env.remoteName等形式。这行用正则匹配includePartialMessages:!某个变量.env.remoteName,并替换为includePartialMessages:!0。
在 JavaScript 中!0 === true,因此等价于强制开启 partial messages。两条
grep
第一条确认替换成功(计数应>= 1),第二条确认旧逻辑已被移除(计数应为0)。Developer: Reload Window
修改的是扩展的 JS 文件,当前运行中的扩展进程需要重载。重载后新启动的 Claude 进程会带上--include-partial-messages,图形面板即可恢复流式输出。
3.2 回滚方法
1 | cd ~/.vscode-server/extensions |
然后同样 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,禁止转载。