Claude Code 完全配置指南:从安装到生产环境
Claude Code 是我用过的最强大的终端 AI 编程助手,没有之一。它不是一个增强版的 Copilot——它是完全不同的范式:你告诉它要做什么,它自己读代码、改文件、跑命令、git commit。我从 2024 年底开始用,到现在已经无法想象没有它的开发生活了。
但这把瑞士军刀有太多配置细节,不搞清楚很容易踩坑。这篇文章是我用了近两年、经历无数次踩坑后沉淀下来的完整指南。
一、安装:不止一种方式
1.1 原生安装(推荐)
这是 Anthropic 的官方推荐方式,带自动更新:
# 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)
# 稳定频道(滞后约一周,跳过有重大回归的版本)
brew install --cask claude-code
# 最新频道(跟随最新发布)
brew install --cask claude-code@latest坑点:Homebrew 安装不会自动更新。必须手动跑 brew upgrade claude-code。我踩过这个坑——三个月没升级,发现团队其他人在用的 /worktree 命令我根本没有。
# 建议加到 crontab 或用 launchd 定时执行
brew upgrade claude-code@latest1.3 WinGet(Windows)
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 登录(推荐):
claude
# 首次运行会弹出浏览器完成 OAuth 认证
# 令牌存储在 ~/.claude.json 中API Key 方式:
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 才发现。检查方式:
# 在 Claude Code 会话中运行
/status
# 看 "Authentication" 一栏,确认走的是 claude.ai 还是 API key2.2 关键环境变量全集
# === 认证 ===
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 或类似的企业中间人代理,需要额外设置:
# 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.5 | Sonnet 4.6 | Opus 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 切换模型的方式
# 命令行参数(单次会话)
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 秒)
# 开启 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 权限配置
{
"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:每次都需要你点击确认
我的安全原则:
- 永远 deny
.env和secrets目录——这是硬规则 - deny
curl和wget——防止 AI 被 prompt injection 后外泄数据 - deny
sudo——AI 不需要 root 权限 - allow
git、npm、go test等高频安全命令
4.2 Hooks——自动化你的工作流
Hooks 是 Claude Code 最被低估的功能。它让你在 Claude Code 的生命周期事件中执行自定义脚本。
{
"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 生成代码格式不一致的问题,而且完全不需要我手动介入。
#!/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
fi4.3 其他重要设置
{
"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:文件系统访问
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@anthropic-ai/mcp-server-filesystem",
"/home/user/projects",
"/home/user/documents"
]
}
}
}这让 Claude 可以读写指定目录。配合 permissions.allow 使用,不用每次都弹确认框。
例 2:GitHub 集成
{
"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 数据库
{
"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 管理技巧
# 查看已连接的 MCP 服务器
/mcp
# 重新加载 MCP 配置(修改 .mcp.json 后)
/mcp reload六、CLI 命令完全手册
不只是列命令——告诉你什么时候该用什么。
6.1 会话管理
claude # 启动交互式 REPL
claude "修复所有 ESLint 错误" # 单次非交互任务
claude -p "分析这段代码" # 打印输出后退出(适合 pipe)
claude --resume # 恢复上次会话
claude --continue # 继续最近一次会话
claude --project ./my-app # 指定项目目录启动claude -p 的最佳用法:
# 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:
{
"autoCompactEnabled": true,
"autoCompactThreshold": 0.75
}6.4 /doctor——当一切都不对劲的时候
/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每个项目独立配置的核心差别:
// 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 消息/天,高峰期限流更严)。
解决方案:
- 切到 Haiku 处理简单任务(
/model claude-haiku-4-5-20250514) - 升级到 Max 计划(5x 或 20x 额度)
- 切到 API Key 模式(按量计费,几乎不限制)
- 避免高峰期使用(美国工作日 9am-5pm PT 最拥堵)
8.2 ESM/CJS 模块问题
Error: require() of ES Module not supported某些 MCP 服务器或插件使用 ESM 模块但 Node 环境配置不对。解决方案:
// package.json 中加入
{ "type": "module" }
// 或确保 Node.js >= 18
node --version8.3 权限弹窗太多
如果你在 auto mode 下还是遇到大量权限确认弹窗,检查你的 permissions.allow 配置:
{
"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 优先于 ask,ask 优先于 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 文件即可定义自定义命令:
<!-- .claude/commands/review-pr.md -->
你是一个高级代码审查员。请审查当前分支相对于 main 的所有改动。
检查:
1. 潜在的安全漏洞
2. 性能问题
3. 代码规范一致性
4. 测试覆盖率缺失
生成一份 Markdown 格式的审查报告。使用:在会话中输入 /review-pr 即可触发。
9.2 Hook 自动格式化脚本
#!/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 我的生产环境配置
{
"$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+ 个版本。花点时间把配置做好,回报远超投入。
你的行动清单:
- 安装 Claude Code(用 Homebrew 或原生安装)
- 运行
/init为你的主力项目初始化配置 - 在
CLAUDE.md中写下项目的编码规范和架构约定 - 配置
permissions.allow/deny——安全第一 - 至少配一个 PostToolUse hook(自动格式化)
- 加入至少一个 MCP 服务器(推荐从 GitHub 开始)
- 用一周时间养成习惯,然后回头优化配置
如果你只记住一件事:写一个好的 CLAUDE.md。它决定了 Claude Code 理解你项目的深度。一个拥有完整架构说明、编码规范、常用命令的 CLAUDE.md,能让 AI 的效率提升 3-5 倍。