编程入门

Claude Code 完整使用教程

安装 Claude Code 后,在项目根目录运行 claude 并按提示完成浏览器登录,就可以用自然语言把开发任务交给它:它会自行检索代码、修改文件、执行命令,而你负责界定任务范围、确认权限并审阅改动。

安装、认证、项目内工作流、权限与配置:一篇覆盖 Claude Code 从零到日常使用的完整教程。

AI机场约 7 分钟更新于

开始之前

  • Claude Pro、Max、Team、Enterprise 订阅,或 Claude Console 账号
  • 一个用 Git 管理的代码项目
  • 基本的终端操作能力(切换目录、执行命令、读报错)

环境要求

系统平台
macOS 13.0+、Windows 10 1809+ / Windows Server 2019+、Ubuntu 20.04+ / Debian 10+ / Alpine Linux 3.19+
软件环境
Bash、Zsh、PowerShell 或 CMD 任一终端、仅 npm 安装方式需要 Node.js 22 及以上
账号
Claude 付费方案或 Claude Console(按用量计费)
网络
能稳定访问 api.anthropic.com、claude.ai、platform.claude.com 与 downloads.claude.ai
说明
硬件要求为 4 GB 以上内存与 x64 或 ARM64 处理器;原生 Windows 上建议同时安装 Git for Windows,否则 shell 工具会退回到 PowerShell。

快速步骤

  1. 安装命令行工具

    用官方安装脚本安装,安装结束后关闭并重新打开终端,让新的可执行文件进入 PATH。

    macOS、Linux 与 WSL 用 install.sh,Windows PowerShell 用 install.ps1,正文给出了完整命令。

  2. 验证安装

    运行 claude --version,正常会输出类似 2.1.211 (Claude Code) 的版本号。

    输出异常时运行 claude doctor,它只做只读诊断,不会启动会话。

  3. 登录账号

    直接运行 claude,按提示在浏览器中完成登录;远程或容器环境里改用粘贴登录码的方式。

  4. 在项目根目录启动

    先切换到仓库根目录再运行 claude,这样它才能检索到完整的项目结构。

  5. 先让它读,再让它改

    第一条指令用来确认它理解得对,例如「这个项目是做什么的」「移动端导航的实现在哪」。

  6. 交付一个有边界的任务

    说明目标、涉及范围与验收标准,而不是只说「优化一下」。

  7. 审阅改动并运行验证

    逐个文件查看 diff,然后让它执行项目自己的测试或构建命令,用真实输出确认结果。

  8. 固化项目约定

    运行 /init 生成 CLAUDE.md,再补上只有你知道、代码里看不出来的约定。

从安装、登录到在真实项目里改代码、跑测试、提交 Git,完整讲清 Claude Code 的使用流程,并说明权限模式、项目级 CLAUDE.md 配置与容易踩的几个坑。

Claude Code 是什么

它是一个跑在终端里的编程智能体:你用自然语言描述任务,它自己检索项目文件、编辑代码、执行命令、读取输出,直到任务完成。和代码补全类工具的区别在于介入位置——补全工具帮你写下一行,Claude Code 接管的是「查清楚、改完、验证过」这一整段。

除命令行外,同一个账号还可以在桌面应用、VS Code 与 JetBrains 插件、网页版以及 CI 集成中使用。本文讲的是命令行,也是功能最完整的入口。

开始之前

三件事缺一不可。

账号。 Pro、Max、Team、Enterprise 订阅,或使用预付额度的 Claude Console 账号。免费的 Claude.ai 方案不包含 Claude Code。企业还可以走 Amazon Bedrock、Google Cloud 的 Agent Platform 或 Microsoft Foundry。

运行环境。 macOS 13.0 及以上、Windows 10 1809 及以上、Ubuntu 20.04 / Debian 10 / Alpine 3.19 及以上,4 GB 以上内存。只有 npm 安装方式才要求 Node.js 22 及以上,原生安装不依赖机器上的 Node。

网络。 需要能访问 api.anthropic.comclaude.aiclaude.complatform.claude.comdownloads.claude.ai。这几个域名任意一个被拦,表现都不一样:装不上、登不上,或者装好了发不出请求。

安装

macOS、Linux 与 WSL:

curl -fsSL https://claude.ai/install.sh | bash

