管理 Claude code上下文:实用手册

转载

Anthropic 的 Claude 代码和更广泛的 Claude 系列现在为开发者提供了前所未有的控制能力,可以控制模型看到的内容量推理深度。最近的产品更新(特别是 Sonnet 4 的 100 万 token 上下文窗口和 Claude 扩展的"思考"控制)使上下文管理变得更加强大和重要:您可以在单个会话中处理整个代码库------但前提是您需要有意地构建提示、文件和会话状态。本文解释了如何可靠地管理 Claude 代码的上下文:命令和用法、思考预算控制、CLAUDE.md 模式、子代理工作流、高级用户技巧、故障排除以及可以复制粘贴的具体代码示例。

什么是 Claude 代码?

Claude 代码是 Anthropic 的智能编程 CLI------一个以终端为首要的工具,将您的开发环境连接到 Claude 模型,使助手能够读取您的仓库、运行命令、编辑文件、运行测试、创建提交,并从终端执行多步骤工作流。它的构建使 AI 能够"生活"在您的 shell 中并作用于您的代码库,具有仓库扫描、斜杠命令、子代理(具有隔离上下文的专业助手)和用于外部工具的模型上下文协议(MCP)集成等功能。

为什么要管理 Claude 代码的上下文?

因为上下文 = 相关性 + 成本 + 安全性。如果不加控制,长历史记录会导致:

  • 更高的 token 使用量(更多成本,响应更慢)
  • 上下文漂移(旧/不相关的信息混淆输出)
  • 信息泄露(机密或敏感日志卡在会话中)

管理上下文可以保持输出准确、可预测且更便宜。

Claude 代码如何组织和保存项目上下文?

Claude 代码是一个智能 CLI,将您的仓库、工具和配置视为一等上下文源。它读取项目文件、CLAUDE.md、本地工具和配置的 MCP 服务器;它还支持子代理,每个子代理都有自己的上下文窗口(有助于避免污染主对话)。使用这个功能可以将主级策略与专业代理内存分开(例如,测试运行器、代码审查器)。

Claude 代码如何吸收仓库上下文和辅助文件?

它扫描工作目录和您添加的任何额外目录(--add-dir)。 它寻找 .claude/ 子文件夹(命令、代理)和 CLAUDE.md。 您可以连接模型上下文协议(MCP)服务器以访问外部工具;Claude 代码可以将这些工具继承到其工具集中。

我可以采用哪些方法在 Claude 代码中管理上下文?

  1. 掌握基本的上下文 CLI 命令 。将可重用的提示存储为 .claude/commands/ 中的斜杠命令,避免重复粘贴长提示。

  2. 适当设计 CLAUDE.md 文件。将 CLAUDE.md 添加到仓库根目录以定义目标、允许的工具、样式、升级规则和有用的斜杠命令。(Claude 代码会自动读取并将其用作权威指导。)

  3. 使用子代理进行任务隔离 ------每个子代理都有自己的上下文窗口和工具权限,这可以防止主会话被污染。将子代理存储在 .claude/agents/ 中并进行版本控制。

基本上下文管理命令有哪些?

以下是您在 Claude 代码中最常用来管理对话状态的命令。我列出了行为、示例用法、推荐场景和相关 CLI 标志的指针。

/clear --- "重新开始"

作用: 从会话中清除当前对话历史,使后续提示从干净的状态开始。REPL 会话继续,但来回消息从模型的上下文中删除。(项目文件和 CLAUDE.md 仍然可以被 Claude 代码访问。)

使用时机:

  • 完成功能或票据后,您想要一个干净会话来处理不相关的任务
  • 如果会话积累了许多探索性轮次且答案质量下降
  • 在将会话交给另一个用户/代理之前,以避免泄露先前的对话状态

用法:

bash 复制代码
# 在交互式 REPL 中
/clear

注意和技巧: /clear 对该会话的对话历史是破坏性的;如果您想返回保存在磁盘上的旧会话,请使用 /resume/--continue

/compact --- "总结和压缩"

作用: 将当前对话压缩为更短的摘要,保留重要事实和决策,然后用该摘要替换冗长的历史记录,使会话可以在不丢失重要上下文的情况下继续。这减少了 token 使用量,同时保持了连续性。

使用时机:

  • 当您想保留线程的重要状态但减少 token 占用时
  • 在会将上下文窗口推向限制的长新任务之前
  • 当您想要一个简洁的会话"记忆"同时保留关键决策时

