第 1 章讲的是心智模型,这一章讲的是动手。目标只有一个——在你自己的代码仓库上,把第一条指令跑通。

要敲的命令只有几行。剩下的时间用来弄明白“你到底在批准什么”。跳过这一步,后面一定要回头补。

入口有五个 —— 从哪里进去

Claude Code 常被介绍成“终端里的工具”,但它的入口有五个。内核是同一个,只是外面那层包装不同。

终端

本体。敲一个 claude 就行。本课程以它为准。

VS Code 扩展

让它住进编辑器里。差异能用你熟悉的样子来读。

JetBrains 扩展

装进 IntelliJ 系列。如果你本来就在那里开发,就不用来回切换。

桌面应用

不用打开终端就能使用。模式在发送按钮旁边的选择器里选。

浏览器(claude.ai)

手边没有开发环境也能用。同样用选择器切换模式。

最初一小时建议用终端。理由不是用着舒服,而是信息量。卡住时的报错原样呈现,网上的处理办法也大多以终端为前提写的。另外,它和编辑器内置型(Cursor、GitHub Copilot)的分工,写在 AI 编程实践课程第 1 章 里。

安装

标准方式是 npm。只要装了 Node.js,一行就能装完(敲 node -v 能显示版本号就说明准备好了)。-g 的意思是“装成在任何目录下都能调用的形式”。

终端 —— 安装与启动
npm install -g @anthropic-ai/claude-code claude

如果因为代理或地区限制,npm 走不通,也可以从系统的包管理器装。

终端 —— npm 走不通的时候
brew install --cask claude-code # macOS / Homebrew winget install Anthropic.ClaudeCode # Windows / WinGet

安装方式只挑一种。 用 npm 装完又用 Homebrew 装一遍,就会看到 Multiple claude installations found。搞不清到底是哪一个在跑,后面所有的排查都会变难。具体要求随环境而变,拿不准就去看官方文档。

登录 —— 用账号还是用 API 密钥

第一次启动时要选登录方式。用 Claude 账号登录会打开浏览器,登录并授权后认证就通过了。这时用的是套餐的额度,消耗表现为上限和重置时间。API 密钥走的不是额度而是余额,用完就停。个人用前者,CI 和自动化用后者。

哪一种能用取决于你的合约,这里不下断言。只需要记住一点。

环境变量里的 API 密钥,优先级高于订阅账号的登录。 以前做实验时把 ANTHROPIC_API_KEY 写进了 shell 配置又忘了删,那么就算你正确登录了,登录也会被忽略。“明明订阅了却说余额不足”,多半就是这个原因。

现在到底在用哪一份凭据,/status 会告诉你。怀疑之前先看一眼。

认证相关的检查步骤
/status # 现在用的是哪一份凭据 env | grep ANTHROPIC # 环境变量里是否还留着密钥 unset ANTHROPIC_API_KEY # 留着就清掉。配置文件里的也一起删 /login # 重新登录,再用 /status 确认一遍

第一次启动会发生什么

认证通过之后,先切换到你要工作的目录再启动。Claude Code 会把“当前所在的目录”当作工作对象,切错了它就会开始读一堆不相干的东西。

终端 —— 在项目里启动
cd my-project claude

等待输入的那个界面就是对话的入口。这里建议不要一上来就让它改代码。第一步交给它一件只需要读取就能完成的事——“读一下 README 和主要目录,讲讲这个项目是做什么的”。

理由有三个。读取即使在最严格的 Manual 模式下也不需要确认,所以你还没学会批准的规矩也能跑通。这个项目你自己清楚,所以能对答案。而且连接、认证、工作目录能一次性全部验证,还什么都不会弄坏。就算出现奇怪的行为,也能在进入改写阶段之前先收拾干净。

不过,启动时处于哪种模式,取决于版本和设置。用 Claude Code v2.1.283 及以上版本从终端或 VS Code 启动的会话,无论哪种套餐和服务商,默认都以 Auto 启动(第一次会在屏幕顶部显示一条提示),下一节里的编辑也会不经确认直接通过。更早的版本只有 Pro、Max、Team 套餐以 Auto 启动,Enterprise 套餐和 API 密钥则以 Manual 启动。如果组织管理员关闭了 auto 模式,或所用模型不支持,也会以 Manual 启动。如果想像本章这样一步一步确认,启动后按一次 Shift+Tab 切到 Manual(详见后面的小节)。

