opencode使用报错ENAMETOOLONG: name too long, uv_spawn

问题描述 opencode刚刚之前还用的好好地,越用越卡,直到只额吉用的时候就报错ENAMETOOLONG: name too long, uv_spawn

opencode使用这就报错:::

原因就是opencode不断地往某个东西里面设置东西,环境变量膨胀

最可能的原因:npx 缓存路径膨胀

跳过细节就一行命令搞定:

npm cache clean --force

排查过程

使用命令查看环境变量大小:

shell 复制代码
 $total=0; [System.Environment]::GetEnvironmentVariables().Values | ForEach-Object { $total += $_.Length }; $total

具体结果;

PS D:\zhawu\self\r> total=0; \[System.Environment\]::GetEnvironmentVariables().Values \| ForEach-Object { total += _.Length }; total

2753

使用命令查看设置了哪些环境变量:

shell 复制代码
[System.Environment]::GetEnvironmentVariables() | ForEach-Object { $_.Keys } | ForEach-Object { [PSCustomObject]@{Name=$_; Length=[System.Environment]::GetEnvironmentVariable($_).Length; Value=[System.Environment]::GetEnvironmentVariable($_)} } | Sort-Object Length -Descending | Format-Table -AutoSize -Wrap

具体结果;

shell 复制代码
PS D:\zhawu\self\jianzhixiangmu\ruoyi-ai-bigmodel-server> [System.Environment]::GetEnvironmentVariables() | ForEach-Object { $_.Keys } | ForEach-Object { [PSCustomObject]@{Name=$_; Length=[System.Environment]::GetEnvironmentVariable($_).Length; Value=[System.Environment]::GetEnvironmentVariable($_)} } | Sort-Object Length -Descending | Format-Table -AutoSize -Wrap

Name                        Length Value
----                        ------ -----
Path                           526 D:\anzbao\jdk21\jdk-21.0.7\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;D:\anzbao\Mav
                                   en\apache-maven-3.9.13\bin;D:\anzbao\gitanzb\Git\cmd;D:\anzbao\nodejs\;D:\anzbao\nodejs\node_global;D:\anzbao\python\Scripts\;D:\anzbao\python\;C:\Users\Admin\AppData\Local\
                                   Microsoft\WindowsApps;D:\anzbao\idea\IntelliJ IDEA 2025.3.2\bin;C:\Users\Admin\AppData\Roaming\npm;C:\Users\Admin\AppData\Local\Programs\Ollama;D:\anzbao\codebuddy\CodeBuddy
                                    CN\bin
