站点图标 高效码农

Claude Code效率翻倍秘籍:50个连开发者都不知道的实战技巧

Claude Code 使用指南:50个让你效率翻倍的实战技巧

如果你已经开始认真使用Claude Code,大概率已经体会到它带来的改变。现在你想挖掘更多潜力——那些真正能让你事半功倍的技巧。

这份指南汇集了来自Anthropic官方文档、Claude Code核心开发者Boris Cherny的分享、社区实践经验,以及我个人一整年的日常使用心得。无论你刚接触一周还是已经用了几个月,这些技巧都能帮上忙。

基础篇:日常使用必备设置

1. 设置cc别名,告别冗长命令

这是我每次启动Claude Code的第一步。在~/.zshrc(或~/.bashrc)中添加:

alias cc='claude --dangerously-skip-permissions'

运行source ~/.zshrc使其生效。现在你只需要输入cc就能启动,而且不会再看到权限确认提示。这个标志的名称确实让人警觉——只有在完全理解Claude Code对你的代码库能做什么、会做什么之后,才应该使用它。

2. 用!前缀直接运行bash命令

输入!git status!npm test,命令会立即执行。命令及其输出会直接进入上下文,Claude能看到结果并据此采取行动。这比让Claude运行命令要快得多。

3. Esc键的两层妙用:停止与回滚

按下Esc可以随时让Claude停下来,但不会丢失上下文。你可以立即重新引导对话方向。

连续按两次Esc(或输入/rewind)会打开一个可滚动的菜单,显示Claude创建的所有检查点。你可以单独恢复代码、对话内容,或者两者一起恢复。直接说”撤销那个”也一样有效。有四种恢复选项:代码和对话、仅对话、仅代码,或者从某个检查点开始重新总结。

这意味着你可以尝试那些只有40%把握的方案。如果可行,太好;如果不行,回滚就好。零风险。需要注意的是:检查点只追踪文件编辑。通过bash命令执行的变更(比如数据库迁移)不会被记录。

想继续之前的工作?claude --continue会恢复最近的对话,claude --resume则打开会话选择器。

4. 让Claude自己检查自己的工作

给Claude一个反馈循环,让它能发现自己的错误。在提示中包含测试命令、代码检查工具或期望的输出:

重构身份验证中间件,使用JWT替代会话令牌。
修改后运行现有的测试套件。
在完成前修复所有失败。

Claude会运行测试,看到失败,并在你介入前修复它们。对于界面变更,配置Playwright的MCP服务器,让Claude能打开浏览器、与页面交互,验证界面是否符合预期。这个反馈循环能发现单元测试遗漏的问题。

5. 安装语言智能插件

语言服务器协议插件让Claude能在每次文件编辑后自动进行诊断。类型错误、未使用的导入、缺失的返回类型——Claude能在你注意到之前发现并修复这些问题。这是你能安装的影响最大的插件。

选择适合你的并运行安装命令:

/plugin install typescript-lsp@claude-plugins-official
/plugin install pyright-lsp@claude-plugins-official
/plugin install rust-analyzer-lsp@claude-plugins-official
/plugin install gopls-lsp@claude-plugins-official

C#、Java、Kotlin、Swift、PHP、Lua和C/C++的插件也都有。运行/plugin进入”发现”标签页浏览完整列表。你需要在系统上安装对应的语言服务器二进制文件(插件会提示是否缺失)。

6. 善用gh CLI,教会Claude任何命令行工具

GitHub命令行工具处理拉取请求、议题和评论,无需单独的MCP服务器。命令行工具比MCP服务器更节省上下文,因为它们不会把工具模式加载到你的上下文窗口中。jqcurl和其他标准命令行工具同理。

对于Claude还不熟悉的工具:”用’sentry-cli –help’了解它,然后用它找出生产环境中最新的错误。”Claude会读取帮助输出,弄清楚语法,然后运行命令。即使是内部的专用命令行工具也能这样工作。

7. “ultrathink”关键字激活深度推理

这是一个关键字,能将思考投入设置为高,并在Opus 4.6上触发自适应推理。Claude会根据问题动态分配思考量。用于架构决策、棘手的调试、多步推理,或者任何希望Claude先思考再行动的场景。

你也可以用/effort永久设置投入级别。对于不太复杂的任务,较低的投入级别能保持速度和成本。让投入匹配问题——没必要在修改变量名上消耗思考投入。

会话管理:保持高效的关键

8. 用/clear重置会话,开启新任务

