Claude Code 速查:内置工具、常用命令和环境变量,各挑最用得上的讲
官方的工具、命令、环境变量三张参考表加起来五百多项。本站按用途各挑出最常用的一批,并实测了几件容易弄错的事:这台 Linux 上实际只加载了 21 个工具,没有 Glob 和 Grep;Bash 里 export 的变量留不到下一条命令;模型的环境变量盖过设置文件,命令行参数又盖过环境变量。
本站已实测,测试日期:2026-10-12。
本页目录(5 节)
这篇教程解决一个问题:写权限规则要用工具的名字,干活要记命令,调行为要找环境变量。官方的三张参考表加起来有五百多项,大部分人用得上的是其中几十个。
这是一篇速查,三部分各自独立,可以直接跳到要用的那一节。每一节先给挑出来的清单,再讲实测里发现的、容易弄错的地方。
| 实测环境 | |
|---|---|
| 日期 | 2026-10-12 |
| 版本 | Claude Code 2.1.296 |
| 系统 | Ubuntu 24.04 |
| 模型 | Opus 5.5 |
| 连接方式 | 通过酷站AI 中转站,不是直连官方 |
官方文档当天列的数量:工具 46 个,命令 119 个,环境变量 391 个。
一、内置工具
工具是 Claude 干活时调用的东西:读文件、跑命令、搜网页。平时你不用点名,它自己选。要用到名字的地方是配置:权限规则、--allowedTools 参数、hook 的匹配条件、子代理的工具清单,写的都是这里的名字。
这个环境里实际有哪些
文档列的是全集,你的会话里有哪些取决于系统、接入方式和设置。本站用非交互模式启动一个会话,从它的启动信息里读出了实际加载的清单,一共 21 个:
| 类别 | 工具 | 做什么 |
|---|---|---|
| 文件 | Read、Edit、Write、NotebookEdit |
读文件、改文件的一部分、新建或覆盖文件、改 Jupyter 笔记本 |
| 命令 | Bash |
运行 shell 命令 |
| 联网 | WebFetch、WebSearch |
取一个网址的内容、搜索 |
| 分派 | Task、SendMessage、ListAgents、TaskStop |
起子代理、给别的代理发消息、列出能发消息的代理、停后台任务 |
| 编排 | Workflow、Skill |
运行动态工作流、执行 skill |
| 定时 | CronCreate、CronDelete、CronList、ScheduleWakeup |
会话内的定时任务,/loop 用 |
| 其他 | EnterWorktree、ExitWorktree、ReportFindings、DesignSync |
进出 worktree、代码审查时上报发现、同步设计系统 |
起子代理的工具,文档里叫 Agent,启动信息里显示的是 Task。
对照文档,有几样不在里面,原因文档都写了:
- 没有
Glob和Grep。 在 macOS、Linux 和 WSL 上,这两个默认不加载,Claude 改用 Bash 里的find和grep来搜。文档说明这两条命令在它的 shell 里是内置的加速版本,搜索会以Bash调用的形式经过你的 hooks 和权限规则。所以按Grep写的权限规则和 hook,在这些系统上默认碰不到。 想要回这两个工具,启动时在--allowedTools里点名其中一个。 - 没有任务清单类的工具(
TaskCreate、TodoWrite等)。文档说明它们默认只在较早的模型上提供;新模型不靠写清单也能跟住多步任务。要用就设CLAUDE_CODE_ENABLE_TODO_TOOLS=1。 - 没有
AskUserQuestion、EnterPlanMode、ExitPlanMode。 这次是非交互运行,没有人可问。 - 没有
Artifact、RemoteTrigger、PushNotification。 这几样要 claude.ai 账号或 Anthropic 托管的服务。 - 没有
LSP和PowerShell。 前一个要装代码智能插件,后一个是 Windows 上的。 - 也没有
Monitor(在后台盯着日志或状态、有变化就告诉 Claude 的工具)。文档列的不可用条件是云厂商接入或关了遥测,这里都不符合,原因本站没有查明。
想知道自己会话里有哪些,文档的办法是直接问 Claude:“你有哪些工具?”。MCP 工具的准确名字用 /mcp 看。
权限规则怎么写
规则的格式是 工具名(限定条件),限定条件的写法按工具分几类:
| 规则 | 管哪些工具 | 限定的是什么 |
|---|---|---|
Bash(npm run *) |
Bash、Monitor | 命令的样式 |
Read(~/secrets/**) |
Read、Grep、Glob、LSP | 路径 |
Edit(/src/**) |
Edit、Write、NotebookEdit | 路径 |
WebFetch(domain:example.com) |
WebFetch | 域名 |
Skill(deploy *) |
Skill | skill 的名字 |
Agent(Explore) |
Agent | 子代理的类型 |
WebSearch |
WebSearch | 没有限定条件,只能整个允许或拒绝 |
文档里两条容易忽略的连带关系:
- 允许
Edit(...)同时也允许读同一个路径,不用再写一条Read(...)。 - 拒绝
Read(...)同时也拦住对同一个路径的 Edit 和 Write,包括在那里新建文件。
hook 的 matcher 里写的是不带括号的工具名。规则怎么组合、谁先谁后,见权限模式怎么选。
Bash 工具:什么会留到下一条命令
这是最容易想当然的地方。本站让 Claude 把八条命令各自单独运行,并在设置文件的 env 里放了一个变量、把超时改成了 3 秒:
| # | 命令 | 实际输出 |
|---|---|---|
| 1 | export DEMO_X=1 |
(无输出) |
| 2 | echo "X=[$DEMO_X]" |
X=[] |
| 3 | cd sub |
(无输出) |
| 4 | pwd |
/home/ccdemo/demo/h4-reference/sub |
| 5 | cd /tmp |
Shell cwd was reset to /home/ccdemo/demo/h4-reference |
| 6 | pwd |
/home/ccdemo/demo/h4-reference |
| 7 | echo "$DEMO_VAR" |
来自设置文件 |
| 8 | sleep 8 && echo done |
Command timed out after 3s |
四件事:
export的变量留不到下一条。 每条命令是一个单独的进程。cd留得住,但只限项目目录以内。 进子目录有效;cd到项目外面,会被重置回项目根目录。- 设置文件
env里的变量每条命令都看得到。 要给它用的环境变量,写在这里,不要指望在会话里export。 - 超时是可以配的。 默认 2 分钟,Claude 自己最多能要到 10 分钟。上面是把两个都改成 3 秒后的结果。
文档补充的几点:
- 你 shell 启动文件里的别名和函数是可用的,Claude Code 启动时会读一次。
- 虚拟环境要在启动 Claude Code 之前激活。 进了会话再让它
source venv/bin/activate,下一条命令就没了。要在命令之间保持,把CLAUDE_ENV_FILE指向一个脚本,它会在每条命令之前执行。 - 输出默认读回约 3 万个字符,超出的部分存成文件,Claude 需要时再去读。
二、命令
命令是你在会话里输入的、以 / 开头的东西。输入 / 会列出能用的,接着打字母可以筛选。命令只在一条消息的开头才算数。
下面按“什么时候用”来排,是从一百多个里挑的。
刚进一个仓库
| 命令 | 做什么 |
|---|---|
/init |
生成一份初始的 CLAUDE.md |
/memory |
编辑 CLAUDE.md,开关自动记忆 |
/permissions |
看和改允许、询问、拒绝三类规则 |
/mcp |
管理 MCP 服务器的连接 |
/add-dir <路径> |
这次会话里多给它一个能访问的目录 |
干活的时候
| 命令 | 做什么 |
|---|---|
/plan [描述] |
进入 plan 模式,先出计划再动手 |
/model [模型] |
换模型,并存成以后的默认值 |
/effort [档位] |
调 effort |
/context |
看上下文被什么占着 |
/compact [说明] |
把到目前为止的对话压缩成摘要,腾出上下文 |
/btw [问题] |
问一个旁支问题,不计入对话历史 |
/diff |
看工作区里改了什么 |
/copy [N] |
复制最近一条(或倒数第 N 条)回答 |
/goal [条件] |
定一个目标,它会一直做到条件满足 |
/loop [间隔] [提示] |
会话开着的时候反复执行一个提示 |
提交之前
| 命令 | 做什么 |
|---|---|
/code-review |
审查当前的改动,--fix 可以直接改;/review 是它的别名 |
/security-review |
检查当前分支的改动有没有安全问题 |
/simplify |
检查改过的代码有没有可以精简的地方并动手改 |
/verify |
把应用跑起来,确认改动真的生效 |
会话之间
| 命令 | 做什么 |
|---|---|
/clear [名字] |
开一段新对话,上下文清空,项目记忆保留 |
/resume [会话] |
回到之前的某段对话 |
/branch [名字] |
从当前位置分出一支,试另一个方向 |
/rename [名字] |
给会话起名字 |
/export [文件名] |
把对话导出成纯文本 |
/tasks |
看后台在跑的东西 |
出问题的时候
| 命令 | 做什么 |
|---|---|
/rewind |
把代码和对话退回到之前的某个点 |
/status |
看版本、模型、接口地址、加载了哪些设置文件 |
/doctor |
检查安装和配置,能修的顺手修 |
/debug [描述] |
打开调试日志并帮你排查 |
/usage |
看这次会话的花费和用量;/cost 是它的别名 |
/release-notes |
看更新日志 |
改设置
| 命令 | 做什么 |
|---|---|
/config |
打开设置界面 |
/statusline |
配状态栏 |
/keybindings |
打开快捷键文件 |
/output-style [风格] |
换输出风格 |
/theme |
换配色 |
/tui [default|fullscreen] |
换渲染方式 |
/terminal-setup |
给终端装上 Shift+Enter 换行 |
/sandbox |
开关沙箱 |
/hooks |
看 hook 的配置 |
/plugin |
管理插件 |
/skills |
列出能用的 skill |
通过中转站或 API key 用不了的
文档里写明了条件或者本身依赖 claude.ai 的几个:
| 命令 | 条件 |
|---|---|
/voice |
要 claude.ai 账号 |
/desktop |
要 Claude 订阅 |
/privacy-settings |
只有 Pro 和 Max 订阅才有 |
/schedule |
云端的 routines;文档提到用控制台的 API key 时会报“未知命令” |
/remote-control、/teleport、/web-setup |
远程控制和云端会话的功能,都要连 claude.ai |
/remote-control 这一条本站在 claude doctor 里看到了原话:它只在直连 api.anthropic.com 时可用,设了别的接口地址就不行。
用不了的命令不会出现在 / 的菜单里。文档说明,硬敲出来多数会得到“Unknown command”。
两个小知识
- Claude 正在回答时发命令,它会排队,等这一轮结束再执行。
/status、/tasks、/usage例外,立刻执行,不打断回答。 - 打错了不会自动纠正。 菜单里会列出相近的,可以用
Tab或方向键选;直接按回车发出去的是你打的原样。
三、环境变量
环境变量调的是 Claude Code 自身的行为:连哪里、用哪个模型、超时多久、关掉哪些功能。
两种设法
在 shell 里设,只对这个终端里接下来启动的会话有效:
export API_TIMEOUT_MS="1200000"
claude
想每次都生效,把这一行写进 ~/.bashrc 或 ~/.zshrc。也可以只管一次:API_TIMEOUT_MS=1200000 claude。
在设置文件的 env 里设,不管从哪里启动都生效:
{
"env": {
"API_TIMEOUT_MS": "1200000",
"BASH_DEFAULT_TIMEOUT_MS": "300000"
}
}
写在哪个设置文件里,决定了对谁生效,规则和设置文件那篇讲的一样。文档提醒:这里的值是原样使用的,没有 shell 来展开,路径要写绝对路径,~ 和 $HOME 不会被替换。
同一个变量 shell 和设置文件都设了,文档说多数情况下设置文件的值生效。shell 里的变量只在启动时读一次,设置文件里的改了会重新应用到正在运行的会话。
实测:模型到底听谁的
同一件事有环境变量、设置键、命令行参数三处可以设时,谁优先是每个功能单独定的,不能一概而论。本站拿模型试了四种组合,看启动时第一屏显示的模型:
设置文件 model |
环境变量 ANTHROPIC_MODEL |
参数 --model |
启动后的模型 |
|---|---|---|---|
| 不设 | claude-sonnet-5-5 |
不带 | Sonnet 5.5 |
claude-haiku-5-5 |
不设 | 不带 | Haiku 5.5 |
claude-haiku-5-5 |
claude-sonnet-5-5 |
不带 | Sonnet 5.5 |
claude-haiku-5-5 |
claude-sonnet-5-5 |
opus |
Opus 5.5 |
对模型来说:命令行参数 > 环境变量 > 设置文件。
但 effort 的顺序是反的。 文档写明 CLAUDE_CODE_EFFORT_LEVEL 盖过 --effort 参数和 /effort 命令。本站只验证了单独设这个变量有效(启动时显示 with high effort),没有测它和参数同时存在的情况。
所以遇到“我明明设了却没生效”,先想一想是不是 shell 的启动文件里还留着一个老的 export。
最常用的一批
391 个里挑的。默认值和说明来自文档。
接入
| 变量 | 作用 |
|---|---|
ANTHROPIC_BASE_URL |
接口地址。接中转站或网关时改它 |
ANTHROPIC_AUTH_TOKEN |
放进 Authorization 头的值,会自动加上 Bearer 前缀 |
ANTHROPIC_API_KEY |
放进 X-Api-Key 头的 key。设了它,即使登录着订阅账号也用这个 key |
ANTHROPIC_CUSTOM_HEADERS |
给请求额外加的头,一行一个 |
HTTP_PROXY、HTTPS_PROXY、NO_PROXY |
走代理,以及哪些地址不走 |
API_TIMEOUT_MS |
接口请求的超时,默认 600000(10 分钟)。网络慢或走代理时调大 |
中转站具体怎么填,见接入中转站。文档提到一个连带的影响:接口地址不是官方的时候,MCP 的工具搜索默认关闭。
模型和思考
| 变量 | 作用 |
|---|---|
ANTHROPIC_MODEL |
用哪个模型 |
ANTHROPIC_DEFAULT_OPUS_MODEL、…_SONNET_MODEL、…_HAIKU_MODEL |
opus、sonnet、haiku 三个别名各自指向哪个模型 ID。中转站的模型名和官方不一样时用 |
CLAUDE_CODE_SUBAGENT_MODEL |
没有另外指定时,子代理用哪个模型 |
CLAUDE_CODE_EFFORT_LEVEL |
effort 档位:low、medium、high、xhigh、max、auto |
MAX_THINKING_TOKENS |
给思考一个固定的 token 预算 |
CLAUDE_CODE_MAX_OUTPUT_TOKENS |
单次回答最多输出多少 token |
命令的超时和输出
| 变量 | 作用 |
|---|---|
BASH_DEFAULT_TIMEOUT_MS |
Bash 命令的默认超时,默认 120000(2 分钟) |
BASH_MAX_TIMEOUT_MS |
Claude 自己最多能要多长的超时,默认 600000(10 分钟) |
BASH_MAX_OUTPUT_LENGTH |
一条命令的输出读回多少字符,默认 30000,最多 150000 |
CLAUDE_ENV_FILE |
一个脚本的路径,每条 Bash 命令之前执行,用来保持虚拟环境 |
MCP_TIMEOUT |
MCP 服务器启动的超时,默认 30000(30 秒) |
MAX_MCP_OUTPUT_TOKENS |
MCP 工具一次返回最多多少 token,默认 25000 |
缓存和上下文
| 变量 | 作用 |
|---|---|
ENABLE_PROMPT_CACHING_1H |
把提示缓存的有效期从默认的 5 分钟改成 1 小时 |
DISABLE_PROMPT_CACHING |
关掉提示缓存 |
CLAUDE_CODE_AUTO_COMPACT_WINDOW |
上下文到多少 token 时自动压缩,10 万到 100 万之间 |
CLAUDE_CODE_DISABLE_AUTO_MEMORY |
关掉自动记忆 |
更新、遥测和联网
| 变量 | 作用 |
|---|---|
DISABLE_AUTOUPDATER |
关掉后台自动更新,手动 claude update 还能用 |
DISABLE_TELEMETRY |
不发遥测 |
DISABLE_ERROR_REPORTING |
不发错误报告 |
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC |
一次关掉所有非必需的联网:自动更新、遥测、错误报告、更新日志等 |
DISABLE_AUTOUPDATER 本站验证了:设了之后,claude doctor 里的那一行从 Auto-updates: enabled 变成 Auto-updates: disabled (set by env: DISABLE_AUTOUPDATER)。
文档特别提醒了 DISABLE_TELEMETRY 和 DISABLE_ERROR_REPORTING:设成 0 或 false 也算关掉,和多数开关型变量不一样。只要变量存在且非空就生效,要重新打开得把变量删掉。
界面和目录
| 变量 | 作用 |
|---|---|
CLAUDE_CODE_NO_FLICKER |
设成 1 开全屏渲染 |
CLAUDE_CODE_DISABLE_TERMINAL_TITLE |
不自动改终端标题,同时也不再用小模型给会话起名字 |
CLAUDE_CONFIG_DIR |
把 ~/.claude 换到别的目录。同一台机器上并排用两个账号时有用 |
CLAUDE_CODE_TMPDIR |
临时文件放哪 |
CLAUDE_CODE_SHELL |
Bash 工具用哪个 shell,只支持 bash 和 zsh |
设置文件里“取消”一个变量
设置文件里能设变量,不能删变量。文档给的办法:某个你管不了的 shell 启动文件导出了一个变量,想让它失效,就在 env 里把它设成空字符串。
这一趟花了多少
约 0.35 美元:读启动信息的那次 0.13 美元,八条 Bash 命令那次 0.21 美元。模型、effort、自动更新几项只看了启动画面和 claude doctor,没有发消息。这是 Claude Code 按官方价格估算的数字,不是中转站实际扣的金额。
这次实测没有覆盖到的
- 工具清单是非交互模式(
claude -p)下读到的。 交互会话里会多出向你提问、进出 plan 模式这几个,本站没有另外核对交互会话的完整清单。 - 命令只整理了清单,没有逐个运行。 其中一部分在本站别的教程里实测过。
- “用不了的命令”只验证了
/remote-control一条的原因,其余是文档写的条件。 - 环境变量只实测了五个:
ANTHROPIC_MODEL、CLAUDE_CODE_EFFORT_LEVEL、DISABLE_AUTOUPDATER、BASH_DEFAULT_TIMEOUT_MS、BASH_MAX_TIMEOUT_MS,外加设置文件env里的自定义变量。其余的作用和默认值来自文档。 - shell 和设置文件设了同一个变量时谁生效,没有测。
- 只在 Linux 上测过。 Windows 上工具集不一样(有 Glob、Grep,可以开 PowerShell)。
- 三张清单都是挑过的,不是全集。数量和内容会随版本变,以官方参考页为准。