Claude Code 高频实战技巧 20 条(2026 实测)

Claude Code 是 Anthropic 官方的终端 AI 编程工具,从 2025 年发布到现在,已经从“能用”进化到“顺手”。但我观察身边同事的用法,大部分人还停留在“打开、提问、等结果”的阶段,大量提效功能压根没碰过,token 费用也白白多花不少。

这篇文章整理了我日常使用中频率最高的 20 条技巧,覆盖记忆配置、权限管理、交互提效、hooks 自动化、MCP、上下文管理、成本控制和报错处置八个方面。每条都给出可直接复制的命令或配置片段,全部在 2026 年当前版本上验证过。

先说明适用范围:本文面向已经装好 Claude Code、至少跑通过一次会话的读者,安装和登录流程不再赘述。20 条技巧之间没有先后依赖,可以按目录跳读,但第一部分的记忆配置和第五部分的上下文管理建议完整看完——它们是其余技巧的地基,也是新手和熟手差距最大的两块。


一、记忆与配置篇

技巧 1:新项目第一件事,跑 /init 生成 CLAUDE.md

CLAUDE.md 是 Claude Code 的“项目记忆”,每次会话启动时自动读入上下文。与其从零手写,不如让它自己生成初稿:

cd your-project
claude
> /init

/init 会扫描项目结构、构建脚本、代码风格,生成一份 CLAUDE.md 草稿。生成后务必手工精修:删掉泛泛而谈的描述,留下真正影响行为的硬性约束。生成的文件记得提交进 git,让全组共享同一份“项目常识”。

技巧 2:CLAUDE.md 要写成“指令”,不要写成“文档”

CLAUDE.md 每次会话都会占用上下文窗口,写得越长,既烧 token 又稀释注意力。几个实测有效的写法原则:

  • 用祈使句,一行一条,别写段落。“运行测试用 pnpm test,不要用 npm”比“本项目的测试体系是……”有效得多;
  • 只写模型猜不到的事:内部约定、目录含义、禁止事项、常用命令;
  • 大而全的内容拆出去,用 @ 导入语法按需引用:
# 项目约定
- 包管理器:pnpm,禁止使用 npm/yarn
- 提交信息遵循 Conventional Commits
- 修改 src/core 下的文件前必须先读 @docs/core-design.md

# 更多规范
@docs/code-style.md

另外注意分层:~/.claude/CLAUDE.md 放个人全局偏好(比如“回复用中文”),项目根目录的 CLAUDE.md 放团队约定,两者会叠加生效。

技巧 3:会话中用 # 号随手记入记忆

对话过程中发现模型犯了个以后还会犯的错?不用打开编辑器,直接以 # 开头输入:

# 这个项目的接口返回字段统一用 snake_case,不要驼峰

Claude Code 会询问把这条记忆写到哪一级(用户级还是项目级),确认后自动追加到对应的 CLAUDE.md。养成随手 # 的习惯,项目记忆会越用越准。用 /memory 可以随时打开记忆文件检查和清理。

技巧 4:settings.json 的三级作用域,别配错地方

Claude Code 的配置文件有三层,优先级从低到高:

文件 作用域 是否入库
~/.claude/settings.json 当前用户所有项目
.claude/settings.json 当前项目全体成员 建议提交
.claude/settings.local.json 当前项目仅自己 自动加入忽略

典型分工:团队统一的权限规则、hooks 放项目级;个人的环境变量、实验性配置放 local。比如通过环境变量指定接入点和密钥:

{
  "env": {
    "ANTHROPIC_BASE_URL": "https://your-api-endpoint.example.com",
    "ANTHROPIC_AUTH_TOKEN": "sk-your-token-here"
  }
}

注意 ANTHROPIC_API_KEYANTHROPIC_AUTH_TOKEN 不要同时设置,两个都存在时请求头会冲突,直接报 401。


二、权限管理篇

技巧 5:搞懂四种权限模式,Shift+Tab 随时切换

Claude Code 有四种权限模式:

  • default:每个敏感操作(写文件、执行命令)都询问;
  • acceptEdits:自动接受文件编辑,命令仍询问,适合信任度高的重构任务;
  • plan:只读模式,模型可以看代码、做分析,但不能改任何东西;
  • bypassPermissions:全部放行,危险,见技巧 7。

