Complete Claude Code Guide: From Installation to Advanced Usage

Complete Claude Code Guide: From Installation to Advanced Usage

A comprehensive tutorial covering everything you need to know about Claude Code - from basic installation and setup to advanced features like MCP integration, automation, and security best practices.

课 5 2025-07-03 08:05

Claude 高阶代码功能与自动化

Claude 代码高级功能与自动化

通过高级功能、自动化模式和资深用户技巧,将您的 Claude 代码使用提升到新的水平。本指南涵盖了复杂工作流、CI/CD 集成、自定义配置和专家级使用模式。

高级会话管理

命名会话与工作区

为不同项目和上下文创建及管理专用会话:

# 为不同项目创建命名会话
claude --session frontend "正在处理 React 前端"
claude --session backend "后端 API 开发"
claude --session devops "基础设施和部署"

# 恢复特定的命名会话
claude --resume frontend "继续前端工作"
claude --resume backend "检查 API 性能"

# 列出所有命名会话
claude sessions list --filter named

# 导出和共享会话配置
claude sessions export frontend > frontend-session.json
claude sessions import frontend-session.json

会话模板

创建可复用的会话模板:

# 为 React 开发创建模板
cat > ~/.claude/templates/react-dev.json << EOF
{
  "allowedTools": ["Edit", "View", "Bash(npm:*)", "Bash(git:*)"],
  "addDirectories": ["./src", "./test", "./docs"],
  "systemPrompt": "您是一位资深 React 开发者。请遵循 TypeScript 最佳实践,并专注于性能和可访问性。",
  "mcpServers": ["git", "filesystem"],
  "projectMemory": "使用 Jest 测试的 React TypeScript 项目"
}
EOF

# 使用模板启动会话
claude --template react-dev "启动 React 开发会话"

高级内存管理

CLAUDE.md - 项目记忆

创建全面的项目记忆文件:

# 项目:电商平台

## 架构概览
- **前端**: React 18 + TypeScript + Vite
- **后端**: Node.js + Express + TypeScript
- **数据库**: PostgreSQL 14 with Prisma ORM
- **缓存**: Redis for session storage
- **部署**: Docker + Kubernetes on AWS

## 当前冲刺目标
- [ ] 实现带 JWT 的用户认证
- [ ] 添加 Stripe 支付处理
- [ ] 设置自动化测试流水线
- [ ] 优化商品搜索的数据库查询

## 开发标准
- 所有新代码使用 TypeScript
- 遵循 ESLint + Prettier 配置
- 为所有业务逻辑编写单元测试
- Git 消息使用 Conventional Commits 规范
- 部署到预发布环境后才部署到生产环境

## 已知问题
- 商品数量超过 1 万件时搜索性能下降
- 用户会话超时需要配置
- 生产环境中邮件服务存在速率限制

## 近期决策
- 为更好地与前端集成,从 REST 切换到 GraphQL
- 使用 Tailwind CSS 实现样式一致性
- 实施特性开关以实现渐进式发布

动态内存更新

# 更新项目记忆,添加近期开发进展
claude /memory add "为搜索结果实现 Redis 缓存——性能提升 40%"

# 设置当前关注点
claude /memory set-focus "本周致力于用户认证系统"

# 添加架构决策
claude /memory add-decision "使用 JWT token,有效期 24 小时,并支持 refresh token 轮换"

高级配置模式

分层配置系统

创建复杂的配置层次结构:

# 全局配置 (~/.claude.json)
{
  "defaultModel": "claude-sonnet-4",
  "globalAllowedTools": ["View"],
  "globalDisallowedTools": ["Bash(rm:*)", "Bash(sudo:*)"],
  "theme": "dark-daltonized",
  "editorMode": "vim"
}

# 组织配置 (~/.claude/org-config.json)
{
  "extends": "~/.claude.json",
  "allowedTools": ["Edit", "View", "Bash(git:*)", "mcp__git__*"],
  "mcpServers": {
    "company-git": {
      "command": "company-git-server",
      "env": {"COMPANY_TOKEN": "${COMPANY_GIT_TOKEN}"}
    }
  },
  "auditLogging": true,
  "complianceMode": "SOC2"
}

# 项目配置 (./claude-config.json)
{
  "extends": "~/.claude/org-config.json",
  "projectName": "ecommerce-platform",
  "allowedTools": ["Edit", "View", "Bash(npm:*)", "Bash(git:*)", "mcp__*"],
  "systemPrompt": "您正在开发一个电商平台。请专注于安全性、性能和用户体验。",
  "addDirectories": ["./src", "./tests", "./docs"],
  "mcpServers": {
    "project-db": {
      "command": "postgres-mcp-server",
      "env": {"DATABASE_URL": "${PROJECT_DATABASE_URL}"}
    }
  }
}

环境特定配置

