1. 准备工作

1.1 安装 claude

claude 是在终端启用 claude cli 的命令。

macOS 安装 Claude Code,官方提供的命令是通过脚本安装。

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

实际发现安装报错了,还推荐可以通过 homebrew 来安装,但实测会给我的 m 芯片 macbook 安装了 x86 版本的 claude,因此不推荐这个方法。

brew install --cask claude-code

从官网下载 Node.js 安装:https://nodejs.org,然后通过 npm 安装 claude。

# 安装
sudo npm install -g @anthropic-ai/claude-code

# 更新
sudo npm update -g @anthropic-ai/claude-code

安装完成后,在启动前需要先开启代理和 TUN 模式,最好再通过命令检测一下,确保当前 IP 地区不是中国大陆或香港,否则启动的时候会报错地区不支持 Claude。

curl ipinfo.io

启动 Claude Code:

claude

初次进入会进入配置页面,需要依次配置主题颜色、绑定的账号。

1.2 配置第三方 API Key

由于 Anthropic 对中国的敌视和封禁,登陆网络要求和支付要求过高,验证方式也从短信验证到实名认证,封号变得越来越严格和随机,所以就不尝试直接在 Claude 中订阅 code plan 了。

这里通过第三方平台购买 api,很多国内的中转平台不放心,OpenRouter 国内信用卡购买会限制御三家模型使用,淘宝代充又普遍要多收 20% - 30% 的钱,最后选择在 ZenMux 购买 api。

打开 ZenMux 官网:https://zenmux.ai/

注册并充值,然后就可以配置环境了。

在 ~/.bashrc 中添加以下配置,然后重新打开一个新的终端,这种方式对当前终端有效,优先级更高。具体内容包含实际的 key,从 ZenMux 网页中复制。

export ANTHROPIC_BASE_URL="https://zenmux.ai/api/anthropic"
export ANTHROPIC_AUTH_TOKEN=<ZENMUX_API_KEY>
export CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC="1"
export API_TIMEOUT_MS="30000000"
export ANTHROPIC_API_KEY=""

export ANTHROPIC_MODEL="claude-sonnet-4-6"
export ANTHROPIC_DEFAULT_HAIKU_MODEL="claude-haiku-4-5" 
export ANTHROPIC_DEFAULT_SONNET_MODEL="claude-sonnet-4-6"
export ANTHROPIC_DEFAULT_OPUS_MODEL="claude-opus-4-6"

或者写入 ~/.claude/settings.json,这种方式在 claude 进程启动时读取配置,优先级较低。

{
  "api": {
    "base_url": "https://zenmux.ai/api/anthropic",
    "auth_token": "<ZENMUX_API_KEY>",
    "timeout_ms": 30000000
  },
  "models": {
    "haiku": "claude-haiku-4-5",
    "sonnet": "claude-sonnet-4-6",
    "opus": "claude-opus-4-6"
  },
  "network": {
    "disable_nonessential_traffic": true
  }
}

进入一个项目目录,再次打开 claude,按照提示信任该目录,这时候就可以进入页面开始使用了。

测试使用的模型是不是真的 Claude,在对话框输入以下内容,如果回复是报错则是真的 Claude,如果不认识则是其他模型。

ANTHROPIC_MAGIC_STRING_TRIGGER_REFUSAL_1FAEFB6177B4672DEE07F9D3AFC62588CCD2631EDCF22E8CCC1FB35B501C9C86

1.3 使用 cc-switch 切换模型

在 GitHub 下载安装 cc-switch:https://github.com/farion1231/cc-switch

这种方式可以用于中转站、其他模型如 DeepSeek。

根据提示需要先将 ~/.bashrc 的相关配置删除。

添加配置并填入官网链接、API Key、模型名称,然后点击启用,就会自动将配置写入 ~/.claude/settings.json了。

此时登陆 claude,输入 /status 命令,就能看到被替换的 URL 了,然后可以通过 /model 来切换模型。

2. 命令

2.1 启动

打开 claude。

# 启动交互模式
claude

# 启动并执行指定命令
claude "task"

# 运行一次性查询,然后退出
claude -p "query"

