Claude Code 中高级使用技巧
人工智能编程助手已经从简单的代码补全工具进化为成熟的开发伙伴。Claude Code 代表了这一演进的下一个阶段,它提供了一个可被称为**“自主编程”**的框架。这款工具旨在深度集成到你的工作流中, 做很多之前 AI coding 做不到的事情:
- 代码理解与问答: 充当项目专家,为新团队成员讲解大型代码库的运作方式,极具价值。
- 大规模重构: 擅长修改庞大文件(例如超过 18,000 行),凭借其对全局代码关系的理解,在其他 AI 工具束手无策时依然表现出色。
- 调试: 提供逐步推理过程,助你找到错误的根本原因,而非像其他工具那样只给出修复方案却无从解释。
- 复杂功能生成: 遵循 “探索 → 计划 → 实现” 的工作流。你可以引导它先分析问题并制定详细计划,然后再编写代码。
- 测试驱动开发 (TDD): 可以指导它先编写失败的测试用例,然后生成能让测试通过的最精简代码,从而显著加速 TDD 循环。
接下来,让我们深入探索这些能助你驾驭其强大功能的技巧。
1. 基础设置:工作流的核心
坚实的配置是高效工作流的基石。在这一步投入的时间,将在后续的每一次交互中为你带来丰厚的回报。
- 使用
CLAUDE.md
作为项目记忆:在任何项目的根目录下,都应该有一个简洁的CLAUDE.md
文件。该文件充当项目的“短期记忆”,包含了关键的架构原则、编码规范和测试流程。为了保持文件简洁、重点突出,可以使用 imports 语法(如@docs/testing.md
)来引用更详细的文档。你可以通过以#
开头的消息快速添加新规则,或使用/memory
命令直接编辑这份记忆。 - Monorepo 感知:现代开发常常涉及 Monorepo。为了让 Claude 能够访问多个包以进行跨目录分析和重构,可以使用
--add-dir
标志,或在你的.claude/settings.json
文件中定义additionalDirectories
。这对于跨越代码库多个部分的任务至关重要。 - 键盘与终端快捷操作:速度至关重要。掌握快捷键可以简化你的交互流程。使用
Esc Esc
快速编辑上一条消息。运行一次/terminal-setup
命令,即可启用Shift+Enter
来输入换行符。对于 Vim 爱好者,/vim
命令可以让你在熟悉的 Vim 模式下进行编辑。
2. 优化日常工作流
有了坚实的基础,你就可以引入一些实践来减少阻力,提升日常工作效率。
使用正确的模式
CLI 提供了几种权限模式,以适应不同的任务和风险偏好:
default
:最安全的新手起点。在执行有潜在风险的操作前,它会提示你进行确认,在安全和速度之间取得了良好平衡。acceptEdits
:一种“实时编码”模式,它会自动接受文件编辑而无需提示。非常适合快速迭代以及在你密切监督流程的场景。plan
:一种为代码审查等任务设计的“安全”模式。在此模式下,Claude 可以分析和讨论代码,但不能修改任何文件。bypassPermissions
:完全跳过所有权限提示。请极其谨慎地使用此模式,并且只在意外更改不会造成任何后果的沙盒环境中使用。
你可以在 .claude/settings.json
中设置默认模式,或使用 --permission-mode
标志为单次会话指定模式。
斜杠命令与自定义
重复性任务是自动化的绝佳候选。通过创建自定义斜杠命令,将你最常用的提示词转化为可复用的工具。只需将它们作为带有 YAML frontmatter 的 Markdown 文件存储在 .claude/commands/
目录中即可。
- 在 frontmatter 中使用
allowed-tools
来限制命令可以执行的操作,增加一层安全性。 - 使用
!
前缀可以运行 shell 命令(例如!git status -sb
),并将其输出直接注入到你的提示词上下文中。 - 使用
$ARGUMENTS
向你的命令传递参数,使其更加灵活和强大。
恢复会话与并行工作
claude --continue
:立即跳回到你最近一次的会话中。claude --resume
:列出过去的所有会话,让你能精确地从上次中断的地方继续。- Git worktrees:对于大规模重构,可以使用
git worktree
创建隔离的分支。这允许你并行运行多个独立的 Claude 会话,每个会话都有自己的上下文,从而避免混淆和冲突。
用于协作的输出风格
/output-style explanatory
:在响应中增加一个“洞察 (Insights)”部分,非常适合用于指导初级开发者或在 Pull Request 中解释复杂的变更。/output-style learning
:在响应中添加TODO(human)
占位符,主动邀请你参与协作,填补空白。
3. 集成质量与安全保障
真正的自主需要有护栏。将质量检查和安全网直接集成到你的工作流中,让你能充满信心地进行开发。
使用钩子 (Hooks) 作为安全护栏
钩子是在特定生命周期事件中自动运行的 shell 命令,提供了一种确定性的方式来强制执行规则。你可以在 .claude/settings.json
中配置它们。
PreToolUse
:在工具使用前运行检查。例如,你可以阻止对敏感文件的编辑,或要求必须存在相应的测试文件才允许写入操作。PostToolUse
:在工具使用后自动执行清理任务。这非常适合在每次编辑后运行prettier
或gofmt
等格式化工具,以及代码检查器和快速测试。Notification
:当 Claude 需要你输入时发送桌面提醒,这样你就可以在切换任务的同时不会忘记这边的进度。
例如,让 Mac 在任务完成后通知你 - code ~/.claude/settings.json
{
"hooks": {
"Stop": [
{
"hooks": [
{
"type": "command",
"command": "say \"job's done!\""
}
]
}
]
}
}
权限与安全
在你的设置中定义明确的 allow
(允许)、ask
(询问)和 deny
(拒绝)规则,以便在无需频繁提示的情况下管理工具的访问权限。
- Allow:安全、常规的操作,如
Bash(npm run test:*)
。 - Ask:你希望手动批准的有潜在风险的操作,如
Bash(git push:*)
。 - Deny:用于防止灾难性后果的关键安全规则,如
Read(./.env)
或Read(./secrets/**)
。
专家子代理 (Subagents)
对于复杂的项目,你可以定义具有特定角色的项目级代理,例如 code-reviewer
(代码审查员)、test-runner
(测试运行器)或 debugger
(调试器)。每个代理都配置了有限的工具集,以防止其越权操作。Claude 可以自动将任务委派给合适的代理,你也可以明确地调用某个代理。可以参考这个仓库获取示例。