一个干净会话加上清晰的提示,胜过拖沓三小时的混乱对话。不同任务?先/clear再说。

我知道这感觉像是浪费进度,但重新开始效果确实更好。会话会劣化,因为之前工作的累积上下文会淹没当前的指令。花五秒钟/clear并写一个聚焦的起始提示,能帮你省下三十分钟的收益递减时间。

12. 用技能实现按需加载知识

技能是Markdown文件,能按需扩展Claude的知识。与每次会话都加载的系统提示词不同,技能只在当前任务相关时才加载。这让上下文保持精简。

.claude/skills/中创建技能,或者安装捆绑了预制技能的插件(运行/plugin浏览可用插件)。用技能处理专门的领域知识——API约定、部署流程、编码模式——那些Claude有时需要但不是每次都用的东西。

16. 用/btw处理快速旁路问题

/btw会弹出一个覆盖层,用于快速提问,不会进入你的对话历史。我用来澄清当前会话中的疑问:”为什么选择这个方法?”或者”另一个选项有什么权衡?”答案显示在可关闭的覆盖层中,主要上下文保持精简,Claude继续工作。

47. 用/loop设置周期性检查

/loop 5m check if the deploy succeeded and report back会在后台调度一个重复提示,每隔指定时间触发一次,同时你的会话保持打开。间隔是可选的(默认10分钟),支持秒、分、时、天单位。你也可以对其他命令循环:/loop 20m /review-pr 1234。任务是会话作用域的,3天后过期,所以忘记的循环不会永远运行。用/loop监控部署、观察CI流水线,或者在专注于其他事情时轮询外部服务。

文件与提示:让Claude理解你的意图

25. 用@直接指定文件

使用@直接引用文件:

@middleware.ts 包含了会话处理逻辑。
帮我检查一下会话过期后是否正常重定向。

@前缀会自动解析为文件路径,Claude确切知道去哪里找。Claude可以自己grep和搜索代码库,但每次搜索都要缩小候选范围、识别正确的文件,每一步都消耗token和上下文。从一开始就把Claude指向正确的文件,跳过了整个过程。

26. 用模糊提示探索陌生代码

“这个文件有什么可以改进的地方?”这是一个很好的探索提示。不是每个提示都需要具体。当你希望用新视角看现有代码时,模糊的问题给了Claude空间,能抛出你可能没想到要问的事情。

我在接手不熟悉的代码库时经常用这个。Claude会指出我第一次阅读时会忽略的模式、不一致之处和改进机会。

27. 用Ctrl+G直接编辑计划

当Claude提出计划时,按Ctrl+G会在文本编辑器中打开计划,让你直接编辑。添加约束、删除步骤、在Claude写一行代码之前就调整方向。当计划大体正确,但想调整几步又不想重新解释整个问题时很有用。

44. 让Claude采访你——当你无法完全细化需求

你知道想构建什么,但感觉没有Claude需要的所有细节来做好它。让Claude问问题。

我想构建一个用户仪表盘,展示最近的活动和通知。
用AskUserQuestion工具详细采访我。
问关于技术实现、边界情况、顾虑和权衡的问题。
别问明显的问题。
继续采访直到我们覆盖了所有内容,
然后把完整的规格说明写到SPEC.md。

规格说明写完后,用干净的上下文开始新会话,按完整规格执行。

权限与安全:平衡效率与风险

33. 用/permissions设置信任命令白名单

别再反复点击”批准”npm run lint了。/permissions让你把信任的命令加入白名单,保持流畅。任何不在列表中的命令仍会提示你批准。

34. 用/sandbox让Claude自由工作,但有防护

运行/sandbox启用操作系统级隔离。写入操作限制在项目目录内,网络请求限制在你批准的域名。它在macOS上用Seatbelt,Linux上用bubblewrap,因此限制适用于Claude派生的每个子进程。在自动批准模式下,沙箱中的命令运行无需权限提示,给你近乎完全的自主权,同时有防护。

对于无人监督的工作——比如夜间迁移、实验性重构——在Docker容器中运行Claude。容器提供完全隔离、轻松回滚,以及让Claude运行数小时的信心。

40. 用PreToolUse钩子拦截破坏性命令

用PreToolUse钩子阻止rm -rfdrop tabletruncate模式。Claude根本不会尝试执行。钩子在Claude执行工具前触发,所以破坏性命令在造成损害前就被拦截。

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "type": "command",
        "command": "if echo \\"$TOOL_INPUT\\" | grep -qE 'rm -rf|drop table|truncate'; then echo 'BLOCKED: destructive command' >&2; exit 2; fi"
      }
    ]
  }
}