Windows PowerShell:

irm https://claude.ai/install.ps1 | iex

Windows CMD:

curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd

分不清自己在哪个终端时看提示符:PowerShell 是 PS C:\,CMD 是没有 PSC:\。在 PowerShell 里执行 CMD 那条命令会报 not a valid statement separator,反过来在 CMD 里执行 PowerShell 那条会报 irm is not recognized

也可以用包管理器安装:

brew install --cask claude-code
winget install Anthropic.ClaudeCode
npm install -g @anthropic-ai/claude-code

三点需要注意。第一,npm 包装的是同一个原生二进制文件,不是「Node 版本」,安装后运行的 claude 不会调用你的 Node。第二,不要用 sudo 执行全局 npm 安装,会带来权限与安全问题。第三,安装方式决定更新方式:原生安装后台自动更新,Homebrew、WinGet 与 apt / dnf / apk 都需要手动升级。

安装完成后关闭并重新打开终端。这一步经常被跳过,也是「装完却找不到命令」最常见的原因。

更新

claude update

原生安装平时会自己在后台更新,这条命令只是让更新立刻生效。Homebrew 用 brew upgrade claude-code,WinGet 用 winget upgrade Anthropic.ClaudeCode

验证与登录

先确认命令可用:

claude --version

正常会输出类似 2.1.211 (Claude Code) 的内容。想看更完整的诊断——安装是否健康、设置文件有没有语法错误、上一次自动更新的结果——运行:

claude doctor

它是只读的,不会启动会话,也不会改动任何配置。

然后直接运行 claude,首次启动会引导登录,在浏览器里完成认证即可。之后要换账号或重新认证,在会话里输入 /login

几种容易卡住的登录场景:

  • 浏览器没有自动打开。 在登录提示处按 c 复制 OAuth 链接,粘贴到浏览器里打开。
  • WSL2、SSH 或容器环境。 浏览器开在另一台机器上,回调回不来。登录后页面会给一串登录码,粘回终端提示处即可;粘贴不进去时改用 claude auth login,它从标准输入读取登录码。
  • 提示登录码无效。 登录码过期或复制不全,重新走一遍并尽快完成。

在项目里启动

cd /path/to/your/project
claude

启动目录很关键。 它以当前目录为工作范围,在仓库根目录启动才能看到完整结构;在 src/components/ 里启动,它对项目全貌的判断就会缺一大块。确实需要访问其他目录时用 --add-dir 显式加入,而不是跑到更上层的目录去启动。

第一次进去,先让它读,不要急着让它改:

这个项目是做什么的?主要目录结构是怎样的?
移动端导航的实现在哪几个文件里?

如果它对项目的描述明显不对,通常不是模型的问题,而是启动目录错了。

让它修改代码

描述任务的方式直接决定结果质量。有效的描述包含三部分:目标、范围、验收标准

不好的写法:

优化一下导航

可用的写法:

当前 Astro 项目的移动端导航在 430px 以下会把 logo 挤出容器。
请检查 src/components/layout/ 下的导航组件与相关样式,修复这个溢出,
不要改动桌面端断点的表现,改完运行 npm run build 确认构建通过。

第二种写法给了它可以自己判断「做完了没有」的依据。它会先定位相关文件、说明打算怎么改,然后执行修改。

一次只推进一个明确目标。跨模块的大改动拆成几步分别交付,出问题时更容易回退,审阅成本也低得多。

让它执行命令与验证

不要只看代码「像是对的」,让它跑项目自己的命令:

运行 npm run build,如果失败就修到通过

它会执行命令、读取输出、按报错继续修。这是它和纯对话式助手最大的差别——验证结果来自真实输出,而不是推测。

和 Git 一起用

Git 操作可以直接用自然语言表达:

我改了哪些文件?
新建一个分支 feature/mobile-nav
把当前改动提交,说明修复了移动端导航溢出

一个务实的习惯:动手前先建分支或提交一次检查点。让它工作在可回退的状态上,比事后逐行核对省事得多。

权限:它什么时候会问你

权限模式决定哪些动作不需要你确认。常用的几种:

模式不询问即可执行适合
Manual(配置值 default只有读取敏感项目、不熟悉的代码
acceptEdits读取、文件编辑与常见文件系统命令你正在逐步审阅的迭代
plan读取,先出方案再动手改动前先摸清代码库
auto几乎全部,由分类器代替人审核长任务、减少打断
bypassPermissions全部仅限隔离的容器或虚拟机

Pro、Max、Team 方案的交互式终端会话默认从 auto 模式开始,其他方案默认 Manual。会话中随时按 Shift+Tab 切换,也可以在启动时指定:

claude --permission-mode default

有几类动作任何模式都不会自动放行,包括被显式 ask 规则匹配的工具、需要用户交互的工具,以及针对关键路径的删除命令。

拿不准的时候用 Manual。多按几次确认,比事后从 Git 里捞回被覆盖的文件便宜。

项目级配置

CLAUDE.md

每次会话都是全新的上下文,CLAUDE.md 是让约定跨会话生效的方式。生成一份初始文件:

/init

它会分析代码库,写出构建命令、测试方式、目录约定等内容;文件已存在时不会覆盖,而是给出改进建议。

生成之后补上它自己看不出来的东西:为什么某个模块不能动、提交前必须跑什么、哪些目录是自动生成的。写作要点只有两条,具体

  • 写「使用 2 空格缩进」,不要写「格式化代码」
  • 写「提交前运行 npm test」,不要写「测试你的改动」
  • 单个文件控制在 200 行以内,太长会稀释效果

文件位置按作用范围区分:~/.claude/CLAUDE.md 是你个人所有项目通用的偏好;./CLAUDE.md./.claude/CLAUDE.md 是随仓库共享给团队的项目约定;./CLAUDE.local.md 是不进版本库的个人项目备注,记得加进 .gitignore

仓库里已经有 AGENTS.md 时不必复制一份:在 CLAUDE.md 里写一行 @AGENTS.md 导入即可。

想确认哪些文件真的加载了,在会话里运行 /context,看 Memory files 一栏。

设置文件

.claude/settings.json 放项目级设置,~/.claude/settings.json 放个人设置,权限规则、环境变量、自动更新通道都在这里配置。和 CLAUDE.md 的区别很实际:设置由客户端强制执行,CLAUDE.md 只是写给模型看的上下文。真正要「禁止」某件事,用权限规则或 hook,不要指望在 CLAUDE.md 里写一句话。

一个真实的工作流

以一个普通的 Astro 项目为例,从发现问题到合并:

  1. 建分支。 git switch -c fix/mobile-nav,保证可回退。
  2. 在仓库根目录启动。 运行 claude
  3. 先定位。 「移动端导航在 430px 以下溢出,相关实现在哪些文件?」确认它找对了地方再往下走。
  4. 给出有边界的任务。 说明症状、涉及目录、不能动的部分、验收标准。
  5. 审阅改动。 逐个文件看 diff,重点看它有没有顺手改了范围之外的东西。
  6. 让它验证。 「运行 npm run build」「在 320、375、430 三个宽度下检查是否还有横向溢出」。
  7. 提交。 让它生成 commit message,自己读一遍再确认。
  8. 沉淀。 如果这次纠正了它某个反复出错的习惯,把结论写进 CLAUDE.md,下次不用再说一遍。

会话与上下文管理

  • /clear:换一个不相关的任务时清空历史,比让它在旧上下文里继续更准。
  • /compact:长任务中途压缩上下文,保留结论、丢掉过程。
  • claude -c:继续当前目录最近一次会话。
  • claude -r/resume:挑一个历史会话恢复。
  • claude -p 加一句提问:一次性执行后退出,适合写进脚本。

安全注意事项

  • 改动全部经过审阅。 把它的产出当成同事提交的 PR:读一遍、跑测试、有问题打回,而不是直接合并。
  • 不要在有敏感数据的目录里启动。 它读到的文件内容会随请求发送给模型。含密钥、客户数据的目录用权限规则排除,或者根本不要放进工作目录。
  • bypassPermissions 只在隔离环境里用。 容器或虚拟机之外开这个模式,等于把 shell 无条件交出去。
  • 别把密钥写进 CLAUDE.md 那是会进版本库、也会进上下文的普通文本文件。

连不上、登不上怎么办

装好了却发不出请求、认证一直失败、请求超时——这些属于连接与认证问题,和用法无关,排查路径也完全不同。按服务状态、版本、认证方式、环境变量、代理、DNS、证书的顺序处理,见 Claude Code 连接失败与认证错误排查

如果是 Claude 网页端或客户端打不开,那是另一类问题,见 Claude 连接失败与网络问题排查

和 Anthropic API 的关系

Claude Code 是产品,Anthropic API 是接口。用订阅登录时不需要 API Key;用 Claude Console 账号登录时按用量从预付额度扣费,首次登录会自动在 Console 里建一个 Claude Code 工作区用于成本归集。

要把模型接进自己的应用,那是另一件事,见 Anthropic API 快速上手

和 Codex 怎么选

两者定位接近,差别在生态与工作方式。想同时了解 Cursor 的定位,见 Claude Code vs Codex vs Cursor;想先把 Codex 用起来,见 Codex 完整使用教程

参考资料

常见故障与解决方法

安装完成但提示 command not found 或 claude 不是内部命令

可能原因安装目录没有进入当前终端的 PATH,或终端仍在使用安装前的环境变量。

解决方法先关闭并重新打开终端;仍未解决时按官方安装排查文档检查 PATH,Windows 上还要确认没有被桌面版占用同名命令。

它的回答和项目实际情况对不上

可能原因启动目录不是仓库根目录,能读到的上下文不完整。

解决方法退回仓库根目录重新启动;确实需要跨目录时用 --add-dir 显式加入其他目录。

它没问过我就改了文件、跑了命令

可能原因会话处在 auto 模式,由分类器代替你审核动作。

解决方法按 Shift+Tab 切到 Manual 模式,或启动时加 --permission-mode default;敏感仓库建议默认使用 Manual。

CLAUDE.md 写了但明显没生效

可能原因文件位置不在加载范围内,或指令太笼统。

解决方法在会话里运行 /context,确认文件出现在 Memory files 列表中;把「格式化代码」这类描述改成「使用 2 空格缩进」这类可验证的指令。

长会话之后开始答非所问

可能原因上下文被无关内容占满。

解决方法换新任务前用 /clear 清空,长任务中途用 /compact 压缩;下次继续用 claude -c 或 /resume 恢复。

常见问题

Claude Code 有免费版吗?

没有。免费的 Claude.ai 方案不包含 Claude Code,需要 Pro、Max、Team、Enterprise 订阅,或使用预付额度的 Claude Console 账号;企业也可以通过 Amazon Bedrock、Google Cloud 的 Agent Platform 或 Microsoft Foundry 接入。

它会不会不问我就改文件、执行命令?

取决于权限模式。Pro、Max、Team 方案的交互式终端会话默认进入 auto 模式,由一个分类器代替你审核动作;其他方案默认是 Manual 模式,改文件、跑命令前会逐次询问。任何时候按 Shift+Tab 都能切换。

只能在终端里用吗?

不是。除命令行外,官方还提供桌面应用、VS Code 与 JetBrains 插件、网页版,以及 Slack、GitHub Actions、GitLab CI/CD 中的集成,账号与配置是同一套。

Windows 上必须先装 WSL 吗?

不必,原生 Windows 直接支持。区别在于 WSL 2 才支持 Bash 沙箱;原生 Windows 装了 Git for Windows 才能使用 Bash 工具,否则由 PowerShell 工具执行命令。

已经有 Anthropic API Key,可以直接用吗?

可以,对应 Claude Console 账号。但要注意优先级:环境里存在 ANTHROPIC_API_KEY 时,它会覆盖订阅的登录凭据,这也是「明明有订阅却提示组织被停用」的常见原因。

CLAUDE.md 和 AGENTS.md 是什么关系?

Claude Code 只读 CLAUDE.md。仓库里已经有 AGENTS.md 时,在 CLAUDE.md 里写一行 @AGENTS.md 把它导入即可,两个工具共用一份约定,不用重复维护。

怎么更新到新版本?

原生安装会在后台自动更新,想立刻更新就运行 claude update。Homebrew、WinGet 与 Linux 包管理器安装默认不自动更新,需要用对应的升级命令。

它读得到整个项目吗?会上传全部代码吗?

它按需读取文件,不会预先把整个仓库塞进上下文。但被读到的文件内容会随请求发送给模型,因此包含密钥、客户数据的目录应当通过权限规则排除,或者干脆不要放进工作目录。