# 开发环境
export CLAUDE_ENV=development
export CLAUDE_CONFIG_FILE=~/.claude/dev-config.json

# 预发布环境
export CLAUDE_ENV=staging
export CLAUDE_CONFIG_FILE=~/.claude/staging-config.json

# 生产环境(只读)
export CLAUDE_ENV=production
export CLAUDE_CONFIG_FILE=~/.claude/prod-config.json

自动化与脚本编写

CI/CD 集成

GitHub Actions 集成

# .github/workflows/claude-code-review.yml
name: Claude 代码审查

on:
  pull_request:
    branches: [main, develop]

jobs:
  claude-review:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0  # 获取完整历史记录以便更好地分析

      - name: 设置 Node.js
        uses: actions/setup-node@v4
        with:
          node-version: '18'

      - name: 安装 Claude Code
        run: npm install -g @anthropic-ai/claude-code

      - name: 运行安全审查
        env:
          ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
        run: |
          # 为 CI 创建安全配置
          cat > ci-config.json << EOF
          {
            "allowedTools": ["View"],
            "outputFormat": "json",
            "verbose": false
          }
          EOF

          # 运行安全分析
          claude --config ci-config.json \
            -p "分析此拉取请求是否存在安全漏洞、性能问题和代码质量问题。重点关注 src/ 目录中的更改。" \
            --output-format json > review-results.json

      - name: 发布审查评论
        uses: actions/github-script@v7
        with:
          script: |
            const fs = require('fs');
            const results = JSON.parse(fs.readFileSync('review-results.json', 'utf8'));

            // 将结果作为 PR 评论发布
            github.rest.issues.createComment({
              issue_number: context.issue.number,
              owner: context.repo.owner,
              repo: context.repo.repo,
              body: `## 🤖 Claude 代码审查\n\n${results.analysis}\n\n### 安全问题: ${results.security_issues}\n### 性能问题: ${results.performance_issues}\n### 代码质量: ${results.code_quality}`
            });

GitLab CI 集成

# .gitlab-ci.yml
claude_review:
  image: node:18
  stage: review
  script:
    - npm install -g @anthropic-ai/claude-code
    - |
      claude --allowedTools "View" \
        -p "审查此合并请求的代码质量和安全问题" \
        --output-format json > review.json
    - cat review.json
  artifacts:
    reports:
      junit: review.json
  only:
    - merge_requests

预提交钩子

创建智能预提交钩子:

#!/bin/bash
# .git/hooks/pre-commit

# 获取暂存文件
staged_files=$(git diff --cached --name-only --diff-filter=ACM)

if [ -z "$staged_files" ]; then
    exit 0
fi

echo "🤖 正在对暂存文件运行 Claude Code 分析..."

# 创建包含暂存更改的临时文件
git diff --cached > /tmp/staged_changes.diff

# 使用 Claude 进行分析
analysis=$(claude --allowedTools "View" \
    -p "在提交前分析这些 git 更改是否存在潜在问题。重点关注:1) 安全漏洞 2) 代码质量 3) 性能问题 4) 破坏性更改。以 JSON 格式返回严重级别。" \
    --output-format json < /tmp/staged_changes.diff)

# 解析结果
critical_issues=$(echo "$analysis" | jq -r '.critical_issues // []')
warning_issues=$(echo "$analysis" | jq -r '.warnings // []')

# 如果发现关键问题则阻止提交
if [ "$critical_issues" != "[]" ] && [ "$critical_issues" != "null" ]; then
    echo "❌ 发现关键问题:"
    echo "$critical_issues" | jq -r '.[]'
    echo "提交已阻止。请在提交前修复关键问题。"
    exit 1
fi

# 显示警告但允许提交
if [ "$warning_issues" != "[]" ] && [ "$warning_issues" != "null" ]; then
    echo "⚠️  发现警告:"
    echo "$warning_issues" | jq -r '.[]'
    echo "请考虑解决这些问题。"
fi

echo "✅ 预提交分析完成"
rm /tmp/staged_changes.diff

自动化文档

#!/bin/bash
# scripts/update-docs.sh

# 自动化 API 文档
claude --allowedTools "View,Edit" \
    --add-dir ./src/api \
    "根据当前的 TypeScript 接口和端点实现,更新 docs/api.md 中的 API 文档"

# 生成 README 更新
claude --allowedTools "View,Edit" \
    "使用当前项目状态、安装说明和使用示例更新 README.md"

# 创建更新日志条目
git log --since="1 week ago" --pretty=format:"%h %s" | \
    claude -p "根据这些 git 提交生成更新日志条目。重点关注面向用户的更改。" \
    >> CHANGELOG.md

高级 MCP 工作流

自定义 MCP 服务器开发

为您的工作流创建专门的 MCP 服务器:

// custom-project-server.js
const { Server } = require('@modelcontextprotocol/sdk/server/index.js');
const { StdioServerTransport } = require('@modelcontextprotocol/sdk/server/stdio.js');
const fs = require('fs');
const path = require('path');

class ProjectServer extends Server {
  constructor() {
    super({
      name: 'project-server',
      version: '1.0.0',
    });

    this.setupTools();
  }

  setupTools() {
    // 项目状态工具
    this.setRequestHandler('tools/list', async () => ({
      tools: [
        {
          name: 'get_project_status',
          description: '获取包括 git、依赖和部署在内的全面项目状态',
          inputSchema: {
            type: 'object',
            properties: {}
          }
        },
        {
          name: 'run_tests',
          description: '运行指定范围的项目测试',
          inputSchema: {
            type: 'object',
            properties: {
              scope: { type: 'string', enum: ['unit', 'integration', 'e2e', 'all'] },
              coverage: { type: 'boolean', default: false }
            }
          }
        },
        {
          name: 'deploy_to_staging',
          description: '将当前分支部署到预发布环境',
          inputSchema: {
            type: 'object',
            properties: {
              branch: { type: 'string', default: 'main' },
              runMigrations: { type: 'boolean', default: true }
            }
          }
        }
      ]
    }));

    this.setRequestHandler('tools/call', async (request) => {
      const { name, arguments: args } = request.params;

      switch (name) {
        case 'get_project_status':
          return await this.getProjectStatus();
        case 'run_tests':
          return await this.runTests(args);
        case 'deploy_to_staging':
          return await this.deployToStaging(args);
        default:
          throw new Error(`未知工具: ${name}`);
      }
    });
  }

  async getProjectStatus() {
    // 项目状态实现
    const gitStatus = require('child_process').execSync('git status --porcelain').toString();
    const packageJson = JSON.parse(fs.readFileSync('package.json', 'utf8'));

    return {
      content: [{
        type: 'text',
        text: `项目状态:
- Git: ${gitStatus ? '未提交更改' : '干净'}
- 版本: ${packageJson.version}
- 依赖: ${Object.keys(packageJson.dependencies || {}).length}
- 上次提交: ${require('child_process').execSync('git log -1 --format="%h %s"').toString().trim()}`
      }]
    };
  }

  async runTests(args) {
    const { scope = 'all', coverage = false } = args;
    // 运行测试实现
    // ...
  }

  async deployToStaging(args) {
    // 部署实现
    // ...
  }
}

// 启动服务器
const server = new ProjectServer();
const transport = new StdioServerTransport();
server.connect(transport);

MCP 服务器编排

协调多个 MCP 服务器:

# 高级 MCP 工作流脚本
#!/bin/bash

echo "🚀 启动开发工作流..."

# 1. 检查项目状态
claude --allowedTools "mcp__project__get_project_status" \
    "获取当前项目状态并识别任何问题"

# 2. 在开始工作前运行测试
claude --allowedTools "mcp__project__run_tests" \
    "运行单元测试以确保干净的基线"

# 3. 检查安全漏洞
claude --allowedTools "mcp__security__scan" \
    "扫描项目以查找安全漏洞"

# 4. 如有需要更新依赖
claude --allowedTools "mcp__npm__audit,mcp__npm__update" \
    "检查依赖更新和安全补丁"

# 5. 启动开发会话
claude --allowedTools "Edit,View,mcp__git__*,mcp__project__*" \
    --add-dir ./src ./tests \
    "准备好进行开发。项目干净且经过测试。"

性能优化

上下文窗口管理

优化 Claude Code 的上下文使用:

# 将上下文限制在特定目录
claude --add-dir ./src/components ./src/utils \
    "只关注组件和工具"

# 使用聚焦查询
claude --allowedTools "View" \
    -p "只分析认证模块的安全问题" \
    --context-files "src/auth/*.ts"

# 渐进式上下文构建
claude "从项目结构概述开始"
# 然后根据需要添加特定上下文
claude "现在关注用户管理系统"

性能监控

# 监控 Claude Code 性能
claude --profile --timing \
    "分析应用程序性能瓶颈"

# token 使用优化
export MAX_THINKING_TOKENS=30000  # 根据需要调整
claude --cost-tracking "优化数据库查询"

# 内存使用监控
claude --memory-usage --verbose \
    "大型代码库分析会话"

高级故障排除

调试模式配置

# 最大调试信息
claude \
    --verbose \
    --debug \
    --mcp-debug \
    --trace-all \
    --log-api-calls \
    --show-tokens \
    --cost-tracking \
    "调试复杂集成问题"

# 选择性调试
claude \
    --mcp-debug \
    --allowedTools "mcp__postgres__*" \
    "调试数据库连接问题"

日志分析和监控