指令 → 差异 → 批准的循环

读取跑通之后,就让它做一处小的改动。从这里开始是同一个四拍节奏。

1. 提要求

用中文直接说。如果说得出要改哪里,就说出来。

2. 收集并思考

找出可能相关的文件并读完。这就是第 1 章的 STEP 1。

3. 给出差异

逐行列出“这里要改成这样”,然后停在那里。

4. 批准,或者驳回

放行就落到文件里。不对就驳回,并用话补上哪里不对。

你:「在 README 里补一段 Windows 的说明」 ↓ [搜索] 找 README ← 读取。不会停 ↓ [读取] 读 README.md ← 读取。不会停 ↓ [编辑] 给 README.md 加三行 ← 给出差异,停下来 ↓ 你:批准 / 驳回并说明要怎么改

驳回不算失败。看过差异之后你才说得具体,所以第一条指令不必追求完美——这正是这套流程的好处。

一次交代的量,要控制在“差异读得完”的大小。 交代得越大,差异就越长,而长差异会在没读的情况下被批准。没读就按下去的批准,不是批准,是自动批准。怎么拆分放在第 3 章讲。

一开始该用哪个模式

决定它在哪里停下来的,是权限模式。终端里用 Shift+Tab 切换,VS Code 里用输入框下方的模式指示器,桌面应用里用发送按钮旁边的选择器,浏览器里用输入框旁边的下拉菜单切换。

DEFAULT
Manual

读取自动放行。编辑和执行命令每次都要确认。第一天就用这个。

ACCEPTEDITS
Accept edits

工作目录内的编辑自动放行。适合事后把差异一起读完的人。

PLAN
Plan

只调查,不改动源码。你批准了计划,它才转入执行。

AUTO
Auto

由另一个判定模型只拦下危险操作,其余不经确认继续。是 v2.1.283 及以上版本的启动模式。有前提条件。

BYPASS
Bypass permissions

确认和安全检查几乎全部关掉。只用于隔离环境。第一天不该碰这个。

Shift+Tab 循环切换的基本是前三个。Auto 在满足使用条件后会加入循环,切换过去时不会弹出任何确认(如果当前处于 Auto,按第一下会切到 Manual)。Bypass permissions 只有用专门的启动参数启动,或在用户设置、托管设置里设为默认时才会出现。想从启动时就固定,就写 claude --permission-mode plan。除此之外还有一个不出现在循环里的 dontAsk(只执行你允许过的操作),它只存在于配置文件和命令行中。

第一天的答案是 Manual。较新版本(v2.1.283 及以上)在任何套餐下都以 Auto 启动,所以请用 Shift+Tab 切到 Manual,或用 claude --permission-mode default 启动。每弹出一次确认,都是在练习分辨“这是读取、写入,还是执行”。分得清了再放松——反过来做,你就会在不知道自己放松了什么的情况下放松。第二个该用的是 Plan。

有些地方即使放松也仍受保护。 对 .git、.claude、shell 配置文件这类要害路径的写入,除 Bypass permissions 之外都不会自动批准。Manual 和 Accept edits 会弹出确认,Auto 则由判定模型审查(唯一的例外,是在可用 Bypass permissions 的状态下启动的终端会话中的 Plan)。并不是“一放松就全都放松了”。

各模式的细节见权限模式的详解文章,按工具逐项写允许与拒绝的方法见权限规则与配置的文章。另外要说明,“确认太烦”的答案不是绕过权限。它既挡不住你自己的误操作,也挡不住藏在它所读内容里的指令。想减少弹窗,先写只放行你信得过的操作的规则。怎么设计放在第 5 章。

CLAUDE.md —— 省掉每次都要交代的话

