Skip to content

Claude Code 完全配置指南:从安装到生产环境

Claude Code 是我用过的最强大的终端 AI 编程助手,没有之一。它不是一个增强版的 Copilot——它是完全不同的范式:你告诉它要做什么,它自己读代码、改文件、跑命令、git commit。我从 2024 年底开始用,到现在已经无法想象没有它的开发生活了。

但这把瑞士军刀有太多配置细节,不搞清楚很容易踩坑。这篇文章是我用了近两年、经历无数次踩坑后沉淀下来的完整指南。


一、安装:不止一种方式

1.1 原生安装(推荐)

这是 Anthropic 的官方推荐方式,带自动更新:

bash
# 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

原生安装会自动在后台更新,保证你始终在 latest 频道。不需要手动 npm upgrade

1.2 Homebrew(macOS)

bash
# 稳定频道(滞后约一周,跳过有重大回归的版本)
brew install --cask claude-code

# 最新频道(跟随最新发布)
brew install --cask claude-code@latest

坑点:Homebrew 安装不会自动更新。必须手动跑 brew upgrade claude-code。我踩过这个坑——三个月没升级,发现团队其他人在用的 /worktree 命令我根本没有。

bash
# 建议加到 crontab 或用 launchd 定时执行
brew upgrade claude-code@latest

1.3 WinGet(Windows)

powershell
winget install Anthropic.ClaudeCode

同样不会自动更新,需要 winget upgrade Anthropic.ClaudeCode

1.4 版本锁定

如果你是团队使用,建议锁定版本以保证一致性。原生安装不支持版本锁定,用 Homebrew 可以通过 brew pin claude-code 实现(但不推荐,因为 bug fix 和功能更新很快)。

更好的做法是团队共享一个 CLAUDE.md 文件,在里面声明兼容的 Claude Code 版本范围,而不是锁死版本。

1.5 VS Code 扩展 vs JetBrains 插件 vs 终端

Claude Code 有四种使用形态:

  • 终端 CLI:功能最完整,我 90% 的时间都用这个
  • VS Code 扩展:内嵌 diff review,适合不习惯终端的开发者
  • JetBrains 插件:IntelliJ/PyCharm/WebStorm 内嵌
  • 桌面应用 + Web 版:可视化界面,支持后台定时任务

它们共享同一套配置文件和会话引擎,所以你的 CLAUDE.md、MCP 服务器等在所有环境都通用。


二、认证与环境变量

2.1 两种认证方式

OAuth 登录(推荐)

bash
claude
# 首次运行会弹出浏览器完成 OAuth 认证
# 令牌存储在 ~/.claude.json 中

API Key 方式

bash
export ANTHROPIC_API_KEY="sk-ant-api03-xxxxxxxxxxxxx"

# 或者写入 shell 配置文件永久生效
echo 'export ANTHROPIC_API_KEY="sk-ant-api03-xxxxx"' >> ~/.zshrc

不同认证方式影响计费模式:

  • OAuth 登录 → 走 Claude 订阅账户(Pro/Max),无额外 API 费用
  • API Key → 走 Anthropic Console 账户,按 API 价格计费,直接从余额扣

我踩过的坑:同时设置了 ANTHROPIC_API_KEY 环境变量且登录了 OAuth,导致 Clude Code 优先用 API key 计费,白白烧了 $80 才发现。检查方式:

bash
# 在 Claude Code 会话中运行
/status
# 看 "Authentication" 一栏,确认走的是 claude.ai 还是 API key

2.2 关键环境变量全集

bash
# === 认证 ===
export ANTHROPIC_API_KEY="sk-ant-api03-xxxxx"     # API Key 认证
export ANTHROPIC_BASE_URL="https://api.anthropic.com"  # API endpoint

# === 代理 ===
export HTTP_PROXY="http://127.0.0.1:7890"          # HTTP 代理
export HTTPS_PROXY="http://127.0.0.1:7890"         # HTTPS 代理
export NO_PROXY="localhost,127.0.0.1,.internal"    # 不走代理的域名

