Claude Code 最近在开发者圈子里讨论度很高,很多人把它当成一个普通软件来找安装包,其实它和你平时装的那些图形化工具完全不同。我第一次上手时也绕了点弯路,搞清楚它到底是个什么东西之后,安装反而变得非常简单。
这篇文章我不打算做成说明书式的“下一步点哪里”,而是用实际操作的思路,把 Claude Code 的安装、验证、VS Code 接入、Ubuntu/macOS 细节、账号登录以及接入 DeepSeek、Qwen、GLM 这类第三方模型的完整过程都过一遍。不管你是刚听说想试试的新手,还是已经在终端里折腾过的老手,这里面应该都有能直接用的东西。
1. 安装之前,先弄懂 Claude Code 的定位
很多人一上来就搜“Claude Code 下载”,结果找半天找不到一个.exe或.dmg文件。这是因为 Claude Code 根本就不是传统意义上的独立桌面应用。
1.1 它是一个 CLI 编程助手,不是独立 App
Claude Code 是 Anthropic 推出的命令行编程助手,核心使用场景在终端里。它不是一个带窗口的聊天软件,而是让你在项目目录下敲claude命令,然后直接在终端里和 AI 对话、让它读代码、改文件、执行命令、跑测试的一套工具。
这意味着安装它的方式也和传统软件不同:不是去官网下载安装包,而是通过 Node.js 的 npm 包管理器来安装。把 Claude Code 理解成“一个用 Node.js 写成的命令行工具”会更容易上手。
这套设计的好处是:它天然适配开发者已有的工作流。你不需要在编辑器和一个网页之间来回切换,直接在项目根目录启动它,它就能自动读取项目结构、Git 状态、代码内容。对于习惯终端的开发者来说,这个体验比开网页版顺手得多。
1.2 安装前必须确认的两样东西:Node.js 和终端
安装 Claude Code 的唯一前置条件是 Node.js,版本要求通常是 18 以上。倒不是说必须装最新版,但太老的 Node.js 会因为 API 不兼容导致 npm 安装失败或者运行时直接报错。
确认 Node.js 版本的方式很简单:
node -v npm -v如果提示command not found,说明你的机器上还没装 Node.js。装 Node.js 的话,我建议优先考虑官方 LTS 版本,毕竟 Claude Code 这类工具对运行时稳定性有一定要求。macOS 用户也可以直接用 Homebrew:
brew install nodeUbuntu 用户常见的做法是通过 apt 装,但 apt 仓库里的 Node.js 版本往往比较旧,我更推荐用 NodeSource 维护的仓库或者安装 nvm 管理多版本。用 nvm 的好处是之后想切换 Node 版本非常灵活,不会污染系统环境。
1.3 不同平台的选择:macOS、Ubuntu、Windows 的差异
Claude Code 官方对 macOS 和 Linux 支持得最好,Windows 用户通常需要借助 WSL 来运行,这是因为它依赖 Unix 风格的终端环境和 Shell 命令。
如果是在 Windows 上,我建议优先把 WSL 环境搭好,然后按照 Ubuntu 的方式在 WSL 里安装。直接在原生 Windows 上用 CMD 或 PowerShell 跑 Claude Code 经常会遇到各种奇怪问题,排查起来非常浪费时间。
macOS 用户相对省心,只要装好 Node.js,剩下的步骤和 Linux 几乎一样。Ubuntu 用户需要注意的点会多一些,比如 Perl 的 locale 设置、PATH 路径、用户目录权限等,这些我在第 4 部分会单独讲。
2. 最快的安装路径:一条 npm 命令
Claude Code 官方推荐的安装方式就是通过 npm 全局安装。整个过程不需要下载压缩包、不需要配置环境变量,最多两分钟就能跑起来。
2.1 全局安装 @anthropic-ai/claude-code 的完整流程
在终端里执行下面这条命令:
npm install -g @anthropic-ai/claude-code-g表示全局安装,装好后claude命令就能在任意目录下访问。安装过程中 npm 会从仓库拉取并写入可执行文件,通常十几秒到一分钟不等,具体取决于网络状况。
装完以后不要急着关终端,先验证一下:
claude --version如果能看到类似0.x.x的版本号输出,说明核心安装已经成功。
第一次运行:
claude这时候 Claude Code 会引导你完成登录流程,通常是在终端里显示一个链接,让你打开浏览器授权,然后把授权码粘贴回终端。具体登录相关的内容,我在第 5 部分详细说。
2.2 验证安装是否成功:claude --version 与 claude doctor
运行claude --version只是确认命令能执行,并不能保证所有功能都正常。我建议再跑一下:
claude doctor这个命令会检查 Node.js 版本、环境变量、配置目录、登录状态等关键项,并给出诊断结果。如果里面有红色或警告信息,说明某些环节有问题,需要提前处理,否则后面使用时会踩坑。
还有一个小技巧:Claude Code 在首次启动时会初始化~/.claude配置目录。这个目录会存放你的配置文件和会话记录。如果发现claude命令能启动但无法持久化配置,可以检查这个目录是否被创建、权限是否正确。
2.3 在线升级:claude update 和 npm 更新
Claude Code 的迭代速度很快,官方经常会加入新功能或修复 Bug。命令行工具内部自带升级命令:
claude update这个命令会检查最新版本并自动完成更新。如果claude update因为权限问题失败,也可以用 npm 手动处理:
npm install -g @anthropic-ai/claude-code@latest需要注意:如果你的 Node.js 版本比较老,升级到最新版 Claude Code 后可能会要求你同时升级 Node.js。我在实际使用中就碰到过一次,旧版 Node 还能跑,升级后直接提示版本过低,只能把 Node 从 16 升到 18 以上。
2.4 安装太慢怎么办:npm 镜像源调整
有很多人在安装时卡在 npm 下载这一步,尤其是网络状况不太稳定的情况下,经常是进度条半天不动。这时候最好的办法不是反复重试,而是换一个更快的 npm 镜像源。
临时指定镜像源安装:
npm install -g @anthropic-ai/claude-code --registry=https://registry.npmmirror.com如果想长期全局生效,也可以把 registry 写入 npm 配置:
npm config set registry https://registry.npmmirror.com不过我个人不太建议你把全局 registry 永久改掉,因为之后发布或安装某些只在官方源里存在的包时会困惑。临时加--registry参数是最干净的做法。
3. VS Code 里接入 Claude Code
很多人的日常工作离不开 VS Code,Claude Code 也提供了对应的扩展插件。比起在终端里单独开一个窗口,直接在 VS Code 里用 Claude Code 会更加顺手。
3.1 官方扩展插件的基本逻辑
在 VS Code 的扩展市场搜索 “Claude Code”,找到 Anthropic 官方发布的扩展并安装。这个插件的逻辑不是把 Claude Code 重新实现一遍,而是把你已经装好的 CLI 工具无缝集成到编辑器里。
所以流程是:先通过 npm 把 Claude Code 装好(第 2 部分),然后再装 VS Code 扩展。如果先装扩展但系统里没有 Claude Code CLI,扩展会提示你先完成 CLI 安装。
安装完扩展后,VS Code 会识别claude命令。如果你机器上有多个 Node 版本,或者在非标准路径安装了 Claude Code,扩展可能找不到命令。这时候可以检查 VS Code 的终端环境和 PATH 设置,确保claude在 PATH 中可见。
3.2 从命令面板启动 Claude Code
安装好扩展后,按Ctrl+Shift+P(macOS 是Cmd+Shift+P)打开命令面板,输入 “Claude Code” 就能看到相关命令。通常会有打开 Claude Code 面板、安装/更新 CLI、查看文档等选项。
选择启动命令后,VS Code 会打开一个集成式的 Claude Code 界面,你可以在里面直接描述需求,让它读取左侧打开的项目文件并生成修改建议。这个体验比单纯在终端里跑命令更直观,因为代码高亮、diff 预览都直接复用了 VS Code 的界面。
实际上我更推荐另一种方式:不依赖扩展面板,直接在 VS Code 的集成终端里输入claude启动。集成终端的优势是它能自动继承当前工作区的环境变量和 Docker 配置,减少很多上下文丢失问题。
3.3 终端面板里使用 Claude Code 的推荐配置
如果你打算长期在 VS Code 集成终端里用 Claude Code,有几个配置值得提前设置。
一个是在settings.json里调整终端默认 Shell,确保使用 bash 或者 zsh 而不是 Windows CMD。另一个是打开 VS Code 的 “终端自动激活工作区环境” 相关配置,这样每次启动终端都会加载项目所需的环境变量。
还有一个实际经验:如果项目很大,Claude Code 在读取文件时可能会消耗比较多内存,建议在 VS Code 设置里把终端渲染器的流畅度调高,或者直接专注终端面板,关掉右侧的资源监视器。这样操作起来不会卡顿。
4. Ubuntu 与 macOS 的安装细节
同一个 npm 命令,在不同系统上遇到的问题完全不一样。这里把 Ubuntu 和 macOS 上常见的坑集中说一下。
4.1 Ubuntu 常见权限与 Shell 配置
Ubuntu 上用 npm 全局安装时最容易遇到的就是权限问题。如果你是用 sudo 装的 Node.js,那么 npm install -g 的时候大概率会遇到 EACCES 错误,提示没有权限写入/usr/lib/node_modules。
有两个解决思路。一个是用 nvm 安装 Node.js,这样全局包会装到用户目录下,完全绕开系统权限问题。另一个是修改 npm 的全局目录到用户目录:
mkdir -p ~/.npm-global npm config set prefix ~/.npm-global然后把这个路径加到 Shell 配置里。如果是 bash,编辑~/.bashrc:
export PATH=~/.npm-global/bin:$PATH改完记得source ~/.bashrc。这样之后执行claude就不需要 sudo 了。
另外 Ubuntu 上还经常出现一个关于 locale 的警告,因为 Claude Code 依赖 Perl 相关的组件,如果系统 locale 没配置好,运行时会提示perl: warning: Setting locale failed。这个不影响核心功能,但很烦人。处理办法是确保系统装了完整的语言包,或者正常配置LANG环境变量。
4.2 macOS 安装时的系统弹窗与路径问题
macOS 上如果是通过 Homebrew 安装 Node.js,npm 全局包的路径通常是/opt/homebrew/bin,一般不需要额外配置 PATH。但有一个细节:macOS 的 Gatekeeper 会在首次打开某个命令行工具时弹出安全提示,如果终端提示无法验证开发者,需要到“系统设置 - 隐私与安全性”中手动允许。
如果使用的是 zsh(macOS 默认),全局命令找不到时可以检查一下~/.zshrc,确保 npm 的 bin 目录在 PATH 中。Homebrew 装的 Node 一般没问题,但如果你用官方 pkg 安装包装的 Node,有时会把路径指向/usr/local/bin,需要确认一下。
还有一个容易被忽略的点:macOS 上的终端如果有 iTerm 和系统 Terminal 的差异,环境变量可能不一致。你在一台终端里登录过 Claude Code,换一个终端启动时却发现没有登录态,大概率是环境变量或配置目录没有同步。遇到这种问题直接用同一个终端工具,或者检查~/.claude目录是否存在。
4.3 多用户环境的全局安装思路
如果一台 Ubuntu 或 macOS 机器上有多个用户都要用 Claude Code,每个人各自全局安装一份是最省事的方案,互不干扰。官方虽然支持系统级安装,但涉及权限和管理复杂度,我实际测试过后不太推荐。
比较合理的方案是:给每个开发用户单独配置 nvm + Node.js,然后各自在用户目录下安装 Claude Code。同一个系统的多用户登录也不会出现配置互踩的问题。当然,如果有 CI/CD 环境需要自动化安装,那么可以在构建脚本里用 npm ci 或者 docker 镜像中预装,这部分已经脱离日常安装范畴了,遇到具体需求时再单独方案化。
5. 登录账号:注册和不注册到底差在哪
安装完 Claude Code 之后,有一个绕不开的问题:要不要登录?这背后的区别其实比很多人想象的更大。
5.1 登录后能做的事
登录 Anthropic 账号后,Claude Code 会使用你的 Claude 订阅或 API 额度来驱动模型。也就是说,你直接和 Claude Code 对话时,背后跑的是 Claude 系列模型。
登录方式也不复杂。首次运行claude时会输出一个授权链接,浏览器打开后完成登录并授权,系统会把密钥写回本机。之后再次运行就不需要重复登录了。
登录的好处是开箱即用,不需要自己配置任何模型端点或密钥。对于想快速体验的人来说,这是最方便的路径。如果你已经订阅了 Claude 的相关服务,或者有 API Key,那么登录后直接干活就行。
5.2 不登录模式:适合第三方模型或纯 Harness 场景
如果你没有 Anthropic 账号,或者因为成本原因不想用官方模型,Claude Code 依然可以启动,只是默认情况下无法直接调用 Claude 模型。
但这不代表它不能用。Claude Code 的真正架构是:一个“Harness”(外壳框架)加上模型后端。模型后端是可以替换的。通过设置环境变量,把请求指向任何兼容 Anthropic 接口格式的服务,就能让 Claude Code 用别的模型跑起来。
比较常见的做法是设置两个环境变量:
export ANTHROPIC_BASE_URL=https://your-endpoint.example.com export ANTHROPIC_AUTH_TOKEN=your_token_here设置好之后运行claude,它就会走你指定的端点,而不是官方 API。DeepSeek、Qwen、GLM 这类模型服务,如果提供了 Anthropic 兼容的接口,就可以这样接入。
这个模式的好处是灵活、成本可控,坏处是需要自己处理兼容性问题,部分功能(比如某些 Claude 特有的工具调用格式)在第三方模型上可能表现不一致。
5.3 账号切换与密钥管理的实践
实际使用中,我建议把不同场景的配置拆开管理。不要把所有密钥都写死在全局环境变量里,否则切换模型或者排查问题时会非常痛苦。
可以在项目目录下创建.claude/settings.json或者本地环境变量文件,不同项目用不同配置。还可以用类似 direnv 的工具,在进入特定目录时自动加载对应的环境变量。
Claude Code 自己也会在~/.claude.json或~/.claude目录中保存登录凭证和配置。如果不小心把密钥泄露到公开仓库里,第一件事是去对应平台吊销相关密钥,然后重新登录生成新凭证。这个习惯比任何配置文件技巧都重要。
6. 用 cc-switch 接入 DeepSeek、Qwen、GLM 等模型
第三方模型接入是这个工具最吸引人的地方之一。光靠设置环境变量能解决,但每次手动改来改去很麻烦,所以社区里有人做了 cc-switch 这类切换工具。
6.1 为什么能用第三方模型
这里的关键在于 Anthropic 的 API 协议已经成为一个事实上的接口标准。很多模型服务商推出了 Anthropic 兼容接口,比如 DeepSeek 官方就提供兼容模式,用户只需要把请求地址从 Anthropic 官方换成服务商提供的地址,就能在 Claude Code 中使用对应模型。
这种兼容本质上是一个“协议适配层”:Claude Code 不知道也不关心背后跑的是哪个模型,它只按照 Anthropic 接口格式发请求、收响应。只要服务商的网关能正确处理这些请求,Claude Code 就能正常工作。
6.2 ANTHROPIC_BASE_URL 与 ANTHROPIC_AUTH_TOKEN 的配置方法
接第三方模型,核心就是上面提到的那两个环境变量。
ANTHROPIC_BASE_URL是接口地址,通常填服务商提供的基础 URL,注意不要填错路径前缀,有些服务需要你填完整路径,有些只需要填域名级别,具体看服务商文档。
ANTHROPIC_AUTH_TOKEN是鉴权凭证,一般是 API Key。
我建议先用命令行验证配置是否生效:
env ANTHROPIC_BASE_URL=https://your-endpoint ANTHROPIC_AUTH_TOKEN=your_token claude如果启动日志里显示请求发往的地址是你指定的服务商地址,说明配置生效了。如果还是请求 Anthropic 官方地址,检查环境变量是否真的传进了当前终端进程。
6.3 cc-switch 的界面化切换流程
cc-switch 是一个社区工具,它做的事情很简单:维护多套 Anthropic 兼容 API 配置,一键切换。你不用每次手动改环境变量,省去很多重复劳动。
cc-switch 的原理是修改 Claude Code 的配置或者生成一套启动脚本,在启动前把当前选中的端点地址和 Token 注入进去。不同版本的 cc-switch 可能有不同的 UI,有的是命令行菜单,有的是网页面板,但核心流程差不多:
- 在 cc-switch 中添加一个配置,填好名称、Base URL、Token。
- 需要切换时选择对应配置。
- 重新启动 Claude Code,让新的环境变量生效。
注意:切换配置前最好把当前 Claude Code 会话关闭,否则已经加载的环境变量不会自动更新。我在切换模型时遇到过几次“好像切换了但实际还是老模型”的情况,基本都是因为没有完全重启进程。
6.4 NVIDIA NIM 等兼容端点的补充说明
除了 DeepSeek、Qwen、GLM,还有些本地或私有化方案也值得关注。比如 NVIDIA NIM 提供了一些模型的 Anthropic 兼容接口,可以在自己的机器或内网环境启动一个端点,然后把ANTHROPIC_BASE_URL指过去。
这套玩法的价值在于:数据不需要出内网,模型可以私有部署,适合对数据敏感或需要在离线环境开发的团队。安装流程和服务商接口类似,只是端点是本地的。
如果你的使用场景是离线或内网环境,需要确认 npm 安装这一步已经提前完成,因为后续运行时的依赖都在本地 Node 环境里,不会再主动联网拉取。
7. 常见问题与排查实录
这里整理几个我实际遇到过的坑,以及对应的排查思路。每个都按“现象 - 原因 - 解决”的顺序记录,方便直接对照。
7.1 命令找不到 claude:PATH 问题
现象:执行npm install -g @anthropic-ai/claude-code没报错,但运行claude提示 command not found。
原因:npm 全局 bin 目录没有在 PATH 中。Ubuntu 上非 root 用户安装时非常常见,macOS 上如果用了奇怪的 Node 安装方式也可能遇到。
解决:
npm prefix -g这个命令会输出 npm 全局前缀路径。如果输出类似/usr/local,那么 claude 应该在/usr/local/bin/claude。如果是其他路径,手动把<前缀>/bin加入 PATH。加完以后重新打开终端,再运行claude --version。
7.2 权限不足 / EACCES 安装错误
现象:npm install -g 报错,提示EACCES: permission denied, mkdir '/usr/lib/node_modules/...'。
原因:当前用户对系统全局目录没有写权限。
解决:要么用 sudo(不推荐),要么按第 4.1 节的方法设置 npm 前缀到用户目录。设置完别忘把新路径加进 PATH。
7.3 npm 安装超时或网速极慢
现象:安装过程卡在下载阶段,进度条很久不动,最后报 timeout 错误。
原因:网络到 npm 官方源的连接不稳定。
解决:用--registry参数指向镜像源,具体命令在第 2.4 节。执行完之后再验证一下版本号。如果还是失败,可以清一下 npm 缓存再试:
npm cache clean --force还有一种情况是公司内网强制使用了自定义代理,这时候需要给 npm 配置对应的代理设置,但这个属于组织内部网络策略,需要找你们自己的 IT 环境来确认,不展开说了。
7.4 登录后进不去项目或者识别不了本地仓库
现象:运行claude后,它似乎没有读取当前目录的代码,回复完全答非所问,或者提示没有 Git 仓库。
原因:Claude Code 对项目上下文的依赖比较重,它会自动识别 Git 仓库和项目结构。如果当前目录根本不是项目目录,或者 Git 状态异常,它获取上下文的能力就会被限制。
解决:在项目根目录(通常是有.git目录的那层)启动claude。如果你确实需要临时使用,也可以先确认目录的 Git 状态是否正常,修复异常后再启动。有些版本还支持忽略当前目录直接读取指定目录,但这个能力往往会因为权限或配置原因不太稳定,我一般还是老老实实切换目录。
另外,如果你的项目里包含大量二进制文件或巨大的 node_modules,Claude Code 在读取上下文时可能会有点慢,这时可以考虑在.claude配置里设置忽略规则,减少不必要的文件扫描。
7.5 快速参考表
| 问题 | 可能原因 | 快速处理 |
|---|---|---|
| command not found: claude | npm 全局 bin 不在 PATH | npm prefix -g找到路径,加入 PATH |
| EACCES 安装失败 | 用户无系统目录写权限 | 改 npm prefix 到用户目录 |
| npm 下载超时 | 网络连接官方源不稳定 | 临时加--registry镜像源 |
| 版本更新失败 | Node.js 版本过旧 | 升级 Node.js 到 18+ |
| 登录状态丢失 | 多终端环境变量不一致 | 检查~/.claude目录,重新登录 |
| 第三方模型不生效 | 环境变量没正确传入进程 | 用env前缀直接启动验证 |
| 无法识别项目 | 启动目录不是项目根目录 | 进入正确目录或用 Git 确认仓库状态 |
8. 进阶配置:让 Claude Code 更贴合自己的工作流
安装只是第一步,真正让 Claude Code 变得好用的,往往是一些不起眼的小配置。
8.1 项目级与全局配置的分层管理
Claude Code 支持在多个层级设置配置。~/.claude下的配置是全局的,适合放一些跨项目通用的偏好。项目目录下的.claude/settings.json则是项目级配置,适合放这个项目特有的指令、权限策略、忽略规则。
我的习惯是:全局配置只放模型偏好、主题、常用权限白名单;项目配置放针对这个代码库的上下文提示,比如“这个项目使用 Python 3.11 + FastAPI,测试命令是 pytest”。这样一来,每次切换项目时 Claude Code 会自动加载对应的上下文,回答准确率会明显提升。
8.2 权限与安全的实操建议
Claude Code 能够直接执行终端命令,这既是强大也是风险所在。它会在执行命令前征求你的确认,但如果你开启了自动确认模式,一些有副作用的命令(比如rm -rf、git push --force)就会直接执行。
我强烈建议在涉及删除、推送、生产环境部署等危险操作时,不要把权限配置成自动放行。在配置文件中明确禁止这些命令,或者保持手动确认模式。这个习惯能帮你避免很多不可逆的损失。
8.3 常用 alias 与工作流组合
如果你把 Claude Code 作为日常开发的一部分,可以考虑在 Shell 里加一个简单别名,省得每次输全命令:
alias cc="claude"我个人的工作流是:在 VS Code 集成终端里用cc启动,让它先读一遍项目结构,然后把需求描述清楚。需要切换模型时,用 cc-switch 换配置并重启会话。这一套流程用下来,比在多个工具之间来回切换舒服很多。
最后再分享一个小技巧:Claude Code 的会话上下文是连续的,但如果你切换分支、大幅度重构代码,旧的上下文可能已经过时。这时候不要硬问,直接开一个新会话,把当前的项目状态重新交给它读一遍。看起来浪费了一点时间,实际上比在旧上下文里纠错高效得多。