理解新的代码库
快速获取代码库概览
假设您刚加入一个新项目,需要快速了解其结构。查找相关代码
假设您需要定位与特定功能相关的代码。高效修复错误
假设您遇到了错误消息,需要找到并修复其来源。重构代码
假设您需要更新旧代码以使用现代模式和实践。使用专门的 subagents
假设您想使用专门的 AI subagents 来更有效地处理特定任务。使用 Plan Mode 进行安全的代码分析
Plan Mode 指示 Claude 通过使用只读操作分析代码库来创建计划,非常适合探索代码库、规划复杂更改或安全地审查代码。在 Plan Mode 中,Claude 使用AskUserQuestion 在提出计划之前收集需求并澄清您的目标。
何时使用 Plan Mode
- 多步骤实现:当您的功能需要对许多文件进行编辑时
- 代码探索:当您想在更改任何内容之前彻底研究代码库时
- 交互式开发:当您想与 Claude 迭代方向时
如何使用 Plan Mode
在会话期间打开 Plan Mode 您可以在会话期间使用 Shift+Tab 循环切换权限模式来切换到 Plan Mode。 如果您处于 Normal Mode,Shift+Tab 首先切换到 Auto-Accept Mode,在终端底部显示⏵⏵ accept edits on。随后的 Shift+Tab 将切换到 Plan Mode,显示 ⏸ plan mode on。
在 Plan Mode 中启动新会话
要在 Plan Mode 中启动新会话,请使用 --permission-mode plan 标志:
-p 直接在 Plan Mode 中运行查询(即在”无头模式”中):
示例:规划复杂的重构
--name 或 /rename 设置了名称,接受计划不会覆盖它。
将 Plan Mode 配置为默认值
使用测试
假设您需要为未覆盖的代码添加测试。 Claude 可以生成遵循您项目现有模式和约定的测试。请求测试时,请明确说明您想验证的行为。Claude 检查您现有的测试文件以匹配已在使用的样式、框架和断言模式。 为了获得全面的覆盖,要求 Claude 识别您可能遗漏的边界情况。Claude 可以分析您的代码路径并建议测试错误条件、边界值和容易被忽视的意外输入。创建拉取请求
您可以通过直接要求 Claude 创建拉取请求(“create a pr for my changes”),或逐步指导 Claude: 当您使用gh pr create 创建 PR 时,会话会自动链接到该 PR。您可以稍后使用 claude --from-pr <number> 恢复它。
处理文档
假设您需要为代码添加或更新文档。使用图像
假设您需要在代码库中使用图像,并希望 Claude 帮助分析图像内容。将图像添加到对话中
您可以使用以下任何方法:
- 将图像拖放到 Claude Code 窗口中
- 复制图像并使用 ctrl+v 将其粘贴到 CLI 中(不要使用 cmd+v)
- 向 Claude 提供图像路径。例如,“Analyze this image: /path/to/your/image.png”
引用文件和目录
使用 @ 快速包含文件或目录,无需等待 Claude 读取它们。引用 MCP 资源
使用扩展思考(Thinking Mode)
扩展思考默认启用,为 Claude 提供空间在响应前逐步推理复杂问题。此推理在详细模式中可见,您可以使用Ctrl+O 切换。
此外,Opus 4.6 和 Sonnet 4.6 支持自适应推理:不是固定的思考令牌预算,而是模型根据您的努力级别设置动态分配思考。扩展思考和自适应推理一起工作,让您能够控制 Claude 在响应前的推理深度。
扩展思考对于复杂的架构决策、具有挑战性的错误、多步骤实现规划和评估不同方法之间的权衡特别有价值。
“think”、“think hard” 和 “think more” 等短语被解释为常规提示指令,不分配思考令牌。
配置 Thinking Mode
思考默认启用,但您可以调整或禁用它。| 范围 | 如何配置 | 详细信息 |
|---|---|---|
| 努力级别 | 运行 /effort,在 /model 中调整,或设置 CLAUDE_CODE_EFFORT_LEVEL | 控制 Opus 4.6 和 Sonnet 4.6 的思考深度。请参阅调整努力级别 |
ultrathink 关键字 | 在提示中的任何地方包含 “ultrathink” | 在 Opus 4.6 和 Sonnet 4.6 上为该轮设置努力为高。对于需要深度推理的一次性任务很有用,无需永久更改您的努力设置 |
| 切换快捷键 | 按 Option+T(macOS)或 Alt+T(Windows/Linux) | 为当前会话切换思考开/关(所有模型)。可能需要终端配置来启用 Option 键快捷键 |
| 全局默认值 | 使用 /config 切换 Thinking Mode | 在所有项目中设置默认值(所有模型)。 保存为 ~/.claude/settings.json 中的 alwaysThinkingEnabled |
| 限制令牌预算 | 设置 MAX_THINKING_TOKENS 环境变量 | 将思考预算限制为特定数量的令牌。在 Opus 4.6 和 Sonnet 4.6 上,仅当设置为 0 时才适用,除非禁用自适应推理。示例:export MAX_THINKING_TOKENS=10000 |
Ctrl+O 切换详细模式,并查看显示为灰色斜体文本的内部推理。
扩展思考如何工作
扩展思考控制 Claude 在响应前执行多少内部推理。更多思考提供更多空间来探索解决方案、分析边界情况和自我纠正错误。 使用 Opus 4.6 和 Sonnet 4.6,思考使用自适应推理:模型根据您选择的努力级别动态分配思考令牌。这是调整速度和推理深度之间权衡的推荐方式。 使用较旧的模型,思考使用从您的输出分配中提取的固定令牌预算。预算因模型而异;有关详细信息,请参阅MAX_THINKING_TOKENS。您可以使用该环境变量限制预算,或通过 /config 或 Option+T/Alt+T 切换完全禁用思考。
在 Opus 4.6 和 Sonnet 4.6 上,自适应推理控制思考深度,因此 MAX_THINKING_TOKENS 仅在设置为 0 以禁用思考时适用,或当 CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING=1 将这些模型恢复为固定预算时。请参阅环境变量。
恢复以前的对话
启动 Claude Code 时,您可以恢复以前的会话:claude --continue继续当前目录中最近的对话claude --resume打开对话选择器或按名称恢复claude --from-pr 123恢复链接到特定拉取请求的会话
/resume 切换到不同的对话。
会话按项目目录存储。/resume 选择器显示来自同一 git 存储库的会话,包括 worktrees。由 claude -p 或 SDK 调用创建的会话不会出现在选择器中,但您仍然可以通过将其会话 ID 直接传递给 claude --resume <session-id> 来恢复它。
命名您的会话
给会话起描述性名称以便稍后找到它们。这是在处理多个任务或功能时的最佳实践。使用会话选择器
/resume 命令(或 claude --resume 不带参数)打开具有以下功能的交互式会话选择器:
选择器中的键盘快捷键:
| 快捷键 | 操作 |
|---|---|
↑ / ↓ | 在会话之间导航 |
→ / ← | 展开或折叠分组的会话 |
Enter | 选择并恢复突出显示的会话 |
P | 预览会话内容 |
R | 重命名突出显示的会话 |
/ | 搜索以过滤会话 |
A | 在当前目录和所有项目之间切换 |
B | 过滤到来自当前 git 分支的会话 |
Esc | 退出选择器或搜索模式 |
- 会话名称或初始提示
- 自上次活动以来经过的时间
- 消息计数
- Git 分支(如果适用)
/branch、/rewind 或 --fork-session 创建)在其根会话下分组,使查找相关对话更容易。
使用 Git worktrees 运行并行 Claude Code 会话
当同时处理多个任务时,您需要每个 Claude 会话都有自己的代码库副本,以便更改不会冲突。Git worktrees 通过创建单独的工作目录来解决这个问题,每个目录都有自己的文件和分支,同时共享相同的存储库历史和远程连接。这意味着您可以让 Claude 在一个 worktree 中处理功能,同时在另一个 worktree 中修复错误,而不会相互干扰。 使用--worktree(-w)标志创建隔离的 worktree 并在其中启动 Claude。您传递的值成为 worktree 目录名称和分支名称:
<repo>/.claude/worktrees/<name> 创建,并从默认远程分支分支。worktree 分支命名为 worktree-<name>。
基础分支不能通过 Claude Code 标志或设置进行配置。origin/HEAD 是存储在您本地 .git 目录中的引用,Git 在您克隆时设置一次。如果存储库的默认分支稍后在 GitHub 或 GitLab 上更改,您的本地 origin/HEAD 会继续指向旧的,worktrees 将从那里分支。要重新同步您的本地引用与远程当前认为的默认值:
.git 目录。远程服务器上没有任何更改。如果您希望 worktrees 基于特定分支而不是远程的默认值,请使用 git remote set-head origin your-branch-name 显式设置它。
为了完全控制 worktrees 的创建方式,包括为每次调用选择不同的基础,配置 WorktreeCreate hook。该 hook 完全替换 Claude Code 的默认 git worktree 逻辑,因此您可以从您需要的任何 ref 获取和分支。
您也可以在会话期间要求 Claude “work in a worktree” 或 “start a worktree”,它会自动创建一个。
Subagent worktrees
Subagents 也可以使用 worktree 隔离来并行工作而不会冲突。要求 Claude “use worktrees for your agents” 或在自定义 subagent 中通过在代理的 frontmatter 中添加isolation: worktree 来配置它。每个 subagent 获得自己的 worktree,当 subagent 完成而没有更改时自动清理。
Worktree 清理
当您退出 worktree 会话时,Claude 根据您是否进行了更改来处理清理:- 无更改:worktree 及其分支自动删除
- 存在更改或提交:Claude 提示您保留或删除 worktree。保留会保留目录和分支,以便您稍后可以返回。删除会删除 worktree 目录及其分支,丢弃所有未提交的更改和提交
复制 gitignored 文件到 worktrees
Git worktrees 是新鲜检出,所以它们不包括来自主存储库的未跟踪文件,如.env 或 .env.local。要在 Claude 创建 worktree 时自动复制这些文件,请将 .worktreeinclude 文件添加到项目根目录。
该文件使用 .gitignore 语法列出要复制的文件。只有匹配模式且也被 gitignored 的文件才会被复制,因此跟踪的文件永远不会被复制。
.worktreeinclude
--worktree 创建的 worktrees、subagent worktrees 和桌面应用中的并行会话。
手动管理 worktrees
为了更好地控制 worktree 位置和分支配置,直接使用 Git 创建 worktrees。当您需要检出特定的现有分支或将 worktree 放在存储库外时,这很有用。非 git 版本控制
Worktree 隔离默认使用 git。对于其他版本控制系统如 SVN、Perforce 或 Mercurial,配置 WorktreeCreate 和 WorktreeRemove hooks 以提供自定义 worktree 创建和清理逻辑。配置后,这些 hooks 在您使用--worktree 时替换默认的 git 行为,因此.worktreeinclude 不被处理。在您的 hook 脚本中复制任何本地配置文件。
对于具有共享任务和消息的并行会话的自动协调,请参阅代理团队。
在 Claude 需要您的注意时获得通知
当您启动长时间运行的任务并切换到另一个窗口时,您可以设置桌面通知,以便在 Claude 完成或需要您的输入时了解。这使用Notification hook 事件,每当 Claude 等待权限、空闲并准备好新提示或完成身份验证时触发。
将 hook 添加到您的设置
打开 如果您的设置文件已经有
~/.claude/settings.json 并添加一个 Notification hook,该 hook 调用您的平台的本机通知命令:- macOS
- Linux
- Windows
hooks 键,请将 Notification 条目合并到其中,而不是覆盖。您也可以通过在 CLI 中描述您想要的内容来要求 Claude 为您编写 hook。可选地缩小匹配器范围
默认情况下,hook 在所有通知类型上触发。要仅针对特定事件触发,请将
matcher 字段设置为以下值之一:| 匹配器 | 触发时机 |
|---|---|
permission_prompt | Claude 需要您批准工具使用 |
idle_prompt | Claude 完成并等待您的下一个提示 |
auth_success | 身份验证完成 |
elicitation_dialog | Claude 在问您一个问题 |
将 Claude 用作 unix 风格的实用程序
将 Claude 添加到您的验证过程
假设您想将 Claude Code 用作 linter 或代码审查工具。 将 Claude 添加到您的构建脚本:管道进入、管道输出
假设您想将数据管道输入 Claude,并获得结构化格式的数据。 通过 Claude 管道数据:控制输出格式
假设您需要 Claude 的输出采用特定格式,特别是在将 Claude Code 集成到脚本或其他工具时。按计划运行 Claude
假设您想让 Claude 自动定期处理任务,如每天早上审查开放的 PR、每周审计依赖项或在夜间检查 CI 失败。 根据您希望任务运行的位置选择调度选项:| 选项 | 运行位置 | 最适合 |
|---|---|---|
| 云计划任务 | Anthropic 管理的基础设施 | 即使您的计算机关闭也应该运行的任务。在 claude.ai/code 配置。 |
| 桌面计划任务 | 您的机器,通过桌面应用 | 需要直接访问本地文件、工具或未提交更改的任务。 |
| GitHub Actions | 您的 CI 管道 | 与存储库事件(如打开的 PR)相关的任务,或应该与工作流配置一起存在的 cron 计划。 |
/loop | 当前 CLI 会话 | 会话打开时的快速轮询。任务在您退出时被取消。 |
询问 Claude 关于其功能
Claude 内置访问其文档,可以回答关于其自身功能和限制的问题。示例问题
Claude 基于文档提供对这些问题的答案。有关可执行示例和实际演示,请参阅上面的特定工作流程部分。
后续步骤
最佳实践
充分利用 Claude Code 的模式
Claude Code 如何工作
理解代理循环和上下文管理
扩展 Claude Code
添加 skills、hooks、MCP、subagents 和插件
参考实现
克隆开发容器参考实现