在会话中按 Shift+Tab 可以循环切换。我的高频用法是:接到一个复杂需求先切 plan 模式,让模型读代码、给出实施方案,人工确认方案没跑偏,再切回默认模式动手。这一步能避免大量“改了一半发现方向错了”的返工。启动时也可以直接指定:

claude --permission-mode plan

一个经验值:改动预计超过三个文件的任务,一律先走 plan 模式。规划阶段模型只读不写,试错成本几乎为零;而直接放手改,一旦方向错了,回滚加重来的成本远比多花两分钟看方案高。

技巧 6:用 allow/deny 规则精细放行,告别无限确认弹窗

每次都手动点确认很快会烦。在 .claude/settings.json 里写规则,把确定安全的操作一次性放行,把绝对不能碰的显式拒绝:

{
  "permissions": {
    "allow": [
      "Bash(pnpm test:*)",
      "Bash(pnpm lint:*)",
      "Bash(git diff:*)",
      "Bash(git log:*)",
      "Read(src/**)"
    ],
    "deny": [
      "Read(./.env)",
      "Read(./.env.*)",
      "Read(./secrets/**)",
      "Bash(rm -rf:*)"
    ]
  }
}

规则格式是 工具名(匹配模式),deny 优先级高于 allow。把 .env、密钥目录写进 deny 是每个项目都该做的兜底——即使模型被诱导去读敏感文件,也会被硬性拦下。

技巧 7:bypassPermissions 只在一次性沙箱里用

claude --dangerously-skip-permissions 会跳过所有确认,配合自动化很爽,但等于把 shell 的完全控制权交给模型。原则只有一条:宿主机上不用,只在容器等一次性隔离环境里用。比如 CI 或本地 Docker:

docker run --rm -v "$PWD":/workspace -w /workspace \
  your-dev-image \
  claude -p "把所有单测跑通,失败的修到通过" --dangerously-skip-permissions

容器销毁即恢复原状,风险可控。在自己日常开发机上图省事开这个开关,属于用一次爽、出一次事故哭一年的操作。


三、交互提效篇

技巧 8:把重复提示词做成自定义斜杠命令

同样的提示词打第三遍时,就该把它固化成命令。在项目里建 .claude/commands/fix-issue.md

---
description: 修复指定编号的 Issue
allowed-tools: Bash(gh issue view:*), Bash(git:*)
---
请修复 Issue #$ARGUMENTS:
1. 先用 gh issue view $ARGUMENTS 查看问题详情
2. 在代码库中定位相关文件
3. 实现修复,并补充必要的测试
4. 运行测试确认全部通过后,给出改动摘要

之后输入 /fix-issue 123 即可,$ARGUMENTS 会被替换成命令后面跟的参数。项目级命令放 .claude/commands/(全组共享),个人通用命令放 ~/.claude/commands/。我固化的高频命令包括:代码审查、写提交信息、生成周报、接口文档同步。

技巧 9:@ 引用文件,截图直接粘贴

不要靠嘴描述“就是那个用户服务的文件”,直接 @ 引用,输入时还有路径补全:

对比 @src/services/user.ts 和 @src/services/order.ts 的错误处理方式,统一成前者的风格

前端联调时更实用的是图片:把报错截图或设计稿复制到剪贴板,在终端里直接粘贴(macOS 注意是 Ctrl+V 而不是 Cmd+V),模型能直接读图定位问题。“照着这张设计稿改样式”这类需求,贴图远比文字描述准确。

还有一个细节:@ 引用目录时,进入上下文的是目录结构清单而不是所有文件内容,所以引用一个大目录是安全的;但 @ 一个几万行的单文件会把全文塞进上下文,引用前先想想是否真的需要全文,很多时候引用目录再让模型自己按需去读,更省 token。

技巧 10:! 前缀直通 shell,输出自动进上下文

想看某个命令的结果又不想退出会话,用 ! 前缀:

!git log --oneline -10
!pnpm test 2>&1 | tail -30

命令在本地直接执行,输出会自动附加到当前上下文——也就是说,下一句你可以直接说“第三个 commit 引入的问题,帮我修一下”,模型是看得到刚才输出的。这比复制粘贴报错快得多。

技巧 11:Esc 打断,双击 Esc 回到过去

