Claude Code 部署流程在网上能搜到一堆,但真正实操起来,坑基本都在细节里。我前后在 Windows、WSL 和云服务器上各部署过一遍,最深的感受是:这个工具本身不重,重的是你对运行环境和授权机制的理解。如果你也想在自己的电脑或者服务器上把它跑起来,这篇文章应该能帮你少走不少弯路。接下来的内容全部基于我实际敲过的命令、踩过的报错和最后稳定运行的配置,你可以直接照着抄。
1. Claude Code 是什么,为什么值得部署
1.1 一个跑在终端里的 AI 编程助手
Claude Code 是 Anthropic 官方推出的命令行 AI 编程工具,安装后直接在终端里启动一个交互式会话,它能读取你当前项目目录里的文件、理解代码结构、修改代码、执行命令,还能通过自然语言完成一系列开发任务。和网页版对话不一样,Claude Code 知道你正在操作的项目上下文,能够直接在本地文件系统上动手,所以非常适合做代码重构、单元测试、批量替换、日志排查这类需要“亲自动手”的工作。
它的核心能力可以概括成三块:一是上下文感知,它会把当前目录里的关键文件、Git 状态、目录结构等信息自动带入会话;二是工具调用,它可以自己决定什么时候执行 shell 命令、什么时候修改文件,不用你手动复制粘贴;三是多文件协作,面对一个跨文件的改动,它能一次性处理完整链路。正因为这些特性,Claude Code 在开发者圈子里越来越火,很多人已经把它接入了日常开发流程,甚至部署在云服务器上做无人值守的自动化任务。
你可能会问,这和 GitHub Copilot、Codex 这类工具有什么区别?简单说,Copilot 更多是补全和建议,Claude Code 更接近一个“能自己干活”的 Agent。它在设计上就是围绕终端和项目目录展开的,所以对喜欢命令行工作流的工程师来说,上手之后会觉得非常顺手。这篇文章不打算做功能对比,重点只放在一件事:怎么把 Claude Code 从零开始部署好,并且让它稳定地跑起来。
1.2 部署前先想清楚的三件事
部署本身不难,真正容易出问题的往往是部署前的三个决定。第一是操作系统,Claude Code 官方优先支持 macOS 和 Linux,在 Windows 上虽然也能装,但路径分隔符、权限模型、shell 兼容性都会带来一些隐蔽的问题,所以 Windows 用户我建议直接用 WSL,后面会详细讲。第二是网络连通性,这个工具的安装和登录都依赖访问 Claude 官方服务,部署前必须先确认你的机器能正常访问官方域名,否则安装完也会卡在授权和请求环节。第三是授权方式,Claude Code 支持 Claude 账号登录,也支持通过第三方 API Key 接入,你需要提前决定用哪种,这决定了后面的配置逻辑。
这三个问题没想清楚就动手,大概率会像我第一次部署一样:装完发现登录不了,登录完发现请求超时,最后查了一圈,发现是最开始的环境没准备好。所以后面每一章,我都会先讲环境,再讲操作,尽量让你一次走通。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 部署前的环境准备
2.1 Node.js 版本检查与升级
Claude Code 是 Node.js 工具,所以第一个前置条件是 Node.js,版本要求 18 以上。这个版本要求不是随口说的,Claude Code 的代码里用到了很多现代 JavaScript 特性,如果 Node 版本太低,启动时可能会直接报 Cannot find module 'node:path' 之类的错误,看起来像是模块缺失,实际是运行时不支持。所以部署第一步,先检查版本。
bash复制node -v
npm -v
如果 node -v 显示的是 16 或者更低,千万别跳过,直接用 nvm 升级到 LTS 版本。nvm 是最省心的 Node 版本管理工具,安装方式就一行命令,装完以后:
bash复制nvm install 20
nvm use 20
node -v
我自己的习惯是长期用 Node 20 LTS,目前和 Claude Code 的兼容性很稳定。如果你用的是 apt 或 yum 装的旧 Node,建议先删掉再用 nvm 装,避免两个版本互相干扰。还有一点要注意:npm 会和 Node 一起安装,版本一般不用单独管,但如果 npm -v 报错,优先检查 Node 安装是否完整。
2.2 Windows 用户优先选择 WSL
我知道很多人日常主力机就是 Windows,想着直接打开 CMD 或者 PowerShell 装一下不就行了?我在 Windows 原生环境试过,能装,但使用体验确实别扭。Claude Code 在终端里需要执行各种 shell 命令,Windows 原生 PowerShell 的语法、路径格式、权限机制都和 Linux 不一样,很容易出现“工具本身没问题,但命令执行结果不对”的情况。
所以我的建议是:Windows 用户先装 WSL,里面跑一个 Ubuntu 20.04 或更新版本,然后把 Claude Code 装在 WSL 里。WSL 的基本安装流程很简单,管理员权限打开 PowerShell 执行:
bash复制wsl --install
装完以后重启,按提示创建 Linux 用户,然后进入 Ubuntu 终端。后面所有命令都在 WSL 里执行。这样做的好处非常多:文件路径和云服务器一致,shell 命令和线上环境一致,授权文件管理方式也统一了。等你把 Claude Code 部署到云服务器时,几乎不需要额外学习成本。
如果你不想用 WSL,非要原生跑,也不是不行,但一定要提前做好心理准备:乱码问题、权限弹窗问题、路径解析问题都会找上来。后面我会在常见问题里列几个典型的,不过说实话,与其一个个排查,不如直接上 WSL。
2.3 服务器部署的资源要求
很多人担心 Claude Code 很吃配置,其实恰恰相反。它只是一个命令行工具,本身占用的内存和 CPU 都很低。我在一台 2C4G 的入门云服务器上跑过,同时开着 Claude Code 和一个 Node 服务,内存还剩不少。所以如果你打算部署在云服务器上,不需要为了它专门买高配机器,入门配置完全够用。
比较需要注意的是磁盘和网络,Claude Code 会缓存一些模型上下文和会话信息,磁盘占用不大,但网络请求依赖官方服务,延迟和稳定性会影响体验。如果是在云服务器上做自动化任务,建议选网络质量比较好的区域,并配合后面的 tmux 或 systemd 方案让它常驻运行。
3. 安装 Claude Code 的完整流程
3.1 通过 npm 全局安装和校验
环境准备好以后,安装本身非常简单。最常用的方式是通过 npm 全局安装:
bash复制npm install -g @anthropic-ai/claude-code
如果你更习惯官方脚本,也可以用:
bash复制curl -fsSL https://claude.ai/install.sh | bash
两种方式选一种即可。我用 npm 方式比较多,因为后续升级、卸载都方便。安装完成后,先验证一下:
bash复制claude --version
如果输出一个版本号,说明安装成功了。但如果你在执行 claude 时提示“命令不存在”,大概率是 npm 全局安装路径没有加入 PATH。先用 npm prefix -g 查看全局安装目录,然后把对应的 bin 目录加到 PATH 里。临时验证可以用 npx claude,它会在不依赖全局 PATH 的情况下启动工具,适合应急。
这里还要提醒一句:如果你用的是 macOS 或 Linux,npm 全局安装可能需要权限,常见做法是加 sudo。但我不太建议直接用 sudo 装全局包,更推荐通过 nvm 管理 Node,这样 npm 全局目录就在当前用户目录下,不需要特殊权限,也不会污染系统环境。
3.2 首次运行与授权登录
安装完成后,直接运行:
bash复制claude
第一次启动会进入授权流程。Claude Code 支持两种授权方式:如果是在本地电脑上,通常会自动打开浏览器跳到 Claude 登录页面,登录后授权即可;如果是在没有浏览器的云服务器上,就会显示一个设备码流程,终端里会输出一个 URL 和一段 Code,你需要在另一台有浏览器的机器上打开 URL,登录 Claude 账号并输入这段 Code,授权就完成了。
我强烈建议云服务器部署时使用设备码方式,它会显示在终端里,等你输入确认。如果你之前在本地电脑已经登录过 Claude Code,还可以把本机的配置目录直接同步到服务器,主要是 ~/.claude 目录和对应的凭证文件,然后服务器上就不用重新授权了。但同步的时候要注意文件权限,凭证文件不要暴露给其他用户,也不要在共享目录里传。
如果之后 OAuth token 失效了,终端里可能会提示授权过期或请求 401。这时候交互界面里输入:
bash复制/logout
/login
重新走一遍授权流程就行了,不影响项目文件。这是我在实际部署中遇到的最常见的授权问题,解决办法就是重新登录,没有被其他花哨问题卡住过。
3.3 基础命令与交互方式
授权通过后,你就进入 Claude Code 的交互界面了。可以像聊天一样直接输入自然语言,它会在当前项目目录下读取文件、执行命令。常用的内置命令有:
/status:查看当前会话的状态,包括模型、上下文占用等。/doctor:诊断环境配置问题,比如 Node 版本、网络连通性、授权状态。/model:切换或查看当前使用的模型。/clear:清空当前会话上下文。/logout和/login:重新授权。
我在部署后第一件事就是跑一遍 /doctor,它会自动检查依赖项和配置,如果有问题会直接提示。很多时候你觉得自己配置错了,其实跑一下 /doctor 就知道是环境问题还是授权问题,比盲猜快得多。
4. 让 Claude Code 用上 DeepSeek 等第三方模型
4.1 为什么需要配置 ANTHROPIC_BASE_URL
Claude Code 默认链接的是 Anthropic 官方服务,但很多场景下我们想接第三方模型。最近特别多人问 Claude Code 接入 DeepSeek,就是因为 DeepSeek 提供了兼容 Anthropic API 格式的端点,可以直接替换掉默认地址,让 Claude Code 使用 DeepSeek 的模型。
这里要澄清一个容易混淆的点:不是所有“兼容 OpenAI 格式”的服务都能直接接 Claude Code。Claude Code 使用的是 Anthropic 的消息格式,所以你必须找那些明确提供 Anthropic 兼容端点的服务。DeepSeek 提供的就是这种端点,所以能接;如果你用其他中转服务,先确认它是否支持 Anthropic 格式,再配置环境变量,避免浪费半天时间发现请求格式对不上。
核心环境变量就三个:
ANTHROPIC_BASE_URL:API 请求的地址。ANTHROPIC_AUTH_TOKEN:用于身份验证的 API Key。ANTHROPIC_MODEL:指定使用哪个模型。
Claude Code 在启动时会读取这三个环境变量,只要有它们,默认的官方地址就会被覆盖。
4.2 DeepSeek 接入实操
以 DeepSeek 为例,配置过程非常简单。打开终端,执行:
bash复制export ANTHROPIC_BASE_URL=https://api.deepseek.com/anthropic
export ANTHROPIC_AUTH_TOKEN=sk-你的DeepSeek API Key
export ANTHROPIC_MODEL=deepseek-chat
然后运行 claude,就可以开始使用了。这里有个细节:DeepSeek 的 Anthropic 兼容端点要求 ANTHROPIC_AUTH_TOKEN 而不是 ANTHROPIC_API_KEY,因为 Claude Code 对这两个变量的优先级处理不一样,我实际测试下来用 AUTH_TOKEN 更稳。你如果在 DeepSeek 控制台申请了 API Key,直接复制到这一步就行。
还有一个常见问题:明明配置了环境变量,但 Claude Code 报模型不存在。这种情况先检查 ANTHROPIC_MODEL 是否写对了,比如 DeepSeek 的对话模型一般叫 deepseek-chat,推理模型叫 deepseek-reasoner,写错任何一个都无法调用。你也可以在交互界面里用 /model 查看当前生效的模型,确认配置没被覆盖。
4.3 环境变量持久化
上面用 export 设置的变量只在当前终端会话有效,一旦关闭终端就丢了。如果你希望每次打开终端都能直接使用,建议把它们写进 shell 配置文件。比如使用 bash 的话:
bash复制echo 'export ANTHROPIC_BASE_URL=https://api.deepseek.com/anthropic' >> ~/.bashrc
echo 'export ANTHROPIC_AUTH_TOKEN=sk-你的API Key' >> ~/.bashrc
echo 'export ANTHROPIC_MODEL=deepseek-chat' >> ~/.bashrc
source ~/.bashrc
如果你用的是 zsh,就把 ~/.bashrc 换成 ~/.zshrc。我建议把 API Key 写在一个单独的文件里再 source,避免把所有密钥都堆在同一个配置文件里,万一需要分享配置时更容易控制暴露面。
另外要特别注意:环境变量的优先级是“当前 shell 的 export > 配置文件 > 默认值”。如果你在某次会话里临时设置了错误的 ANTHROPIC_BASE_URL,即使配置文件是对的,也会被临时变量覆盖,导致请求一直失败。遇到这种情况,先执行 env | grep ANTHROPIC 看看当前环境里到底有哪些值,再逐个排查。
5. 在云服务器上长期运行 Claude Code
5.1 用 tmux 保持会话不中断
把 Claude Code 部署到云服务器上之后,最大的问题不是安装,而是“会话保持”。如果你直接通过 SSH 登录,运行 claude,然后关掉终端,会话大概率会中断。你肯定不想每次重新连接都要重新跑一遍任务,所以需要用工具保持会话常驻。
我的首选是 tmux。它是一个终端复用器,可以让我们在一个 SSH 会话里创建多个独立窗口,即使断开了 SSH,窗口里的进程依然在后台运行。使用流程:
bash复制tmux new -s claude
这会新建一个名为 claude 的会话,然后在这个会话里运行 claude。等你需要断开的时候,按 Ctrl+B 再按 D 分离会话,进程不会停。下次重新连接 SSH 后:
bash复制tmux attach -t claude
就能重新看到 Claude Code 的界面。tmux 的好处是操作简单、灵活,随时可以查看正在跑的任务,适合长期挂机。如果会话多了,还可以用 tmux ls 查看所有会话列表。
5.2 用 systemd 做成常驻服务
如果你希望 Claude Code 像系统服务一样开机自启、崩溃后自动拉起,那 tmux 还不够,需要用 systemd。这种方式特别适合无人值守的自动化任务,比如定时跑测试、批量处理文件、接收外部命令等。
创建一个 systemd 服务文件,比如 /etc/systemd/system/claude-code.service:
ini复制[Unit]
Description=Claude Code Service
After=network.target
[Service]
User=你的用户名
WorkingDirectory=/path/to/your/project
Environment="ANTHROPIC_BASE_URL=https://api.deepseek.com/anthropic"
Environment="ANTHROPIC_AUTH_TOKEN=sk-你的API Key"
Environment="ANTHROPIC_MODEL=deepseek-chat"
ExecStart=/usr/bin/claude --dangerously-skip-permissions
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
然后执行:
bash复制sudo systemctl daemon-reload
sudo systemctl enable claude-code
sudo systemctl start claude-code
这里有几点要注意:ExecStart 里最好使用 which claude 查到的绝对路径,避免 systemd 找不到命令;User 不要用 root 跑,除非你确认项目目录和权限安全;WorkingDirectory 要指向你的实际项目目录,Claude Code 会以这个目录为上下文。如果后续改了服务文件,记得重新执行 daemon-reload 再重启服务。
5.3 自动化执行与跳过确认
Claude Code 支持非交互模式,可以直接通过命令行传入任务,比如:
bash复制claude -p "检查项目里所有 TODO 注释并生成报告" --dangerously-skip-permissions
-p 表示打印(print)模式,执行完就直接输出结果退出,不会进入交互界面。--dangerously-skip-permissions 会跳过所有权限确认,让 Claude Code 自动执行文件修改和命令调用。很多人问“Claude Code 怎么不用一直点确认”,答案就是这个参数。
但我想认真提醒一句:这个参数名字里带着 “dangerously” 不是开玩笑的。它意味着 Claude Code 可以不经确认直接执行任何命令,如果任务描述不够精确,或者项目目录里有不该动的文件,后果可能很严重。我自己只在隔离的测试目录或明确知道任务安全的场景下才用它,在重要项目上宁可多花几分钟手动确认,也不冒这个险。如果你要配合 CI/CD,尽量把工作目录限定在一个专门给自动化用的目录里,同时提前做好备份。
6. 常见问题排查与安全注意事项
6.1 高频问题速查表
部署过程中我遇到过不少问题,也看群里朋友踩过类似的坑。整理成一张速查表,方便你遇到问题时直接对照。
| 问题现象 | 可能原因 | 解决办法 |
|---|---|---|
| 终端显示乱码 | 语言环境未设置 | 执行 export LC_ALL=C.UTF-8,写入 shell 配置 |
启动报 Cannot find module 'node:path' |
Node 版本过低 | node -v 检查,用 nvm 升级到 18+ |
| OAuth token 失效 | 授权过期 | 在交互界面执行 /logout 再 /login |
claude 命令不存在 |
npm 全局路径未加入 PATH | 使用 npx claude 临时运行,或配置全局 bin 目录 |
| 请求一直超时 | 网络无法访问官方服务 | 检查网络连通性,确认域名可达后重试 |
| 配置了第三方模型但报模型不存在 | ANTHROPIC_MODEL 写错 |
用 /model 查看当前模型,核对平台模型名称 |
| 环境变量总是失效 | 未写入持久化配置 | 写入 ~/.bashrc 或 ~/.zshrc 后 source |
乱码问题如果你用的是 WSL 或云服务器,最容易遇到,通常就是 locale 不对。一次性解决就执行 export LC_ALL=C.UTF-8,想永久解决就写进 ~/.bashrc。Node 版本问题前面说过,用 nvm 管理是最干净的。授权失效没什么技术含量,重登就行。
如果你是在 Windows 原生环境里跑,乱码概率会更高,而且有时命令路径带空格会解析出错。这也是为什么我一直强调 WSL 优先,因为这些问题在 WSL 里基本不会出现。
6.2 安全注意事项与凭证管理
Claude Code 在本地和服务器上的权限都比较大,它可以读取项目文件、执行命令、修改代码,所以部署时一定要把安全边界想清楚。
第一,凭证文件不要暴露。首次登录后生成的凭证默认保存在用户目录下,比如 ~/.claude 目录和对应的 credentials 文件。这个文件就是你的身份,谁拿到它,谁就能以你的身份调用服务。千万不要把它放在 web 目录、共享网盘或者公开仓库里;同步到服务器时,建议用 chmod 600 限制文件权限。
第二,API Key 单独管理。不要把 Key 硬编码在项目代码里,也不要在命令行历史里裸奔。建议通过环境变量或配置文件引用,并且定期更换。如果你把 Claude Code 部署在多人使用的服务器上,给不同任务用不同的 Key,做到权限隔离。
第三,注意自动执行的风险。使用 --dangerously-skip-permissions 时,Claude Code 的命令执行不受控,所以最好不要在存放重要数据的目录下直接跑无人值守任务。可以考虑用沙箱容器、独立用户、或只读文件系统来限制它的活动范围。
第四,防火墙和访问控制。如果 Claude Code 作为常驻服务运行在云服务器上,确保只有你自己能访问相关端口和会话,不要把它暴露到公网。云服务商的安全组规则也要检查,最小化开放端口。
按照这套流程部署下来,Claude Code 的安装、授权、第三方模型接入、后台常驻和问题排查就都齐了。我在实际部署里踩过最深的坑是两个:一个是在 Windows 原生环境里乱码加权限问题,换到 WSL 直接消失;另一个是接第三方模型时,没有确认端点格式,白白折腾了大半天。现在我把这两条经验写在前面,希望你不用再走一遍。最后再分享一个小技巧,部署完成后先把 /doctor 跑一遍,它能帮你把环境问题在正式使用前暴露出来,比我当年一个坑一个坑试要高效得多。