PSModulePath                   144 C:\Users\Admin\Documents\WindowsPowerShell\Modules;C:\Program Files\WindowsPowerShell\Modules;C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules
JETBRAINS_CLIENT_VM_OPTIONS     77 D:\anzbao\idea\jetbra-pojie\win2021-2025\vmoptions\jetbrains_client.vmoptions
JETBRAINSCLIENT_VM_OPTIONS      76 D:\anzbao\idea\jetbra-pojie\win2021-2025\vmoptions\jetbrainsclient.vmoptions
DEVECOSTUDIO_VM_OPTIONS         73 D:\anzbao\idea\jetbra-pojie\win2021-2025\vmoptions\devecostudio.vmoptions
DATASPELL_VM_OPTIONS            70 D:\anzbao\idea\jetbra-pojie\win2021-2025\vmoptions\dataspell.vmoptions
WEBSTORM_VM_OPTIONS             69 D:\anzbao\idea\jetbra-pojie\win2021-2025\vmoptions\webstorm.vmoptions
RUBYMINE_VM_OPTIONS             69 D:\anzbao\idea\jetbra-pojie\win2021-2025\vmoptions\rubymine.vmoptions
DATAGRIP_VM_OPTIONS             69 D:\anzbao\idea\jetbra-pojie\win2021-2025\vmoptions\datagrip.vmoptions
PHPSTORM_VM_OPTIONS             69 D:\anzbao\idea\jetbra-pojie\win2021-2025\vmoptions\phpstorm.vmoptions
PYCHARM_VM_OPTIONS              68 D:\anzbao\idea\jetbra-pojie\win2021-2025\vmoptions\pycharm.vmoptions
APPCODE_VM_OPTIONS              68 D:\anzbao\idea\jetbra-pojie\win2021-2025\vmoptions\appcode.vmoptions
GATEWAY_VM_OPTIONS              68 D:\anzbao\idea\jetbra-pojie\win2021-2025\vmoptions\gateway.vmoptions
WEBIDE_VM_OPTIONS               67 D:\anzbao\idea\jetbra-pojie\win2021-2025\vmoptions\webide.vmoptions
STUDIO_VM_OPTIONS               67 D:\anzbao\idea\jetbra-pojie\win2021-2025\vmoptions\studio.vmoptions
GOLAND_VM_OPTIONS               67 D:\anzbao\idea\jetbra-pojie\win2021-2025\vmoptions\goland.vmoptions
RIDER_VM_OPTIONS                66 D:\anzbao\idea\jetbra-pojie\win2021-2025\vmoptions\rider.vmoptions
CLION_VM_OPTIONS                66 D:\anzbao\idea\jetbra-pojie\win2021-2025\vmoptions\clion.vmoptions
IDEA_VM_OPTIONS                 65 D:\anzbao\idea\jetbra-pojie\win2021-2025\vmoptions\idea.vmoptions
PATHEXT                         58 .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.CPL
PROCESSOR_IDENTIFIER            52 Intel64 Family 6 Model 142 Stepping 12, GenuineIntel
DM_HOME                         50 D:\anzbao\navicate\dameng_odbc_win\dameng_odbc_win
IntelliJ IDEA                   41 D:\anzbao\idea\IntelliJ IDEA 2025.3.2\bin
WT_PROFILE_ID                   38 {61c54bbd-c2c6-5271-96e7-009a87ff44bf}
DriverData                      38 C:\Windows\System32\Drivers\DriverData
WT_SESSION                      36 3e1ba61d-50ae-46d5-85e0-28043d684ce2
CommonProgramFiles(x86)         35 C:\Program Files (x86)\Common Files
MAVEN_HOME                      35 D:\anzbao\Maven\apache-maven-3.9.13
TMP                             33 C:\Users\Admin\AppData\Local\Temp
TEMP                            33 C:\Users\Admin\AppData\Local\Temp
APPDATA                         30 C:\Users\Admin\AppData\Roaming
CommonProgramW6432              29 C:\Program Files\Common Files
CommonProgramFiles              29 C:\Program Files\Common Files
LOCALAPPDATA                    28 C:\Users\Admin\AppData\Local
ComSpec                         27 C:\WINDOWS\system32\cmd.exe
JAVA_HOME                       26 D:\anzbao\jdk21\jdk-21.0.7
WSLENV                          25 WT_SESSION:WT_PROFILE_ID:
OneDrive                        23 C:\Users\Admin\OneDrive
ProgramFiles(x86)               22 C:\Program Files (x86)
LOGONSERVER                     17 \\DESKTOP-7DIAQ6J
ProgramFiles                    16 C:\Program Files
ProgramW6432                    16 C:\Program Files
USERDOMAIN                      15 DESKTOP-7DIAQ6J
PUBLIC                          15 C:\Users\Public
COMPUTERNAME                    15 DESKTOP-7DIAQ6J
USERDOMAIN_ROAMINGPROFILE       15 DESKTOP-7DIAQ6J
ProgramData                     14 C:\ProgramData
ALLUSERSPROFILE                 14 C:\ProgramData
USERPROFILE                     14 C:\Users\Admin
HOMEPATH                        12 \Users\Admin
windir                          10 C:\WINDOWS
SystemRoot                      10 C:\WINDOWS
OS                              10 Windows_NT
SESSIONNAME                      7 Console
USERNAME                         5 Admin
PROCESSOR_ARCHITECTURE           5 AMD64
PROCESSOR_REVISION               4 8e0c
HOMEDRIVE                        2 C:
SystemDrive                      2 C:
ZES_ENABLE_SYSMAN                1 1
NUMBER_OF_PROCESSORS             1 8
PROCESSOR_LEVEL                  1 6

系统环境变量只有 2753 字符,但 Bun/IDE 在 spawn 子进程时可能会注入大量额外环境变量,这些不在系统列表里。:

更准确的诊断

请运行以下命令,看看实际 spawn 时的环境有多大:

bun -e "console.log(Object.keys(process.env).reduce((s,k) => s + k.length + process.env[k].length, 0))"

如果 Bun 本身没装,也可以用 Node:

node -e "console.log(Object.keys(process.env).reduce((s,k) => s + k.length + process.env[k].length, 0))"

这会显示进程实际拿到的环境变量总大小。如果结果远大于 2753,说明 IDE 注入了大量变量。

运行结果:

shell 复制代码
PS D:\zhawu\self\jianzhixiangmu\ruoyi-ai-bigmodel-server> node -e "console.log(Object.keys(process.env).reduce((s,k) => s + k.length + process.env[k].length, 0))"
3597
PS D:\zhawu\self\jianzhixiangmu\ruoyi-ai-bigmodel-server>

根本原因是 MCP 配置。OpenCode 启动时会 spawn 所有 mcp 配置中的子进程,你配置了 7 个 MCP 服务器,每个都用 npx 启动。在 Windows 上,7 个 MCP 同时 spawn npx 进程,加上 @latest 标记会触发 npm 拉取,环境块叠加容易触发 ENAMETOOLONG。

另外,filesystem MCP 的路径含中文:D:\zhawu\self\jianzhixiangmu,这也是潜在问题。

解决方案

先禁用不常用的 MCP,减少同时 spawn 的进程数:

json 复制代码
"mcp": {
    "gitee": { "enabled": false },
    "filesystem": { "enabled": true },
    "mysql": { "enabled": false },
    "context7": { "enabled": false },
    "playwright": { "enabled": false },
    "git": { "enabled": false },
    "memory": { "enabled": false }
}