两个被严重低估的按键操作:

  • 单击 Esc:立刻打断模型当前的输出或工具调用。发现方向不对不用干等它跑完,打断、补充信息、继续;
  • 双击 Esc:弹出历史消息列表,选中某条之前的发言,从那个时间点分叉重来。

双击 Esc 特别适合“聊了十轮发现第三轮就带偏了”的场景:与其在被污染的上下文里反复纠正,不如直接回到第三轮改写提问,后面的错误路径全部作废,又干净又省 token。

技巧 12:–continue 与 --resume,关掉终端也能找回会话

会话历史默认都在本地存着,关终端不等于丢进度:

# 直接接上最近一次会话
claude --continue

# 列出历史会话,挑一个恢复
claude --resume

# 无头模式同样支持接续
claude -p --continue "接着刚才的思路,把剩下两个模块也改完"

跨天的长任务用 --resume 找回,上下文、工具授权状态都还在,不需要重新铺垫背景。


四、hooks 与自动化篇

技巧 13:PostToolUse 钩子——模型每次改完代码自动格式化

hooks 是 Claude Code 的事件回调机制,能在特定时机强制执行确定性动作。这是它和“在 CLAUDE.md 里叮嘱模型记得格式化”的本质区别:hooks 是必然执行的代码,不是可能被遗忘的提示词。

.claude/settings.json 里配置,让每次文件编辑后自动跑格式化:

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "command",
            "command": "jq -r '.tool_input.file_path' | { read f; npx prettier --write \"$f\" 2>/dev/null || true; }"
          }
        ]
      }
    ]
  }
}

钩子命令通过标准输入收到一个 JSON,里面带着本次工具调用的完整参数(如 tool_input.file_path),用 jq 取出来即可。从此再也不会出现“AI 改的代码没过 lint”这种低级返工。

技巧 14:PreToolUse 钩子——危险命令直接拦截

PreToolUse 在工具执行之前触发,脚本以退出码 2 结束时,本次调用会被阻止,stderr 的内容会反馈给模型让它换路。写一个拦截脚本 .claude/hooks/guard.sh

#!/bin/bash
input=$(cat)
cmd=$(echo "$input" | jq -r '.tool_input.command // empty')

if echo "$cmd" | grep -qE 'rm -rf /|git push --force|DROP TABLE'; then
  echo "该命令命中危险规则,已被钩子拦截,请改用更安全的方案" >&2
  exit 2
fi
exit 0

对应配置:

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          { "type": "command", "command": "bash .claude/hooks/guard.sh" }
        ]
      }
    ]
  }
}

permissions 的 deny 规则做静态匹配,hooks 可以写任意逻辑(正则、白名单、调用外部审计服务),两层一起上,自动化才敢真放开跑。

技巧 15:MCP 让 Claude Code 长出新工具

MCP(Model Context Protocol)是给模型接外部工具的标准协议,数据库、浏览器、内部系统都能接。添加一个本地文件系统服务:

claude mcp add --transport stdio fs -- npx -y @modelcontextprotocol/server-filesystem ~/projects

接远程 HTTP 服务:

claude mcp add --transport http internal-docs https://your-api-endpoint.example.com/mcp

想让全组共享,加 --scope project,配置会写进项目根目录的 .mcp.json,提交进 git 后同事拉下来就能用。claude mcp list 查看状态,会话里 /mcp 可以检查连接和授权。

一个实用建议:MCP 工具的定义会占上下文,只接当前项目真用得上的服务,接十个八个“以防万一”的服务反而拖慢响应、抬高成本。我自己长期保留的只有三类:数据库只读查询(排查线上问题时让模型直接看数据)、浏览器自动化(前端改完自己打开页面验证)、内部知识库检索。每接一个新服务前先问自己:这个能力是不是用 ! 跑一条命令就能替代?能替代就不接。

技巧 16:子代理——把专项任务外包给独立上下文

子代理(subagent)是带独立上下文窗口、独立系统提示词、独立工具集的“分身”。建一个代码审查专员 .claude/agents/code-reviewer.md

---
name: code-reviewer
description: 代码审查专家。在完成显著代码改动后主动使用,检查正确性、安全性与可维护性
tools: Read, Grep, Glob, Bash
---
你是一名严格的资深代码审查员。审查时:
1. 优先检查正确性问题和安全隐患,其次才是风格
2. 每个问题给出具体文件、行号和修改建议
3. 按严重程度排序输出

