Claude Code CLI 安装、排障与权限配置实战指南
2026/9/20 16:58:08 网站建设 项目流程

先把结论放这儿:Claude Code CLI 这个东西,装起来一句话的事,npm install -g @anthropic-ai/claude-code,但真正让它跑顺、少踩坑,能聊的东西比你想的多得多。我最近在三四台不同系统上折腾它,Windows 原生终端、WSL2、macOS 都过了一遍,从"claude 命令找不到"到 PowerShell 脚本被拦、再到登录验证、权限模型,几乎把热榜上能看到的坑都踩了个遍。这篇文章不搞教科书式的功能介绍,直接把我踩过的坑和验证过的步骤完整过一遍,目标是你看完能一次性跑通,遇到问题也能自己定位。

1. Claude Code CLI 的定位:它跟网页里那个 Claude 不是一回事

1.1 终端里的 Agent,不是又一个聊天框

很多人第一次听说 Claude Code,会下意识以为它就是把 Claude 网页版塞进了终端里。这么理解其实偏差很大。Claude Code 是 Anthropic 官方出的agentic 编码工具,它跑起来之后,会主动去扫描你的项目目录、读文件、改代码、执行命令,甚至自己调用 git 操作、跑测试脚本,然后根据结果继续往下推进。换句话说,它不只是在"聊代码",它是真的在你的代码库里干活。

这也引出了它跟网页版最本质的区别:网页版聊天框改不了你的文件,Claude Code 能改。你在网页上让 Claude 写一段代码,它给你贴出来,复制粘贴是你的事;在 Claude Code 里,它自己就把文件改了,跑命令把测试过了,然后告诉你结果。这种能力非常爽,但代价是——它需要权限,而且权限管理这件事直接决定你是用得飞起还是被坑得体无完肤。

1.2 安装前需要搞明白的几个基础概念

在敲安装命令之前,有几个概念建议先理清,不然中途很容易卡壳:

  • Node.js 和 npm 的关系:npm 是 Node.js 自带的包管理器,Claude Code CLI 通过 npm 分发,所以你的机器上必须有一个能用的 Node.js 环境。装完 Node.js 之后,npm 会自动带上,不需要单独装。
  • 全局安装 vs 项目安装npm install -g是全局安装,装出来的claude命令在任何目录下都能直接用。只装到某个项目里的话,换目录就找不到了,所以 Claude Code 官方推荐全局安装。
  • Anthropic 账号:CLI 首次启动需要登录。它走的是 OAuth 登录流程,会往浏览器里弹一个授权页,登录后 CLI 会拿到凭证。账号需要订阅 Claude 的 Pro/Max 套餐,或者开通 API 并绑定支付方式。这个是硬条件,没有账号后面全白搭。
  • PATH 环境变量:装完claude命令提示找不到,八成是 npm 全局 bin 目录没进 PATH。这个概念下面排障章节会反复提到。

2. 动手安装之前的环境预检

2.1 Node.js 版本:太低会直接装不上

Claude Code 对 Node.js 版本有要求,18.0.0 以下基本装不上,就算装上运行也会各种报错。我的建议是直接用 Node.js 20 LTS 或 22 LTS,这两个版本最稳。别用太新的奇数版本,也别用那种已经 EOL 的旧版。

检查你机器上的 Node 版本,终端里跑:

node -v npm -v

如果提示node: command not found,说明 Node.js 还没装或者装完没生效。新装的话,直接去 Node.js 官网下 LTS 安装包,Windows 和 macOS 都有图形化安装包,一路默认就行。唯一要注意的是Windows 安装时确认勾选 "Add to PATH",这一步默认是勾上的,但有人会手滑取消,后面会特别难受。

如果你平时用 nvm(Node Version Manager)管理多版本,也建议切到 LTS 版本再用,nvm install 22 && nvm use 22这种操作不用我多解释。

2.2 npm 镜像源:装不动的头号原因

很多人卡在第一步就是npm install半天不动,或者在npm install时报各种网络错误。这大概率不是 Claude Code 的问题,而是 npm 默认从官方源拉包,网络路径不稳定。解决办法是换成国内镜像源,最常见的是 npmmirror(原淘宝镜像):