# === 性能与行为 ===
export CLAUDE_CODE_DISABLE_THINKING="1"            # 禁用 extended thinking(省钱)
export CLAUDE_CODE_ENABLE_TELEMETRY="0"            # 关闭遥测(隐私)
export CLAUDE_CODE_DISABLE_AUTO_MEMORY="1"         # 禁用自动记忆
export CLAUDE_CODE_SKIP_PROMPT_HISTORY="1"         # 不写会话历史到磁盘
export DISABLE_AUTOUPDATER="1"                     # 禁止自动更新

# === 调试 ===
export CLAUDE_CODE_DEBUG="1"                       # 调试模式,输出更多日志

企业 VPN 代理特别说明:如果你的公司使用了 Zscaler 或类似的企业中间人代理,需要额外设置:

bash
# CA 证书信任
export NODE_EXTRA_CA_CERTS="/path/to/your/corp-ca-bundle.pem"

# 或者用 proxy-agent
export ANTHROPIC_BASE_URL="https://your-proxy.company.com/v1"

三、模型选择深度解析(2026年5月最新模型)

Claude Code 支持三档模型。选错模型就像用挖掘机拧螺丝——要么浪费钱,要么拧不动。

3.1 模型对照表

属性Haiku 4.5Sonnet 4.6Opus 4.8
速度⚡ 极快(~0.5s 首 token)🚀 快(~1s 首 token)🐢 慢(~2-3s 首 token)
代码能力基础重构、补全日常开发完整能力复杂架构、多文件重构
API 输入价格$1/1M tokens$3/1M tokens$5/1M tokens
API 输出价格$5/1M tokens$15/1M tokens$25/1M tokens
适合的 token 预算任何场景需要推理的任务需要最深度推理的任务

3.2 什么时候用什么模型?

Haiku 4.5 适合:

  • 格式化和 lint 修复:"把 var 全部改成 const"
  • 简单重构:"给这个函数加 JSDoc 注释"
  • 代码补全类任务
  • 处理大量文件但每个文件改动很小

实际延迟数据:Haiku 处理一个简单文件编辑约 2-4 秒完成,Sonnet 约 5-10 秒,Opus 约 10-25 秒。

Sonnet 4.6(默认,日常主力)适合:

  • 新功能开发
  • Bug 修复和调试
  • 代码审查
  • 编写测试
  • 90% 的日常编程场景

Opus 4.8 适合:

  • 复杂架构重构——涉及 5+ 文件、需要理解多层抽象
  • 技术方案设计——需要深度分析多个选项的 trade-off
  • 疑难 bug 排查——那种试了三次 Sonnet 都修不好的 bug
  • Code Review——需要深度理解业务逻辑的 review

我遇到的一个真实案例:一个涉及 8 个文件的 React Router 迁移,Sonnet 试了两次都搞错了路由嵌套关系。切到 Opus 后一次搞定。多花的 $0.5 省下了 20 分钟的反复调试。这就是"贵的模型更省钱"的典型场景。

3.3 切换模型的方式

bash
# 命令行参数(单次会话)
claude --model claude-sonnet-4-6-20250514
claude --model claude-opus-4-8-20250514
claude --model claude-haiku-4-5-20250514

# 会话内切换(交互模式)
/model
# 会出现模型选择菜单

# 在 settings.json 中设为默认
{
  "model": "claude-sonnet-4-6-20250514"
}

Pro Tip:你可以为不同项目设置不同的默认模型。前端项目用 Sonnet,核心库用 Opus,工具脚本用 Haiku。

3.4 Extended Thinking——什么时候打开?

Extended thinking 让模型在回答前"深思熟虑",对数学、逻辑、复杂架构问题有帮助。但代价是:

  • 消耗更多 tokens(思考过程的 token 也计费)
  • 增加首 token 延迟(多等 3-10 秒)