# 全面日志设置
export CLAUDE_LOG_LEVEL=debug
export CLAUDE_LOG_FILE=/var/log/claude/session.log
export CLAUDE_AUDIT_LOG=/var/log/claude/audit.log

# 实时日志监控
tail -f /var/log/claude/session.log | \
    claude -p "监控这些日志以查找错误并建议修复方案"

# 日志分析自动化
cat /var/log/claude/session.log | \
    claude -p "分析日志中的模式、错误和性能问题。生成摘要报告。"

团队协作功能

共享配置

# 团队配置仓库
git clone https://github.com/company/claude-configs.git ~/.claude/team

# 使用团队配置
claude --config ~/.claude/team/frontend-config.json \
    "启动前端开发会话"

# 共享会话模板
cp ~/.claude/templates/react-dev.json \
   ~/.claude/team/templates/
git add . && git commit -m "添加 React 开发模板"

知识共享

# 生成团队文档
claude --allowedTools "View,Edit" \
    "根据当前项目结构和约定,为新开发人员创建入职文档"

# 共享故障排除指南
claude --allowedTools "View" \
    "为本项目中常见的开发问题生成故障排除指南"

# 创建架构决策记录
claude "记录使用 GraphQL 而非 REST 的决定,包括理由和实现细节"

专家级模式

复杂工作流自动化

# 端到端功能开发工作流
#!/bin/bash
feature_name=$1

echo "🎯 启动功能开发:$feature_name"

# 1. 创建功能分支
claude --allowedTools "mcp__git__*" \
    "为 $feature_name 创建功能分支"

# 2. 生成初始实现
claude --allowedTools "Edit,View" \
    "根据 REQUIREMENTS.md 中的要求,为 $feature_name 生成初始实现"

# 3. 编写测试
claude --allowedTools "Edit,View" \
    "为 $feature_name 功能创建全面的测试"

# 4. 运行质量检查
claude --allowedTools "mcp__project__run_tests,mcp__lint__*" \
    "运行新功能的测试和 Lint 检查"

# 5. 生成文档
claude --allowedTools "Edit,View" \
    "为新功能 $feature_name 更新文档"

# 6. 创建拉取请求
claude --allowedTools "mcp__github__*" \
    "为 $feature_name 创建包含适当描述和审阅者的拉取请求"

echo "✅ 功能开发工作流完成"

多环境部署

# 渐进式部署工作流
claude --config ~/.claude/deploy-config.json \
    --allowedTools "mcp__k8s__*,mcp__aws__*" \
    "部署到开发环境并运行冒烟测试"

# 如果成功,继续部署到预发布环境
claude --allowedTools "mcp__k8s__*,mcp__monitoring__*" \
    "部署到预发布环境并监控 10 分钟"

# 最终生产部署
claude --allowedTools "mcp__k8s__apply,mcp__monitoring__*" \
    "使用蓝绿部署策略部署到生产环境"

为您的设置做好未来准备

配置版本控制

# 版本控制所有配置
git init ~/.claude
cd ~/.claude
git add .
git commit -m "初始 Claude Code 配置"
git remote add origin https://github.com/yourusername/claude-config.git
git push -u origin main

备份和恢复

# 自动化备份脚本
#!/bin/bash
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR=~/.claude/backups

mkdir -p $BACKUP_DIR

# 备份配置
cp ~/.claude.json $BACKUP_DIR/claude-config-$DATE.json

# 备份会话
claude sessions export --all > $BACKUP_DIR/sessions-$DATE.json

# 备份项目记忆
tar -czf $BACKUP_DIR/memories-$DATE.tar.gz ~/.claude/memories/

echo "备份完成: $BACKUP_DIR"

迁移规划

# 配置迁移脚本
#!/bin/bash
OLD_VERSION=$1
NEW_VERSION=$2

echo "正在将 Claude Code 配置从 $OLD_VERSION 迁移到 $NEW_VERSION"

# 备份当前配置
cp ~/.claude.json ~/.claude.json.backup

# 应用迁移
claude config migrate --from $OLD_VERSION --to $NEW_VERSION

# 验证迁移
claude /doctor

echo "迁移完成。请检查 /doctor 输出以查找问题。"

结论

这些高级功能和模式将 Claude Code 从一个简单的 AI 助手转变为一个全面的开发自动化平台。通过掌握这些技术,您可以:

  • 通过智能决策自动化复杂的工作流
  • 与 CI/CD 流水线集成以实现持续质量保证
  • 为您的特定需求创建自定义工具
  • 通过团队共享配置进行有效协作
  • 大规模监控和优化性能

Claude Code 高级使用的关键是渐进式增强——从基本模式开始,随着您信心和需求的增长,逐步融入更复杂的技术。

请记住,即使是使用高级自动化,也要始终保持安全最佳实践,并定期审查和更新您的配置,以跟上 Claude Code 的更新和您不断变化的开发需求。