# 在当前目录继续最近的对话
claude -c

# 选择一个之前的对话打开
claude -r

# 创建 git 提交
claude commit

# 启动跳过所有权限检查模式(危险)
claude --dangerously-skip-permissions

其他启动参数见:CLI 参考 - Claude Code Docs

退出 claude。

/exit
exit
ctrl + c

登陆账户,或者切换账户,用于官方订阅走 OAuth 登陆用。

/login

退出账户。

/logout

/ 开头执行指定的 claude 命令,可以通过 /help 来显示可用命令。Claude Code 支持的完整命令见:命令 - Claude Code Docs

@ 开头指定文件。

! 进入终端命令执行模式。

# 加上内容,可以快速将一条信息写入记忆文件 CLAUDE.md。

& 带上命令,在后台并行执行,本地可以继续做其他事。

执行命令期间,按 esc 可以直接中断执行。

shift + tab 以切换交互模式:

  • ? for shortcuts:默认模式,修改文件前询问用户;
  • accept edits on:允许模型自动修改文件;
  • plan mode on:输出规划而不执行;

2.2 配置

查看当前状态、配置项、当前对话使用量、最近使用量统计,可以通过方向键切换 tab 查看。

/status
/config
/usage

查看正在使用的模型以及切换模型。

/model

查看以及设置推理深度。

/effort

启动快速模式,消耗更多 token 换来更高的回复速度。

/fast

查看和管理模型在本地环境的权限范围。

/permissions

自动生成 CLAUDE.md 文件。

/init

2.3 对话

清空当前对话历史。

/clear

列出之前的对话,可以选择一个打开继续对话。

/resume

命名当前对话的名称。

/rename

将当前对话或者代码回退到之前的一个点。

/rewind

将当前对话内容复制到粘贴板或导出到文件。

/export

提一个额外的问题,但不插入当前对话。

/btw "question"

从当前对话分叉处一个新会话,原来的对话不受影响。

/branch

2.4 上下文

查看上下文使用情况,包含系统提示词、skills、信息、可用空间等的占比。

/context

压缩上下文。

/compact

将一个额外的目录加入上下文。

/add-dir <dir>

查看和编辑当前已加载的 CLAUDE.md 文件。

/memory

2.5 代码

启用 plan mode。

/plan

检查本地代码修改。

/diff

对提交前的代码做 code review。

/review

启动三个 agent 分别从代码复用、代码质量、运行效率来审查改动的代码。

/simplify

2.6 分析

生成过去一段时间使用情况的分析报告。

/insights

2.7 任务

定时执行一个 prompt 或脚本。

/loop <间隔> <提示内容>

# 每 30 分钟检查部署状态
/loop 30m check the deploy

2.8 扩展能力

管理 agent 配置。

/agents

查看 hook 配置。

/hooks

列出可用的 skills。

/skills

管理 MCP 服务器。

/mcp

管理插件。

/plugin

3. 配置文件

3.1 .claude

Claude Code 在用户 home 目录下创建了 .claude 文件夹,用来管理全局的配置、记忆、历史和扩展能力。

~/.claude/ 目录结构如下:

~/.claude/
├── CLAUDE.md           # 全局记忆(最重要)
├── settings.json       # 全局配置
├── settings.local.json # 本机私有配置(可选)
├── projects/           # 各目录路径的项目的会话历史
├── commands/           # 自定义命令
├── agents/             # 自定义子 Agent
├── hooks/              # 钩子脚本
├── skills/             # SKILL
├── plugins/            # 已安装的插件
├── todos/              # 任务列表持久化
├── shell-snapshots/    # shell 环境快照
├── statsig/            # 遥测/实验开关缓存
├── ide/                # IDE 集成相关
├── file-history/       # 每个 session 中被编辑文件的版本快照,支持撤销操作
├── session-env/        # 存储每个 session 的环境变量、工作目录,用于 session 恢复
├── .credentials.json   # 登录凭证(敏感!)
├── history.jsonl       # 历史的对话内容以及对应的 session
└── logs/ 或 *.log      # 日志文件