bash
# 开启 extended thinking
/effort xhigh   # 最高深度
/effort high    # 高深度
/effort medium  # 中等(默认)
/effort low     # 低深度

# 或通过环境变量
export CLAUDE_CODE_EFFORT_LEVEL="xhigh"

我的经验法则:写业务逻辑不用开,设计数据库 schema 或排查复杂并发问题时开 high


四、配置文件完全参考

Claude Code 的配置体系有四个层级(从高到低优先级):

层级路径影响范围是否共享
Managed系统级策略(IT 部署)整机用户
User~/.claude/settings.json你的所有项目
Project.claude/settings.json此仓库所有协作者是 (commit)
Local.claude/settings.local.json仅你在此仓库否 (gitignored)

4.1 权限配置

json
{
  "permissions": {
    "allow": [
      "Bash(npm run *)",
      "Bash(npx *)",
      "Bash(git *)",
      "Bash(python *)",
      "Bash(go test *)",
      "Read(~/.zshrc)"
    ],
    "deny": [
      "Bash(curl *)",
      "Bash(wget *)",
      "Bash(rm -rf *)",
      "Bash(sudo *)",
      "Bash(chmod 777 *)",
      "Read(./.env)",
      "Read(./.env.*)",
      "Read(./secrets/**)",
      "Read(**/credentials*)"
    ],
    "ask": [
      "Bash(docker *)",
      "Bash(kubectl *)"
    ]
  }
}

解释

  • allow:自动批准,不弹确认框
  • deny:直接拒绝,AI 无法执行
  • ask:每次都需要你点击确认

我的安全原则

  1. 永远 deny .envsecrets 目录——这是硬规则
  2. deny curlwget——防止 AI 被 prompt injection 后外泄数据
  3. deny sudo——AI 不需要 root 权限
  4. allow gitnpmgo test 等高频安全命令

4.2 Hooks——自动化你的工作流

Hooks 是 Claude Code 最被低估的功能。它让你在 Claude Code 的生命周期事件中执行自定义脚本。

json
{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "command",
            "command": "~/.claude/hooks/check-syntax.sh"
          }
        ]
      }
    ],
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "command",
            "command": "npx prettier --write ${CLAUDE_TOOL_FILE_PATH}"
          }
        ]
      }
    ],
    "Notification": [
      {
        "matcher": "Stop|Done",
        "hooks": [
          {
            "type": "command",
            "command": "notify-send 'Claude Code' 'Task completed'"
          }
        ]
      }
    ]
  }
}

实战例子:我在 PostToolUse 上挂了 Prettier 自动格式化——每次 Claude 修改文件后自动 format。这避免了 AI 生成代码格式不一致的问题,而且完全不需要我手动介入。

bash
#!/bin/bash
# ~/.claude/hooks/check-syntax.sh
# 在 Claude 修改任何 TypeScript 文件前运行类型检查
if [[ "$CLAUDE_TOOL_FILE_PATH" == *.ts ]] || [[ "$CLAUDE_TOOL_FILE_PATH" == *.tsx ]]; then
    npx tsc --noEmit "$CLAUDE_TOOL_FILE_PATH" 2>/dev/null
fi

4.3 其他重要设置

json
{
  "model": "claude-sonnet-4-6-20250514",
  "effortLevel": "medium",
  "alwaysThinkingEnabled": false,
  "autoMemoryEnabled": true,
  "includeGitInstructions": true,
  "cleanupPeriodDays": 30,
  "autoUpdatesChannel": "latest",
  "env": {
    "CLAUDE_CODE_ENABLE_TELEMETRY": "0",
    "CLAUDE_CODE_DISABLE_THINKING": "0"
  }
}

五、MCP 服务器配置实战

MCP(Model Context Protocol)是让 Claude Code 连接外部工具的标准协议。本质上是给 AI 装插件。

5.1 配置位置

  • 用户全局 MCP~/.claude.json 中的 mcpServers 字段
  • 项目级 MCP.mcp.json(可 commit 到仓库共享给团队)
  • 本地覆盖 MCP~/.claude.json 中按项目区分

