进阶主题深度指南
【摘要】 一、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)