🎯 阶段六:Claude Code CLI 高阶精通与性能优化

自定义配置 | Token 优化 | 工具链联动 | 批量自动化

📑 本章目录
  1. 自定义全局配置:settings.json 深度定制
  2. 高级会话技巧:长任务拆分、自我反思、高精度输出
  3. Token 与性能优化:减少消耗、提速响应、大项目适配
  4. 高级工具链联动:Shell + Python + Git 全流程
  5. 批量自动化脚本:封装 CLI 实现一键开发
  6. 课后练习

6.1 自定义全局配置:settings.json 深度定制

配置文件体系全景

文件位置作用
settings.json~/.claude/settings.json全局权限、工具策略、Hook 配置
config.json~/.claude/config.json用户偏好(主题、模型、输出风格)
CLAUDE.md项目根目录项目专属上下文和指令
.claudeignore项目根目录Claude 忽略的文件模式
keybindings.json~/.claude/keybindings.json键盘快捷键自定义

settings.json 完整配置示例

# === 创建专业的 settings.json ===
cat > ~/.claude/settings.json << 'JSONEOF'
{
  "permissions": {
    "allow": [
      "Bash(git:status,git:diff,git:log,git:add,git:commit,git:branch)",
      "Bash(npm:test,npm:run,npm:ls,npm:install,npm:update)",
      "Bash(node:*,python:*,python3:*)",
      "Bash(ls:*,cat:*,find:*,grep:*,wc:*,head:*,tail:*)",
      "Bash(mkdir:*,cp:*,mv:*,touch:*)",
      "Bash(which:*,echo:*,env:*,pwd:*)",
      "Read(/home/**)",
      "WebSearch",
      "WebFetch"
    ],
    "deny": [
      "Bash(rm:-rf:*)",
      "Bash(sudo:*)",
      "Bash(chmod:777:*)",
      "Bash(curl:*|bash*,wget:*|bash*)",
      "Bash(>: /dev/*,dd:*)",
      "Bash(git:push:--force*,git:reset:--hard*)",
      "Read(/etc/passwd,/etc/shadow,/root/**)"
    ],
    "defaultMode": "ask"
  },
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash(rm:*)",
        "hook": "warn",
        "message": "⚠️ 即将执行删除操作"
      }
    ]
  },
  "model": "claude-sonnet-4-6",
  "theme": "dark",
  "outputStyle": "default"
}
JSONEOF

配置字段详解

CLAUDE.md — 项目专属指令文件

# === 在项目根目录创建 CLAUDE.md ===
cd ~/my-project

cat > CLAUDE.md << 'EOF'
# 项目上下文

## 技术栈
- 后端:Node.js 20 + Express 4.x
- 数据库:PostgreSQL 15
- 测试:Jest + Supertest

## 代码规范
- 使用 const 优先,需要重新赋值时用 let
- 所有异步操作使用 async/await
- 错误处理统一使用 AppError 类
- API 响应格式:{ success: boolean, data?: any, error?: { message, code } }

## 目录约定
- src/routes/ — 路由定义(薄层,只做路由映射)
- src/controllers/ — 业务逻辑处理
- src/models/ — 数据库模型
- src/middleware/ — 中间件
- src/utils/ — 工具函数

## 禁止操作
- 不要修改数据库 schema 文件
- 不要删除 tests/ 下的任何文件
- 不要改动 package.json 的依赖版本
EOF
💡 CLAUDE.md 的作用:每次 Claude 进入该项目时,会自动读取 CLAUDE.md 作为持久化上下文。这样你就不需要每次会话都重复说明项目规范。

6.2 高级会话技巧

技巧 1:长任务拆分策略

# === 使用任务分层方法 ===

# 第一层:需求分析(独立会话)
claude -p "分析这个电商项目的代码,列出需要重构的模块,按优先级排序" > refactor-plan.txt

# 第二层:按计划逐个模块执行(多个独立会话)
claude
# 会话:重构用户模块(根据 refactor-plan.txt 第1项)
# /exit
claude
# 会话:重构订单模块(根据 refactor-plan.txt 第2项)
# /exit

# 第三层:整体验证(独立会话)
claude -p "运行 npm test,列出所有失败的测试,逐个修复"

技巧 2:自我反思(Self-Reflection)模式

# 让 Claude 审查自己的输出
"请你完成以下任务后,用 // REVIEW 注释标注你可能不确定的地方,
并在最后列出你觉得需要我确认的决策点。

任务:重构 src/services/payment.js"
# 双重检查模式
"先分析这段代码的问题,给出修复方案。
然后,用怀疑的态度重新审视你的修复方案,
找出可能存在的边界情况遗漏。"

技巧 3:高精度输出模式

# === 开启高精度输出的提示词技巧 ===

# 要求逐行解释
"逐行解释这个函数,包括每一行的:
- 作用
- 可能的异常
- 与上下行的关系"