npm config set registry https://registry.npmmirror.com

验证是否生效:

npm config get registry

能看到https://registry.npmmirror.com就说明配好了。这个配置是全局的,之后所有npm install都会走镜像,拉包速度会快非常多。

有一点需要提醒:镜像源同步官方包偶尔有延迟。如果你安装时提示找不到@anthropic-ai/claude-code这个包,或者版本号很旧,可以临时切回官方源装一次:

npm install -g @anthropic-ai/claude-code --registry=https://registry.npmjs.org

装完再切回镜像源就行。这个技巧我实测过,能解决"镜像还没同步到最新版"的尴尬。

2.3 Windows 上先想清楚:用 WSL2 还是原生 PowerShell

Windows 用户安装前要先做一个选择:直接在原生 PowerShell/cmd 里跑,还是装一个 WSL2(Windows Subsystem for Linux)在 Linux 环境里跑。Claude Code 官方其实是推荐 WSL2 的,原因很实际:很多文件路径处理、Shell 命令兼容性问题在 WSL2 里天然不存在,git、bash、各种脚本通信都正常。

如果你有条件,强烈建议在 WSL2 里装。启用 WSL2 之前,Windows 上必须开启"虚拟机平台"功能,这一步官方文档有提到,下面排障章节会单独讲。如果不想用 WSL2,在 Windows 原生 PowerShell 里也能跑,但后面某些报错你会更容易遇到。

另外,无论走哪条路,都把 PowerShell 执行策略先调好,不然 npm 装完包也会被拦。这个也是高频报错,我放到第 5 节详细拆。

3. 从 npm install 到 claude 命令跑起来的完整流程

3.1 全局安装 @anthropic-ai/claude-code

环境确认没问题之后,装这个包就一条命令:

npm install -g @anthropic-ai/claude-code

注意包名带 scope,@anthropic-ai/开头,不是claude也不是claude-code。把这个-g去掉就成了项目级安装,我不推荐后者,原因前面说了,全局安装才能保证任何目录下claude都好使。

安装过程会有一段进度条,装完后终端会提示已经把它安装到哪个目录。以 macOS 或 Linux 为例,通常会出现在/usr/local/bin或者通过 nvm 安装时的~/.nvm/versions/node/xxx/bin目录下;Windows 则通常是%APPDATA%\npm。这个路径后面要记一下,排障时要用。

3.2 验证安装并补全 PATH

装完立刻验证:

claude --version

能输出版本号(类似1.0.x)就说明安装成功。如果提示:

zsh: command not found: claude

或者:

bash: claude: command not found

基本就是 npm 全局 bin 目录不在 PATH 里。解决办法是把该目录加进 PATH。macOS/Linux 上,如果你用的是 nvm,检查echo $PATH里有没有 nvm 的 bin 路径;如果是普通 Node.js 安装,看看/usr/local/bin在不在 PATH 里。Windows 用户则去"系统属性 - 环境变量"里,检查Path值是否包含%APPDATA%\npm

补完 PATH 后,新开一个终端窗口再执行claude --version,一般就通了。注意是"新开",当前窗口的环境变量是启动时读的,不会自动刷新。

3.3 首次启动登录与工作目录选择

claude命令能跑起来之后,进到你实际要干活的项目目录,执行:

claude

首次启动会进入登录流程。CLI 会输出一个验证码或者跳转链接,并自动打开浏览器,登录 Anthropic 账号、授权之后,回到终端就能看到交互界面。授权凭证会保存在本机,下次启动不需要重新登录。

这里有两个实操上容易忽略的点:

  • 进入哪个目录启动很关键。Claude Code 的工作范围默认就是启动时所在目录,启动后再用/add-dir也能添加别的目录,但最自然的用法还是先在项目根目录启动,让它直接看到你的整个代码库。
  • 首次进交互界面会有个简单的欢迎引导。它会让你确认一些权限相关的选项,不用急着全部允许,可以先看明白每个选项再说。

