我第一次在终端里敲下 claude 这个命令时,心里其实没抱太大期望——在我印象里,这不过又是一个带对话窗口的 AI 命令行玩具。结果半小时后我就发现自己错得离谱:它真的能一头扎进你的项目里翻文件、改代码、跑测试、看报错,甚至能自己连续改十几个文件然后把测试跑绿。但这份能力的前提是:你得先把环境装对,把模型接对,还得摸清它的脾气。
这篇指南不是官方文档的复述,而是我把自己从零到一跑通 Claude Code 的全过程、踩过的坑、筛选过的方案,以及最终沉淀下来的配置模板全部写出来。无论你是第一次听说 Claude Code,还是已经装上但被各种报错卡住,应该都能从这里找到对应的解法。
1. 先搞清楚 Claude Code 到底是什么
1.1 一句话定位:它是“干活”的,不是“聊天”的
Claude Code 是 Anthropic 推出的终端编程代理(agentic coding tool)。和你在网页对话框里问 Claude “帮我写个排序算法”完全不同,Claude Code 直接运行在你的开发环境里,能读取项目目录、创建和编辑文件、在终端里执行命令,并基于命令输出做下一步判断。
我常用的类比是:网页版 Claude 像一个顾问,你问什么它答什么;Claude Code 像一个手下,你交代一个目标,它自己去翻资料、动手改、跑验证,然后回来汇报结果。
它的核心价值在于“代理能力”。比如我让它“给这个项目加上 ESLint 配置并修复所有现存问题”,它不会只给你一段配置文本,而是直接在项目里创建 .eslintrc、修改 package.json、跑 npx eslint ./src --fix,然后根据输出继续处理残留问题。这已经是接近真实开发者的工作流了。
1.2 它和 Cursor、Copilot 这类工具有什么不同
很多人会问:我用 Cursor 不是一样吗?
差别在于交互范式。Cursor 是“IDE 增强”,你需要自己选中代码、打开对话框、描述问题,AI 在你限定的范围内工作。Claude Code 则是“代理式协作”,你告诉它任务和目标,它自己规划步骤、操作文件、执行命令,甚至能在一个会话里持续工作很久,中间不需要你频繁介入。
另一个区别是形态。Claude Code 有三个主流载体:
- CLI 模式:直接在终端里跑
claude命令,最轻量,适合脚本化、自动化场景。 - VSCode 插件:官方扩展,把 Claude Code 集成进编辑器的侧边栏和面板。
- 桌面版:带图形界面的独立应用,适合不习惯纯键盘操作的人,也方便统一管理配置。
如果你只需要在现有编辑器里偶尔用 AI 改改代码,Cursor 确实够用;但如果你想把测试、重构、脚本编写、甚至 Git 操作都交给 AI 去执行,Claude Code 的上限高得多。
1.3 哪些人适合用,哪些人不适合
先说适合的:
- 日常写代码的开发者,尤其是前端、后端这种文件多、命令多的场景。
- 测试和运维,让 AI 帮你批量改测试断言、写部署脚本。
- 脚本爱好者,把 Claude Code 当成一个会自动执行的终端助手。
不太适合的:
- 完全不会命令行操作的人,至少要懂
cd、ls、npm才能理解它在干什么。 - 希望 AI “输出最终成品代码、自己完全不做检查”的人,Claude Code 也会犯错,它改完必须有人验收。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 安装 Claude Code:完整过程与环境准备
2.1 前置条件:Node.js 版本和 npm 源
Claude Code 官方推荐通过 npm 安装,所以第一步是确认你的机器上有 Node.js。注意版本,建议 Node.js 18 以上,我在 Node.js 16 的老机器上装过一次,启动直接报模块错误,升级后就正常了。
国内开发者装 npm 包,我建议先检查一下镜像源。如果你之前配过淘宝镜像,装 Claude Code 时通常问题不大;如果感觉下载慢或者卡住,可以临时指定官方源:
bash复制npm install -g @anthropic-ai/claude-code
安装过程如果出现权限错误,尤其是 macOS/Linux 下报 EACCES,说明 npm 全局目录没有写权限。不建议直接加 sudo,更稳妥的做法是修复 npm 的全局目录权限。Windows 用户一般不会遇到这个问题,但可能会遇到另一个坑——见下一条。
2.2 Windows 环境里最常见的两个坑
依赖安装到这一步,Windows 用户最多的报错是:
bash复制failed to run claude code: error: could not locate the claude cli on path
这个报错的意思不是 Claude Code 没装上,而是系统 PATH 环境变量里找不到 claude 命令。npm 全局安装的包默认放在 npm 的全局 bin 目录下,如果你的终端 PATH 没有包含这个目录,就会这样。
解决办法有两个:
- 在 PowerShell 里执行
npm prefix -g,得到全局目录,然后把目录下的路径(通常含bin或本身就是全局根目录)加入系统环境变量 PATH。 - 如果不想改全局 PATH,也可以直接用完整路径调用,比如
%APPDATA%\npm\claude,但这体验太差,不推荐。
另外一个 Windows 常见问题:用 Git Bash 还是 PowerShell。我的建议是 Windows Terminal + PowerShell。Claude Code 的交互式界面在非 Windows 原生的终端模拟器里偶发渲染异常,比如光标错位、ANSI 颜色显示不正常。这些在 PowerShell 下最稳定。
如果你主要在 WSL 里开发,在 WSL 内安装是更好的选择——Claude Code 可以直接访问 Linux 文件系统上的项目,避免 Windows 和 WSL 跨文件系统访问带来的性能损耗。
2.3 快速验证安装是否成功
安装完成后,执行:
bash复制claude --version
能输出版本号就说明安装成功了。接着直接输入:
bash复制claude
会进入交互式界面。首次启动会让你登录,按提示在浏览器里完成 Claude 账号授权即可。如果跳过登录提示,也可通过环境变量配置的方式跳过,细节下一节讲。
提示:登录环节如果你用的是订阅账号(Claude Pro 等),直接走浏览器授权就行。如果你打算用 API key,或者接第三方模型,那登录这步可以完全跳过,走环境变量。
3. VSCode 集成:三种用法怎么选
在我给同事推荐 Claude Code 时,最常被问到的一句话是:“我平时就在 VSCode 里写代码,怎么把它放进去?”这条热搜词里关于 VSCode 配置的搜索量很大,说明这是大多数人迈不过去的坎。VSCode 集成其实有三条路。
3.1 最省事的方式:直接在 VSCode 的终端里跑 CLI
不用装任何插件,打开 VSCode 自带的终端,输入 claude,就能在编辑器里使用 Claude Code。
它的好处是零配置、行为最稳定,因为本质上还是 CLI 工具,只不过输入显示在编辑器窗口里。你可以边看代码边在下方终端里让 Claude Code 改文件。
这个模式唯一的短板是:你没法在编辑器里直接“划选代码片段”发给 Claude Code,它更多是面向整个项目工作区工作。
3.2 官方 VSCode 插件:功能最完整
Anthropic 提供官方 VSCode 扩展,在扩展市场里搜索 Claude Code 即可安装。装好之后侧边栏会多出一个 Claude Code 面板,可以直接对话、查看文件改动、接受拒绝修改。
插件版相对 CLI 的优势是可视化 diff。Claude Code 修改文件时,插件会在编辑器里显示改动预览,你可以放心地点“接受”或“拒绝”。这一点在实际协作中非常重要,因为 CLI 模式下的改动是直接写入文件的,有时你甚至不知道它改了哪些地方,只能靠 git diff 事后查看。
插件的配置文件和 CLI 不完全一样,它有自己的 settings 管理入口。热词里反复出现“claude code 新建 settings.json 还不能接入模型怎么办”,正是插件版和 CLI 版配置脚本不一致导致的。我后面专门有一节讲这个问题。
3.3 桌面版:给不想碰命令行的用户的选项
桌面版是 Claude Code 的图形界面版本,独立安装,不需要依赖终端。它提供了类似聊天软件的操作体验,也可以在界面上配置模型供应商、环境变量等。
桌面版和 VSCode 插件如果同时使用,要注意它们读取的配置可能来自不同路径。我实际遇到过在插件版里配好了 DeepSeek 环境变量,切到桌面版依然请求 Anthropic 官方接口的情况,排查到最后才发现两者用的是不同的配置文件。所以在选型时,我的建议是:
| 使用方式 | 适合场景 | 配置复杂度 | 稳定性 |
|---|---|---|---|
| CLI 模式 | 脚本、自动化、SSH 环境 | 低 | 高 |
| VSCode 插件 | 日常开发、需要可视化 diff | 中 | 高 |
| 桌面版 | 图形界面偏好、免终端配置 | 中高 | 中高 |
我个人的习惯是:日常开发用 VSCode 插件,跑批处理和自动化用纯 CLI。两个工具共用账号和 API key,但环境和模型配置分开维护,这样互不干扰。
3.4 插件版配置文件的坑
这里单独钉一下配置文件的问题。无论你用的是插件版还是桌面版,Claude Code 的全局配置通常位于:
- Windows:
%USERPROFILE%\.claude\settings.json - macOS / Linux:
~/.claude/settings.json
但 VSCode 插件在启动时,有时会优先读取插件自己管理的配置段,而不是直接读这个文件。如果出现“我明明改了 settings.json,但没生效”的情况,先别急着怀疑文件写错,去插件的设置面板里看看是不是有覆盖项。
正确接入第三方模型的底层逻辑,下一章详细展开。
4. 接入 DeepSeek、智谱等第三方模型:核心原理与配置
4.1 为什么要接第三方模型
原因无非两个:成本和模型偏好。
Anthropic 官方 API 是按 token 计费的,重度使用一个月下来账单不低。Claude Code 一次任务动辄消耗几十万 token,如果你只是用来做日常辅助,开销会很可观。而 DeepSeek、智谱这些国内模型服务的 API 价格相对低,而且 Anthropic 官方提供了一套“兼容接口”规范,让 Claude Code 这类工具可以直接通过更换接口地址来接入其他模型服务商。
热词里“claude code 接入 deepseek”排在第一,说明这是刚需。
4.2 按原理理解配置,而不是死记环境变量名
Claude Code 调用模型时,本质上就是向一个标准的 Anthropic API 地址发出请求。它默认指向:
text复制https://api.anthropic.com
Claude Code 允许你通过环境变量来覆盖这个地址:
bash复制ANTHROPIC_BASE_URL
只要模型服务商实现了 Anthropic 兼容 API,你把 ANTHROPIC_BASE_URL 指向服务商提供的兼容地址,再把 ANTHROPIC_API_KEY 换成服务商给的 key,Claude Code 就会把请求发送到新地址。
所以配置第三方模型这件事,核心就三步:
- 找对兼容接口地址。
- 设置
ANTHROPIC_BASE_URL指向它。 - 设置
ANTHROPIC_API_KEY为对应服务商的 key。
以 DeepSeek 为例,它的 Anthropic 兼容接口地址是:
text复制https://api.deepseek.com/anthropic
在终端里临时配置,可以在启动前设置环境变量:
bash复制export ANTHROPIC_BASE_URL=https://api.deepseek.com/anthropic
export ANTHROPIC_API_KEY=你的DeepSeek密钥
export ANTHROPIC_MODEL=deepseek-chat
claude
ANTHROPIC_MODEL 这一项容易被忽略。Claude Code 默认会使用内置的 Claude 模型名(如 claude-sonnet-4)去请求,但第三方服务商不认识这个名字,就会报“model not found”或“not a model this version of claude code recognizes”。你必须把它显式指定为服务商支持的模型名。
4.3 桌面版和插件的差异化配置
CLI 模式设置环境变量是全局的,但桌面版和 VSCode 插件读取配置的路径不一定相同。热词里有一个典型报错就是“claude code 新建 settings.json 还不能接入模型”。
这个问题的根因在于:Claude Code 桌面版并不是只读 ~/.claude/settings.json 的,它有自己的环境变量管理界面。你需要在桌面版的设置面板里找到 Environment Variables 一栏,把 ANTHROPIC_BASE_URL、ANTHROPIC_API_KEY、ANTHROPIC_MODEL 添加进去,而不是只改文件。
如果你手动在 ~/.claude/settings.json 里添加了 env 字段:
json复制{
"env": {
"ANTHROPIC_BASE_URL": "https://api.deepseek.com/anthropic",
"ANTHROPIC_API_KEY": "你的DeepSeek密钥",
"ANTHROPIC_MODEL": "deepseek-chat"
}
}
CLI 模式会读它,但桌面版和插件版不一定。官方推荐的位置是用户级 ~/.claude/settings.json,但不同版本对 settings.json 的支持程度有差异。我的建议是:先用环境变量方式在启动脚本里配置,确认能跑通,再考虑写进配置文件。等你能在不同模式之间一致复现配置时,说明你的版本支持从文件读取 env 了。
4.4 用 ccswitch 管理多套模型配置
当你同时有官方 API、DeepSeek、智谱等多套配置时,手动切换环境变量会非常痛苦。热词里出现了 ccswitch(CC Switch ),这实际上是一个第三方的 Claude Code 配置切换工具。
它的用法核心就是:把不同服务商的配置保存成多套“方案”,需要时一键切换。相当于给你维护了多个环境变量组合。
以我个人体验看,ccswitch 这类工具最大的价值是避免“改崩”。我有一次写完 DeepSeek 配置后忘了切回官方 API,导致另一台机器上的脚本全部走错模型。用了 ccswitch 之后,每套方案都有名字,切换前看一眼就清楚了。
但要注意:这类第三方工具是社区项目,版本迭代很快,且不同版本对 Claude Code 新版的支持力度不一。如果你刚升级了 Claude Code,ccswitch 突然失效,优先去它的仓库看是否有对应版本更新,而不是立刻重装系统。
4.5 模型名不识别报错的真相
热词里有这样一段报错:
text复制"deepseek-v4-pro" is not a model this version of claude code recognizes
这个报错本身很有迷惑性。它想表达的不是“你的模型不存在”,而是“Claude Code 内置的模型列表里没有这个名字”。
Claude Code 内置了一个模型白名单,用来决定使用哪个模型以及它的上下文窗口大小。当你通过 ANTHROPIC_MODEL 指定一个它不认识的名字,或者某些第三方配置工具把不认识的模型名写入配置时,它就会拒绝启动。
解决这个问题的方向有两个:
- 换用 Claude Code 认识的模型名。比如把
ANTHROPIC_MODEL设置为claude-3-5-sonnet这类官方兼容的别名,同时依赖服务商的模型映射。 - 升级或降级 Claude Code 版本。新版对模型名的限制策略可能更宽松。遇到“这个版本不识别”的报错,可以先查一下当前版本号,再到官方 changelog 里看模型列表的变化。
DeepSeek、智谱这类服务商在提供 Anthropic 兼容接口时,一般会把请求路径中的 Claude 模型名映射到自己的模型上。所以更稳妥的配置方式反而是:把 ANTHROPIC_MODEL 保持为 Claude 官方模型名之一,而不是填第三方模型的真实名称。这样能避免白名单校验失败,同时服务商侧会自动做映射。
5. Skill 配置:从“能用”到“好用”的进阶玩法
5.1 Skill 是什么
Skill 是 Claude Code 的技能体系,通俗讲就是给 Claude Code 预设的一套“专家工作流”。你定义好技能的名称、触发条件和执行步骤,之后在对话中引用它,Claude Code 就会按照这套流程来干活。
热词里“claude code skill”出现频率很高,但很多人装上后不知道用它来做什么。我举一个最简单的例子:做一个“生成 Go 单元测试”的 Skill。
你创建一个目录:
text复制~/.claude/skills/go-test/
里面放一个 SKILL.md 文件:
markdown复制---
name: go-test
description: 为指定的 Go 函数生成表格驱动的单元测试,并在生成后运行 go test 验证。
---
执行步骤:
1. 打开用户指定的 .go 文件,定位到目标函数。
2. 分析函数签名、参数类型、返回值以及依赖。
3. 在相同包下创建 *_test.go 文件,使用表格驱动测试风格。
4. 运行 go test ./... --run 目标函数名,根据输出修复失败用例。
5. 全部通过后输出变更摘要。
之后在对话中说到“用 go-test 给 UserService 生成测试”,Claude Code 就会按这个流程执行。
5.2 Skill 和 CLAUDE.md 的边界
这是最容易混淆的一对概念。
CLAUDE.md 是项目级的“背景知识档案”,告诉 Claude Code 这个项目的结构、规范、工具链等一次性信息。比如“本项目使用 pnpm,不要用 npm”“测试命令是 make test”“代码风格遵循 Google Java Style”。
Skill 则是可复用的行为指令,它更像一段经过封装的工作流模板,可以在不同项目中反复调用。
我的经验是:底层常识写进 CLAUDE.md,流程化任务做成 Skill。如果只是告诉 AI “项目里怎么跑测试”,写在 CLAUDE.md 就够了;如果你希望它“每次写完代码都要跑测试并修复失败、再汇总报告”,那就值得做进 Skill。
5.3 几个能立刻提升效率的 Skill 思路
除了测试生成,下列是我实际验证过、收益明显的 Skill 方向:
- 代码评审 Skill:输入分支名或指定文件,Skill 会拉取变更、逐文件审查、按严重程度输出问题清单,并附修改建议。比人手 review 快很多,尤其适合个人项目。
- 提交信息生成 Skill:读取
git diff --staged,按 Conventional Commits 规范生成提交信息。以后git commit都不用手打 message。 - 日志排查 Skill:告诉你日志文件路径和常见错误形态,它会自动搜索、归纳根因、给出修复命令。
Skill 的调试也很简单。在 Claude Code 会话中输入 /skill 可以查看当前加载了哪些 Skill。如果新加的 Skill 不生效,先检查 SKILL.md 开头有没有完整的 YAML frontmatter,以及目录名是否和 name 一致。目录名不一致是新手最容易犯的错。
5.4 桌面版和 CLI 的 Skill 目录
默认情况下,用户级 Skill 放在 ~/.claude/skills/ 下,CLI 模式读取这个路径。但桌面版可能优先读取自己数据目录下的 skills 文件夹。还是那句话:版本不同、平台不同,优先用实际验证为准。
我现在的习惯是:项目级的 Skill 放在项目的 .claude/skills/ 下,随仓库走,团队其他人 clone 下来就能共用;个人通用 Skill 放在用户目录下。这样既有隔离,又有复用。
6. 高频报错排查清单
这一节把我遇到过的、以及热词里反复出现的报错集中整理一下。
6.1 could not locate the claude cli on path
这个报错我在 2.2 节已经提过,核心是 PATH 问题。除了 PATH 没配好之外,还有一个容易忽略的原因:安装后没有重启终端。终端的环境变量在启动时就固定了,安装完 npm 包如果不重启终端,PATH 里的新路径不会被加载。
排查步骤:
bash复制npm prefix -g
然后把这个路径和它的 bin 子目录加到 PATH。在 Windows 上,还要确认是管理员权限修改系统 PATH,否则可能只对当前用户生效。
6.2 529:上游服务过载
Claude Code 报 529,绝大多数时候不是你配置的问题,而是模型服务端过载,拒绝了请求。
这是 Claude 官方 API 的经典状态码,意思是服务暂时无法处理更多请求。遇到的时候:
- 等几十秒再重试,往往就好了。
- 如果频繁出现,检查一下是否用了共享 API key,或者是不是某个自动化脚本在短时间内发起大量并发请求。
- 接第三方模型时出现 529,同样优先看服务商的状态页面。
别一看到 529 就去重装软件,纯属浪费时间。
6.3 model not recognized / not supported
这是 4.5 节讲过的模型名白名单问题。
排查时可以执行:
bash复制claude config list
查看当前生效的模型配置。我遇到过一次奇怪的情况:设置了正确的 ANTHROPIC_MODEL,但 claude config list 里显示的还是旧模型名。后来发现是 shell 配置文件里有一行 export 覆盖了我临时设置的变量。
所以排查顺序是:
- 检查所有可能设置环境变量的文件(
.bashrc、.zshrc、PowerShell$PROFILE)。 - 检查
claude config list的生效值。 - 检查是否有 ccswitch 等工具把配置切到了别处。
6.4 your organization has disabled claude subscription access for claude code
这个报错常见于企业账号。如果你的 Claude 账号是通过组织购买的企业订阅,管理员可能在后台关闭了 Claude Code 的访问权限。
个人用户遇到这个,通常是误用了公司分配的订阅额度。解决办法是换成个人订阅,或者走 API key 方式。这个没法靠本地配置绕过。
6.5 如何把 Claude Code 卸载干净
卸载这件事看着简单,但因为涉及的组件多,很容易残留。
官方卸载命令:
bash复制npm uninstall -g @anthropic-ai/claude-code
但要卸干净,还需要手动清理这些目录:
~/.claude/(用户配置、skills、日志)- Windows 下的
%USERPROFILE%\.claude\和%APPDATA%\Claude-Code\ - VSCode 插件本身需要从扩展市场卸载
我遇到过一种情况:npm 包已经卸载,但输入 claude 仍然有反应。原因是桌面版自带了一个 cli 入口,它和 npm 装的并不是同一个文件。所以彻底卸载需要先确认你用的是哪种形态,再分头清理。
6.6 修改回答语言和关闭提示音
最后说两个很小但体验很直接的设置。
想让 Claude Code 默认用中文回答,可以在 CLAUDE.md 里加一行:
markdown复制始终使用中文回答。
或者在对话开头直接说“用中文回答”,它会记住整个会话的语言偏好。
另外,热词里有人问“claude code 询问的时候发出声音提示”怎么处理。这个提示音其实是终端响铃(BEL 字符)。如果觉得烦,可以在设置里关闭通知声音,或直接把终端的响铃选项关掉。实际上在 /config 里就有相关选项,不同版本位置略有不同,找声音或 notification 相关的单词即可。
最后,说点实在话
Claude Code 真正改变我工作方式的不是“它能写代码”,而是“它能自己跑完整条链路,然后把过程摊开给我看”。我原来写一个跨文件的重构,至少要花半天在改调用点上,现在让它把整条调用链梳理出来,我只需要审核改动是否合理。这种转变带来的效率提升,远超我初期的预期。
如果你现在刚装好,我的建议是:先别急着配模型、写 Skill,拿一个小项目跑一遍,让它帮你改一个真实的 bug。等你对它的工作方式有了体感,再回来折腾第三方模型和 Skill 体系。这条路径我走了三遍,每一步踩过的坑都写在上面了,希望你能少走一点弯路。