子代理有两个核心价值:一是上下文隔离——审查过程中翻几十个文件的记录都留在子代理自己的窗口里,不会挤爆主会话;二是行为专业化——专用系统提示词比在主会话里临时叮嘱稳定得多。用 /agents 命令可以交互式创建和管理。

frontmatter 里的 description 写法有讲究:它是主会话决定“要不要派活给这个子代理”的依据,所以要写清触发时机(“在完成显著代码改动后主动使用”),而不是只写身份(“代码审查专家”)。描述写得含糊,子代理就会经常该出场时不出场。


五、上下文与成本篇

技巧 17:/clear 勤用,/compact 带指令用

上下文管理是用好 Claude Code 的分水岭。很多人抱怨“聊久了模型越来越糊涂”,根源就是上下文腐化:窗口里堆满了过时的方案、失败的尝试、跑偏的讨论,模型每生成一个 token 都要“看”一遍这些噪音,注意力自然被稀释。治理手段就是两条命令:

  • /clear:彻底清空上下文,开启新任务。换任务必用——上一个任务的调试残渣对新任务是纯噪音;
  • /compact:把历史对话压缩成摘要,腾出窗口继续当前任务。支持附加指令,告诉它压缩时保留什么:
/compact 保留所有文件修改记录和最终确定的方案,调试过程可以丢弃

上下文快满时 Claude Code 也会自动压缩,但被动触发的时机往往不理想(可能正好在任务最关键的中段)。更好的习惯是在一个阶段性节点(方案已定、某模块已完成)主动 /compact,压缩质量高得多。判断原则:任务连续用 /compact,任务切换用 /clear

技巧 18:看懂缓存命中原理,同样的活少花一半钱

先看计费结构:Claude 官方计费中,同一模型的输入、输出、缓存命中单价比例约为 1 : 5 : 0.1。两个直接推论:

  1. 输出比输入贵 5 倍——所以让模型“言简意赅”“只输出 diff”不只是阅读体验问题,是真金白银;
  2. 缓存命中只按输入价的十分之一计——命中的部分相当于打了一折。

缓存的机制是前缀匹配:系统提示词、工具定义、历史消息按顺序拼成前缀,只要和上一次请求的前缀逐字节一致,这部分就走缓存价。写入缓存本身有小幅溢价(默认 5 分钟有效期的写入约为输入价的 1.25 倍,1 小时有效期为 2 倍),但只要后续请求命中一次就远远回本——Claude Code 的多轮对话天然就是“同一前缀反复提交”的场景,正常使用时命中率很高。

关键在于别亲手打破前缀。前缀匹配是逐字节的,任何一处改动都会让改动点之后的全部缓存作废:

  • 会话中途修改 CLAUDE.md → 系统提示词变了,前缀从头失效;
  • 会话中途 /model 换模型 → 缓存按模型隔离,等于全部重来;
  • 会话中途增删 MCP 服务 → 工具定义在前缀最前部,一动全废。

这些操作不是不能做,而是要做完就 /clear 重开,别让旧会话拖着一段永远无法命中的历史继续烧全价 token。用 /cost 可以查看当前会话的 token 用量,长任务养成看一眼的习惯,对成本会有体感。

技巧 19:无头模式 claude -p,把 Claude Code 变成命令行工具

-p(print)参数,Claude Code 就变成一个可以进管道的普通命令,不进交互界面:

# 管道输入
git diff --staged | claude -p "根据改动生成一条 Conventional Commits 规范的提交信息,只输出信息本身"

# 结构化输出,方便脚本解析
claude -p "统计 src 目录下所有 TODO 注释,按文件分组" --output-format json

# 日志分析
tail -200 app.log | claude -p "找出所有 5xx 错误的共同特征"

--output-format json 的返回里除了结果文本,还带本次消耗的 token 数和会话 ID,方便在 CI 里做成本核算和审计。代码审查、提交信息生成、日志巡检,都可以用这个模式挂进脚本和流水线。

在 CI 里跑无头模式时注意两点:一是给任务设置超时和费用上限,防止某次异常输入导致模型陷入长循环;二是权限策略要用前面技巧 6 的 allow 规则精确圈定,而不是图省事全放行——流水线里的输入(比如外部贡献者的 PR 内容)是不可信的,权限收得越紧越安全。