如果登录环节一直失败,或者提示类似unfortunately, claude is not available to new users right now,那大多是账号层面或者网络连通性方面的问题,跟安装过程无关。确保你的网络能正常访问 Anthropic 官方服务,再检查一下账号是否订阅了可用套餐,然后重新跑一次登录。

3.4 升级、卸载与重装

Claude Code 更新频率不低,隔一段时间就会出现新版本。升级命令:

npm update -g @anthropic-ai/claude-code

升级完同样可以用claude --version确认。如果你之前装过旧版,升级后版本没变,可以先claude --version看看,再检查 npm 全局包里实际的版本:

npm list -g @anthropic-ai/claude-code

卸载也简单:

npm uninstall -g @anthropic-ai/claude-code

重装的话,先卸再装,或者直接再执行一次全局 install(会覆盖旧版本)。遇到诡异问题,我一般直接卸载、清掉~/.claude下的配置文件再重装,能解决九成灵异现象。

4. 权限模型:如何少点确认,如何给完全访问权限

4.1 Claude Code 为什么每步都要你确认

第一次用 Claude Code 的人通常会有点不适应:改个文件要确认,跑个命令要确认,开个网页预审内容也要确认。这不怪工具啰嗦,因为它是一个真正的 agent,下面这些动作它都可能主动发起:

  • 读写项目里的文件
  • 在项目里执行任意 Shell 命令
  • 调用 git 做 commit、checkout 这类操作
  • 发起 HTTP 请求获取网页内容

每一类操作都对应一个工具权限。Claude Code 默认的安全策略是"先问再做",这样 AI 如果理解错你的需求,你还有机会在动手前拦下来。代价是频繁确认很打断心流。所以重点来了:不是每次都手动确认,而是通过配置把可信操作加入允许列表。

4.2 用 settings.json 配置允许列表

Claude Code 的权限配置放在 settings.json 里,分全局和项目两级:

  • 全局配置:~/.claude/settings.json
  • 项目配置:<项目目录>/.claude/settings.json

项目配置优先级更高,团队协作时可以把项目配置提交到 git 仓库,保证所有人行为一致。一个简单的配置长这样:

{ "permissions": { "deny": [], "allow": [ "Read", "Edit", "Bash(git status)", "Bash(git log *)", "Bash(npm run build)", "Bash(npm run dev)", "WebFetch(domain:docs.anthropic.com)" ] } }

这里permissions.allow数组里每一条是一个权限规则。ReadEdit表示允许读取文件和编辑文件;Bash(git status)表示只允许执行git status这条命令,Bash(git log *)表示允许执行所有以git log开头的命令,Bash(npm run build)单独放行构建命令。WebFetch(domain:example.com)表示允许抓取指定域名的网页。

注意几点:

  • 规则粒度可以很细Bash(pwd)Bash(ls)这种无副作用的命令建议直接放行;Bash(rm *)Bash(sudo *)这种高风险的一律不要加白名单。
  • 不带括号的ReadEdit表示整个工具全部放行,适合低频但肯定安全的工具;带参数的模式更精细,可以按命令前缀或域名白名单来控。
  • 配置改完,重开一个 Claude Code 会话生效,或直接在交互界面里用/permissions命令重新加载。

还有一个更常用的方式:在交互界面里输入/permissions,可以用菜单式操作把某条命令加入允许列表,或者移除。比手改 JSON 直观,适合不想记语法的场景。

4.3 完全访问权限怎么给,以及为什么我不建议你用

热搜里有句话是"claude code cli 如何给完全访问权限",我也被问过很多次。确实有一个参数能实现这种效果,启动时加:

claude --dangerously-skip-permissions

加了之后,所有确认动作都会被跳过,Claude Code 拥有对当前工作目录的完全访问权限,你说"帮我搞定",它就一路干到底。还有一种方式是用启动参数指定权限模式:

claude --permission-mode bypassPermissions

效果类似。除了bypassPermissions,官方还提供了几个折中模式:

权限模式行为说明适用场景
默认(default)每条敏感操作逐一确认日常谨慎使用
acceptEdits自动接受文件编辑,但执行 Shell 命令仍需确认写代码多、跑命令少的场景
plan只出方案,不实际改文件和执行命令需求梳理、代码审查
bypassPermissions跳过全部确认理解风险后临时使用