项目目录下也有 .claude 文件夹,该文件夹仅作用于当前项目。

./.claude/ 目录结构如下:

./.claude/
├── settings.json       # 全局配置
├── settings.local.json # 本机私有配置(可选)
├── commands/           # 自定义斜杠命令 /xxx
└── agents/             # 自定义子 Agent

3.2 CLAUDE.md

CLAUDE.md 是 Claude Code 的记忆文件,用于给模型提供上下文,以提供项目背景、常用命令、编码规范、约束和设计模式、团队约定等信息,Claude Code 在执行时会自动读取这些文件,且会话压缩后会重新注入,不受压缩影响。

CLAUDE.md 文件名应该是全大写的,支持多层级加载,此外可以在 CLAUDE.md 中通过 @path 的方式导入其他文件,实现模块化拆分。

配置级别 文件路径 用途
全局用户级 ~/.claude/CLAUDE.md 个人偏好,通用行为规则
项目级 ./CLAUDE.md 项目架构,构建命令,团队规范
项目本地级 ./CLAUDE.local.md 个人在该项目的私有备注、本地路径、测试账号,不应该提交至 git,而是添加到 .gitignore
子目录 ./sub/CLAUDE.md 子模块的特殊说明
向上递归 父目录链上的 CLAUDE.md 从当前目录向上查找知道根目录或 home 目录,全部合并

Claude Code 在启动时,会从当前工作目录开始,向上递归直到 home 目录,收集每一级的 CLAUDE.md 和 CLAUDE.local.md,然后加载全局配置,切换到子目录时按需加载该目录下的 CLAUDE.md,将所有内容拼接进系统提示词,越靠近当前工作目录的文件优先级越高。

在记忆文件中使用 @ 加上文件路径,可以引用另一个记忆文件。

也可以使用更多 Agent 工具通用的 AGENTS.md,将 CLAUDE.md 改为 @AGENTS.md 加上 Claude 特有补充。

3.3 settings.json

settings.json 是 Claude Code 的配置文件,以 json 格式存储配置。

重要字段:

  • env:注入会话的环境变量,包含代理、API Key、替换的模型;
  • model:默认使用的模型;
  • effortLevel:推理程度;
  • alwaysThinkingEnabled:是否默认开启 extended thinking;
  • permissions:其中的 allow/ask/deny 成员分别记录哪些工具/命令无需确认执行、必须询问、不允许执行;
  • includeCoAuthoredBy:git 提交是否带 Claude 署名,默认带,不想要就关掉;
  • hooks:事件钩子,在特定事件自动跑脚本,如工具调用前后、发消息时、会话开始和结束时、发通知时;
  • statusLine:自定义状态栏;
  • extraKnownMarketplaces:已安装的 marketplace;
  • enabledPlugins:已安装的 plugin;

3.4 .credentials.json

.credentials.json 是登陆凭证,存放 OAuth token、订阅登陆信息,不能提交到 git 或分享。

3.5 commands

.claude/commands/ 目录中可以自定义命令,然后可以在对话中手动使用。

在 ~/.claude/commands/ 下定义的是所有项目都能使用的全局命令,在 ./.claude/commands/ 下定义的是当前项目的命令。

创建一个自定义命令 ~/.claude/commands/commit.md,文件名是以命令命名的 markdown 文件。

---
description: 查看当前暂存改动,按 Conventional Commits 规范生成并执行 git commit
argument-hint: [可选的额外说明]
allowed-tools: Bash(git status:*), Bash(git diff:*), Bash(git log:*), Bash(git commit:*)
---

你的任务:为当前暂存(staged)的改动生成一条高质量的 git commit。

执行步骤:

1. 运行 `git status` 确认有已暂存的改动;如果没有,提示我先 `git add` 后退出。
2. 运行 `git diff --staged` 查看具体变更。
3. 运行 `git log -5 --oneline` 参考本仓库历史的提交风格。
4. 综合 diff 内容,按 **Conventional Commits** 规范起草提交信息:
   - 格式:`<type>(<scope>): <subject>`
   - 常用 type:feat / fix / refactor / docs / test / chore / perf
   - subject 用祈使句、首字母小写、不加句号、≤ 72 字
   - 如有 break change 或多文件改动,加 body 说明"为什么"
