文思AI产品笔记
首页
最新文章
AI编程
AI架构
关于我
  • AI生态圈
  • AI大模型
  • 多维表格
  • AI创业笔记
  • AI落地案例
  • 个人产品推介
  • 问题集
  • 简体中文
  • English
首页
最新文章
AI编程
AI架构
关于我
  • AI生态圈
  • AI大模型
  • 多维表格
  • AI创业笔记
  • AI落地案例
  • 个人产品推介
  • 问题集
  • 简体中文
  • English
  • Claude Code 教程

    • Claude Code 从入门到精通
    • 01 - 快速入门
    • 02 - 核心特点
    • 03 - 版本演进史
    • 04 - 架构深入解析
    • 05 - Claude Skills 详解
    • 06 - MCP 协议完全指南
    • 07 - 高级功能全解
    • 08 - 最佳实践
    • 09 - 使用诀窍与技巧
    • 10 - 配置优化指南

08 - 最佳实践

📖 生产环境使用 Claude Code 的实战经验和最佳实践


📋 本章目标

  • ✅ 掌握 Prompt 工程的最佳实践
  • ✅ 学会有效的上下文管理
  • ✅ 了解代码质量保证方法
  • ✅ 建立团队协作规范
  • ✅ 保证安全和隐私

预计阅读时间: 25分钟


🎯 Prompt 工程最佳实践

1. 清晰的需求描述

❌ 模糊的 Prompt

"写一个登录功能"

问题:

  • 不知道技术栈
  • 不知道具体需求
  • 不知道期望的代码风格

✅ 清晰的 Prompt

创建一个用户登录功能,要求:

技术栈:
- React 18 + TypeScript
- React Hook Form 用于表单管理
- Zod 用于验证
- TailwindCSS 用于样式

功能需求:
1. 邮箱+密码登录
2. 记住我功能(localStorage)
3. 密码显示/隐藏切换
4. 实时表单验证
5. Loading 状态处理
6. 错误提示(友好的用户提示)

验证规则:
- 邮箱:标准邮箱格式
- 密码:至少8位,包含大小写字母和数字

API对接:
- POST /api/auth/login
- 返回:{ token, user }

代码风格:
- 函数式组件
- 自定义 hooks 抽取逻辑
- 详细的 TS 类型定义
- 添加注释解释关键逻辑

效果:Claude 能生成精确符合需求的代码


2. 分层次的请求

从概念到实现

# 第一层:架构设计(Chat)
"设计一个电商系统的用户模块,包括:
 - 用户注册/登录
 - 个人信息管理
 - 地址管理
 - 订单历史
 
 请提供:
 1. 数据库 ER 图
 2. API 端点设计
 3. 前端页面结构"

# 第二层:核心实现(Composer)
"基于上面的设计,实现用户注册功能"

# 第三层:细节优化(Inline)
[选中具体函数] 
"添加邮箱验证和防重复注册"

3. 使用示例和参考

提供代码示例

我的项目中已有这样的 API 调用模式:

```typescript
// @api/products.ts
export const getProducts = async (): Promise<Product[]> => {
  const { data, error } = await supabase
    .from('products')
    .select('*')
    .order('created_at', { ascending: false })
  
  if (error) throw error
  return data
}

请按照同样的模式,实现用户相关的 API 调用


**效果**:Claude 会保持一致的代码风格

---

### 4. 明确约束和限制

创建一个图片上传功能,约束条件:

技术限制:

  • 不能使用第三方库(除了标准库)
  • 必须支持 IE11(使用 polyfills)
  • 打包大小<50KB

业务限制:

  • 文件大小限制:5MB
  • 支持格式:jpg, png, webp
  • 需要客户端压缩
  • 上传前显示预览

性能要求:

  • 压缩时不阻塞 UI
  • 使用 Web Worker
  • 上传进度显示

安全要求:

  • 验证文件类型(不只是扩展名)
  • 扫描常见恶意代码特征
  • 使用 CSRF token

---

## 📚 上下文管理策略

### 1. 有效引用文件

#### 使用 @ 符号

好的做法 ✅:

"基于 @src/types/user.ts 中的 User 类型, 在 @src/components/UserCard.tsx 中创建用户卡片组件"

不好的做法 ❌:

"创建用户卡片组件" (Claude 不知道 User 类型的定义)


---

#### 在 Composer 中添加相关文件

Cmd + I(Composer)

点击 "Add Context" → 选择相关文件:

  • src/types/user.ts
  • src/hooks/useUser.ts
  • src/styles/theme.ts

然后描述需求: "创建用户详情页面,使用已有的类型和 hooks"


---

### 2. 管理上下文大小

#### 识别无关信息

❌ 包含过多无关文件: @src/ (整个项目,可能超过上下文限制)

✅ 精确选择相关文件: @src/features/user/ (只包含用户相关的模块)


---

#### 定期清理对话

何时清理:

  1. 对话偏离主题时
  2. 切换到新功能模块时
  3. Claude 开始"健忘"之前的信息时
  4. 达到 50+ 轮对话时

如何清理: Cmd/Ctrl + Shift + L(清空对话) 或 "让我们重新开始,专注于登录功能"


---

### 3. 分模块开发

项目结构: src/ ├── features/ │ ├── auth/ ← 模块1 │ ├── products/ ← 模块2 │ └── orders/ ← 模块3

开发策略:

  1. 一次只专注一个模块
  2. 模块开发完成后开新对话
  3. 跨模块集成时再引用多个模块

好处:

  • 上下文更聚焦
  • Claude 理解更深入
  • 减少混淆

---

## ✅ 代码质量保证

### 1. 代码审查流程

#### 自动审查

每次 Claude 生成代码后:

Prompt: "审查刚才的代码,检查:

  1. 安全漏洞(SQL注入、XSS等)
  2. 性能问题(不必要的重渲染、大对象拷贝等)
  3. 边界条件处理
  4. 错误处理是否完善
  5. 类型安全
  6. 代码可维护性"

Claude 会详细分析并提出改进建议


---

#### 人工审查检查清单

```markdown
## 代码审查清单

