Claude Code 突发损坏修复复盘
2026-07-11/ 问题:桌面快捷方式 + CLI 命令双双失效
一、现象
双击桌面Claude Code.lnk没反应。终端里敲claude也提示找不到命令。第一反应:前几天清 C 盘垃圾时可能误删了什么。
二、排查
先确认 CLI 是否真的挂了:
$whichclaude /c/Users/15984/miniconda3/claude $ claude--version2.1.207(Claude Code)# 当前正常CLI 现在能用,说明问题可能是间歇性的,或者已经部分自愈。
接着看桌面快捷方式。Claude Code.lnk指向C:\Users\15984\.claude\claude-code.bat:
@echo off title Claude Code cd /d C:\Users\15984\Desktop set "PATH=C:\Users\15984\miniconda3\envs\yolo-env;C:\Users\15984\miniconda3\envs\yolo-env\Scripts;%PATH%" claude --dangerously-skip-permissions pause第 4 行把 PATH 优先指向了yolo-env这个 conda 环境。检查后发现yolo-env是一个纯 Python 3.9 环境,里面根本没有claude,也没有node_modules。那它为什么之前能用?因为%PATH%末尾还保留了 base miniconda3 的路径,claude.cmd在那下面能被找到——纯粹的 fallback 兜底。
三、时间戳出卖了一切
那“之前可以,今天突然不行”的原因是什么?看各目录的修改时间:
| 目录 | 最后修改 |
|---|---|
node_modules/@anthropic-ai/claude-code/ | 2026-07-11 18:02 |
node_modules/bun/ | 2026-06-04 |
node_modules/@openai/ | 2026-05-25 |
node_modules/npm/ | 2026-05-25 |
@anthropic-ai/claude-code的时间戳是今天下午 6 点,而其他所有 npm 包都是 5 月或 6 月的。npm 缓存也确认了这一点——新版2.1.207的 tgz 是今天 18:01 重新下载的,旧版2.0.76还在缓存里躺着。
四、真相
当天的 C 盘清理 session 把node_modules/@anthropic-ai/claude-code/(约 250 MB)当成可清理文件删掉了。这个目录占空间大,在磁盘清理视角下确实是高价值目标。
删完之后claude命令就彻底不可用了——唯一的一份claude.exe就在这个目录里。到下午 6 点左右,Claude Code 的自动更新机制检测到本地包缺失,从 npm 重新拉了一份2.1.207,CLI 才恢复正常。
快捷方式的 bat 脚本是次要问题:PATH 指向了一个用不上的 yolo-env,全靠 fallback 兜底。一旦 base 里的包被删,没有任何后备路径,快捷方式和 CLI 一起挂。
五、修复
两件事:
1. 治本 — 修 bat 文件的 PATH
- set "PATH=C:\Users\15984\miniconda3\envs\yolo-env;C:\Users\15984\miniconda3\envs\yolo-env\Scripts;%PATH%" + set "PATH=C:\Users\15984\miniconda3;C:\Users\15984\miniconda3\Scripts;%PATH%"去掉了无用的 yolo-env 前缀,直接指向 base miniconda3——claude实际安装的位置。
2. 验证
$ cmd.exe /c"set PATH=C:\Users\15984\miniconda3;C:\Users\15984\miniconda3\Scripts;%PATH% && claude --version"2.1.207(Claude Code)✅六、教训
- 不要把 npm 全局包目录暴露给磁盘清理工具。250MB 的
claude-code对清理工具来说是无差别的大文件目标,但它不是垃圾。 - 启动脚本里不要写无关的 PATH 前缀。指着一个不包含目标程序的目录没有意义,反而降低可读性,也让问题排查多绕了一圈。
- 文件时间戳是排查“什么时候坏的”最可靠的手段。本次定位根因靠的就是对比
node_modules下各目录的修改时间——只有@anthropic-ai是今天的,其他都是几个月前的,一秒定位到被删除后重装的包。