用上两天你就会发现“同样的提醒每次都要说一遍”。“这个目录别动”“提交前先跑 lint”——每次都敲一遍,既费时间也费上下文。于是就在项目根目录放一个 CLAUDE.md。Claude Code 启动时会自动读它,并以里面写的内容为前提开始干活。

CLAUDE.md —— 一开始这些就够了
# 关于本项目 - TypeScript / Next.js。包管理用 npm - 回复和代码里的注释用中文 ## 不要改动 - src/legacy/ 下面的一切(由另一个团队维护) - .env 及其派生文件 ## 验证 - 改完之后要跑通 npm run lint 和 npm test - 类型错误还在的时候不要说已经完成

写什么,取决于“AI 不可能自己知道的事”。

写:验证的步骤

用哪条命令来确认。它让第 1 章的 STEP 3 成立,所以收效最大。

写:不能碰的地方和本地规矩

生成物、别的团队的地盘、含有密钥的文件。以及“新页面放在这里”这类看代码也看不出来的约定。

不写:大道理和长篇

“写出易读的代码”之类。既判断不了有没有做到,还只会稀释掉你真正希望被遵守的那几行。

怎么把它养大也有固定做法。一开始只写几行。同一个提醒说到第二遍,就加一行。想一次写全,只会得到一个又长又含糊的文件,最后没人遵守。“没被遵守”的原因,通常就是太多、太抽象、自相矛盾这三样里的一样。

权限规则和模型选择可以分开放在 .claude/settings.json(项目)和 ~/.claude/settings.json(个人)里,不过第一天只要写几行 CLAUDE.md 就足够了。怎么分工放在第 6 章。

第一天最常出问题的三件事

卡住的方式是有偏向的,第一天基本就是这三种。

command not found: claude

装是装上了,但不在能被调用的路径里。把 ~/.local/bin(Windows 是 %USERPROFILE%\.local\bin)加进 PATH。也可能是重复安装造成的。

认证过了却还是被拒

经典情况是旧的 ANTHROPIC_API_KEY 盖过了订阅。用 /status 确认,清掉环境变量再重新登录。

比想象中更快撞到上限

Claude Code 消耗的令牌是聊天的 10 到 100 倍。因为来回的轮次和读文件的量都在往上堆。

第三件事上有个常见的误会。那句大意是“服务器正在临时限制请求”的提示,指的是服务端的临时限流,而不是套餐额度,稍等一会儿就能过去。到底有没有撞上额度,用 /usage 就能分辨。

搞不清原因时,按这个顺序来
claude doctor # 对安装、配置、MCP、上下文做一次综合体检 /status # 现在用的是哪一份认证 /context # 上下文都被什么占掉了,看明细 claude update # 实在不清楚就升到最新版(能这样解决的问题不少)

最后那条 claude update 看着不起眼,其实很管用。光是升个版本就消失的毛病相当多,在动手查之前先跑一遍,就不用去追一个根本不存在的问题。按症状分类的处理办法见常见报错与处理的文章。排查的完整步骤放在第 4 章讲。

小结

  • 入口有五个。内核相同,但最初一小时里信息量更大的终端更占便宜
  • 标准装法是 npm install -g @anthropic-ai/claude-code。走不通就用 Homebrew / WinGet。装法只挑一种
  • 登录方式是账号(额度)或 API 密钥(余额)。环境变量里的密钥会盖过订阅——拿不准就看 /status
  • 第一步交给它只需要读取的事。连接、认证、工作目录一次全验证到,还什么都不会弄坏
  • 要转起来的是指令 → 差异 → 批准。任务要拆到差异读得完的大小。不读的批准等于自动批准
  • 第一天的模式用 Manual(v2.1.283 及以上版本在任何套餐下都以 Auto 启动,需要切换),第二个用 Plan。.git 等受保护路径的写入,除绕过权限外都不会自动批准
  • CLAUDE.md 放在根目录,从几行写起。写验证的步骤、不能碰的地方、这里的规矩,不写大道理
  • 第一天的卡点是 PATH、环境变量里的密钥、用量。先跑 claude doctor / /status / /context

第一条指令跑通之后,接下来就该把它放进每天的工作里了。请前往 第 3 章“日常工作流”。