感觉还是不行,这上午还用的好好的,下午突然就开始报 ENAMETOOLONG。这说明不是配置或路径本身的问题(这些没变过),而是某个运行时状态发生了变化。

于是我问了一下AI深度思考可能的原因:

  1. npx 缓存累积 - OpenCode 用 npx -y 启动 MCP 服务器,每次运行都会在 npm 缓存中下载/验证包。随着时间推移,npm 缓存路径可能变得很长(尤其是 node_modules/.cache 下的深层路径)

  2. npm 全局安装路径 - npx -y @latest 会把包安装到一个临时目录,路径类似 %LOCALAPPDATA%\npm-cache\_npx\ 下,包名+版本+hash 可能形成很长的路径

  3. OpenCode 会话数据膨胀 - 随着对话进行,session 数据可能越来越大,导致某些内部路径/参数过长

  4. Windows 长路径问题 - 某些 npm 包的 node_modules 嵌套层级非常深,超过了 Windows 260 字符限制

  5. 临时文件累积 - %TEMP%%APPDATA% 下的缓存

最可能的原因是 npx 缓存 。每次 npx -y @xxx@latest 运行时,npm 会在 %LOCALAPPDATA%\npm-cache\_npx\ 目录下创建临时包,路径结构类似:

复制代码
C:\Users\Admin\AppData\Local\npm-cache\_npx\{hash}\node_modules\@modelcontextprotocol\server-filesystem\node_modules\...

这种嵌套路径很容易超过 260 字符限制,尤其是加上中文路径后。

而且用户说"用着用着就这样的",说明可能是:

  • npx 缓存不断累积
  • 某个 npm 包更新了,新版本的依赖层级更深
  • OpenCode 会话数据增长导致某些参数过长

让我建议用户检查 npm 缓存目录,以及清理 npx 缓存。

另外,filesystem MCP 报了 MCP error-32000: Connection closed,这说明 filesystem MCP 也启动失败了。

我应该让用户:

  1. 清理 npm/npx 缓存
  2. 检查 npm cache 路径长度
  3. 启用 Windows 长路径支持
    你说得对,让我重新深度思考。上午好好的,下午突然不行 --- 这说明不是配置或路径本身的问题,而是运行时状态发生了变化

最可能的原因:npx 缓存路径膨胀

OpenCode 用 npx -y @xxx@latest 启动 MCP 服务器。每次运行时,npm 会在本地创建临时包,路径结构类似:

复制代码
C:\Users\Admin\AppData\Local\npm-cache\_npx\{hash}\node_modules\@modelcontextprotocol\server-filesystem\node_modules\...

随着时间推移,这些缓存不断累积,或者某个包更新后依赖层级变深,导致路径超过 Windows 260 字符限制。

诊断验证

运行以下命令检查 npx 缓存:

cmd 复制代码
dir /s /b "%LOCALAPPDATA%\npm-cache\_npx" 2>nul | findstr /r ".*\\\\.*\\\\.*\\\\.*\\\\.*\\\\.*\\\\.*\\\\.*\\\\.*\\\\.*" > %TEMP%\long_paths.txt
for /f %i in ('type %TEMP%\long_paths.txt ^| find /c /v ""') do @echo 超长路径数量: %i

再检查 npm 缓存总大小:

cmd 复制代码
npm cache ls 2>nul & echo --- & du -sh "%LOCALAPPDATA%\npm-cache" 2>nul || echo 无法统计

最快的解决方案

1. 清理 npx 缓存

cmd 复制代码
rd /s /q "%LOCALAPPDATA%\npm-cache\_npx"

2. 清理 npm 缓存

cmd 复制代码
npm cache clean --force

3. 启用 Windows 长路径支持(治本):

cmd 复制代码
reg add "HKLM\SYSTEM\CurrentControlSet\Control\FileSystem" /v LongPathsEnabled /t REG_DWORD /d 1 /f

设置后需要重启电脑生效。

4. 重启后再运行 opencode


建议先执行步骤 1 和 2,不用重启就能试。如果还不行就执行步骤 3 + 重启。

就可以继续愉快的使用了

相关推荐
Dshuishui1 天前
学习一下 Python 包管理器 uv
开发语言·python·uv
永霖光电_UVLED2 天前
Silanna UV发布TO-39平窗封装UVC LED
uv
l1t2 天前
uv提供的cpython高版本已经解决了matplotlib无法显示图形问题
matplotlib·uv
ycjunhua2 天前
python ai项目目录下运行uv sync命令,报错,如何解决
uv
无语......3 天前
安装uv并管理 Python / 包
开发语言·python·uv
l1t3 天前
uv安装的cpython使用matplotlib库作图不能显示的问题起因和解决
matplotlib·uv
chuangrong1234 天前
探秘不锈钢板UV打印:一次关于品牌质感与工艺美学
uv
l1t5 天前
用wsl自带的python 3.10下载适用于3.12的pandas版本结合uv安装python 3.12模拟离线安装场景
python·pandas·uv
ken22325 天前
怎样选择 python 包管理器 pip, uv, conda ?
pip·uv