从约束中学习
上下文窗口:限制还是机会?
上下文窗口限制经常被视为 Claude Code 的一个"问题",但实际上,约束往往能激发更好的解决方案。学会在限制中工作,不仅能让你成为更好的 Claude Code 用户,也能让你成为更好的开发者。
理解上下文限制
什么是上下文窗口?
上下文窗口是 AI 模型能够"记住"和处理的信息量限制:
Claude 模型的上下文窗口:
- Claude Haiku: ~200K tokens
- Claude Sonnet: ~200K tokens
- Claude Opus: ~200K tokens
大约相当于:
- 150,000 个英文单词
- 300-500 页的文档
- 几万行代码
限制的表现形式
当接近上下文限制时,你会遇到:
# 常见症状
- 响应速度明显变慢
- Claude 开始"遗忘"早期的对话内容
- 处理大型项目时出现不一致的建议
- 复杂任务的执行出现偏差
约束驱动的优化策略
1. 信息密度最大化 📊
问题:想要把整个大型项目都塞进上下文 解决方案:提炼最关键的信息
# ❌ 低效的上下文使用
把所有源文件都包含进来:
- 包含了大量注释和空行
- 包含了测试文件和构建配置
- 包含了历史代码和废弃功能
# ✅ 高效的上下文使用
CLAUDE.md 精准描述:
## 核心架构
- 用户认证:JWT + Refresh Token
- 数据流:React → API → PostgreSQL
- 状态管理:Redux Toolkit
## 关键文件
- `src/auth/AuthService.ts` - 认证逻辑核心
- `src/api/userAPI.ts` - 用户相关API
- `src/components/UserProfile.tsx` - 用户界面
## 当前痛点
- 登录状态在刷新后丢失
- API 错误处理不统一
2. 分层思考模式 🏗️
将复杂问题分解为多个层次:
# 第一层:架构层面
> 设计用户认证系统的整体架构
# 第二层:模块层面
> 实现 JWT token 管理模块
# 第三层:功能层面
> 添加自动token刷新功能
# 第四层:细节层面
> 处理token过期的边界情况
3. 上下文轮换策略 🔄
# 阶段1:项目分析阶段
包含:项目结构、技术栈、主要组件
# 阶段2:功能开发阶段
包含:相关源文件、API文档、业务逻辑
# 阶段3:测试优化阶段
包含:实现代码、测试用例、性能数据
实际应用技巧
技巧 1:智能忽略文件 📁
创建 .claudeignore 文件:
# 构建产物
dist/
build/
*.min.js
# 依赖包
node_modules/
vendor/
# 日志和缓存
*.log
.cache/
.next/
# 测试覆盖率报告
coverage/
# 不相关的配置
.vscode/
.idea/
*.config.js (除了关键配置)
技巧 2:上下文压缩技术 🗜️
# 使用代码摘要而非完整代码
> 这个函数的作用是验证用户token并返回用户信息,约50行代码,主要逻辑是解析JWT、验证签名、查询数据库
# 而不是粘贴全部50行代码
技巧 3:渐进式上下文建立 📈
# 第一轮对话:建立基础理解
> 这是一个React + Node.js的用户管理系统
# 第二轮:聚焦具体问题
> 用户登录后状态管理有问题,涉及redux store和localStorage
# 第三轮:深入技术细节
> 具体是token刷新逻辑,需要在axios拦截器中处理