把它添加到项目中的.claude/settings.json。你也可以用/hooks交互式设置,或者直接告诉Claude:”添加一个PreToolUse钩子,阻止rm -rf、drop table和truncate命令。”

42. 身份验证、支付和数据变更必须人工审查

Claude擅长写代码,但这些决策需要人:身份验证流程、支付逻辑、数据变更、破坏性数据库操作。无论代码看起来多好,都要审查。错误的作用域、配置错误的支付回调、无声删除列的迁移,都可能导致用户、金钱或信任的损失。没有自动化测试能捕捉到所有这些问题。

高效协作:Claude作为团队一员

19. 用子代理保持主会话干净

“用子代理弄清楚支付流程如何处理失败交易。”这会生成一个单独的Claude实例,有自己的上下文窗口。它读取所有文件,推理代码库,然后返回简洁的总结。

你的主会话保持干净,有充足空间构建新功能。深度调查可能在你写代码前就消耗掉一半上下文窗口。子代理把这些成本挡在主会话之外。内置类型包括Explore(Haiku,快速文件搜索)和Plan(只读分析)。

20. 代理团队:实验性但强大

先启用它:在设置或环境中添加CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS。然后告诉Claude创建团队:”创建一个有3个队友的代理团队,并行重构这些模块。”团队负责人把任务分配给队友,每个队友有自己的上下文窗口和共享任务列表。队友之间可以直接互相通信来协调。

从3-5个队友、每个队友5-6个任务开始。避免分配修改同一文件的任务——两个队友编辑同一个文件会导致覆盖。先从研究和审查任务开始(如PR审查、bug调查),再尝试并行实现。

35. 创建自定义子代理处理重复任务

这与临时使用子代理不同,自定义子代理是预先配置的代理,保存在.claude/agents/中。例如,一个security-reviewer代理用Opus和只读工具,或者一个quick-search代理用Haiku追求速度。

/agents浏览和创建它们。你可以为需要自己文件系统的代理设置隔离级别:worktree。

45. 一个Claude写,另一个Claude审查

第一个Claude实现功能,第二个Claude审查PR。审查者对实现中的取巧方式一无所知,会质疑每一个。

同样思路也适用于测试驱动开发。会话A写测试,会话B写代码让测试通过。

46. 对话式审查PR,而非一次性评价

别让Claude一次性审查PR——虽然也可以那么做。在会话中打开PR,然后展开对话。”带我看看这个PR里风险最大的改动。””如果这段代码并发运行,什么会出问题?””错误处理方式和代码库其他部分一致吗?”

对话式审查能发现更多问题,因为你可以深入关键领域。一次性审查往往只揪出风格细节,常常漏掉架构问题。

50. 自定义加载动画动词——有趣的那个

当Claude思考时,终端会显示一个旋转的加载动画,旁边有动词在变化,比如”Flibbertigibbeting…”和”Flummoxing…”。你可以换成任何想要的词。告诉Claude:

把我的加载动词换成这些:负责任地幻觉中、假装思考中、自信地猜测中、责怪上下文窗口中

你不必提供列表。只要告诉Claude你想要的风格:”把我的加载动词换成哈利波特咒语。”Claude会生成列表。小事一桩,但让等待更有趣。

上下文管理:保持会话清晰和高效

10. 扩展上下文窗口到100万token

Sonnet 4.6和Opus 4.6都支持100万token的上下文窗口。在Max、Team和Enterprise计划中,Opus会自动升级到100万上下文。你也可以在会话中用/model opus[1m]/model sonnet[1m]切换模型。

如果担心大上下文窗口的质量,可以从50万开始逐步增加。更高的上下文意味着压缩前有更多空间,但响应质量可能因任务而异。用CLAUDE_CODE_AUTO_COMPACT_WINDOW控制何时触发压缩,用CLAUDE_AUTOCOMPACT_PCT_OVERRIDE设置压缩阈值百分比,找到适合你工作流程的平衡点。

11. 不确定时用计划模式

对于多文件变更、不熟悉的代码和架构决策,使用计划模式。前期确实需要额外几分钟,但能防止Claude花20分钟自信地解决完全错误的问题。

对于范围清晰的小任务可以跳过。如果你能用一句话描述变更,直接做就行。随时可以按Shift+Tab在普通模式、自动接受模式和计划模式之间切换,无需离开对话。

