进阶主题深度指南

举报
yd_47669746 发表于 2026/11/10 17:04:40 2026/11/10
【摘要】 一、Claude Code 深度定制 CLAUDE.md 高级模式 条件性指令# CLAUDE.md## 当前状态如果是新功能开发:- 先写测试,再写实现- 每个 PR 只做一个功能如果是 Bug 修复:- 先写复现测试- 修复后确认测试通过- 不要改动无关代码如果是重构:- 不要改变任何外部 API- 每次只改一小部分- 每改一步都跑测试 代码地图# CLAUDE.md## 代码地图##...

一、Claude Code 深度定制

CLAUDE.md 高级模式

条件性指令

# CLAUDE.md

## 当前状态
如果是新功能开发:
- 先写测试,再写实现
- 每个 PR 只做一个功能

如果是 Bug 修复:
- 先写复现测试
- 修复后确认测试通过
- 不要改动无关代码

如果是重构:
- 不要改变任何外部 API
- 每次只改一小部分
- 每改一步都跑测试

代码地图

# CLAUDE.md

## 代码地图
### 核心模块
- src/core/engine.ts — 业务引擎,所有请求的入口
- src/core/scheduler.ts — 任务调度器
- src/core/state.ts — 全局状态管理

### 数据层
- src/db/connection.ts — 数据库连接池
- src/db/repositories/ — 数据仓库(每张表一个文件)
- src/db/migrations/ — 数据库迁移

### API 层
- src/api/routes/ — 路由定义
- src/api/middleware/ — 中间件
- src/api/validators/ — 请求验证

### 工具
- src/utils/logger.ts — 日志(用这个,不要用 console)
- src/utils/errors.ts — 错误类(用这个,不要用 Error)
- src/utils/cache.ts — 缓存封装

### 配置
- src/config/index.ts — 配置入口
- src/config/env.ts — 环境变量

陷阱警告

# CLAUDE.md

## ⚠️ 已知陷阱
1. 不要修改 src/legacy/ 目录的代码,那是遗留系统
2. 不要使用 moment.js,项目用 dayjs
3. 不要使用 var,全部用 const/let
4. 不要使用 any 类型
5. 不要使用 console.log,用 logger
6. src/services/payment.ts 正在重构,不要动
7. 数据库的 users 表有 500 万行,查询要注意性能

settings.json 高级配置

{
  "model": "claude-sonnet-4-6",
  "theme": "dark",
  "permissions": {
    "allow": [
      "Bash(npm run test)",
      "Bash(npm run lint)",
      "Bash(npx tsc --noEmit)",
      "Bash(git status)",
      "Bash(git diff)",
      "Bash(git log --oneline -10)"
    ],
    "deny": [
      "Bash(rm -rf *)",
      "Bash(git push --force)",
      "Bash(curl *)",
      "Bash(wget *)"
    ]
  }
}

Hooks 高级用法

多步骤 Hook

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Write|Edit",
        "hooks": [
          {
            "type": "command",
            "command": "npx prettier --write $CLAUDE_FILE_PATH 2>/dev/null && npx eslint --fix $CLAUDE_FILE_PATH 2>/dev/null && npx tsc --noEmit 2>/dev/null | head -5; true"
          }
        ]
      }
    ]
  }
}

条件性 Hook

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit",
        "hooks": [
          {
            "type": "command",
            "command": "if echo \"$CLAUDE_FILE_PATH\" | grep -q '\\.test\\.ts$'; then npx vitest run $CLAUDE_FILE_PATH 2>&1 | tail -5; fi; true"
          }
        ]
      }
    ]
  }
}

审计 Hook

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          {
            "type": "command",
            "command": "echo \"$(date -Iseconds) | $CLAUDE_TOOL_NAME | $CLAUDE_TOOL_INPUT\" >> ~/.claude/audit.log"
          }
        ]
      }
    ]
  }
}

二、Git 工作流深度集成

AI 辅助 Commit Message

# 传统方式
git add .
git commit -m "fix stuff"  # 不清晰

# AI 辅助
"看看我改了什么,帮我写一个 Conventional Commits 格式的 commit message"

# Claude 会:
# 1. 执行 git diff
# 2. 分析改动内容
# 3. 生成规范的 commit message:
#    fix(auth): prevent session timeout on page refresh
#
#    - Store session token in httpOnly cookie instead of localStorage
#    - Add token refresh logic before expiration
#    - Fixes #123

AI 辅助 PR 创建

"创建一个 PR 到 main 分支"

# Claude 会:
# 1. 检查当前分支和 main 的差异
# 2. 列出所有相关 commit
# 3. 生成 PR 描述:
#
# ## 改动内容
# - 实现用户个人资料编辑功能
# - 添加头像上传(S3 存储)
# - 添加个人信息表单验证
#
# ## 测试
# - [x] 单元测试通过
# - [x] E2E 测试通过
# - [x] 手动测试通过
#
# ## 关联 Issue
# Closes #42

