Claude Opus 4.6 和 Sonnet 4.6 拥有 100 万 tokens 的超大上下文窗口, 约等于 75 万汉字或 2 万行代码。合理管理上下文,能大幅提升工作效率。
上下文窗口的构成
每次请求中,上下文窗口被以下内容占用:
┌─────────────────────────────────────────┐
│ 系统提示(CLAUDE.md + 工具定义) │ ~5,000 tokens
├─────────────────────────────────────────┤
│ 对话历史(当前会话的所有消息) │ 可变,随对话增长
├─────────────────────────────────────────┤
│ 当前请求(你的提问 + 相关文件内容) │ 可变
├─────────────────────────────────────────┤
│ 保留给输出的空间 │ ~64,000 tokens
└─────────────────────────────────────────┘
总计:≤ 1,000,000 tokens
查看当前 Token 使用量
bash
# 在 Claude Code 交互模式中
/status # 显示当前会话的 Token 使用情况
# 命令行查看上次会话统计
claude -p "hello" --output-format json | python3 -c "
import json, sys
d = json.load(sys.stdin)
print(f'本次消耗: {d.get("cost_usd", 0):.4f} USD')
"会话压缩(Compaction)
当对话历史很长时,Claude Code 会自动压缩历史对话,保留关键信息:
自动压缩触发
json
// .claude/settings.json 配置
{
"compaction": {
"enabled": true,
"threshold": 0.8 // 上下文使用率超过 80% 时触发
}
}手动触发压缩
bash
# 在交互会话中
/compact # 立即压缩当前对话历史
# 指定保留最近 N 轮
/compact 10 # 保留最近 10 轮对话,其余压缩为摘要压缩原理
压缩不是删除,而是将老旧对话转为结构化摘要:
原始对话(50轮,约 80K tokens)
↓ 压缩
摘要(约 5K tokens)+ 最近 10 轮完整对话(约 15K tokens)
= 20K tokens(节省 75%)
--continue:跨会话续接上下文
bash
# 继续最近一次会话
claude --continue
claude -c # 简写
# 继续时执行特定任务
claude -c -p "继续刚才的重构,处理 services/ 目录"
# 通过会话 ID 恢复特定会话
claude -r "session_abc123" "继续处理支付模块"
# 为会话命名(方便后续引用)
claude -r "payment-refactor" "开始支付模块重构"超大代码库处理策略
策略一:--add-dir 扩展工作目录
bash
# 让 Claude 同时访问多个目录
claude --add-dir ../shared-lib --add-dir ../api-sdk
# 适合 monorepo:可以跨包分析依赖关系策略二:分批读取,用摘要传递上下文
bash
# 第一阶段:分析架构
claude "请分析 src/ 目录的整体架构,输出架构摘要"
# 保存摘要
claude -p "分析架构" > architecture-summary.md
# 第二阶段:基于摘要深入某个模块
cat architecture-summary.md | claude -p "基于以上架构,详细分析 src/payment/ 模块的问题"策略三:.claudeignore 精准控制读取范围
# 只让 Claude 看核心源码,排除非必要文件
node_modules/
dist/
*.test.ts # 先排除测试,专注主逻辑
docs/ # 排除文档,节省 Token
Prompt Caching 配合长上下文
长系统提示(CLAUDE.md)每次都会重复发送,使用 Prompt Caching 只付一次费:
python
# 通过 API 使用时,标记长系统提示为可缓存
response = client.messages.create(
model="claude-sonnet-4-6",
system=[
{
"type": "text",
"text": open("CLAUDE.md").read(), # 可能有几千 tokens
"cache_control": {"type": "ephemeral"}
}
],
messages=[{"role": "user", "content": user_input}]
)
# 缓存命中时,这部分 Token 费用降低 90%Token 成本估算
以 Sonnet 4.6 为例($3/M 输入,$15/M 输出):
| 场景 | 输入 Tokens | 成本 |
|---|---|---|
| 普通对话(10 轮) | ~10K | $0.03 |
| 中型项目分析(50 轮) | ~200K | $0.60 |
| 大型代码库全量读取 | ~500K | $1.50 |
| 100 万 Token 满窗口 | ~1M | $3.00 |
实际使用中,大多数任务 10-50K tokens 就够了。 配合会话压缩和 .claudeignore,日常成本通常 $0.1-0.5/天。
来源:Claude Code 官方文档 - docs.anthropic.com/en/docs/claude-code