5. 把草稿展示给我,等我确认后再用 `git commit -m "..."` 提交。
6. 如果用户在调用时附带了说明(见下方),把它作为额外上下文纳入。

用户附加说明:$ARGUMENTS

在 Claude Code 对话中像使用内置命令一样使用自定义命令。

/commit
/commit 这次改动包含数据库迁移,注意 review

3.6 agents

.claude/agents/ 目录中定义的是子代理(Sub Agent),可以被主 Agent 自动委派,也可以通过 `@agent名 显示调用。子 Agent 拥有独立的子对话和上下文窗口,结束后只把结论返回主 Agent。

在 ~/.claude/agents/ 下定义的是所有项目都能使用的全局子 Agent,在 ./.claude/agents/ 下定义的是当前项目的子 Agent。

创建一个子 Agent ~/.claude/agents/code-reviewer.md,文件名是以子 Agent 命名的 markdown 文件。

---
name: code-reviewer
description: 资深代码审查员。当用户请求 code review、PR review、审查改动、找潜在 bug / 安全问题时使用。
tools: Read, Grep, Glob, Bash(git diff:*), Bash(git log:*), Bash(git status:*)
model: claude-sonnet-4-5
---

你是一名拥有 10 年经验的资深工程师,专精代码审查。**你只读不写**——绝不修改任何文件。

## 工作流程

1. 通过 `git status` / `git diff` 了解待审查的改动范围(若用户指定了 PR 或文件,则聚焦该范围)。
2. 必要时用 Read / Grep 阅读相关上下文,理解改动在系统中的位置。
3. 按以下维度逐项审查:
   - **正确性**:边界情况、错误处理、并发、空值
   - **安全**:注入、鉴权、密钥泄漏、依赖漏洞
   - **性能**:复杂度、N+1 查询、不必要的同步阻塞
   - **可读性**:命名、函数粒度、注释是否解释"为什么"
   - **测试**:是否有对应测试、覆盖关键路径
   - **架构一致性**:是否符合项目既有模式

## 输出格式(严格遵守)

最终用以下结构汇报,**必须分级**:

### 🔴 必须修复(Blocker)
- 文件:行号 — 问题描述 — 建议

### 🟡 建议改进(Should)
- ...

### 🟢 可选优化(Nit)
- ...

### 总体评价
1–2 句话总结,并明确给出 **APPROVE / REQUEST CHANGES / COMMENT** 之一。

## 行为约束

- 不要做大段复述代码,引用关键行即可。
- 没有发现问题的维度可以直接说"无问题",不要硬凑。
- 用中文回答。

该子 Agent 可以在 Claude Code 对话中显示调用或者被自动委派。

@code-reviewer 帮我审查一下当前分支相对 main 的改动
我刚写完 src/auth/login.ts,帮我 review 一下

3.7 hooks

hooks 是一种允许在 agent 执行特定事件时自动运行 shell 命令或脚本的机制,通过监听 agent 生命周期中的事件触发。

常见事件包括:

  • PreToolUse: 工具调用前触发(可以阻止调用)
  • PostToolUse: 工具调用后触发
  • UserPromptSubmit: 用户提交消息时触发
  • Stop: agent 完成响应时触发
  • SubagentStop: 子 agent 完成时触发
  • Notification: 需要用户注意时触发
  • SessionStart / SessionEnd: 会话开始/结束时触发

执行脚本通过 stdin 接收 JSON 格式事件数据,通过 stdout 返回结果,通过 exit code 控制流程(exit 0 = 允许,exit 2 = 阻止并把 stderr 反馈给 agent)。

将需要执行的脚本放在 .claude/hooks/ 中:

#!/usr/bin/env bash

echo "pretooluse"
exit 0

在 setting.json 中配置 hooks:

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          {
            "type": "command",
            "command": "$CLAUDE_PROJECT_DIR/.claude/hooks/pretooluse.sh"
          }
        ]
      }
    ],
    "Stop": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "echo \"Session ended at $(date)\" >> ~/.claude/session.log"
          }
        ]
      }
    ],
  }
}

3.8 skills

skills 是一种按需加载的专项能力包,在 Claude 遇到特定任务时,读取预先写好的指南,按里面的步骤、规范、最佳实践来完成任务。

skills 存放在 .claude/skills 中,以 skill 名称命名一个文件夹,再在其中创建一个 SKILL.md,文件夹内可以额外放其他脚本、模版、参考文档供 skill 调用。在 ~/.claude/skills/<skill-name>/SKILL.md 下定义的是所有项目都能使用的全局 skill,在 ./.claude/skills/<skill-name>/SKILL.md下定义的是当前项目的 skill。

创建一个 skill 在 ~/.claude/skills/pr-splitter/SKILL.md,开头部分是 skill 的名称和介绍说明,后面部分则是具体的内容。

---
name: pr-splitter
description: Split current branch's changes into multiple small PRs. Use when the user asks to split a branch / PR / changes into smaller pieces.
---

# PR Splitter

## Steps

1. `git diff main...HEAD --stat` 查看所有改动
2. 按功能内聚把文件分组,每组 → 一个 PR
3. 对每组:
   - `git checkout main && git checkout -b <topic>`
   - cherry-pick 或 checkout 该组文件
   - 推送并 `gh pr create`

## Rules
- 每个 PR ≤ 400 行
- 每个 PR 必须能独立通过 CI
- 有依赖的 PR 在描述里标注 "depends on #N"

该 skill 可以在 Claude Code 对话中显示调用或者被自动触发,或者创建一个自定义命令并在其中显示调用该 skill。

用 pr-splitter skill 帮我把当前分支拆成多个 PR
帮我把这个分支 split 成几个小 PR

skill 目录还可以包含其他辅助文件,如示例、脚本。

my-skill/
├── SKILL.md           # 主要说明(必需)
├── template.md        # Claude 要填写的模板
├── examples/
│   └── sample.md      # 显示预期格式的示例输出
└── scripts/
    └── validate.sh    # Claude 可以执行的脚本

3.9 plugins

插件(Plugins)可以扩展 Claude Code 的能力,安装一个插件可能包含对应的命令、skill、子 agent、hooks、MCP 服务器。

使用 /plugin 命令查看和管理插件,已安装的插件将会记录到 setting.json 中。

# 打开插件面板
/plugin

# 安装插件
/plugin install <name>
/plugin install <plugin-name>@<marketplace-name>

# 列出插件
/plugin list

# 启用插件
/plugin enable <name>

# 停用插件
/plugin disable <name>

# 卸载插件
/plugin remove <name>

marketplace 是一份插件的列表清单。

# 列出 marketplace
/plugin marketplace list

# 添加 marketplace
/plugin marketplace add <repo>

# 更新 marketplace
/plugin marketplace update <repo>

# 移除 marketplace
/plugin marketplace remove <repo>

一些热门的 plugin 如下:

  • feature-dev:把做新功能拆成多阶段结构化工作流;
  • code-review:多 agent 代码审查;
  • context7:实时拉取库的最新文档,防止 Claude 训练数据的 API 过时;

安装了 plugin 后,会在 .claude/plugins/marketplaces/<marketplace-name>/plugins/<plugin-name>/ 内存放 plugin 支持的能力,而不是将其散落到 .claude 的默认文件夹内。示例如下:

my-plugin/
├── plugin.json                  # manifest:名称、版本、描述
├── commands/
│   ├── deploy.md                # /deploy 命令
│   └── review.md                # /review 命令
├── skills/
│   └── api-design/
│       ├── SKILL.md             # 技能描述与触发条件
│       └── reference.md         # 技能引用的资料
├── agents/
│   └── test-writer.md           # 子 agent 定义
├── hooks/
│   ├── hooks.json               # 钩子配置
│   └── pre-commit.sh            # 钩子脚本
└── .mcp.json                    # plugin 自带的 MCP 服务器

安装完对应的 plugin 之后,就可以使用其中包含的命令、skill、子 agent、hooks、MCP 服务器能力了。

4. 参考