# 4. 执行 gh pr create

AI 辅助 Code Review

# Review 自己的代码
"审查当前分支和 main 的差异,指出:
1. 潜在 bug
2. 安全问题
3. 性能问题
4. 代码风格问题"

# Review 别人的 PR
"审查 PR #42 的代码,重点关注安全性"

# 处理 Review 评论
"看看 PR #42 的 review 评论,帮我修复提出的问题"

AI 辅助冲突解决

"帮我解决合并冲突"

# Claude 会:
# 1. 读取冲突文件
# 2. 分析两边的改动意图
# 3. 给出合并建议
# 4. 解释为什么这样合并
# 5. 执行合并

AI 辅助 Rebase

"把最近 3 个 commit 合成一个"

# Claude 会:
# 1. 查看最近 3 个 commit
# 2. 分析改动内容
# 3. 生成合并后的 commit message
# 4. 执行 interactive rebase

三、测试策略深度

TDD 工作流

# 第一步:让 AI 写测试
"用 TDD 方式实现一个邮箱验证函数:
1. 先写测试用例(覆盖正常、边界、异常)
2. 不要写实现代码
3. 我确认测试后再实现"

# 第二步:确认测试
"测试看起来不错,但加上以下场景:
- 带 + 号的邮箱
- 超长域名"

# 第三步:让 AI 实现
"现在实现函数使所有测试通过"

# 第四步:验证
"运行测试,确认全部通过"

测试金字塔实践

        / E2E 测试 \       ← 5%,核心流程
       / 集成测试   \      ← 15%,API 级别
      /  单元测试    \     ← 80%,函数级别

Claude Code 擅长生成单元测试
集成测试需要配置好 MCP(数据库等)
E2E 测试需要 Puppeteer MCP

测试覆盖率分析

"运行测试覆盖率,找出没有覆盖的代码路径"

# Claude 会:
# 1. 运行 coverage 工具
# 2. 分析未覆盖的代码
# 3. 为未覆盖的代码生成测试

Mock 策略

"为 src/services/userService.ts 写单元测试
Mock 策略:
- Mock 数据库调用(不要真的连数据库)
- Mock 外部 API 调用
- 不 Mock 内部函数
- 使用 vitest 的 vi.mock()"

# 这样 Claude 会:
# - 只 Mock 真正的外部依赖
# - 内部逻辑用真实实现
# - 测试更接近真实行为

四、调试技巧深度

日志分析

# 分析错误日志
cat /var/log/app.log | claude -p "找出所有 ERROR 级别的日志,
按错误类型分组,统计每种错误的出现次数"

# 实时监控
tail -f /var/log/app.log | claude -p "监控日志,
发现异常模式时提醒我"

# 关联分析
"分析这个错误:
Error: Connection timeout
    at Pool.connect (/app/node_modules/pg/lib/pool.js:56:35)

同时查看:
1. 最近的数据库连接数变化
2. 是否有大量并发请求
3. 数据库服务器的负载"

性能分析

# 分析函数性能
"分析这个函数的性能瓶颈:
[粘贴代码]

数据规模:
- 输入:100 万条记录
- 每条记录:约 500 字节

约束:
- 必须在 1 秒内完成
- 内存限制 512MB
- 不能引入新依赖"

# 分析数据库查询
"分析这个 SQL 的性能:
SELECT u.*, COUNT(o.id) as order_count
FROM users u
LEFT JOIN orders o ON u.id = o.user_id
WHERE u.created_at > '2026-01-01'
GROUP BY u.id

表信息:
- users:500 万行
- orders:2000 万行
- 索引:users(created_at), orders(user_id)"

内存分析

"分析这段代码有没有内存泄漏:
[粘贴代码]

重点关注:
1. 事件监听器是否正确移除
2. 定时器是否清理
3. 闭包是否持有大对象引用
4. 缓存是否有淘汰策略
5. 流是否正确关闭"

并发问题调试

"这个函数在并发调用时偶尔出问题:
[粘贴代码]

症状:
- 单线程测试正常
- 并发 100 个请求时偶尔报错
- 错误信息:Duplicate entry

请分析:
1. 是否有竞态条件
2. 锁的粒度是否正确
3. 事务隔离级别是否足够
4. 怎么修复"

五、架构设计咨询

技术选型

"我在设计一个实时协作编辑器,类似 Google Docs。

需求:
- 支持 100 人同时编辑
- 延迟 < 100ms
- 离线支持
- 版本历史

我在考虑:
1. OT (Operational Transformation)
2. CRDT (Conflict-free Replicated Data Type)
3. 简单的锁机制

帮我分析每个方案的优劣,结合我的具体需求给出推荐。
不要只列特点,要分析 trade-off。"