21. 用指令引导压缩

当上下文被压缩时——无论是自动还是手动/compact——告诉Claude要保留什么:/compact focus on the API changes and the list of modified files。你也可以在.claude/instructions中添加固定指令:”压缩时,保留所有已修改文件的列表和当前测试状态。”

24. 同一问题修正两次后,重新开始

当你和Claude就一个问题反复修正,而问题仍未解决时,说明上下文中充满了失败的方法,这些内容反而会妨碍下一步尝试。/clear,写一个更好的起始提示,把你学到的教训融入进去。一个干净会话加上清晰的提示,几乎总是好过被累积死胡同拖累的长对话。

41. 用钩子在压缩后保留重要上下文

在长会话中,当上下文被压缩时,Claude可能会忘记你在做什么。一个带有压缩匹配器的通知钩子,能在每次压缩触发时自动重新注入关键上下文。

告诉Claude:”设置一个通知钩子,在压缩后提醒我当前任务、已修改的文件和任何约束。”Claude会在你的设置中创建钩子。适合重新注入的内容包括:当前任务描述、已修改文件列表、以及硬性约束(如”不要修改迁移文件”)。

这在长达数小时的会话中最有价值,当你深入开发某个功能时,不能承受Claude断线。

高级自动化:钩子与工作流

39. 用PostToolUse钩子自动格式化

每次Claude编辑文件后,格式化工具都应该自动运行。在.claude/settings.json中添加PostToolUse钩子,让Claude编辑或写入任何文件后,自动运行Prettier(或你用的格式化工具):

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "command",
            "command": "npx prettier --write \\"$CLAUDE_FILE_PATH\\" 2>/dev/null || true"
          }
        ]
      }
    ]
  }
}

|| true防止钩子失败阻塞Claude。你也可以链式调用其他工具——作为第二个钩子条目添加npx eslint --fix

如果你用编辑器打开同一文件,考虑在Claude工作时关闭保存时自动格式化。一些开发者反映编辑器保存可能使提示缓存失效,迫使Claude重新读取文件。让钩子处理格式化就好。

38. 用instructions提建议,用钩子提要求

.claude/instructions是建议性的,Claude约80%的时间会遵循。钩子是确定性的,100%执行。如果有必须每次发生的事——格式化、代码检查、安全检查——做成钩子。如果是Claude应该考虑的指导,instructions就够了。

48. Claude完成时播放提示音

添加一个Stop钩子,在Claude完成响应时播放系统提示音。开始一个任务,切换到其他工作,完成时听到提示音就知道回来了。

{
  "hooks": {
    "Stop": [
      {
        "matcher": "*",
        "hooks": [
          {
            "type": "command",
            "command": "/usr/bin/afplay /System/Library/Sounds/Glass.aiff"
          }
        ]
      }
    ]
  }
}

49. 用claude -p实现批量并行操作

用非交互模式遍历文件列表。--allowedTools限制每个文件的Claude操作范围。加上&并行运行,实现最大吞吐量。

for file in $(cat files-to-migrate.txt); do
  claude -p "把$file从类组件迁移到钩子" \\
    --allowedTools "Edit,Bash(git commit *)" &
done
wait

这非常适合转换文件格式、跨代码库更新导入语句、以及运行每个文件独立的重复性迁移工作。

项目设置:让Claude理解你的代码库

28. 运行/init生成初始instructions,然后把结果删减一半

.claude/instructions是项目根目录的Markdown文件,给Claude持久的指令:构建命令、编码标准、架构决策、代码库约定。Claude会在每次会话开始时读取它。/init根据你的项目结构生成一个起始版本——它会识别构建命令、测试脚本和目录布局。

但生成的内容往往臃肿。如果你说不清某一行为什么在,就删掉它。精简噪声,添加缺失的内容。

29. 检验instructions每一行的标准

对于.claude/instructions的每一行,问自己:没有这一行,Claude会犯错吗?如果Claude已经能正确做某事,这条指令就是噪声。每一条不必要的行都会稀释真正重要的那些。指令预算大约在150-200条左右,超过这个范围依从性会下降,而系统提示已经占用了约50条。

30. Claude犯错后,说”更新你的instructions,这样的事别再发生”

当Claude犯错时,说”更新instructions文件,这样的事别再发生”。Claude会自己写一条规则。下一次会话,它会自动遵循。