### 功能性
- [ ] 满足所有需求
- [ ] 边界条件处理正确
- [ ] 错误处理完善

### 安全性
- [ ] 无 SQL 注入风险
- [ ] 无 XSS 漏洞
- [ ] 敏感信息已保护
- [ ] 权限验证正确

### 性能
- [ ] 无性能瓶颈
- [ ] 数据库查询优化
- [ ] 前端渲染优化

### 可维护性
- [ ] 代码结构清晰
- [ ] 命名语义化
- [ ] 注释充分
- [ ] 符合项目规范

2. 测试驱动开发

先写测试

Step 1: 生成测试
Prompt: "为用户注册功能生成完整的测试用例,包括:
- 成功场景
- 失败场景(邮箱格式错误、密码强度不足等)
- 边界条件
- 异步处理"

Step 2: 实现功能
Prompt: "实现这些测试"

Step 3: 运行测试
通过 Terminal Skill 或手动运行

Step 4: 修复问题
如有测试失败,让 Claude 修复

3. 持续集成实践

// .cursorrules
{
  "preCommit": {
    "checks": [
      "npm run lint",      // 代码规范检查
      "npm run type-check",// 类型检查
      "npm test",          // 运行测试
      "npm run build"      // 确保可以构建
    ]
  }
}

👥 团队协作规范

1. 统一的 AI 使用规范

团队 .cursorrules

// .cursorrules (项目根目录)
{
  "model": "claude-3-5-sonnet-20241022",
  
  "rules": [
    "代码风格:严格遵循 ESLint 和 Prettier 配置",
    "命名规范:camelCase for variables, PascalCase for components",
    "注释:为所有导出的函数和组件添加 JSDoc",
    "测试:核心功能必须有单元测试",
    "错误处理:使用统一的错误处理模式",
    "日志:使用项目的 logger,禁止 console.log"
  ],
  
  "codeStyle": {
    "typescript": {
      "strictMode": true,
      "noImplicitAny": true
    },
    "react": {
      "style": "functional",
      "hooks": "preferred"
    }
  },
  
  "review": {
    "autoCheck": [
      "security",
      "performance",
      "bestPractices"
    ]
  }
}

2. Prompt 模板库

## 团队 Prompt 模板

### 创建新组件

创建一个 React 组件:[组件名]

功能描述: [描述]

技术要求:

  • 使用 TypeScript
  • 遵循项目的组件模式(@components/Example.tsx)
  • 使用 Tailwind CSS 样式
  • 添加 PropTypes 和 JSDoc 注释
  • 导出组件和类型定义

参考:@components/Button.tsx


### API 调用

创建 API 调用函数:[函数名]

端点:[API 端点] 方法:[GET/POST/...] 参数:[参数列表]

要求:

  • 遵循 @api/base.ts 的模式
  • 使用 axios 实例
  • 完整的错误处理
  • 添加请求/响应类型
  • 添加单元测试

参考:@api/users.ts


---

### 3. 代码所有权和追踪