数据库设计

"设计一个 SaaS 多租户系统的数据库:

需求:
- 支持 1000+ 租户
- 每个租户 1000-100 万用户
- 数据隔离要求高
- 需要支持跨租户的分析查询

方案:
1. 共享数据库 + 租户 ID 字段
2. 每个租户独立 schema
3. 每个租户独立数据库

分析每个方案的:
- 性能
- 隔离性
- 运维成本
- 扩展性
- 备份恢复"

API 设计

"设计一个支付系统的 API:

功能:
- 创建支付
- 查询支付状态
- 退款
- 对账

要求:
- RESTful
- 幂等性
- Webhook 通知
- 版本控制

给出:
1. 接口列表(URL、方法、参数、返回值)
2. 错误码设计
3. 安全考虑
4. Webhook 事件设计"

六、安全实践深度

安全编码检查

"审查 src/api/ 目录的所有接口,检查:

1. 认证
   - 是否所有需要认证的接口都有认证
   - Token 是否安全存储
   - 是否有默认密码

2. 授权
   - 是否有越权访问风险
   - IDOR 漏洞
   - 权限校验是否完整

3. 输入验证
   - 所有用户输入是否验证
   - SQL 注入风险
   - XSS 风险
   - 文件上传安全

4. 敏感数据
   - 密码是否加密存储
   - 日志中是否打印敏感信息
   - 错误信息是否泄露内部细节

5. 配置安全
   - CORS 是否过于宽松
   - CSP 是否配置
   - HTTPS 是否强制"

依赖安全

"检查项目的依赖安全性:
1. 运行 npm audit
2. 分析是否有已知漏洞
3. 建议哪些依赖需要升级
4. 检查是否有不必要的依赖"

安全测试

"为 src/api/auth.ts 写安全测试:
1. SQL 注入测试
2. XSS 测试
3. CSRF 测试
4. 暴力破解防护测试
5. Session 安全测试"

七、跨语言开发

多语言项目

# 前端 TypeScript + 后端 Go
"这个项目的前端是 React,后端是 Go。
帮我看看 Go 的 API 接口,然后在前端写对应的 TypeScript 类型和调用代码"

# Python 数据处理 + Node.js API
"写一个 Python 脚本处理 CSV 数据,输出 JSON。
然后写一个 Node.js 接口调用这个 Python 脚本并返回结果"

语言迁移

"把这个 Python 脚本翻译成 TypeScript:
- 保持相同的函数签名
- 使用等价的 npm 包
- 保持错误处理逻辑一致
- 保持相同的输出格式"

多语言代码审查

"审查这个微服务项目:
- auth-service (Node.js)
- user-service (Go)
- payment-service (Python)

重点:
1. 服务间的 API 契约是否一致
2. 错误码是否统一
3. 日志格式是否统一
4. 是否有安全隐患"

八、CI/CD 集成

GitHub Actions

# .github/workflows/ai-review.yml
name: AI Code Review

on:
  pull_request:
    types: [opened, synchronize]

jobs:
  review:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Install Claude Code
        run: npm install -g @anthropic-ai/claude-code
      - name: Review PR
        env:
          ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
        run: |
          claude -p "审查这个 PR 的代码改动,指出潜在问题" \
            --output-format json > review.json
      - name: Comment PR
        uses: actions/github-script@v7
        with:
          script: |
            const review = require('./review.json');
            github.rest.issues.createComment({
              owner: context.repo.owner,
              repo: context.repo.repo,
              issue_number: context.issue.number,
              body: review.result
            });

自动化测试

# .github/workflows/ai-test.yml
name: AI Test Generation

on:
  push:
    paths:
      - 'src/**/*.ts'

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Generate Tests
        env:
          ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
        run: |
          for file in $(git diff --name-only HEAD~1 | grep '\.ts$'); do
            claude -p "为 $file 生成单元测试" > "tests/${file%.ts}.test.ts"
          done
      - name: Run Tests
        run: npm test

九、性能优化模式

数据库优化

"优化这个查询的性能:
[SQL]

执行计划:
[EXPLAIN ANALYZE 输出]

表信息:
- users:500 万行
- orders:2000 万行
- 索引:[现有索引]

优化目标:
- 当前:5 秒
- 目标:100ms 以内"

前端优化

"优化这个 React 组件的性能:
[代码]

症状:
- 列表有 1000 项时明显卡顿
- 输入框每次输入都延迟

分析:
1. 不必要的重渲染
2. 大列表优化
3. 状态管理优化
4. 虚拟滚动"

后端优化

"优化这个 API 的响应时间:
[代码]

当前性能:
- P50:200ms
- P99:2 秒
- 目标:P99 < 500ms

分析瓶颈:
1. 数据库查询
2. 外部 API 调用
3. 计算密集操作
4. 序列化/反序列化"
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。