# 要求给出多种方案对比
"对于这个需求,给出 3 种不同的实现方案:
方案A:最简实现(10行以内)
方案B:最健壮实现(完整错误处理)
方案C:最优性能实现
并为每个方案标注优缺点"

# 要求标注置信度
"回答以下问题,对于每个结论标注你的置信度(高/中/低),
对于低置信度的结论,说明为什么不确定。"

技巧 4:会话缓存策略

# === 利用 CLAUDE.md 做跨会话记忆 ===

# 在 CLAUDE.md 中记录重要决策
cat >> CLAUDE.md << 'EOF'

## 会话决策记录(2026-06-12)
- 决定使用 JWT 而非 Session 认证(原因:无状态,适合微服务)
- 数据库连接池大小设为 20(压测结论)
- API 版本前缀统一为 /api/v2/
EOF

# 下次会话 Claude 会自动读取这些决策

6.3 Token 与性能优化

Token 消耗原理

每次对话中,Claude 需要将全部对话历史作为输入发送,这消耗 input token。你的代码文件、系统提示也计入 input token。输出消耗 output token。

优化核心:减少不必要的输入,提高输出的有效信息密度。

策略 1:使用 .claudeignore 减少上下文

# === 为大型项目创建 .claudeignore ===
cat > .claudeignore << 'EOF'
# 依赖目录(最大的上下文杀手)
node_modules/
venv/
.venv/
vendor/
__pycache__/

# 构建产物
dist/
build/
.next/
.nuxt/
output/

# 压缩文件
*.min.js
*.min.css
*.bundle.js
*.map

# 锁文件
package-lock.json
yarn.lock
pnpm-lock.yaml

# 媒体文件
*.png
*.jpg
*.svg
*.mp4

# 测试覆盖率
coverage/
.nyc_output/

# 日志
*.log
logs/

# IDE 配置
.vscode/
.idea/
EOF

策略 2:控制单次会话范围

# === Token 消耗对比 ===

# ❌ 低效:一次会话跨多个模块
# "先改用户模块,再改订单模块,最后改支付模块"
# → 上下文累积 100K+ token

# ✅ 高效:一个会话聚焦一个模块
# 会话1:只改用户模块 → 40K token
# /clear
# 会话2:只改订单模块 → 35K token
# /clear
# 会话3:只改支付模块 → 30K token

策略 3:精确文件引用

# ❌ 低效
"分析所有代码"
# Claude 可能读取 200 个文件,150K token

# ✅ 高效
"只分析 src/api/ 目录下的 5 个路由文件"
# Claude 只读 5 个文件,10K token

策略 4:模型选择优化

# === 根据任务选择模型 ===

# 简单任务 → Haiku(最快、最便宜)
claude -p "把这段 JSON 格式化" --model claude-haiku-4-5-20251001

# 日常开发 → Sonnet(默认、平衡)
claude -p "写一个 Express 路由处理函数"

# 复杂分析 → Opus(最强、最贵)
claude -p "分析这个分布式系统的一致性问题" --model claude-opus-4-8

策略 5:使用 /compact 主动压缩

# 在交互模式中,定期检查 token 消耗
/cost

# 当使用超过 50% 时,主动压缩
/compact

# 如果即将切换话题,直接清空
/clear

大项目适配方案

# === 超大项目(500+ 文件)的使用策略 ===

# 1. 创建完善的 .claudeignore
# 2. 使用 CLAUDE.md 预加载关键信息
# 3. 按子目录分模块使用 Claude
#    cd ~/big-project/packages/frontend && claude  # 只做前端
#    cd ~/big-project/packages/backend && claude   # 只做后端
# 4. 每个模块维护自己的 CLAUDE.md
# 5. 使用 -p 模式做快速任务,避免打开交互会话

6.4 高级工具链联动

Shell 命令联动

# === 模式1:用 Claude 生成命令,shell 执行 ===
claude -p "生成一个查找所有大于 100MB 文件的 find 命令" | bash

# === 模式2:Shell 收集信息,Claude 分析 ===
find . -name "*.js" -exec wc -l {} + | sort -rn | head -20 | \
  claude -p "分析哪些 JS 文件最长,是否需要拆分"

# === 模式3:Claude 生成脚本,直接执行 ===
claude -p "生成一个检查服务器磁盘空间的 bash 脚本" > check-disk.sh
chmod +x check-disk.sh
./check-disk.sh

Python 脚本联动

# === 用 Claude 生成 Python 数据处理脚本 ===
cat data.csv | claude -p "生成一个 Python 脚本来分析这个 CSV" > analyze.py
python3 analyze.py

# === 管道:Python 输出 → Claude 分析 ===
python3 fetch-data.py | claude -p "分析这些数据,生成摘要报告"

# === Claude 编写 + 调试 Python ===
cd ~/my-python-project && claude
# "写一个 data_processor.py 处理 CSV 文件"
# "运行 python3 data_processor.py,如果有错误请修复"