技巧 20:常见报错处置速查

最后是一张实测整理的排错表,遇到问题先对号入座:

现象 原因 处置
401 authentication_error 密钥无效/过期;或 API_KEY 与 AUTH_TOKEN 两个环境变量同时设置 检查密钥;两个变量只保留一个,注意 unset 而不是置空
429 rate_limit_error 触发速率限制 响应头 retry-after 给出等待秒数,CLI 会自动退避重试;高频批量任务主动加间隔
529 overloaded_error 官方服务过载 与你的配置无关,指数退避重试即可
Prompt is too long 上下文超限 /compact 压缩;新任务直接 /clear;检查是否 @ 了超大文件
400 invalid_request_error 请求参数问题 常见于自定义环境变量拼错、模型名写错,逐项核对
行为怪异、配置疑似未生效 本地安装或配置损坏 先跑 /doctor 自检,再 claude update 升级到最新版

再补一条通用心法:模型连续两三轮都修不好同一个问题时,不要继续在原上下文里说“还是不对”。双击 Esc 回到出错前的节点,把已知信息(报错全文、已排除的方向)整理成一条更完整的提问重新出发,成功率远高于原地拉扯。


常见问题 FAQ

Q1:CLAUDE.md 和自定义斜杠命令,内容应该放哪个?

判断标准是触发方式。每次会话都必须生效的约束(代码规范、禁止事项、目录说明)放 CLAUDE.md;只在特定场景手动触发的流程(修 Issue、写周报、发布检查)做成斜杠命令。把低频流程塞进 CLAUDE.md 是常见错误——它会在每个会话里白白占用上下文。

Q2:感觉缓存没生效,费用降不下来,怎么排查?

按顺序检查三件事:一,会话是否频繁重开——缓存默认只保 5 分钟,间隔太久自然全是冷启动;二,是否有中途改 CLAUDE.md、换模型、增删 MCP 的操作(见技巧 18,任何一项都会打断前缀);三,单轮输入是否过短——过短的前缀达不到最低缓存长度,不会建缓存。多轮连续对话、配置保持稳定,命中率自然上来。

Q3:hooks 配置了但没触发,一般是什么原因?

三个高频原因:配置写错层级(hooks 必须在 settings.json 顶层的 hooks 键下);matcher 大小写不匹配(工具名是 BashEditWrite,首字母大写);脚本没有可执行权限或路径不对。排查时先把 command 换成 echo triggered >> /tmp/hook.log 这类最简命令,确认触发链路通了再上真实逻辑。另外修改 hooks 后建议重启会话,确保新配置被加载。

Q4:/compact 之后感觉模型“变笨了”,之前说过的细节它不记得了,正常吗?

正常。压缩本质是把完整历史替换成摘要,信息必然有损。两个缓解手段:一是压缩时带指令,明确要求保留关键决策和文件清单(见技巧 17);二是重要结论别依赖对话记忆,让模型随手写进项目里的文档或 CLAUDE.md,文件才是无损的记忆。

Q5:公司内网环境,流量需要走统一的内部网关,能配吗?

可以。Claude Code 支持通过 ANTHROPIC_BASE_URL 环境变量指定接入点(见技巧 4 的配置示例),只要网关兼容官方 Messages API 的请求格式即可。注意密钥变量二选一,别同时设置。

Q6:20 条里如果只学 3 条,学哪 3 条?

技巧 2(CLAUDE.md 写成指令)、技巧 5(plan 模式先规划后动手)、技巧 17(勤用 /clear 和 /compact)。这三条分别决定了模型“懂不懂你的项目”“会不会跑偏”“上下文干不干净”,是投入产出比最高的三件事。


结语

以上 20 条,都是日常真实高频使用中沉淀下来的,没有一条是为了凑数的“冷知识”。工具的上限取决于使用方式:同样一个 Claude Code,有人用它当聊天窗口,有人用它接管了整条开发流水线。

你在使用 Claude Code 的过程中,还发现过哪些好用的技巧,或者踩过哪些印象深刻的坑?欢迎在评论区聊聊——尤其是 hooks 和子代理的实战玩法,我很好奇大家都把它们用在了什么场景上。编程

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