用法:

bash 复制代码
# 在交互式 REPL 中
/compact
# 或者使用指令来指导摘要
/compact 仅总结决策、开放的 TODO 和配置更改

注意和技巧: 在某些构建或设置中,当对话长度接近限制时,auto-compactmicrocompact 和其他智能压缩行为可能会自动运行;这些功能正在推出,可能会出现在您的安装或托管环境中。(社区和更新日志讨论 microcompact 和 auto-compact 行为。)

--continue--resume 和会话控制(CLI 级别)

作用: 从 CLI 控制会话持久性和选择。

  • claude --continue(或 claude -c)------重新打开并继续当前项目目录中最近的对话。
  • claude --resume(或 claude -r <session-id>)------显示交互式选择器(或按 ID 恢复特定会话)。当您保存了许多会话并想要选择一个继续时很有用。

用法示例:

bash 复制代码
# 继续最近的会话
claude --continue

# 打开交互式会话选择器
claude --resume

# 按 id 恢复(非交互式)
claude --resume 550e8400-e29b-41d4-a716-446655440000

对上下文重要的交互模式快捷键(终端 UX)

  • Ctrl+L --- 清除终端屏幕(视觉上),但保留 对话历史。使用 /clear 实际重置历史。
  • Ctrl+D --- 退出会话(EOF)。
  • Ctrl+C --- 取消当前生成。

这些是便利控制;它们只影响终端行为,除非您明确运行 /clear--continue/--resume

其他与上下文相关的控制和标志

  • --add-dir <path> --- 包含 Claude 可以读取的额外目录(有助于限制 Claude 可以访问的内容并减少不必要的文件读取)。
  • --allowedTools --- 预先允许工具,以便 Claude 可以运行它们而无需重复权限提示(减少来回和嘈杂的工具权限对话框)。
  • 斜杠命令/.claude/commands/ 或 MCP 提供的)------存储经常使用的、高效的 token 提示;调用斜杠命令比重复粘贴长提示更便宜。

我应该如何设计 CLAUDE.md 文件来控制项目上下文?

什么是 CLAUDE.md 以及为什么它很重要

CLAUDE.md 是一个预检、项目级提示,当在仓库中启动时 Claude 代码会自动读取它。使用它来放置关于项目的简短、可操作、稳定的事实(名词、架构、标准)。因为模型将 CLAUDE.md 摄取到提示中,精心制作的文件减少了重复粘贴相同信息的需要并保留了宝贵的 token 预算。

CLAUDE.md:实用模板(推荐)

保持这些规则:简短(尽可能 100-200 行)、层次化(全局 → 项目 → 子目录覆盖)和机器可读部分。