Git 全流程自动化

# === 一条管道完成 git 工作流 ===

# 1. 查看改动
git diff

# 2. 让 Claude 生成 commit message
git diff --staged | claude -p "生成 conventional commit message" | \
  xargs -I {} git commit -m "{}"

# 3. 让 Claude 生成 PR 描述
git log main..HEAD --oneline | claude -p "生成 Pull Request 描述"

# 4. 让 Claude 做 code review
git diff main..HEAD | claude -p "审查这些改动,指出潜在问题"

组合工具链示例:一键发布流程

# === 创建 release.sh ===
cat > release.sh << 'SCRIPT'
#!/bin/bash
set -e

echo "📦 开始发布流程..."

# 1. Claude 分析改动并生成版本号建议
VERSION=$(git log $(git describe --tags --abbrev=0 2>/dev/null || echo HEAD)..HEAD --oneline | \
  claude -p "根据这些 commit,按 semver 规范建议下一个版本号(只输出版本号如 1.2.3)" --no-color)
echo "📌 版本号:$VERSION"

# 2. Claude 生成 CHANGELOG
git log $(git describe --tags --abbrev=0 2>/dev/null || echo HEAD)..HEAD --oneline | \
  claude -p "根据 commit 历史生成 CHANGELOG.md 条目" > /tmp/changelog-entry.md

# 3. 确认
echo "=== CHANGELOG ==="
cat /tmp/changelog-entry.md
read -p "确认发布 v$VERSION? (y/n) " CONFIRM
[ "$CONFIRM" != "y" ] && exit 0

# 4. 打 tag 并推送
git tag "v$VERSION"
git push && git push --tags
echo "✅ v$VERSION 已发布"
SCRIPT
chmod +x release.sh

6.5 批量自动化脚本:封装 CLI 指令

一键开发脚本

# === dev-bootstrap.sh:一键初始化开发环境 ===
cat > ~/scripts/dev-bootstrap.sh << 'EOF'
#!/bin/bash
# 用法:dev-bootstrap.sh <项目名> <技术栈>
PROJECT=$1
STACK=${2:-express}

mkdir ~/projects/$PROJECT && cd ~/projects/$PROJECT
git init

claude -p "初始化一个 $STACK 项目,项目名:$PROJECT。
1. 创建基础目录结构
2. 初始化包管理器
3. 创建入口文件
4. 创建 .gitignore
5. 创建 README.md
6. 初始化 git commit" --print

echo "✅ 项目 $PROJECT 已就绪"
EOF
chmod +x ~/scripts/dev-bootstrap.sh

一键修复脚本

# === auto-fix.sh:自动修复常见问题 ===
cat > ~/scripts/auto-fix.sh << 'EOF'
#!/bin/bash
# 在项目根目录执行:auto-fix.sh

echo "🔍 分析项目问题..."
claude -p "分析当前项目:
1. 检查 package.json 是否有安全漏洞的依赖
2. 检查是否有 ESLint 错误
3. 检查是否有未使用的依赖
4. 给出修复建议" --print

echo ""
read -p "是否自动修复? (y/n) " FIX
[ "$FIX" != "y" ] && exit 0

claude -p "根据上面的分析,自动修复所有可以安全修复的问题。
跳过需要人工判断的架构性修改。" --print

echo "✅ 修复完成"
EOF
chmod +x ~/scripts/auto-fix.sh

一键文档生成

# === gen-docs.sh:一键生成项目文档 ===
cat > ~/scripts/gen-docs.sh << 'EOF'
#!/bin/bash
cd "$(git rev-parse --show-toplevel 2>/dev/null || echo .)"

mkdir -p docs

echo "📝 生成 API 文档..."
claude -p "分析项目中的 API 接口,生成 docs/API.md" --print > docs/API.md

echo "📝 生成架构文档..."
claude -p "分析项目架构,生成 docs/ARCHITECTURE.md" --print > docs/ARCHITECTURE.md

echo "📝 生成贡献指南..."
claude -p "根据项目结构生成 CONTRIBUTING.md" --print > CONTRIBUTING.md

echo "✅ 文档生成完毕: docs/"
EOF
chmod +x ~/scripts/gen-docs.sh
💡 脚本管理建议

课后练习

  1. 配置定制:创建自己的 settings.json 和 CLAUDE.md,应用到实际项目
  2. Token 优化:为大项目创建 .claudeignore,对比前后的 /cost 差异
  3. 模型切换:同一任务用 Haiku、Sonnet、Opus 分别执行,记录质量/速度/成本
  4. 工具链联动:编写一个结合 git + npm + claude 的 shell 函数
  5. 自动化脚本:创建 3 个生产级自动化脚本,实测运行
  6. 长任务拆分:选一个复杂需求,用分层策略拆分为多个会话完成
  7. 自我反思:让 Claude 审查自己生成的代码,记录反思的准确率