Tracks
开箱即用的 Claude Code 已经很实用。安装、提示,它就能帮您构建想要的东西。这是大多数人“vibe-coding”的配置,能用。
而那些用过自定义终端的人手里的 Claude Code,是另一件工具。他们预先批准了信任的 bash 命令,所以 Claude 几乎从不再请求权限。项目根目录放着一份 CLAUDE.md,因此会话一打开,Claude 就知道他们的约定。会话一旦开始“糊”,他们第一反应的命令也不是重启。
本文用七项升级,填平这两种 Claude Code 配置之间的差距。每一项设置都不超过十分钟,一周内就能回本。
如果您从未打开过 Claude Code,建议先看我们的 Claude Code 主指南作起点。以下内容默认您已会提示并接受工具调用。
1. 别再反复批准同样的命令
默认情况下,每次新的工具调用都会征求您的批准。第一次运行 pytest 时还行。到第三次就烦了。到第十次,您已经不看提示就狂按 Enter。这最糟:您被训练成忽略安全检查,同时它还在拖慢您。
当然,还有“危险地跳过权限”的模式或“自动模式”。我们已在我那篇关于 Claude Code 自动模式与通道的教程里详细讨论了取舍。
在 settings.json 中定义权限
解决方法是在项目根目录放一份 .claude/settings.json 文件,里面用 permissions 区块预先批准您信任的模式,阻止您不信任的:
{
"permissions": {
"allow": [
"Bash(pytest *)",
"Bash(uv run *)",
"Bash(ruff check *)",
"Read(~/.zshrc)"
],
"deny": [
"Bash(curl *)",
"Read(./.env)",
"Read(./.env.*)",
"Read(./secrets/**)"
]
}
}
规则按固定顺序评估:先拒绝,再询问,后允许。首个匹配生效,因此拒绝规则总能压过后面的允许。

