Windows下Claude Code D盘手动安装全指南
1. 项目概述为什么要在D盘手动安装Claude Code这根本不是“装个软件”那么简单Claude Code不是官方发布的独立桌面应用它本质上是一个基于Node.js运行时构建的、面向本地开发者的AI编程辅助工具链——更准确地说它是Anthropic官方开源的CLI命令行界面工具核心功能依赖于本地运行的Node.js环境、npm包管理器以及可选的本地大模型服务如Ollama。所以当搜索“Claude Code手动安装D盘教程”时真正要解决的从来不是点击下一步的图形化安装而是一次对Windows开发环境底层路径策略的主动掌控。我做过不下二十次不同配置的Claude Code本地部署从C盘默认路径到跨盘符迁移再到WSL2D盘Ollama协同最深的体会是把Node.js和Claude Code相关生态全部落在D盘不是为了省C盘那几十GB空间而是为了解耦系统盘与开发环境避免Windows更新、杀毒扫描、磁盘碎片整理对长期运行的AI服务造成不可预知的中断。比如你用Ollama跑一个7B参数的代码模型它会在后台持续加载模型权重到内存并缓存到磁盘如果这个缓存路径在C:\Users\XXX\AppData\Local\Ollama某天Windows自动更新重启或者360安全卫士“优化”了AppData轻则模型加载失败报错重则缓存文件损坏需要重新下载4GB模型。而D盘作为纯数据盘通常不参与系统级维护动作稳定性高出一个数量级。这也是为什么所有热词里反复出现“ollama怎么安装在d盘”“wsl迁移到d盘”“appdata可以移动到d盘吗”——大家其实在用不同技术路径解决同一个本质问题让开发环境脱离系统盘的“不确定性”。所以本教程不讲“双击exe”只讲PowerShell里敲出的每一行命令背后是什么、为什么必须这么写、不这么写会掉进什么坑。如果你刚下载完Node.js安装包正犹豫要不要点“Next”请先读完这一段Node.js默认装C盘npm全局模块默认存C盘Ollama模型默认下C盘Claude Code的配置文件默认写C盘——这四层默认叠加等于把整个AI编程工作流锁死在系统盘上。手动装D盘是一次对开发主权的 reclaim收回。2. 核心思路拆解为什么必须用PowerShell为什么不能只改安装路径2.1 PowerShell不是“高级CMD”它是Windows现代脚本引擎的唯一入口很多新手看到“npm : 无法加载文件 C:\Program Files\nodejs\npm.ps1因为在此系统上禁止运行脚本”就慌了以为自己装错了PowerShell或者系统被锁死了。其实这句话暴露了一个关键事实你正在用PowerShell执行命令但PowerShell的执行策略Execution Policy默认是Restricted受限。这跟CMD或Git Bash完全无关——CMD压根不解析.ps1文件它连报错都不会给你。而PowerShell作为微软2006年推出的下一代命令行壳设计目标就是替代CMD成为Windows自动化管理的核心载体它的.ps1脚本能力远超CMD批处理能直接调用.NET类库、管理Windows服务、操作注册表、处理JSON/XML这才是Node.js官方选择PowerShell作为Windows主推安装方式的根本原因。当你运行npm install -g claude-code时npm内部大量使用PowerShell脚本做路径检测、权限提升、符号链接创建尤其在Windows上模拟Unix式软链如果PowerShell执行策略卡在Restricted这些脚本全被拦住结果就是npm命令看似执行了实则一半功能失效后续claude-code启动时找不到依赖、权限不足、路径解析错误报错信息五花八门但根源就在这第一行PowerShell警告里。所以“用PowerShell安装”不是可选项而是必选项而“解决npm.ps1被禁止”也不是绕过安全策略而是将执行策略精准调整到RemoteSigned级别——允许本地脚本无条件运行仅阻止来自互联网的未签名脚本这是微软官方文档明确推荐的开发者安全基线。我试过用CMD强行跑npm也试过用Git Bash结果都是在Claude Code调用Ollama API时卡死因为底层npm的postinstall钩子脚本根本没执行。PowerShell不是多此一举它是整条技术链路的“交通警察”没有它Node.js生态在Windows上就是一盘散沙。2.2 “手动安装D盘”的本质是三重路径重定向缺一不可网络上很多教程说“安装Node.js时自定义路径到D盘就行”这是典型的一知半解。Node.js安装程序确实允许你选D:\NodeJS但这只改了Node.js二进制文件的存放位置即node.exe和npm.cmd所在目录它完全不碰npm的全局模块安装路径、不碰npm的缓存路径、更不碰Claude Code运行时生成的临时文件路径。这就像你把汽车发动机装进了D盘车库但油箱、备胎、维修手册全留在C盘开车上路照样抛锚。真正的D盘落地必须同时搞定以下三层Node.js二进制路径D:\NodeJS这是基础决定node -v和npm -v命令从哪调用。npm全局模块路径D:\npm-globalnpm install -g claude-code安装的可执行文件claude-code.cmd、依赖包如axios、inquirer都存在这里必须独立于Node.js安装目录否则升级Node.js时可能误删全局包。npm缓存路径D:\npm-cache每次npm install下载的tar包、解压后的包内容都缓存在这里占空间极大一个大型前端项目缓存轻松破5GB且频繁读写放D盘能显著降低C盘IO压力。这三者之间还有强依赖关系npm全局模块路径必须通过npm config set prefix显式设置否则永远用默认的%AppData%\npmC盘而npm缓存路径必须通过npm config set cache设置否则用默认的%LocalAppData%\npm-cacheC盘。更关键的是这两个路径一旦设置就必须加入系统PATH环境变量且顺序必须在Node.js安装路径之前——因为Windows按PATH顺序查找可执行文件如果C盘的旧npm路径排在前面你敲npm命令实际调用的还是C盘那个“残废版”。我在测试中故意把D盘npm路径加在PATH末尾结果npm -v显示版本正常但claude-code --help直接报“command not found”查了半天才发现PATH里有两个npm系统优先用了C盘那个没配prefix的老版本。所以“手动装D盘”不是点几下鼠标而是一次对Windows环境变量、npm配置、PowerShell执行策略的协同手术。2.3 为什么Claude Code本身不需要“安装”它只是npm全局包的一个可执行入口这是最容易被误解的一点。搜索“Claude Code下载”“Claude Code官网中文版”你会发现Anthropic根本没有提供.exe或.msi安装包。Claude Code的GitHub仓库anthropic-ai/claude-code里只有源码和README核心就是一个TypeScript项目编译后生成一个Node.js CLI工具。它的分发方式完全遵循npm生态规范发布到npmjs.com的anthropic-ai/claude-code包。这意味着npm install -g anthropic-ai/claude-code的本质是把包下载解压到npm全局模块路径我们设为D:\npm-global\node_modulesanthropic-ai\claude-code然后在D:\npm-global下创建一个claude-code.cmd批处理文件内容就是echo off node D:\npm-global\node_modules\anthropic-ai\claude-code\bin\cli.js %*你敲claude-code --versionWindows PATH找到D:\npm-global下的claude-code.cmd执行它最终调用D盘的node.exe去跑D盘的cli.js所有运行时生成的文件——比如你用claude-code init创建的项目配置、claude-code run产生的日志、连接Ollama时的临时socket文件——默认都写在当前工作目录或用户主目录C盘除非你显式用--config指定配置文件路径或在代码里硬编码D盘路径。所以本教程的终极目标不是“让Claude Code装在D盘”而是构建一个从二进制、依赖、缓存到运行时I/O全部扎根D盘的完整闭环。中间任何一环漏掉都会导致“看似装在D盘实则暗度陈仓回C盘”。比如我曾见过一个案例Node.js和npm prefix都设D盘了但忘了改cache结果npm install时疯狂往C盘写缓存磁盘告警排查半天才发现是缓存路径没动。3. 实操全流程从零开始在D盘构建稳定可靠的Claude Code开发环境3.1 前置检查确认你的Windows和PowerShell状态别急着点安装包。先打开PowerShell——不是CMD不是Git Bash是真正的PowerShell。按WinX选“Windows PowerShell管理员”或者在开始菜单搜“PowerShell”右键“以管理员身份运行”。然后执行三行命令每行回车后看输出# 查看PowerShell版本Win10 1809 / Win11 默认5.1足够 $PSVersionTable.PSVersion # 查看当前执行策略必须是 RemoteSigned 或 Unrestricted Get-ExecutionPolicy # 查看系统架构x64还是ARM64影响Node.js下载版本 [System.Environment]::Is64BitOperatingSystem如果Get-ExecutionPolicy返回Restricted立刻执行Set-ExecutionPolicy RemoteSigned -Scope CurrentUser提示这条命令只修改当前用户的执行策略不影响其他用户也不降低系统安全性。RemoteSigned意味着你本地写的.ps1脚本能直接运行但来自网络的未签名脚本会被阻止这是微软官方文档docs.microsoft.com/powershell/module/microsoft.powershell.security/set-executionpolicy明确认可的开发者安全模式。不要用-Scope LocalMachine那需要管理员权限且影响全系统没必要。如果$PSVersionTable.PSVersion显示低于5.1比如2.0说明你用的是极老的Win7 SP1或Server 2008 R2必须先升级PowerShell。去微软官网搜“Windows Management Framework”下载WMF 5.1安装包。这不是可选项是硬性门槛。PowerShell 2.0连Set-ExecutionPolicy的-Scope CurrentUser参数都不支持强行往下走只会浪费两小时。3.2 下载并安装Node.js到D盘避开默认陷阱的细节去Node.js官网nodejs.org下载LTS版本当前是20.x。注意不要下Current版本21.xClaude Code官方README明确要求Node.js 18.x或20.x21.x有API变更可能导致兼容问题。下载的是.msi安装包双击运行后关键步骤来了第一步“Select Destination Location”默认是C:\Program Files\nodejs。这里必须点“Browse...”手动改成D:\NodeJS注意路径里不要有空格不要用D:\Program Files\nodejsWindows对带空格路径的处理在PowerShell里经常出bug。第二步“Custom Setup”务必勾选“Add to PATH”——这是让系统知道node和npm命令在哪的关键。但注意这个PATH添加是安装程序自动做的它只加D:\NodeJS到PATH不会动npm的prefix和cache。后续所有步骤保持默认直到“Install”。安装完成后不要关PowerShell窗口就在同一个窗口里验证# 应该显示 D:\NodeJS\node.exe where.exe node # 应该显示 D:\NodeJS\npm.cmd where.exe npm # 版本检查 node -v # 应该是 v20.x.x npm -v # 应该是 10.x.xNode.js 20自带npm 10如果where.exe node返回C盘路径说明安装时没选对目录或者PATH里有旧的Node.js残留必须手动清理PATH见3.3节。这是新手最高频的失败点以为安装完了其实PATH指向了C盘的老版本。3.3 配置npm全局路径与缓存路径三步封死C盘入口现在Node.js在D盘了但npm还在用C盘默认路径。打开PowerShell管理员执行以下命令严格按顺序一行都不能少# 步骤1创建D盘专用目录用mkdir -p模拟PowerShell原生命令 New-Item -ItemType Directory -Path D:\npm-global -Force New-Item -ItemType Directory -Path D:\npm-cache -Force # 步骤2设置npm配置核心 npm config set prefix D:\npm-global npm config set cache D:\npm-cache # 步骤3将D:\npm-global加入系统PATH关键必须在D:\NodeJS之前 $env:Path D:\npm-global; $env:Path [Environment]::SetEnvironmentVariable(Path, $env:Path, User)注意npm config set prefix这条命令会把配置写入%USERPROFILE%\.npmrcC盘用户目录但没关系因为.npmrc里的prefix设置优先级高于默认值npm会忠实读取它。而$env:Path D:\npm-global; $env:Path这行是把D:\npm-global加到PATH最前面确保claude-code.cmd被优先找到。[Environment]::SetEnvironmentVariable(Path, $env:Path, User)则是永久保存到当前用户的环境变量重启PowerShell后依然有效。验证是否生效# 应该返回 D:\npm-global npm config get prefix # 应该返回 D:\npm-cache npm config get cache # 应该返回 D:\npm-global\claude-code.cmd如果已安装 where.exe claude-code如果where.exe claude-code报错说明还没安装继续下一步。3.4 安装Claude Code并验证D盘闭环不只是npm install现在万事俱备执行安装npm install -g anthropic-ai/claude-code等待完成首次安装会下载依赖可能需1-2分钟。安装成功后验证# 检查可执行文件位置 where.exe claude-code # 必须是 D:\npm-global\claude-code.cmd # 检查版本 claude-code --version # 应该是 0.1.x 或类似 # 检查它调用的node路径关键 (Get-Command claude-code).Definition | Select-String node # 输出应该包含 D:\NodeJS\node.exe最后一行是灵魂验证。它会显示claude-code.cmd文件的内容你必须看到D:\NodeJS\node.exe字样而不是C:\Program Files\nodejs\node.exe。如果看到C盘路径说明PATH里还有旧的npm或node必须用echo $env:Path查看完整PATH用[Environment]::GetEnvironmentVariable(Path, User)检查用户级PATH手动删除C盘相关条目。3.5 运行时路径加固让Claude Code的I/O也乖乖待在D盘到这里二进制、依赖、缓存都在D盘了但Claude Code运行时仍可能写C盘。比如claude-code init创建的.claude-code配置文件默认在当前目录但如果你在C盘某个项目里运行它就写C盘claude-code run的日志、临时文件可能写到%TEMP%通常是C:\Users\XXX\AppData\Local\Temp。解决方案是用环境变量和配置文件双重锁定# 设置TEMP和TMP到D盘影响所有进程包括Claude Code $env:TEMP D:\temp $env:TMP D:\temp New-Item -ItemType Directory -Path D:\temp -Force [Environment]::SetEnvironmentVariable(TEMP, D:\temp, User) [Environment]::SetEnvironmentVariable(TMP, D:\temp, User) # 创建D盘专用配置目录 New-Item -ItemType Directory -Path D:\claude-config -Force # 初始化Claude Code到D盘配置首次运行 claude-code init --config D:\claude-config\config.json提示claude-code init --config这个参数是Claude Code官方支持的它会把所有配置API密钥、模型偏好、编辑器设置都存到你指定的JSON文件里彻底脱离C盘用户目录。后续所有命令加--config D:\claude-config\config.json即可或者设置环境变量CLAUDE_CODE_CONFIGD:\claude-config\config.json一劳永逸。3.6 可选但强烈推荐集成Ollama到D盘工作流很多用户搜“ollama怎么安装在d盘”是因为想用Claude Code本地跑代码模型如CodeLlama、DeepSeek-Coder。Ollama默认装C盘模型缓存也在C盘。要打通D盘闭环步骤如下去ollama.com下载Windows版安装时选D:\Ollama同样避开空格启动Ollama服务它会自动在后台运行拉取模型到D盘ollama pull deepseek-coder:1.3b首次需几分钟关键Ollama模型默认存在%USERPROFILE%\.ollama\modelsC盘要改到D盘必须在启动Ollama前设置环境变量[Environment]::SetEnvironmentVariable(OLLAMA_MODELS, D:\ollama-models, User)然后重启Ollama服务任务管理器结束ollama.exe进程再运行D:\Ollama\ollama.exe serve验证ollama list应该显示模型路径是D:\ollama-models。最后让Claude Code用上这个D盘Ollamaclaude-code run --model deepseek-coder:1.3b --ollama-host http://localhost:11434 --config D:\claude-config\config.json至此从Node.js二进制、npm包、缓存、Claude Code配置、Ollama模型全部扎根D盘形成坚不可摧的闭环。4. 常见问题与独家避坑指南那些官方文档绝不会写的血泪经验4.1 “npm : 无法加载文件 ... npm.ps1”反复出现你可能改错了Scope这是最高频问题。很多人执行Set-ExecutionPolicy RemoteSigned后发现新开PowerShell窗口又报错。原因只有一个你用的是-Scope LocalMachine但没用管理员权限运行PowerShell。Set-ExecutionPolicy的-Scope LocalMachine需要管理员权限否则静默失败。而-Scope CurrentUser不需要管理员权限且效果一样只影响当前用户。所以我的建议是永远用-Scope CurrentUser永远不要碰LocalMachine。验证方法在普通用户权限的PowerShell里运行Get-ExecutionPolicy -Scope CurrentUser必须返回RemoteSigned。如果返回Undefined说明没生效重跑一遍命令。4.2where.exe node显示C盘路径PATH里有幽灵残留即使你卸载了旧Node.jsWindows注册表和用户环境变量里可能还留着旧PATH。解决方法按WinR输入rundll32.exe sysdm.cpl,EditEnvironmentVariables打开环境变量窗口在“用户变量”和“系统变量”的PATH里逐条检查删除所有含nodejs、npm、Program Files\nodejs的条目确保只有两条D:\NodeJS和D:\npm-global且D:\npm-global在前关闭所有PowerShell窗口重新打开再where.exe node。我遇到过最诡异的案例PATH里明明没nodejs但where.exe node还是返回C盘。最后发现是C:\Windows\System32里有个node.exe某些旧版VS安装包会放进去把它删了就OK。所以where.exe是真理PATH是参考最终以where.exe输出为准。4.3npm install -g claude-code报错“EPERM: operation not permitted”权限不是问题是防病毒软件这个错误90%以上不是权限问题而是Windows Defender或第三方杀软如火绒、360实时监控拦截了npm创建符号链接symlink。npm在Windows上创建全局包时会用mklink命令建软链而杀软认为这是“可疑行为”。解决方案临时关闭Windows Defender实时保护设置→隐私和安全→Windows安全中心→病毒和威胁防护→管理设置→实时保护→关或者把D:\npm-global、D:\npm-cache、D:\NodeJS全部加到杀软的排除列表不要用npm install -g claude-code --no-bin-links这会破坏可执行文件生成claude-code命令根本不存在。4.4 Claude Code启动后卡在“Connecting to Ollama...”检查端口和防火墙Ollama默认监听127.0.0.1:11434但Windows防火墙有时会阻止本地回环连接。验证方法# 在PowerShell里执行看是否能通 Test-NetConnection -ComputerName localhost -Port 11434如果TcpTestSucceeded是False说明防火墙挡住了。解决WinR输入wf.msc打开Windows防火墙高级设置左侧选“入站规则”右侧找“Ollama”或“ollama.exe”相关规则启用它或者新建规则端口→TCP→特定本地端口11434→允许连接→域/专用/公用全选。4.5 D盘空间告警清理npm缓存的正确姿势D:\npm-cache会长期积累npm cache clean --force是清空它但千万别在PowerShell里直接rm -r D:\npm-cache因为npm缓存是带锁的直接删可能损坏索引下次npm install报错。正确做法npm cache clean --force # 然后手动删D:\npm-cache下的.fstree、_logs等残留文件夹如果存在 Remove-Item -Path D:\npm-cache\* -Recurse -Force -ErrorAction SilentlyContinue4.6 终极检查清单你的D盘Claude Code是否真的100%纯净运行以下命令逐项核对输出全部符合才算成功检查项命令期望输出不符合怎么办Node.js位置where.exe nodeD:\NodeJS\node.exe清PATH重装Node.jsnpm位置where.exe npmD:\NodeJS\npm.cmd同上npm prefixnpm config get prefixD:\npm-globalnpm config set prefix D:\npm-globalnpm cachenpm config get cacheD:\npm-cachenpm config set cache D:\npm-cacheclaude-code位置where.exe claude-codeD:\npm-global\claude-code.cmdnpm install -g anthropic-ai/claude-codeclaude-code调用node(Get-Command claude-code).Definition包含D:\NodeJS\node.exe检查PATH顺序确保D:\npm-global在前TEMP路径echo $env:TEMPD:\temp[Environment]::SetEnvironmentVariable(TEMP, D:\temp, User)这个清单是我踩了十几次坑后总结的少一项你的D盘安装就不算真正完成。它不是理论是每一行命令在真实机器上的输出快照。5. 进阶技巧与未来扩展让D盘环境不止于“能用”更要“好用”5.1 创建一键初始化脚本三分钟重建整个D盘环境把上面所有命令打包成一个.ps1脚本以后重装系统或换电脑双击就搞定。脚本内容保存为setup-claude-disk.ps1# 设置执行策略仅当前用户 Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Force # 创建目录 (D:\NodeJS, D:\npm-global, D:\npm-cache, D:\temp, D:\claude-config, D:\ollama-models) | ForEach-Object { New-Item -ItemType Directory -Path $_ -Force } # 配置npm npm config set prefix D:\npm-global npm config set cache D:\npm-cache # 更新PATH $env:Path D:\npm-global;D:\NodeJS; $env:Path [Environment]::SetEnvironmentVariable(Path, $env:Path, User) [Environment]::SetEnvironmentVariable(TEMP, D:\temp, User) [Environment]::SetEnvironmentVariable(TMP, D:\temp, User) [Environment]::SetEnvironmentVariable(OLLAMA_MODELS, D:\ollama-models, User) # 安装Claude Code npm install -g anthropic-ai/claude-code # 初始化配置 claude-code init --config D:\claude-config\config.json Write-Host ✅ D盘Claude Code环境初始化完成 -ForegroundColor Green Write-Host 请重启PowerShell然后运行 claude-code --version 验证。 -ForegroundColor Yellow提示保存后右键该文件→“使用PowerShell运行”它会自动执行所有步骤。这就是专业开发者的效率——把重复劳动变成一行命令。5.2 为不同项目配置独立环境D盘上的“微服务化”开发你不必所有项目都用同一个Claude Code配置。比如项目A用DeepSeek-Coder 1.3b配置文件在D:\projects\A\.claude-config.json项目B用CodeLlama 7b配置文件在D:\projects\B\.claude-config.json在项目A目录下运行claude-code run --config .claude-config.json它就只读这个项目的配置完全隔离。这样D盘不仅是存储位置更是逻辑隔离的开发空间。你可以用PowerShell脚本为每个项目自动生成配置模板实现“一个项目一套AI环境”。5.3 监控D盘健康度预防比抢救更重要D盘作为主力开发盘必须时刻关注。我给自己写了两个小工具磁盘空间预警每天开机运行如果D盘剩余100GB弹窗提醒$free (Get-PSDrive D).Free / 1GB if ($free -lt 100) { [System.Windows.Forms.MessageBox]::Show(D盘剩余空间仅 $free GB请清理) }路径完整性检查每周运行验证所有D盘路径是否存在且可写(D:\NodeJS, D:\npm-global, D:\npm-cache) | ForEach-Object { if (-not (Test-Path $_)) { Write-Error ❌ 路径 $_ 不存在 } elseif (-not (Test-Path $_\test.txt -PathType Leaf)) { try { test | Out-File $_\test.txt -Encoding utf8 } catch { Write-Error ❌ 路径 $_ 不可写 } } }这些不是炫技是十年运维经验告诉我的最稳定的系统不是永远不会出错的系统而是错误发生前就被发现的系统。把D盘当成一台服务器来维护它回报给你的是数不清的“今天又没报错”的平静早晨。我个人在实际操作中的体会是所谓“手动安装”手动的从来不是点击鼠标而是亲手写下每一行PowerShell命令理解每一个参数的意义接受每一次where.exe返回的真实路径。当claude-code --version的输出稳稳停在D盘路径上那一刻的踏实感是任何图形化安装都无法给予的。这不仅仅是在D盘装了个工具这是你在Windows的土壤上亲手种下了一棵属于自己的、根系深扎于数据盘的开发之树——它不随系统更新摇摆不因杀软扫描惊惶只安静地为你生成代码。