5.2 三个实战例子

例 1:文件系统访问

json
{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": [
        "-y",
        "@anthropic-ai/mcp-server-filesystem",
        "/home/user/projects",
        "/home/user/documents"
      ]
    }
  }
}

这让 Claude 可以读写指定目录。配合 permissions.allow 使用,不用每次都弹确认框。

例 2:GitHub 集成

json
{
  "mcpServers": {
    "github": {
      "command": "npx",
      "args": ["-y", "@anthropic-ai/mcp-server-github"],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "${GITHUB_TOKEN}"
      }
    }
  }
}

配置后 Claude 可以帮你创建 PR、查看 issue、review 代码,直接在对话里操作 GitHub。

例 3:PostgreSQL 数据库

json
{
  "mcpServers": {
    "postgres": {
      "command": "npx",
      "args": ["-y", "@anthropic-ai/mcp-server-postgres"],
      "env": {
        "DATABASE_URL": "postgresql://localhost:5432/mydb"
      }
    }
  }
}

这极其强大。你可以直接说"查询过去 7 天的用户注册趋势并画个图",Claude 会自己写 SQL、执行、用 Python 绘图。

5.3 MCP 管理技巧

bash
# 查看已连接的 MCP 服务器
/mcp

# 重新加载 MCP 配置(修改 .mcp.json 后)
/mcp reload

六、CLI 命令完全手册

不只是列命令——告诉你什么时候该用什么

6.1 会话管理

bash
claude                           # 启动交互式 REPL
claude "修复所有 ESLint 错误"      # 单次非交互任务
claude -p "分析这段代码"           # 打印输出后退出(适合 pipe)
claude --resume                  # 恢复上次会话
claude --continue                # 继续最近一次会话
claude --project ./my-app        # 指定项目目录启动

claude -p 的最佳用法

bash
# pipe 模式——把 Claude 串进 Unix 管道
tail -200 app.log | claude -p "分析这些日志,找出异常模式"
git diff main | claude -p "review 这些改动,列出安全问题"
cat package.json | claude -p "这些依赖有哪些已知漏洞?"

6.2 会话内命令

命令用途使用时机
/compact压缩上下文会话很长、token 快满了,cost/速度飙升时
/clear清空会话话题完全切换,不想让之前对话影响新任务
/model切换模型简单任务用 Haiku 省钱,复杂问题切 Opus
/permissions查看/修改权限有些命令总是被阻止需要调整
/doctor自诊断Claude Code 行为异常时排查
/status查看状态看当前模型、token 用量、认证方式
/init初始化项目配置新项目首次使用 Claude Code
/mcp管理 MCP 服务器添加/删除/重载集成工具
/add-dir添加工作目录需要同时编辑多个项目目录时
/memory查看/编辑自动记忆手动管理 Claude 积累的项目知识
/hooks管理 hooks添加/修改自动化脚本
/cost查看费用API 用户必用,了解当前会话烧了多少钱

6.3 /compact 详解——最容易被忽视的命令

当你的会话越来越长(对话了 50 轮以上),每次新消息的 token 消耗会指数级增长。因为 Claude 需要"读"完整个对话历史才能理解上下文。

/compact 会把历史对话压缩成摘要,释放上下文窗口。什么时候该 compact

  • Claude 的回复开始变慢(首 token 延迟 >5 秒)
  • /status 显示 context usage > 80%
  • 你已经就一个话题对话超过 30 轮
  • 切换到一个全新的任务

Pro Tip:在 .claude/settings.json 中设置自动 compact:

json
{
  "autoCompactEnabled": true,
  "autoCompactThreshold": 0.75
}

6.4 /doctor——当一切都不对劲的时候

bash
/doctor

它会检查:

  • 认证是否有效
  • 网络连通性
  • 配置文件语法
  • 权限是否正确
  • MCP 服务器状态