掌握作用域与通配符
第一次写这些规则时,常见三个坑。
-
第一是作用域。项目内的
.claude/settings.json会覆盖全局的~/.claude/settings.json,所以如果您全局允许了Bash(rm *),而项目内拒绝它,以项目为准。这是对的默认行为,但会让期待“全局允许始终有效”的人吃惊。 -
第二是网络命令的通配符。
Bash(curl http://github.com/ *)看似严格,但不涵盖https://、URL 前的选项、重定向或 shell 变量展开。文档建议的做法是直接拒绝Bash(curl *)。然后用 WebFetch 工具,通过WebFetch(domain:github.com)精准允许您实际需要的域名。 -
第三是空白字符。
Bash(ls *)能匹配ls -la,但匹配不了lsof。而Bash(ls*)两者都能匹配。星号前的空格是有实际作用的,务必确认您写的是哪种。
还有几组快捷键与权限同属“别和终端作对”一类,建议第一天就学:
-
Shift+Tab 循环切换权限模式(默认、自动接受、计划)
-
Esc+Esc 打开回溯选择器(详见第 3 节)
-
Ctrl+R 反向搜索您的提示历史,就像在 bash 和 zsh 里一样
-
Ctrl+U 从光标到行首删除
-
Shift+Enter 在提示中换行
多数这些快捷键在终端里开箱即用。如果不行,运行一次 /terminal-setup 斜杠命令来安装所需配置。
2. 让 Claude Code 记住您的项目
每次会话都会以一个干净的上下文窗口开始。
默认情况下,Claude 不会记得您用的是 uv 而不是 pip。也不会记得您的测试放在 tests/ 而不是 test/。您昨天反复解释十轮的 API 约定也都没了。解决方法是在项目根目录放一份 CLAUDE.md。从该目录(或任一子目录)启动 Claude Code,系统会在第一条提示前自动把这份文件加载进上下文。
最快的开始方式是 /init。在项目内运行它。Claude 会读取代码库并写出一份起步版 CLAUDE.md,其中包含它能推断出的构建命令、测试说明与约定。之后您需要再编辑,因为 /init 给您的是可用的基础,而不是完稿。
Claude 会从三处读取上下文,按层叠加:

项目 CLAUDE.md 放在 ./CLAUDE.md,随仓库一起分发。全体贡献者都一样,所以把项目特定的信息放这里:
- 包管理器与语言版本
- 测试命令与测试所在位置
- 目录结构与任何不明显的约定
- 新同事第一天需要知道的一切
用户 CLAUDE.md 放在 ~/.claude/CLAUDE.md,跨您机器上的每个项目生效。写入个人偏好:您的编码风格、喜欢的文档字符串写法、优先考虑的语言等。不要把项目事实放这里,否则会渗透到您打开的每个仓库。
自动记忆 是第三层,由 Claude 自行写入。您在会话中更正它时(“我们这里用 snake_case,不用 camelCase”),它会把更正记录到 ~/.claude/projects/<project>/memory/MEMORY.md。同一项目中,每次对话开始都会加载该文件的前 200 行或 25KB。使用 /memory 可查看加载内容,并可开关自动记忆。
一个容量建议:每份 CLAUDE.md 控制在 200 行以内。超过后,每轮都会占用明显的上下文,而且长文件的遵循度不如短文件。如果长度在增长,可用带路径作用域的 .claude/rules/ 拆分。关于 CLAUDE.md 里到底该放什么,更深入的讨论请参见我的“写出最佳 CLAUDE.md”教程。
3. 别再一出问题就重启会话
当会话开始“偏”,本能反应是 /clear 重新来。多数时候这是错的。重启会丢掉 Claude 已在编辑的文件路径、它跟踪的失败测试,或您一开始声明的约束。新会话得重新学习这些,您要为此付出 token 与时间。
先学会识别症状。这样的上下文“腐烂”有几个明显信号:
- Claude 再次索要它五轮前编辑过的文件路径
- 重复提出您已否决的建议
- 忘了您当前所处分支
- 同一会话里,您在同一点上已纠正它超过两次
一旦看见这些,您有四个选项,而且它们不可互换:
|
情形 |
使用此操作 |
原因 |
|
上下文条快满了,但当前任务仍在进行 |
|
总结早期轮次,保持会话与任务上下文 |
|
切换到无关任务 |
|
清空上下文,开启新线程。先前对话可在 |
|
Claude 重复犯您已纠正的错误 |
|
上下文已劣化。用更好的提示开个干净会话,胜过修修补补 |
|
走错了路,想撤回 |
Esc+Esc → 还原代码与对话 |
跳回某个提示检查点并还原文件状态 |
压缩您的会话
/compact 并不如一些用户说的那么糟。
项目 CLAUDE.md 会在压缩后幸存。Claude 会在压缩后从磁盘重读并重新注入文件,因此您的约定不会丢。您还可以传递聚焦指令来引导摘要,比如 /compact keep the auth refactor decisions, drop the failed test runs。这就是“有用的摘要”与“泛泛的摘要”的区别。
使用 Claude Code 的“撤销”选项
大多数人不知道还有 Esc+Esc 回溯选择器。它会打开本会话所有提示检查点的列表。选定后,会提供三个选项:仅还原对话、仅还原代码、或两者都还原。

“还原代码与对话”是多数人的诉求。半小时的歧路可在不动用 git 的情况下一扫而空。这是 Claude Code 最接近“整场会话的撤销”的能力。
当您不再重启,会遇到的下一个问题是如何再找回这些会话。
为会话命名并重新打开
claude -n <name>(或 --name)可启动命名会话,名称会出现在 /resume 与终端标题中。当您在同一仓库里同时推进三件事(实验分支、重构、调试),名称就是区分它们的方式。若中途范围变化,用 /rename 改名。
小技巧:在同一终端窗口里跑多个会话时,用 /color 进一步区分。
重新打开会话有两个标志。 claude --continue(或 -c)会加载当前目录里最近的一次对话。适合您刚做过这里的事,想接着来。
claude --resume 会打开交互式选择器,而 claude --resume <name-or-id> 可直接跳到指定会话。把会话当作 git 分支:不同工作流配得上各自的会话。
4. 难的先规划,容易的省资源
在自定义环境中,最大的成本不在编辑器或快捷键,而在于把计算投入与手头任务的难度匹配起来。三个工具协同完成这点:计划模式、 /effort,以及 /model。
使用 Claude Code 的计划模式
计划模式会让 Claude 在动文件之前先想清楚方案。它会写出计划,您阅读并批准或提出异议,然后才执行。
我常用一个简单提示来让计划更扎实:
Red-team this plan from multiple angles using as many Opus 4.7 agents as you need.
这会启动多个子代理,从不同方面审查计划并给出修正建议。处理超过 500 行的计划文件时,这是个不错的做法。
代价在于:规划加红队会在落地任何代码前多出两轮,因此对小于“重要特性或缺陷修复”的任务来说就有些杀鸡用牛刀。
进入计划模式有五种方式:
|
方式 |
进入位置 |
最佳时机 |
|
Shift+Tab(两次) |
会话中,任意时刻 |
无需输入命令的键盘就地切换 |
|
|
会话中提示 |
尚未明确任务,稍后再键入 |
|
|
会话中提示 |
任务已清晰,省去两步走 |
|
|
CLI 启动标志 |
某个会话希望从头就用计划模式 |
|
|
项目或用户设置 |
本项目的每个会话默认进入计划模式 |
内联形式(/plan refactor the auth module to use JWT)是多数人容易错过的。它一次按键同时设置模式与任务。关于“先评审、后执行”的计划工作流更深入的演示,请参阅我的Claude Code 计划模式教程,逐步讲解。
设置合适的投入强度
接下来要学的是 Effort(投入强度)。它控制 Claude 每轮进行多少扩展性思考。更高的强度意味着更深的推理、更多 token、更慢的响应。

/effort <level> 与 --effort <level> CLI 标志都接受五个值。low、medium、high 与 xhigh 会跨会话持久化。max 仅限当前会话,因为它移除了 token 开销限制,所以每次都需您刻意设置。日常工作的合适默认是 low 或 medium。把 high 或 xhigh 留给真正的硬问题,而 max 则用于“宁愿多烧点 token 也不要错”的时刻。
另一个反向提醒:在良好上下文下,低强度的模型往往胜过在糟糕上下文下跑满的同款模型。清理提示通常比拉满强度更有效。
选择合适的模型
真正的成本节省在模型选择。 /model 可在会话中切换,Option+P(macOS)/ Alt+P(Win/Linux)会在不清空已输入内容的情况下切换。值得记住的别名:
-
sonnet是日常主力默认 -
opus用于最难的问题(别名best也指向 opus) -
haiku追求速度时使用 -
sonnet[1m]与opus[1m]是 1M 上下文变体 -
opusplan在计划阶段用 Opus,执行阶段用 Sonnet -
default清除任何覆盖,回到推荐模型
如果您事事都默认用 Opus,把大部分日常切回 Sonnet 是您能做的单项最大降本。
当您被难题卡住,希望最聪明的模型来处理时,Opus 是正确选择。其他几乎所有事 Sonnet 都能搞定。两者的成本差距足以让“保险起见我都用 Opus”成为最昂贵的自动驾驶习惯。
5. 把手工活自动化
当摩擦源清除后,下一层就是您仍在手动做的工作。
定时任务
与其纠结如何不做,不如更轻松地自动做。两个功能覆盖了多数情况:用于循环检查、否则需要您盯着的 /loop,以及在 CLAUDE.md 无法“保证执行”的情况下提供保证的钩子(hooks)。
/loop 会按固定节奏重复运行某条提示或斜杠命令。语法有两种:
-
/loop 5m <prompt>每 5 分钟运行一次提示 -
/loop <prompt>单独使用则把节奏交给模型,由它决定何时再运行
时间单位包括 s、m、h、d,最小为 1 分钟。需要 Claude Code v2.1.72 或更高版本。

例如,可设置测试监听:/loop 2m run the test suite and report failures。您无需每次变更都记得跑测试(且总有一半会忘),Claude 会在下一次 2 分钟 tick 上抓到坏测试。
同样的模式可用于轮询预发部署(/loop 10m check if the staging deploy is green)或在不稳定事故期间拉取日志尾(/loop 1m tail the last 50 lines of app.log and flag errors)。
循环任务的寿命为 7 天。
第七天会最后触发一次并自删。它们是会话作用域,因此关闭重开后用 --continue 或 --resume 能把它们带回来。提前停止按 Esc。若需要在会话关闭后仍保留的调度(夜间检查、每周摘要),请改用 /schedule 的 Routines。
钩子(Hooks)
另一半是钩子。它们会在 Claude 工作流的特定节点运行 shell 命令,配置写在 .claude/settings.json 中。
之所以用钩子而不是 CLAUDE.md 指令,原因只有一个:CLAUDE.md 只是建议,而钩子“保证执行”。经典案例是“编辑后总要跑 linter”,而 Claude 时不时会漏跑。钩子能补上这个缺口。
六个事件覆盖了多数情况:
|
事件 |
触发时机 |
示例用途 |
|
|
会话开始时 |
打印横幅:活动分支与最近提交 |
|
|
您提交提示、Claude 读取前 |
注入项目上下文或拦截含密钥的提示 |
|
|
Claude 即将调用工具时 |
阻止对 |
|
|
Claude 完成一次工具调用后 |
每次 |
|
|
即将压缩上下文时 |
将对话记录导出到文件以便复盘 |
|
|
Claude 完成响应时 |
运行测试套件并将结果附加到会话 |
一段极简的 PostToolUse 钩子:每次文件编辑后运行 linter:
{
"hooks": {
"PostToolUse": [
{
"matcher": "Edit|Write",
"hooks": [
{ "type": "command", "command": "/path/to/lint-check.sh" }
]
}
]
}
}
值得牢记的坑:只有退出码 2 会真正阻止 Claude。退出码 1 会被视为非阻塞错误,Claude 仍会继续,尽管 1 在 Unix 中通常代表失败。如果钩子用于强制规则,请返回 2。
您也不必手写钩子。
提示 Claude “写一个在每次文件编辑后运行 ruff 的钩子”,它会为您起草 JSON。/hooks 会列出全部活动钩子配置,因此当某个钩子意外触发时,您无需在设置文件里 grep。完整事件目录与 stdin/stdout JSON 模式请参见我的Claude Code 钩子教程。
6. 留意这些操作的成本
循环、长会话,以及“默认用 Opus”,都会烧 token。三个命令能让支出足够可见,您要养成的习惯是顺眼一瞥,而非反复配置。
/usage 展示您的套餐层级、会话总计、各模型成本拆分,以及 5 小时与每周速率限制窗口的进度条。

/context 以彩色网格可视化当前上下文窗口,提供容量预警并建议哪些工具或文件在占空间。用它来判断会话“发沉”时该用 /compact 还是 /clear。
/statusline 可在终端底部配置一条常驻状态栏。它能展示模型、上下文百分比、速率限制窗口,以及任何能从会话 JSON 读取的内容。它对行为改变最大,因为它把与成本相关的数字放在您工作的余光里。

您可以运行 /statusline 并用自然语言描述希望显示的内容,Claude 会生成脚本并更新设置。另一种方式是自写 shell 脚本,并在 ~/.claude/settings.json 中指向它:
{
"statusLine": {
"type": "command",
"command": "~/.claude/statusline.sh"
}
}
若要跨会话进行更长期的跟踪,npx ccusage 是一个社区工具,用于汇总长期的 token 消耗。它是第三方的,并非 Anthropic 打造,但能补上会话范围的 /usage 与您月度账单之间的空白。
7. 另外三件值得了解的功能
上面六项是我每天都会用的。下面三项同样是真功能,我用得较少,但您该知道它们的存在,好在需要的那天能派上用场。
用 /voice 进行按住说话
/voice 开启按住说话的听写。按住 Space、开口、松开,转写后的文本就会落在提示输入里。需要 v2.1.69 或更高版本,支持二十种语言。
走动时边想边说,或在任务开始阶段口述意图、尚未定稿文字时,语音往往胜过打字。逐行修改时则更差,“将第 47 行改为……”这种更适合键入。

用 /teleport 拉取云端会话
/teleport(别名 /tp)可把云端会话拉到本地终端。比如您在网页版或 iOS App 上启动了个长任务,现在回到笔记本上。运行 claude --teleport 打开选择器,即可把该会话落到您的终端,并且自动切到正确分支。
需要满足几项前提:
- git 工作树干净
- 仓库正确
- 与云端会话相同的 claude.ai 账户
- 分支已推送到远端
别把 --teleport 和 --resume 混淆。后者只会从本机历史中重新打开本地会话。更深入的演示,请参考我们的Claude Code 远程控制教程,涵盖其余细节。
用 /btw 提问边缘小问题
/btw 适合您不想打断流程却想快速一问的小问题。
想象 Claude 正在执行一项长编辑或工具调用,而您突然需要知道匹配 IP 的正则,或某个标志的用途。
您只需键入 /btw <question>,答案会以可关闭的浮层弹出。正在执行的任务继续运行,答案不会进入会话历史,因此您无需为一次性查找开新会话,也不会污染当前会话。
结语
把本文所有内容一天内全试一遍,是最快退步的方法。先选两三项,练出肌肉记忆,等第一批成了下意识,再加其它。
从这三项开始,每项覆盖一天里的不同阶段,互不打架:
-
一份精炼的项目 CLAUDE.md,加上两三条您每个会话都会反复批准的 bash 命令的通配权限规则,放在
.claude/settings.json。这是“晨间配置”习惯,只有当打断消失时,您才会感到它的存在。 -
/compact与/clear的取舍,以及 Esc+Esc 回溯选择器。这是“会话中段”习惯,触发信号是 Claude 再次索要一小时前还知道的文件路径。 -
一个用于循环检查、已经在花您时间的
/loop。这是“后台”习惯,一旦跑起来,它会自动回本。
如果您仍分不清 Sonnet、Opus 与 Haiku 的差别,我们的《Claude 模型入门》课程会讲解各模型各司其职的场景。理解这些,会让调用 /effort 与 /model 更轻松。
Claude Code 终端常见问题
Claude Code 中 /compact 与 /clear 有什么区别?
/compact 会总结较早的轮次,并保留当前任务的上下文;当上下文条逐渐填满、但您仍在同一任务上时使用它。/clear 会为无关任务清空上下文,或当 Claude 重复犯您已纠正的错误时使用。无论哪种,先前的对话都可通过 /resume 找回。
如何避免 Claude Code 每次都要权限确认?
在项目根目录的 .claude/settings.json 中添加 permissions 区块,写入允许与拒绝的模式。例如,允许可信命令 Bash(pytest *) 与 Bash(uv run *),拒绝风险命令 Bash(curl *) 与 Read(./.env)。规则按“先拒绝”顺序评估,因此拒绝总会压过后续的允许。
Claude Code 中 Esc+Esc 回溯选择器有什么用?
连续按两次 Esc 打开当前会话中每个提示检查点的列表。选中其一后,您可选择仅还原对话、仅还原代码,或两者都还原。“还原代码与对话”是最接近整场会话撤销的功能,且无需动用 git。
在 Claude Code 中,何时该用 Opus、Sonnet 或 Haiku?
Sonnet 是大多数编码工作的默认日常主力。最难的问题上,优先选择 Opus 以获得最强能力。追求速度时,选 Haiku。可用 /model 在会话中途切换,或在 macOS 上用 Option+P(Windows 或 Linux 上用 Alt+P)。把所有任务都默认交给 Opus 是最昂贵且自动化的坏习惯。
Claude Code 的 /loop 命令如何工作?
/loop 5m <prompt> 会按固定间隔运行某个提示或斜杠命令(单位可用 s、m、h、d,最小 1 分钟)。单独使用 /loop <prompt> 则把节奏交给模型。循环存活 7 天,第 7 天会最后触发一次并自删。它们是会话作用域,因此用 --continue 或 --resume 能将其带回。按 Esc 可提前停止。需要 Claude Code v2.1.72 或更高版本。