```typescript
// 在关键代码中添加元信息

/**
 * 用户认证服务
 * 
 * @author Generated by Claude (Reviewed by: @zhang-san)
 * @created 2024-12-22
 * @aiAssisted true
 * @reviewRequired true
 * 
 * @description
 * 处理用户登录、注册、密码重置等认证相关功能
 * 
 * @security
 * - 密码使用 bcrypt 加密
 * - JWT token 有效期 7天
 * - 实现了速率限制防止暴力破解
 */
export class AuthService {
  // ...
}

4. 知识共享

建立 AI 使用最佳实践库

team-docs/
├── ai-best-practices/
│   ├── effective-prompts.md
│   ├── common-patterns.md
│   ├── troubleshooting.md
│   └── examples/
│       ├── feature-development.md
│       ├── bug-fixing.md
│       └── refactoring.md

🔒 安全与隐私

1. 敏感信息保护

永远不要向 AI 透露

❌ 禁止内容:
- 生产环境的 API Keys
- 密码和私钥
- 用户个人信息(PII)
- 内部系统架构细节(如果是机密)
- 商业机密代码

✅ 安全做法:
- 使用环境变量占位符
- 脱敏的示例数据
- 通用的架构描述

示例:安全的 Prompt

❌ 不安全:
"连接到数据库:
 postgresql://admin:MySecret123@prod.db.company.com:5432/maindb"

✅ 安全:
"连接到数据库:
 使用环境变量 DATABASE_URL
 
 示例(开发环境):
 postgresql://user:pass@localhost:5432/dev_db"

2. 代码审计

审查 AI 生成的代码

重点检查:

1. 认证和授权
   - 是否正确验证用户身份?
   - 是否检查权限?

2. 输入验证
   - 是否验证所有用户输入?
   - 是否防止注入攻击?

3. 数据保护
   - 敏感数据是否加密?
   - 是否安全传输?

4. 错误处理
   - 错误信息是否泄露敏感信息?
   - 是否有适当的日志记录?

使用安全检查工具

# ESLint 安全插件
npm install --save-dev eslint-plugin-security

# 依赖扫描
npm audit

# 代码扫描
npm install -g snyk
snyk test

# 让 Claude 审查安全性
Prompt: "审查这段代码的安全性,
        特别关注 OWASP Top 10 漏洞"

3. 合规性

开源许可证

使用 AI 生成的代码时:

1. 了解 Claude 的使用条款
2. 确保生成的代码不侵犯版权
3. 如使用开源代码模式,遵守相应许可证

Prompt 示例:
"生成代码时,请避免复制任何有明确版权的代码,
 使用通用的实现模式"

数据隐私

GDPR/CCPA 合规:

1. 不向 AI 提供用户数据
2. 使用匿名/脱敏数据进行测试
3. 审查生成的代码是否符合隐私要求

Example:
❌ "分析这些用户数据:[真实用户数据]"
✅ "分析这种结构的数据:[示例/脱敏数据]"

📈 持续改进

1. 反馈循环

建立改进循环:

1. 使用 → 记录
   - 哪些 Prompt 有效
   - 哪些 Prompt 无效
   - 生成代码的质量

2. 分析 → 学习
   - 总结成功模式
   - 识别常见问题
   - 优化 Prompt 模板

3. 应用 → 验证
   - 使用优化后的方法
   - 测量改进效果
   - 继续迭代

2. 度量指标

// 追踪 AI 辅助开发的效果

interface AIMetrics {
  // 效率指标
  developmentTime: {
    before: number  // 使用 AI 前
    after: number   // 使用 AI 后
    improvement: number  // 改进百分比
  }
  
  // 质量指标
  codeQuality: {
    bugCount: number
    testCoverage: number
    codeReviewComments: number
  }
  
  // 使用情况
  usage: {
    promptCount: number
    successRate: number
    averageIterations: number
  }
}

3. 知识沉淀

建立团队知识库:

1. 优秀 Prompt 集合
   - 按场景分类
   - 包含实际效果
   - 持续更新

2. 常见问题解决方案
   - 问题描述
   - 解决方法
   - 预防措施

3. 最佳实践案例
   - 成功故事
   - 经验教训
   - 可复制的模式

✅ 最佳实践检查清单

日常开发

  • [ ] Prompt 清晰明确
  • [ ] 引用相关文件
  • [ ] 分步骤进行
  • [ ] 审查生成的代码
  • [ ] 运行测试
  • [ ] 符合项目规范

代码质量

  • [ ] 通过 linter
  • [ ] 类型检查通过
  • [ ] 测试覆盖充分
  • [ ] 无安全漏洞
  • [ ] 性能可接受
  • [ ] 文档完整

团队协作

  • [ ] 遵循团队规范
  • [ ] 使用统一模板
  • [ ] 代码有追踪信息
  • [ ] 知识及时分享

安全隐私

  • [ ] 无敏感信息泄露
  • [ ] 代码经过审计
  • [ ] 符合合规要求
  • [ ] 权限控制正确

🎯 实战建议

新手开发者

1. 从小功能开始
   - 先做简单的 CRUD
   - 逐步增加复杂度

2. 学习优秀 Prompt
   - 收集有效的 Prompt
   - 理解为什么有效

3. 保持审视
   - 不要盲目接受生成的代码
   - 理解每一行代码
   - 不懂就问 Claude

经验开发者

1. 利用专业知识
   - 提供明确的技术要求
   - 引导 Claude 使用最佳实践
   - 快速识别问题

2. 自动化工作流
   - 使用 Skills 和 MCP
   - 建立自己的模板
   - 优化开发流程

3. 指导团队
   - 分享经验
   - 建立规范
   - 持续优化

📚 延伸阅读

  • 09 - 使用诀窍 - 更多实用技巧
  • 10 - 配置优化 - 优化你的环境
  • 05 - Claude Skills - 提升自动化程度
  • 06 - MCP 协议 - 扩展能力边界

📖 最佳实践是长期实践的积累

不断尝试、反思、改进,形成自己的工作流!

"Excellence is not a skill, it's an attitude."

最近更新: 2025/12/22 14:25
Contributors: wsyx
Prev
07 - 高级功能全解
Next
09 - 使用诀窍与技巧