我遇到过一次诡异的问题——Claude Code 能启动但无法执行任何 Bash 命令。/doctor 告诉我 permissions 里不小心 deny 了所有 Bash。没有这个诊断命令我可能要 debug 一小时。


七、多项目配置管理

~/projects/
├── frontend/
│   ├── .claude/
│   │   └── settings.json    # 前端配置:Sonnet,限制 src/ 目录
│   └── CLAUDE.md             # 项目规范
├── backend/
│   ├── .claude/
│   │   └── settings.json    # 后端配置:Opus,开放更多工具
│   └── CLAUDE.md
└── infra/
    ├── .claude/
    │   └── settings.json    # 基础设施:限制危险操作,ask docker/kubectl
    └── CLAUDE.md

每个项目独立配置的核心差别

json
// frontend/.claude/settings.json
{
  "model": "claude-sonnet-4-6-20250514",
  "permissions": {
    "allow": ["Bash(npm *)", "Bash(npx *)", "Bash(git *)"],
    "deny": ["Read(./.env)", "Bash(docker *)"]
  }
}

// backend/.claude/settings.json
{
  "model": "claude-opus-4-8-20250514",
  "permissions": {
    "allow": ["Bash(go *)", "Bash(docker compose *)", "Bash(make *)"]
  }
}

// infra/.claude/settings.json
{
  "permissions": {
    "allow": ["Bash(terraform plan *)"],
    "ask": ["Bash(terraform apply *)", "Bash(kubectl apply *)"],
    "deny": ["Bash(terraform destroy *)"]
  }
}

团队共享配置.claude/settings.json 可以 commit 到仓库,但 .claude/settings.local.json 应加入 .gitignore。建议提供 .claude/settings.example.json 作为模板。


八、常见问题与解决方案

8.1 限流问题

Error: Rate limited. You have exceeded your usage quota.

原因:Claude Pro 订阅有使用限制(约 45-100 条 Sonnet 消息/天,高峰期限流更严)。

解决方案

  1. 切到 Haiku 处理简单任务(/model claude-haiku-4-5-20250514
  2. 升级到 Max 计划(5x 或 20x 额度)
  3. 切到 API Key 模式(按量计费,几乎不限制)
  4. 避免高峰期使用(美国工作日 9am-5pm PT 最拥堵)

8.2 ESM/CJS 模块问题

Error: require() of ES Module not supported

某些 MCP 服务器或插件使用 ESM 模块但 Node 环境配置不对。解决方案:

json
// package.json 中加入
{ "type": "module" }

// 或确保 Node.js >= 18
node --version

8.3 权限弹窗太多

如果你在 auto mode 下还是遇到大量权限确认弹窗,检查你的 permissions.allow 配置:

json
{
  "permissions": {
    "allow": [
      "Bash(npm run *)",
      "Bash(npx *)",
      "Bash(git diff)",
      "Bash(git status)",
      "Bash(git add *)",
      "Bash(git commit *)",
      "Bash(git push)",
      "Bash(python *)",
      "Read(**/*.ts)",
      "Read(**/*.tsx)",
      "Read(**/*.json)",
      "Edit(**/*.ts)",
      "Edit(**/*.tsx)",
      "Write(**/*)"
    ],
    "deny": [
      "Bash(rm *)",
      "Bash(sudo *)",
      "Read(./.env*)",
      "Read(**/secrets/**)"
    ]
  }
}

注意模式匹配的顺序:allow 优先于 askask 优先于 deny。但 deny 对安全问题始终是硬阻止。

8.4 Windows 上的 Git Bash 问题

在 Windows 原生(非 WSL)上使用 Claude Code,强烈建议安装 Git for Windows,否则 Claude Code 只能用 PowerShell 作为 shell 工具,许多命令会失败。


九、高级技巧

9.1 自定义斜杠命令(Slash Commands)

.claude/commands/ 目录下创建 markdown 文件即可定义自定义命令:

markdown
<!-- .claude/commands/review-pr.md -->
你是一个高级代码审查员。请审查当前分支相对于 main 的所有改动。
检查:
1. 潜在的安全漏洞
2. 性能问题
3. 代码规范一致性
4. 测试覆盖率缺失

生成一份 Markdown 格式的审查报告。

使用:在会话中输入 /review-pr 即可触发。

9.2 Hook 自动格式化脚本

bash
#!/bin/bash
# ~/.claude/hooks/auto-format.sh
# 放在 PostToolUse hook 中,每次 Claude 编辑文件后自动格式化

FILE="$CLAUDE_TOOL_FILE_PATH"

case "$FILE" in
    *.ts|*.tsx|*.js|*.jsx)
        npx prettier --write "$FILE"
        ;;
    *.py)
        ruff format "$FILE"
        ;;
    *.go)
        gofmt -w "$FILE"
        ;;
    *.md)
        npx prettier --write "$FILE"
        ;;