markdown 复制代码
# CLAUDE.md --- 仓库顶部
项目:Acme 支付网关
主要语言:typescript
构建:pnpm build
运行测试:pnpm test
API 路由:src/api/*
数据库:通过 prisma 的 Postgres(架构在 prisma/schema.prisma)

# 约定
- 提交格式:约定式提交
- 测试覆盖率阈值:80%
- 样式:eslint + prettier(配置在 .eslintrc、.prettierrc)

# 我要求 Claude 做什么
- 当被要求创建功能时,始终包括测试并更新 CHANGELOG
- 修改数据库架构时,提供迁移计划和迁移文件

注意:

  • 将高价值项目(API、重要文件、基础设施命令、测试命令)放在前面。
  • 当不同模块有不同约定时,在子目录中使用单独的 CLAUDE.md 文件;Claude 将合并并优先处理更具体的文件。

我如何组装工作流和子代理来管理上下文并并行化工作?

什么是子代理?

子代理是 Claude 代码模式,其中主代理将离散任务委托给下属代理(例如:frontend-agentbackend-agentqa-agent),然后主代理协调它们的输出。子代理让您可以在系统的不同部分并行工作,而不会将所有内容塞进单个聊天中。

示例工作流:功能实现(并行代理)

  1. main-agent 读取 CLAUDE.md,创建计划
  2. frontend-agent(子代理)获得专注上下文:UI 契约、storybook、特定文件
  3. backend-agent(子代理)获得数据库架构、API 契约并实现端点
  4. qa-agent 运行测试,将失败的测试写回 main-agent
  5. main-agent 协调提交、合并请求并更新 CLAUDE.md

CLI 模式:

css 复制代码
# 启动主会话
claude --session main

# 生成前端子代理(概念上:具有范围 CLAUDE.md 的新会话)
claude --session frontend --cwd frontend/

提示: 在子目录下创建范围化的 CLAUDE.md 文件(frontend/CLAUDE.mdbackend/CLAUDE.md),这样每个子代理都从它需要的最小上下文开始。

示例子代理:.claude/agents/code-reviewer.md

markdown 复制代码
---
name: code-reviewer
description: 专注的代码审查器。有限工具:Read、Grep、Bash
---

您是一个代码审查器。当被调用时:
1. 运行 `git diff --name-only` 查看更改的文件
2. 优先考虑安全性、正确性、测试
3. 返回补丁(diff)和 3 项可操作的清单

保持上下文健康和降低成本的高级用户技巧有哪些?

1) 保持 CLAUDE.md 精简和层次化

避免巨大的单块 CLAUDE.md 文件。使用一个全局文件记录开发者的偏好,使用小模块文件记录区域特定内容。参见前面的模板。

2) 使用斜杠命令处理动词,CLAUDE.md 处理名词

使 CLAUDE.md 成为事实 的地方(存在什么文件、架构),使斜杠命令成为程序的地方(创建测试、运行重构)。这可以防止每个会话重新发送程序逻辑。社区智慧强调这种分离。

3) 将详细模式 + 计划模式用作调试工具

当 Claude 行为异常时,运行详细模式查看确切的上下文,并使用计划模式强制您可以在编辑之前批准的明确计划。

4) 仔细预算思考

从默认/最小思考 token 开始,只有当任务需要多步推理时才增加(复杂重构、形式验证)。对常规编辑使用较低的预算。

5) 输出和提交的仪表化

拥有自动运行测试并将其输出附加到会话的钩子(bash 模式 ! 运行 shell 命令并将输出作为上下文包含)。使用提交钩子创建带有消息的清晰原子提交。

当上下文"丢失"或 Claude 忘记指令时我应该如何故障排除?

常见症状和修复

症状: Claude 忽略 CLAUDE.md 或先前的指令。

修复: 确认文件在会话的当前工作目录中;检查是否有更具体的子目录 CLAUDE.md 覆盖它;使用详细模式查看当前提示。

症状: 长时间会话的性能下降(模型"忘记"早期部分)。

修复: 压缩会话:将稳定事实提取到 CLAUDE.md 中,或将对话部分快照到文件中并引用它们而不是重复。也考虑重新启动短会话并只传递简洁的上下文。

症状: 扩展思考花费太长时间或超时。

修复: 降低 thinking_budget,将任务分解为更小的子问题,或者如果您需要极大预算则运行批量离线分析。Anthropic 建议当最佳思考预算超过约 32K token 时进行批处理以避免超时。

结论

在 Claude 代码中管理上下文现在是一个多维问题:模型选择、子代理设计、CLAUDE.md 纪律、思考预算和工具架构都相互作用。从投入 1-2 小时编写清晰的 CLAUDE.md 开始,搭建 2-3 个专注的子代理,并为 token 和思考预算添加使用仪表化------您将立即在可靠性、成本可预测性和团队生产力方面看到收益。

相关推荐
win4r1 天前
🚀 程序员必看让AI编程100%可控!从1到N的开发神器OpenSpec规范驱动开发完整实战指南!支持Cursor、Claude Code、Codex!比Sp
ai编程·claude·vibecoding
小溪彼岸1 天前
Claude Code颠覆编程风格的Output Styles
aigc·claude
小溪彼岸1 天前
Hooks才是Claude Code CLI 的革命性更新
aigc·claude
小溪彼岸1 天前
深入了解Claude Code CLI子代理Subagent
aigc·claude
yaocheng的ai分身1 天前
【Claude官方文章】使用 Agent Skills 为现实世界配备 agents
claude
小溪彼岸3 天前
深入了解Claude Code CLI自定义命令
claude
小溪彼岸3 天前
Claude Code CLI MCP配置很难?三种方式轻松掌握
claude
佛喜酱的AI实践3 天前
Claude Code配置魔法:从单人编程到专属AI团队协作
人工智能·claude
哪吒编程3 天前
谁是最强编程大模型?横向对比GPT-5、GPT-5 Codex、Claude Sonnet 4.5、Gemini 2.5 Pro
gpt·chatgpt·claude