本页涵盖日常开发的实用工作流程:探索陌生代码、调试、重构、编写测试、创建 PR 和管理会话。每个部分都包含示例提示,您可以根据自己的项目进行调整。有关更高级的模式和提示,请参阅最佳实践。
理解新代码库
快速获取代码库概览
假设您刚加入一个新项目,需要快速了解其结构。
请求高级概览
> give me an overview of this codebase
深入了解特定组件
> explain the main architecture patterns used here
> what are the key data models?
> how is authentication handled?
提示:
- 从广泛的问题开始,然后缩小到特定领域
- 询问项目中使用的编码约定和模式
- 请求项目特定术语的词汇表
查找相关代码
假设您需要定位与特定功能相关的代码。
要求 Claude 查找相关文件
> find the files that handle user authentication
获取有关组件如何交互的上下文
> how do these authentication files work together?
理解执行流程
> trace the login process from front-end to database
提示:
- 明确说明您要查找的内容
- 使用项目中的领域语言
- 为您的语言安装代码智能插件,以便为 Claude 提供精确的”转到定义”和”查找引用”导航
高效修复错误
假设您遇到了错误消息,需要找到并修复其来源。
与 Claude 分享错误
> I'm seeing an error when I run npm test
请求修复建议
> suggest a few ways to fix the @ts-ignore in user.ts
应用修复
> update user.ts to add the null check you suggested
提示:
- 告诉 Claude 重现问题的命令并获取堆栈跟踪
- 提及重现错误的任何步骤
- 让 Claude 知道错误是间歇性的还是持续的
重构代码
假设您需要更新旧代码以使用现代模式和实践。
识别用于重构的遗留代码
> find deprecated API usage in our codebase
获取重构建议
> suggest how to refactor utils.js to use modern JavaScript features
安全地应用更改
> refactor utils.js to use ES2024 features while maintaining the same behavior
验证重构
> run tests for the refactored code
提示:
- 要求 Claude 解释现代方法的优势
- 在需要时请求更改保持向后兼容性
- 以小的、可测试的增量进行重构
使用专门的 subagents
假设您想使用专门的 AI subagents 来更有效地处理特定任务。
查看可用的 subagents
这显示所有可用的 subagents 并让您创建新的。 自动使用 subagents
Claude Code 自动将适当的任务委派给专门的 subagents:> review my recent code changes for security issues
> run all tests and fix any failures
明确请求特定的 subagents
> use the code-reviewer subagent to check the auth module
> have the debugger subagent investigate why users can't log in
为您的工作流创建自定义 subagents
然后选择”创建新 subagent”并按照提示定义:
- 描述 subagent 目的的唯一标识符(例如
code-reviewer、api-designer)。
- Claude 何时应使用此代理
- 它可以访问哪些工具
- 描述代理角色和行为的系统提示
提示:
- 在
.claude/agents/ 中创建项目特定的 subagents 以供团队共享
- 使用描述性的
description 字段来启用自动委派
- 限制工具访问权限为每个 subagent 实际需要的内容
- 查看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 标志:
claude --permission-mode plan
在 Plan Mode 中运行”无头”查询
您也可以使用 -p 在 Plan Mode 中直接运行查询(即在”无头模式”中):
claude --permission-mode plan -p "Analyze the authentication system and suggest improvements"
示例:规划复杂重构
claude --permission-mode plan
> I need to refactor our authentication system to use OAuth2. Create a detailed migration plan.
Claude 分析当前实现并创建全面的计划。通过后续问题进行细化:
> What about backward compatibility?
> How should we handle database migration?
按 Ctrl+G 在默认文本编辑器中打开计划,您可以在 Claude 继续之前直接编辑它。
将 Plan Mode 配置为默认值
// .claude/settings.json
{
"permissions": {
"defaultMode": "plan"
}
}
有关更多配置选项,请参阅设置文档。
使用测试
假设您需要为未覆盖的代码添加测试。
识别未测试的代码
> find functions in NotificationsService.swift that are not covered by tests
生成测试框架
> add tests for the notification service
添加有意义的测试用例
> add test cases for edge conditions in the notification service
运行并验证测试
> run the new tests and fix any failures
Claude 可以生成遵循您项目现有模式和约定的测试。请求测试时,请明确说明您想验证的行为。Claude 检查您现有的测试文件以匹配已在使用的样式、框架和断言模式。
为了获得全面的覆盖,要求 Claude 识别您可能遗漏的边界情况。Claude 可以分析您的代码路径并建议测试错误条件、边界值和容易忽视的意外输入。
创建拉取请求
您可以通过直接要求 Claude 创建拉取请求(“为我的更改创建一个 pr”),或逐步指导 Claude:
总结您的更改
> summarize the changes I've made to the authentication module
审查和细化
> enhance the PR description with more context about the security improvements
当您使用 gh pr create 创建 PR 时,会话会自动链接到该 PR。您可以稍后使用 claude --from-pr <number> 恢复它。
在提交前审查 Claude 生成的 PR,并要求 Claude 突出显示潜在风险或注意事项。
处理文档
假设您需要为代码添加或更新文档。
识别未记录的代码
> find functions without proper JSDoc comments in the auth module
生成文档
> add JSDoc comments to the undocumented functions in auth.js
审查和增强
> improve the generated documentation with more context and examples
验证文档
> check if the documentation follows our project standards
提示:
- 指定您想要的文档样式(JSDoc、docstrings 等)
- 要求文档中包含示例
- 请求公共 API、接口和复杂逻辑的文档
使用图像
假设您需要在代码库中使用图像,并希望 Claude 帮助分析图像内容。
将图像添加到对话中
您可以使用以下任何方法:
- 将图像拖放到 Claude Code 窗口中
- 复制图像并使用 ctrl+v 将其粘贴到 CLI 中(不要使用 cmd+v)
- 向 Claude 提供图像路径。例如,“分析此图像:/path/to/your/image.png”
要求 Claude 分析图像
> What does this image show?
> Describe the UI elements in this screenshot
> Are there any problematic elements in this diagram?
使用图像获取上下文
> Here's a screenshot of the error. What's causing it?
> This is our current database schema. How should we modify it for the new feature?
从视觉内容获取代码建议
> Generate CSS to match this design mockup
> What HTML structure would recreate this component?
提示:
- 当文本描述不清楚或繁琐时使用图像
- 包含错误、UI 设计或图表的屏幕截图以获得更好的上下文
- 您可以在对话中使用多个图像
- 图像分析适用于图表、屏幕截图、模型等
- 当 Claude 引用图像时(例如
[Image #1]),Cmd+Click(Mac)或 Ctrl+Click(Windows/Linux)链接以在默认查看器中打开图像
引用文件和目录
使用 @ 快速包含文件或目录,无需等待 Claude 读取它们。
引用单个文件
> Explain the logic in @src/utils/auth.js
这在对话中包含文件的完整内容。引用目录
> What's the structure of @src/components?
这提供了带有文件信息的目录列表。引用 MCP 资源
> Show me the data from @github:repos/owner/repo/issues
这使用 @server:resource 格式从连接的 MCP 服务器获取数据。有关详细信息,请参阅 MCP 资源。
提示:
- 文件路径可以是相对的或绝对的
- @ 文件引用在文件的目录和父目录中添加
CLAUDE.md 到上下文
- 目录引用显示文件列表,而不是内容
- 您可以在单个消息中引用多个文件(例如,“@file1.js and @file2.js”)
使用扩展思考(Thinking Mode)
扩展思考默认启用,为 Claude 提供空间在响应前逐步推理复杂问题。此推理在详细模式中可见,您可以使用 Ctrl+O 切换。
此外,Opus 4.6 引入了自适应推理:不是固定的思考令牌预算,而是模型根据您的努力级别设置动态分配思考。扩展思考和自适应推理一起工作,让您控制 Claude 在响应前的推理深度。
扩展思考对于复杂的架构决策、具有挑战性的错误、多步骤实现规划和评估不同方法之间的权衡特别有价值。
“think”、“think hard” 和 “think more” 等短语被解释为常规提示指令,不分配思考令牌。
配置 Thinking Mode
思考默认启用,但您可以调整或禁用它。
| 范围 | 如何配置 | 详细信息 |
|---|
| 努力级别 | 在 /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 上忽略,除非设置为 0)。示例:export MAX_THINKING_TOKENS=10000 |
要查看 Claude 的思考过程,按 Ctrl+O 切换详细模式,将内部推理显示为灰色斜体文本。
扩展思考如何工作
扩展思考控制 Claude 在响应前执行多少内部推理。更多思考提供更多空间来探索解决方案、分析边界情况和自我纠正错误。
使用 Opus 4.6,思考使用自适应推理:模型根据您选择的努力级别(低、中、高)动态分配思考令牌。这是调整速度和推理深度之间权衡的推荐方式。
使用其他模型,思考使用固定预算,最多 31,999 个令牌来自您的输出预算。您可以使用 MAX_THINKING_TOKENS 环境变量限制此,或通过 /config 或 Option+T/Alt+T 切换完全禁用思考。
MAX_THINKING_TOKENS 在 Opus 4.6 和 Sonnet 4.6 上被忽略,因为自适应推理控制思考深度。一个例外:设置 MAX_THINKING_TOKENS=0 仍然在任何模型上完全禁用思考。要禁用自适应思考并恢复到固定思考预算,请设置 CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING=1。请参阅环境变量。
您需要为所有使用的思考令牌付费,即使 Claude 4 模型显示总结的思考
恢复以前的对话
启动 Claude Code 时,您可以恢复以前的会话:
claude --continue 继续当前目录中最近的对话
claude --resume 打开对话选择器或按名称恢复
claude --from-pr 123 恢复链接到特定拉取请求的会话
从活跃会话内,使用 /resume 切换到不同的对话。
会话按项目目录存储。/resume 选择器显示来自同一 git 存储库的会话,包括 worktrees。
命名您的会话
给会话起描述性名称以便稍后找到它们。这是在处理多个任务或功能时的最佳实践。
命名当前会话
在会话期间使用 /rename 给它一个易记的名称:您也可以从选择器重命名任何会话:运行 /resume,导航到会话,然后按 R。 稍后按名称恢复
从命令行:claude --resume auth-refactor
或从活跃会话内:
使用会话选择器
/resume 命令(或 claude --resume 不带参数)打开具有以下功能的交互式会话选择器:
选择器中的键盘快捷键:
| 快捷键 | 操作 |
|---|
↑ / ↓ | 在会话之间导航 |
→ / ← | 展开或折叠分组的会话 |
Enter | 选择并恢复突出显示的会话 |
P | 预览会话内容 |
R | 重命名突出显示的会话 |
/ | 搜索以过滤会话 |
A | 在当前目录和所有项目之间切换 |
B | 过滤到来自当前 git 分支的会话 |
Esc | 退出选择器或搜索模式 |
会话组织:
选择器显示带有有用元数据的会话:
- 会话名称或初始提示
- 自上次活动以来经过的时间
- 消息计数
- Git 分支(如果适用)
分叉的会话(使用 /rewind 或 --fork-session 创建)在其根会话下分组,使查找相关对话更容易。
提示:
- 尽早命名会话:在开始处理不同任务时使用
/rename——稍后查找”payment-integration”比”explain this function”容易得多
- 使用
--continue 快速访问当前目录中最近的对话
- 当您知道需要哪个会话时使用
--resume session-name
- 当您需要浏览和选择时使用
--resume(不带名称)
- 对于脚本,使用
claude --continue --print "prompt" 以非交互模式恢复
- 在选择器中按
P 在恢复前预览会话
- 恢复的对话以与原始对话相同的模型和配置开始
工作原理:
- 对话存储:所有对话都自动保存在本地,包含完整的消息历史记录
- 消息反序列化:恢复时,整个消息历史记录被恢复以保持上下文
- 工具状态:来自以前对话的工具使用和结果被保留
- 上下文恢复:对话以所有以前的上下文完整恢复
使用 Git worktrees 运行并行 Claude Code 会话
当同时处理多个任务时,您需要每个 Claude 会话都有自己的代码库副本,以便更改不会冲突。Git worktrees 通过创建单独的工作目录来解决这个问题,每个目录都有自己的文件和分支,同时共享相同的存储库历史和远程连接。这意味着您可以让 Claude 在一个 worktree 中处理功能,同时在另一个 worktree 中修复错误,而不会相互干扰。
使用 --worktree(-w)标志创建隔离的 worktree 并在其中启动 Claude。您传递的值成为 worktree 目录名称和分支名称:
# 在名为 "feature-auth" 的 worktree 中启动 Claude
# 创建 .claude/worktrees/feature-auth/ 和新分支
claude --worktree feature-auth
# 在单独的 worktree 中启动另一个会话
claude --worktree bugfix-123
如果您省略名称,Claude 会自动生成一个随机名称:
# 自动生成名称如 "bright-running-fox"
claude --worktree
Worktrees 在 <repo>/.claude/worktrees/<name> 创建,并从默认远程分支分支。worktree 分支命名为 worktree-<name>。
您也可以在会话期间要求 Claude “在 worktree 中工作”或”启动 worktree”,它会自动创建一个。
Subagent worktrees
Subagents 也可以使用 worktree 隔离来并行工作而不冲突。要求 Claude “为您的代理使用 worktrees”或在自定义 subagent 中通过在代理的 frontmatter 中添加 isolation: worktree 来配置它。每个 subagent 获得自己的 worktree,在 subagent 完成而没有更改时自动清理。
Worktree 清理
当您退出 worktree 会话时,Claude 根据您是否进行了更改来处理清理:
- 无更改:worktree 及其分支自动删除
- 存在更改或提交:Claude 提示您保留或删除 worktree。保留会保留目录和分支,以便您稍后可以返回。删除会删除 worktree 目录及其分支,丢弃所有未提交的更改和提交
要在 Claude 会话外清理 worktrees,请使用手动 worktree 管理。
将 .claude/worktrees/ 添加到您的 .gitignore 以防止 worktree 内容在主存储库中显示为未跟踪的文件。
手动管理 worktrees
为了更好地控制 worktree 位置和分支配置,直接使用 Git 创建 worktrees。当您需要检出特定的现有分支或将 worktree 放在存储库外时,这很有用。
# 使用新分支创建 worktree
git worktree add ../project-feature-a -b feature-a
# 使用现有分支创建 worktree
git worktree add ../project-bugfix bugfix-123
# 在 worktree 中启动 Claude
cd ../project-feature-a && claude
# 完成时清理
git worktree list
git worktree remove ../project-feature-a
在官方 Git worktree 文档中了解更多。
记住在每个新 worktree 中根据您的项目设置初始化开发环境。根据您的堆栈,这可能包括运行依赖项安装(npm install、yarn)、设置虚拟环境或遵循您的项目标准设置过程。
非 git 版本控制
Worktree 隔离默认使用 git。对于其他版本控制系统如 SVN、Perforce 或 Mercurial,配置 WorktreeCreate 和 WorktreeRemove hooks 以提供自定义 worktree 创建和清理逻辑。配置后,这些 hooks 在您使用 --worktree 时替换默认的 git 行为。
对于具有共享任务和消息的并行会话的自动协调,请参阅代理团队。
在 Claude 需要您的注意时获得通知
当您启动长时间运行的任务并切换到另一个窗口时,您可以设置桌面通知,以便在 Claude 完成或需要您的输入时了解。这使用 Notification hook 事件,每当 Claude 等待权限、空闲并准备好新提示或完成身份验证时触发。
打开 hooks 菜单
输入 /hooks 并从事件列表中选择 Notification。
配置匹配器
选择 + Match all (no filter) 以在所有通知类型上触发。要仅针对特定事件通知,选择 + Add new matcher… 并输入以下值之一:| 匹配器 | 触发时机 |
|---|
permission_prompt | Claude 需要您批准工具使用 |
idle_prompt | Claude 完成并等待您的下一个提示 |
auth_success | 身份验证完成 |
elicitation_dialog | Claude 在问您一个问题 |
添加您的通知命令
选择 + Add new hook… 并输入您的操作系统的命令: macOS
Linux
Windows (PowerShell)
使用 osascript 通过 AppleScript 触发本机 macOS 通知:osascript -e 'display notification "Claude Code needs your attention" with title "Claude Code"'
使用 notify-send,它在大多数带有通知守护程序的 Linux 桌面上预装:notify-send 'Claude Code' 'Claude Code needs your attention'
使用 PowerShell 通过 .NET 的 Windows Forms 显示本机消息框:powershell.exe -Command "[System.Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms'); [System.Windows.Forms.MessageBox]::Show('Claude Code needs your attention', 'Claude Code')"
保存到用户设置
选择 User settings 以在所有项目中应用通知。
有关完整的演练和 JSON 配置示例,请参阅使用 hooks 自动化工作流。有关完整的事件架构和通知类型,请参阅通知参考。
将 Claude 用作 unix 风格的实用程序
将 Claude 添加到您的验证过程
假设您想使用 Claude Code 作为 linter 或代码审查者。
将 Claude 添加到您的构建脚本:
// package.json
{
...
"scripts": {
...
"lint:claude": "claude -p 'you are a linter. please look at the changes vs. main and report any issues related to typos. report the filename and line number on one line, and a description of the issue on the second line. do not return any other text.'"
}
}
提示:
- 在 CI/CD 管道中使用 Claude 进行自动代码审查
- 自定义提示以检查与您的项目相关的特定问题
- 考虑为不同类型的验证创建多个脚本
管道进出
假设您想将数据管道传入 Claude,并以结构化格式获取数据。
通过 Claude 管道数据:
cat build-error.txt | claude -p 'concisely explain the root cause of this build error' > output.txt
提示:
- 使用管道将 Claude 集成到现有 shell 脚本中
- 与其他 Unix 工具结合以实现强大的工作流
- 考虑使用 —output-format 获得结构化输出
控制输出格式
假设您需要 Claude 的输出采用特定格式,特别是在将 Claude Code 集成到脚本或其他工具时。
使用文本格式(默认)
cat data.txt | claude -p 'summarize this data' --output-format text > summary.txt
这仅输出 Claude 的纯文本响应(默认行为)。使用 JSON 格式
cat code.py | claude -p 'analyze this code for bugs' --output-format json > analysis.json
这输出包含元数据(包括成本和持续时间)的消息的 JSON 数组。使用流式 JSON 格式
cat log.txt | claude -p 'parse this log file for errors' --output-format stream-json
这在 Claude 处理请求时实时输出一系列 JSON 对象。每条消息都是有效的 JSON 对象,但如果连接,整个输出不是有效的 JSON。
提示:
- 对于简单集成(您只需要 Claude 的响应),使用
--output-format text
- 当您需要完整的对话日志时使用
--output-format json
- 对于每个对话轮次的实时输出,使用
--output-format stream-json
询问 Claude 其功能
Claude 内置访问其文档,可以回答有关其自身功能和限制的问题。
示例问题
> can Claude Code create pull requests?
> how does Claude Code handle permissions?
> what skills are available?
> how do I use MCP with Claude Code?
> how do I configure Claude Code for Amazon Bedrock?
> what are the limitations of Claude Code?
Claude 根据文档为这些问题提供答案。有关可执行示例和实际演示,请参阅上面的特定工作流部分。
提示:
- Claude 始终可以访问最新的 Claude Code 文档,无论您使用的版本如何
- 提出具体问题以获得详细答案
- Claude 可以解释复杂功能,如 MCP 集成、企业配置和高级工作流
后续步骤