跳至内容

Claude Code 终端:面向进阶用户的 7 项工作流升级

在终端中用权限、CLAUDE.md、计划模式、/loop、钩子、/voice 与成本跟踪自定义 Claude Code。七个立竿见影的升级。
更新 2026年5月5日  · 15分钟

开箱即用的 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/**)"
	]
  }
}

规则按固定顺序评估:先拒绝,再询问,后允许。首个匹配生效,因此拒绝规则总能压过后面的允许。

Title: 权限规则瀑布:deny 规则立即阻止,ask 规则弹窗确认,allow 规则自动批准,无匹配则回落至默认提示 - Description: 权限规则瀑布:deny 规则立即阻止,ask 规则弹窗确认,allow 规则自动批准,无匹配则回落至默认提示

掌握作用域与通配符

第一次写这些规则时,常见三个坑。

  1. 第一是作用域。项目内的 .claude/settings.json 会覆盖全局的 ~/.claude/settings.json,所以如果您全局允许了 Bash(rm *),而项目内拒绝它,以项目为准。这是对的默认行为,但会让期待“全局允许始终有效”的人吃惊。

  2. 第二是网络命令的通配符Bash(curl http://github.com/ *) 看似严格,但不涵盖 https://、URL 前的选项、重定向或 shell 变量展开。文档建议的做法是直接拒绝 Bash(curl *)。然后用 WebFetch 工具,通过 WebFetch(domain:github.com) 精准允许您实际需要的域名。

  3. 第三是空白字符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 会从三处读取上下文,按层叠加:

Title: 三层持久化上下文:项目 CLAUDE.md、用户 CLAUDE.md、自动记忆 MEMORY.md,均在会话开始时加载 - Description: 三层持久化上下文:项目 CLAUDE.md、用户 CLAUDE.md、自动记忆 MEMORY.md,均在会话开始时加载

项目 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 再次索要它五轮前编辑过的文件路径
  • 重复提出您已否决的建议
  • 忘了您当前所处分支
  • 同一会话里,您在同一点上已纠正它超过两次

一旦看见这些,您有四个选项,而且它们不可互换:

情形

使用此操作

原因

上下文条快满了,但当前任务仍在进行

/compact

总结早期轮次,保持会话与任务上下文

切换到无关任务

/clear

清空上下文,开启新线程。先前对话可在 /resume 中保留

Claude 重复犯您已纠正的错误

/clear

上下文已劣化。用更好的提示开个干净会话,胜过修修补补

走错了路,想撤回

Esc+Esc → 还原代码与对话

跳回某个提示检查点并还原文件状态

压缩您的会话

 /compact 并不如一些用户说的那么糟。

项目 CLAUDE.md 会在压缩后幸存。Claude 会在压缩后从磁盘重读并重新注入文件,因此您的约定不会丢。您还可以传递聚焦指令来引导摘要,比如 /compact keep the auth refactor decisions, drop the failed test runs。这就是“有用的摘要”与“泛泛的摘要”的区别。

使用 Claude Code 的“撤销”选项

大多数人不知道还有 Esc+Esc 回溯选择器。它会打开本会话所有提示检查点的列表。选定后,会提供三个选项:仅还原对话、仅还原代码、或两者都还原。

Title: Esc+Esc 回溯确认,显示将回溯到的提示及三个选项:还原代码与对话、仅还原对话、仅还原代码 - Description: 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(两次)

会话中,任意时刻

无需输入命令的键盘就地切换

/plan

会话中提示

尚未明确任务,稍后再键入

/plan <description>

会话中提示

任务已清晰,省去两步走

--permission-mode plan

CLI 启动标志

某个会话希望从头就用计划模式

"defaultMode": "plan" 位于 settings.json

项目或用户设置

本项目的每个会话默认进入计划模式

内联形式(/plan refactor the auth module to use JWT)是多数人容易错过的。它一次按键同时设置模式与任务。关于“先评审、后执行”的计划工作流更深入的演示,请参阅我的Claude Code 计划模式教程,逐步讲解。

设置合适的投入强度

接下来要学的是 Effort(投入强度)。它控制 Claude 每轮进行多少扩展性思考。更高的强度意味着更深的推理、更多 token、更慢的响应。

Title: 五档投入强度从低到最高的横向光谱,标注成本与速度权衡及各区间使用场景 - Description: 五档投入强度从低到最高的横向光谱,标注成本与速度权衡及各区间使用场景

/effort <level>--effort <level> CLI 标志都接受五个值。low、medium、high 与 xhigh 会跨会话持久化。max 仅限当前会话,因为它移除了 token 开销限制,所以每次都需您刻意设置。日常工作的合适默认是 low 或 medium。把 highxhigh 留给真正的硬问题,而 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> 单独使用则把节奏交给模型,由它决定何时再运行

时间单位包括 smhd,最小为 1 分钟。需要 Claude Code v2.1.72 或更高版本。

Title: 固定间隔与动态循环时间线,均在第 7 天到达过期墙 - Description: 固定间隔与动态循环时间线,均在第 7 天到达过期墙

例如,可设置测试监听:/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 时不时会漏跑。钩子能补上这个缺口。

六个事件覆盖了多数情况:

事件

触发时机

示例用途

SessionStart

会话开始时

打印横幅:活动分支与最近提交

UserPromptSubmit

您提交提示、Claude 读取前

注入项目上下文或拦截含密钥的提示

PreToolUse

Claude 即将调用工具时

阻止对 migrations/infra/ 的写入

PostToolUse

Claude 完成一次工具调用后

每次 EditWrite 后运行 linter 或 formatter

PreCompact

即将压缩上下文时

将对话记录导出到文件以便复盘

Stop

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 小时与每周速率限制窗口的进度条。

Title: /usage 面板显示会话总计、按模型拆分,以及三个速率限制进度条:当前会话、当周所有模型、当周 Sonnet - Description: /usage 面板显示会话总计、按模型拆分,以及三个速率限制进度条:当前会话、当周所有模型、当周 Sonnet

/context 以彩色网格可视化当前上下文窗口,提供容量预警并建议哪些工具或文件在占空间。用它来判断会话“发沉”时该用 /compact 还是 /clear

/statusline 可在终端底部配置一条常驻状态栏。它能展示模型、上下文百分比、速率限制窗口,以及任何能从会话 JSON 读取的内容。它对行为改变最大,因为它把与成本相关的数字放在您工作的余光里。

Title: Claude Code 终端底部的自定义状态栏,显示模型、上下文百分比与 5 小时速率限制用量 - Description: Claude Code 终端底部的自定义状态栏,显示模型、上下文百分比与 5 小时速率限制用量

您可以运行 /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 行改为……”这种更适合键入。

Title: Claude Code 终端显示 /voice 确认行以及提示区域中的转写句子 - Description: Claude Code 终端显示 /voice 确认行以及提示区域中的转写句子

用 /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> 会按固定间隔运行某个提示或斜杠命令(单位可用 smhd,最小 1 分钟)。单独使用 /loop <prompt> 则把节奏交给模型。循环存活 7 天,第 7 天会最后触发一次并自删。它们是会话作用域,因此用 --continue--resume 能将其带回。按 Esc 可提前停止。需要 Claude Code v2.1.72 或更高版本。

主题

在 DataCamp 学习 AI!

Tracks

AI for Software Engineering

7小时
Write code and build software applications faster than ever before with the latest AI developer tools, including GitHub Copilot, Windsurf, and Replit.
查看详情Right Arrow
开始课程
查看更多Right Arrow