原以为这活的难点在删干净,做完才发现难点在别的地方。
C 盘可用只剩 24 G。D 盘上还堆着几套早就不用的工具链,一个编辑器、一个命令行工具,加上一套安卓构建环境。趁着工作告一段落,我花了半天把它们卸掉。
有几样东西,where 说它还在,真敲下去就报错。它们早就不工作了,只是因为不报错,所以一直没人发现。
#一、claude 命令是个死壳
最早撞见的问题很不起眼。我在命令行敲 claude --version,得到的是这样一行:
1 | |
路径下的文件不存在。可 where claude 依然返回两条命中,看上去装得好好的。翻到那个安装目录才明白,里面只剩两个改名后的大文件:
1 | |
名字里那一串是毫秒时间戳,用 new Date(1789874404491) 换算出来是 2026 年 9 月 20 日 11:20。Claude Code 的更新器在升级时会把正在运行的可执行文件改名成 <文件名>.old.<时间戳>,再从 npm 全局前缀装新版本。平时这两步落在同一个目录,看不出问题。
这台机器上它们落在了两个地方。~/.npmrc 里写着 prefix=D:\opencode,更新器认为自己的家在 D 盘,安装动作把新版本放进了 D:\opencode;可改名动作是对着正在运行的那份文件执行的,也就是 %APPDATA%\npm 里那个。旧目录被掏空,新目录拿到 2.1.278,PATH 上排在前面的是指向尸体的壳。
`D:\opencode` 不能删它看着像某个工具的专用目录,实际是全机 npm 全局前缀,正在跑的那份 claude 本体就住在里面。正确做法是
npm uninstall -g <包名>按包卸,再单独清掉旧前缀里那棵树,一共 865 MB。
#二、两个不能整删的 npm 前缀
同一个坑还有另一半。%APPDATA%\npm 里也有 claude 的旧 shim,而它同时是 cc-connect、fkill-cli、hexo-cli 的宿主。
两个前缀都不能按目录删,只能按包卸。删目录会连带弄坏一堆还在用的命令。
清理时还遇到一类容易踩的东西,符号链接。D:\ccr 是指向 E:\work_zone\Tools\ccr 的链接,rm -rf 会顺着链接把 164 MB 的真实目录一起端掉。改用 rmdir 只删链接,确认目标还在,再删目标,多花十秒钟。
#三、另外两处失效的组件
顺着路径检查,又找出两个早就不工作、但因为不报错所以没人发现的东西。
前一阵修好的视觉 MCP,配置指向 %APPDATA%\npm\node_modules\@me9rez\llm-vision-mcp\index.js,而那个目录是空的。这个失效来自上一次 npm 前缀迁移,配置没跟着改。我把它指回本地那份源码副本,写了个握手脚本验证,发 initialize 和 tools/list,7 个工具全部返回。
Codex 是另一个样子。where codex 不可解析,但 ~/.codex 里完整躺着一份配置:自定义 provider 指向 DeepSeek、一个 auth.json、甚至还有一只桌宠。CLI 早就没了,配置还在等它回来。
#四、顺手清出的最大一块
真正的意外在系统临时目录。四个 vscode-stable-user-x64* 目录占了 835 MB,是编辑器安装器解包时留下的,而编辑器本身早就卸了。这一块比工作区 Temp 里全部 613 个文件加起来还大十几倍。
#五、账
| 批次 | 内容 | 回收 |
|---|---|---|
| 第一批 | 编辑器、命令行工具、旧 claude 安装、CCR、VSCode、Codex 配置 | 7774 MiB |
| 第二批 | Android SDK、Gradle、~/.android |
721 MiB |
| 第三批 | 工作区 Temp 与系统 Temp 里的安装器残留 | 882 MiB |
| 合计 | 约 9377 MiB,即 9.16 GiB |
还有一些不占空间的改动,也顺手做了:注册表里一个指向已删程序的协议键、用户级 PATH 两条失效项、机器 PATH 一条悬空项,加上三份技能文档里已经不可达的宿主分支。
#六、留下的,和下次还会遇见的
留下没动的有几样:
- JDK 17 保留在
D:\jdk17,将来的项目要用 cc-connect按计划不碰- 系统 Temp 里两个 Setup Log 留着,日期是最近两天,不确定属不属于还在进行的安装
有一件事下次还会遇到。~/.codex 会被 ClawdOnDesk 的 agent 脚本和 Tools\CCSwitch\cc-switch.exe 重建。它们还在机器上,再运行一次,那个目录就会回来。
这一趟下来,几条能带走的东西:
- 卸载按包,不按目录。 npm 全局前缀那个目录里住着别的东西,
rm -rf一个目录可能弄坏一堆还在用的命令 where命中不等于能跑。 PATH 上排在前面那一条可能是个壳,指向已经改名的尸体- 删链接用
rmdir,不用rm -rf。 后者会顺着链接把目标目录一起端掉 - 不报错的失效最难发现。 配置指向空目录、CLI 没了配置还在,这类问题不会自己冒出来,只能靠定期顺着路径过一遍
评论