esac

echo "[Hook] Auto-formatted: $FILE"

9.3 我的生产环境配置

json
{
  "$schema": "https://json.schemastore.org/claude-code-settings.json",
  "model": "claude-sonnet-4-6-20250514",
  "effortLevel": "medium",
  "autoCompactEnabled": true,
  "autoCompactThreshold": 0.75,
  "autoMemoryEnabled": true,
  "includeGitInstructions": true,
  "cleanupPeriodDays": 14,
  "autoUpdatesChannel": "latest",
  "permissions": {
    "allow": [
      "Bash(npm run *)",
      "Bash(npx *)",
      "Bash(git diff)",
      "Bash(git status)",
      "Bash(git log *)",
      "Bash(git add *)",
      "Bash(git commit *)",
      "Bash(python *)",
      "Bash(go test *)",
      "Bash(go build *)",
      "Bash(ruff *)",
      "Bash(prettier *)",
      "Read(**/*.ts)",
      "Read(**/*.tsx)",
      "Read(**/*.go)",
      "Read(**/*.json)",
      "Read(**/*.yaml)",
      "Read(**/*.yml)",
      "Edit(**/*.ts)",
      "Edit(**/*.tsx)",
      "Edit(**/*.go)",
      "Edit(**/*.md)",
      "Write(**/*)"
    ],
    "deny": [
      "Bash(rm -rf *)",
      "Bash(sudo *)",
      "Bash(curl *)",
      "Bash(wget *)",
      "Read(./.env)",
      "Read(./.env.*)",
      "Read(./secrets/**)",
      "Read(**/credentials*)",
      "Read(**/.env*)"
    ],
    "ask": [
      "Bash(docker *)",
      "Bash(git push *)",
      "Bash(git reset --hard *)"
    ]
  },
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "command",
            "command": "~/.claude/hooks/auto-format.sh"
          }
        ]
      }
    ]
  },
  "env": {
    "CLAUDE_CODE_ENABLE_TELEMETRY": "0"
  }
}

十、总结

Claude Code 不是一个你装上就能用到退休的静态工具。它更新非常快——2026 年初到 5 月已经发布了 30+ 个版本。花点时间把配置做好,回报远超投入。

你的行动清单

  1. 安装 Claude Code(用 Homebrew 或原生安装)
  2. 运行 /init 为你的主力项目初始化配置
  3. CLAUDE.md 中写下项目的编码规范和架构约定
  4. 配置 permissions.allow/deny——安全第一
  5. 至少配一个 PostToolUse hook(自动格式化)
  6. 加入至少一个 MCP 服务器(推荐从 GitHub 开始)
  7. 用一周时间养成习惯,然后回头优化配置

如果你只记住一件事:写一个好的 CLAUDE.md。它决定了 Claude Code 理解你项目的深度。一个拥有完整架构说明、编码规范、常用命令的 CLAUDE.md,能让 AI 的效率提升 3-5 倍。

基于 VitePress 构建 | 部署于 Cloudflare Pages