我的态度很明确:别在日常工作中用完全跳过确认的模式。我自己只在跑自动化脚本、批量重构这种明确知道边界的情况下用过--permission-mode acceptEdits,即便是这样,也遇到过它自作主张改错文件的情况。真要用完全访问权限,务必满足几个前提:工作目录有 git 且状态干净、改动能随时 revert、任务边界清晰。

如果你就是觉得确认太烦,优先用 settings.json 的 allow 列表把高频安全命令白名单化,这是"少点几次"和"不裸奔"之间的最优解。

4.4 VS Code 集成:在编辑器里跑起来

终端里用 Claude Code 已经很顺之后,很多人还想在 VS Code 里直接呼出它。官方提供了 VS Code 扩展,安装方式是在 VS Code 扩展面板里搜 "Claude Code",安装 Anthropic 官方出品的那一个。扩展本质上复用你本机已经装好的 CLI,所以先保证claude --version在你的终端里能跑通,再装扩展,不然扩展会一直提示你找不到 CLI。

用起来很简单:在 VS Code 里按Ctrl+Shift+P,输入 "Claude Code" 就能看到相关命令。第一次使用会让你选择工作区并完成登录,后续就相当于把 Claude Code 的交互面板嵌在编辑器里,左边看代码、右边跟 agent 对话,体验比纯终端好很多。搭配 VS Code 的源码管理面板,Claude Code 改了什么文件、改了哪些行都一目了然,出问题也能快速回退。

5. 高频报错与排障实录

5.1 command not found:比你想象的多两个原因

claude: command not found是我见过最多的报错,但原因可能有三种:

  • Node.js 没装或版本过低node -v都打不出数字,那就是最基础的环境没有。先把 Node.js LTS 装好,再回过来装 Claude Code。
  • npm 全局 bin 目录不在 PATH:前面提过,macOS/Linux 上确认/usr/local/bin或 nvm 的 bin 目录在PATH;Windows 上确认%APPDATA%\npmPath里。改完环境变量记得新开终端。
  • 全局安装时用了 sudo 导致权限归属混乱:macOS/Linux 上如果npm install -g时用了sudo,装出来的文件 root 所有,后面升级、卸载都会报权限错误。不推荐用 sudo 装全局 npm 包,更好的做法是给 npm 配置一个用户级全局目录,或者直接用 nvm。

排查时可以先用下面命令看 claude 到底装到哪了:

which claude

如果输出一个路径,说明它其实装了,是启动 shell 的 PATH 不对;如果什么都没输出,那就是全局 bin 目录的问题,按上面思路处理。

5.2 PowerShell 禁止脚本的那句经典报错

Windows 原生 PowerShell 用户特别容易撞见这段:

npm : 无法加载文件 D:\Program Files\nodejs\npm.ps1,因为在此系统上禁止运行脚本

这不是 Claude Code 的问题,是 PowerShell 执行策略默认比较保守,不允许加载.ps1脚本。修法是在 PowerShell 里执行:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

RemoteSigned的意思是:本机创建的脚本可以运行,从网上下载、需要远程签名的脚本必须经过签名。选CurrentUser作用域,只对当前用户生效,不会影响系统其他地方。执行后输入Y确认。

之后重开 PowerShell,npm -vclaude --version应该都恢复正常了。如果仍然报错,用管理员身份打开 PowerShell 再执行一次,或者检查是不是有组策略强制覆盖了执行策略。这个修法不涉及任何安全降级,属于 PowerShell 的标准配置,Windows 很多工具都会要求这么做。

5.3 Virtual Machine Platform 提示是什么意思

Windows 上跑 Claude Code(特别是配合 WSL2 或容器环境时)可能会看到类似:

Claude's workspace requires the Virtual Machine Platform on Windows. Please enable it.

这个提示是说系统缺少 Windows 的"虚拟机平台"可选功能,而这正是 WSL2 运行的基础。启用方式是用管理员身份打开 PowerShell,执行:

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

然后再启用 WSL 功能:

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