随着时间推移,你的instructions会变成一份由真实错误塑造的活文档。为了防止它无限增长,用@引用(第32条技巧)指向一个单独的文件,比如.claude/project-context.md存放模式和修复。instructions保持精简,Claude按需读取详细信息。

31. 用.claude/rules/存放只部分适用的规则

把Markdown文件放在.claude/rules/中,按主题组织指令。默认情况下,每个规则文件会在每次会话开始时加载。想让规则只在Claude处理特定文件时加载,添加路径头信息:

---
paths:
  - "**/*.ts"
---
# TypeScript约定
优先使用接口而非类型。

这让你的主.claude/instructions保持精简。TypeScript规则在Claude读取.ts文件时加载,Go规则在处理.go文件时加载。Claude不会处理那些它根本没碰的语言的约定。

32. 用@引用保持instructions精简

@引用文档:.claude/auth-patterns.md。你也可以引用README.mdpackage.json,甚至@~/.claude/my-project-instructions.md

Claude在需要时才会读取这些文件。把instructions看作”需要时有更多上下文”,而不是每次会话都读的臃肿文件。

远程与并行:扩展你的工作方式

9. 从手机控制Claude Code

运行claude remote-control启动一个会话,然后从Claude网站或iOS/Android上的Claude应用连接到它。会话在你的机器上本地运行,手机或浏览器只是查看它的窗口。你可以发送消息、批准工具调用、随时随地监控进度。

如果你用了第1条技巧中的cc别名,Claude已有完全权限,不需要每个操作都批准。这让远程控制更顺畅:启动任务,走开,只有Claude完成或遇到意外时才从手机查看。

15. 用–worktree创建隔离并行分支

claude --worktree feature-auth创建一个隔离的工作副本和新分支。Claude会为你处理git worktree的创建和清理。

Claude Code团队称之为”Claude Code的扩展”。同时启动3-5个worktree,每个运行自己的Claude会话。我通常跑2-3个。每个worktree有自己的会话、自己的分支、自己的文件系统状态。

本地worktree的上限是你的机器——多个开发服务器、构建任务和Claude会话都在争抢CPU。而Claude Code Cloud把每个代理移到自己的云端容器中,带浏览器预览,你的机器腾出来处理那些真正需要你脑力的工作。

17. 用Ctrl+B把长任务放到后台

当Claude启动一个耗时的bash命令——测试套件、构建、迁移——按Ctrl+B把它送到后台。Claude继续工作,你可以继续对话,进程完成时结果会出现。

18. 添加实时状态行

状态行是一个shell脚本,在Claude每次执行后运行。它在终端底部显示实时信息:当前目录、git分支、上下文使用量(按窗口满度用颜色编码)。

最快设置方式是直接在Claude Code中运行/statusline。它会问你想显示什么,然后为你生成脚本。

43. 用/branch尝试不同路径,不丢失当前进展

/branch(或/fork)在当前会话点创建一个副本。在分支里尝试有风险的重构——成了就保留,不行的话原会话不受影响。这和回滚不同,因为两条路径可以并存。

常见问题解答

「Q: 什么时候该用/claude –continue而不是/claude –resume?」

A: --continue直接恢复最近的会话,适合每天开始工作时继续昨天的进度。--resume打开一个会话选择器,适合在多个并行会话间切换。

「Q: 钩子和instructions有什么区别?」

A: instructions是建议性的,Claude大约80%的时间会遵循。钩子是确定性的,100%执行。需要确保每次都发生的事用钩子,给Claude参考的指导用instructions。

「Q: 子代理和代理团队什么区别?」

A: 子代理是你临时指派处理特定任务的独立Claude实例,结果会汇报回来。代理团队是多个Claude实例组成的协作组,有团队负责人分配任务,成员间可以互相通信,适合并行处理复杂任务。

「Q: MCP服务器和命令行工具怎么选?」

A: 命令行工具更节省上下文,因为它们不会把工具模式加载到上下文窗口。MCP服务器提供更丰富的功能,比如Playwright能让Claude打开浏览器与页面交互。需要什么选什么。

「Q: 上下文压缩后Claude会忘记什么?」

A: 压缩会移除较旧的对话内容,但保留关键信息。可以用指令引导压缩(第21条)或用钩子在压缩后重新注入重要上下文(第41条),确保Claude不会断线。


你不用掌握全部50条技巧。选一个最近让你最头疼的问题对应的技巧,明天就试试。一个真正用起来的技巧,胜过50个收藏了再也没打开过的技巧。

退出移动版