两条都执行成功后重启电脑。重启之后装 WSL 内核:

wsl --install

装完再跑 Claude Code,这个提示就应该消失了。如果你确定不用 WSL2,也想不起来为什么要弹这个,那多半是某个依赖工具(比如 Docker Desktop)要求开启它,还是按上面步骤启用了比较省心。

5.4 deprecated 警告到底要不要管

npm 安装一堆依赖时,有个警告出现频率极高:

npm warn deprecated node-domexception@1.0.0: use your platform's native DOMException instead

很多新手看到warn deprecated就紧张,其实没必要。node-domexception这个包是很多底层依赖的间接依赖,早期 Node.js 没有原生DOMException,需要这个包来补齐;现在的 Node.js 版本已经原生支持了,所以 npm 提示"这个包你可以不用了"。它不影响 Claude Code 的正常安装和运行,不用特意处理。整个 node_modules 依赖树里存在冗余、过期的包是非常常见的,只要不是error级别的输出,就继续往下走。

真想让安装日志干净点,可以等依赖维护方更新,这不是你本地能改的。

5.5 登录阶段的坑

登录失败或claude启动后一直卡在授权页面,有几个常见原因:

  • 浏览器没自动弹出:CLI 会打印一个链接,手动复制到浏览器里访问即可。
  • 账户没有可用订阅:Claude Code 需要 Pro/Max 订阅或 API 额度,免费账号直接进不去。如果提示unfortunately, claude is not available to new users right now,大概率是账号所处区域的可用性问题,或新账号配额受限,这种情况只能等待或者联系官方支持,跟本地配置无关。
  • 网络无法访问 Anthropic 服务:确认你的网络环境能正常访问 Anthropic 官方站点,如果不行,你需要处理的是基础网络连通性,而不是丢给 Claude Code 背锅。

排障时可以用一个很简单的办法确认登录凭证状态:

claude auth status

如果显示未登录,重新执行claude走一遍登录流程;如果已登录但仍报错,试试/logout后再登录,相当于把会话重置一次。

6. 常见问题速查表

最后把高频问题收敛成一张速查表,收藏起来比翻文档快多了。

问题现象直接原因解决办法
claude: command not foundnpm 全局 bin 不在 PATH,或 Node.js 未安装确认 Node.js 已装,将 npm 全局 bin 加入 PATH,重开终端
npm.ps1 禁止运行脚本PowerShell 执行策略限制Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
无法将 npm 项识别为 cmdletNode.js 没装或 PATH 没配重装 Node.js 并勾选 "Add to PATH",或手动配置环境变量
安装卡住、速度极慢npm 走官方源网络不稳定npm config set registry https://registry.npmmirror.com
node-domexception@1.0.0deprecated 警告依赖树中的旧包无需处理,不影响运行
workspace requires the Virtual Machine PlatformWindows 未启用虚拟机平台按 5.3 节启用 VirtualMachinePlatform 并重启
登录后claude仍提示无权限订阅层级不够或区域限制检查账号订阅状态,联系官方支持
claude --version版本不更新全局包未升级成功npm list -g @anthropic-ai/claude-code查看实际版本后重新安装
升级后配置丢失CLI 版本间配置格式变化备份~/.claude/settings.json,更新后重新调整配置

写在最后

把这一整套流程跑下来,我个人最大的感受是:Claude Code CLI 的安装本身不难,难的是理解它背后的运行机制——PATH 管着命令能不能被找到,权限模型管着 agent 敢不敢动手,Windows 的几个系统功能则管着底层环境通不通。我建议你第一次用的时候,老老实实开默认模式,感受一下它每一步的确认请求分别对应什么操作;跑顺手了,再针对性放行那些高频安全命令。这比一上来就bypassPermissions靠谱得多。

另外有个小技巧分享给你:如果你发现某个操作频繁被确认,与其手动确认一百次,不如把它整理进 settings.json 的 allow 列表里。整理完之后,你用着爽,项目团队其他人也能照着你这份配置走,一举两得。等把权限这块玩明白了,Claude Code 用起来的体验,跟默认状态下完全是两个世界。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询