Claude Code命令、模式与配置完全指南
加油lfl
Claude Code 完全指南:命令、模式与配置详解
基于 Claude Code v2.1.237 实机
--help输出与二进制内置命令枚举整理。
Claude Code 迭代很快,命令与参数会随版本变动,遇到不一致时以本机claude --help和会话内/help为准。
1. Claude Code 是什么
Claude Code 是 Anthropic 官方的终端里的 AI 编程代理。它不是一个聊天窗口,而是一个能真正动手的 agent:
- 读写代码库:搜索、阅读、编辑、创建文件
- 执行命令:运行测试、构建、git 操作、任意 shell 命令
- 联网:搜索文档、抓取网页
- 可编排:子代理、钩子、技能、MCP 让它能接入任意工具链
它的运行形态:
| 形态 | 说明 |
|---|---|
| CLI | 终端里的交互式会话,最完整的功能 |
| 桌面应用 | Mac / Windows 原生应用 |
| Web / 移动端 | claude.ai/code 上驱动会话 |
| IDE 扩展 | VS Code、JetBrains,带 diff 视图与选中上下文 |
| GitHub Action | anthropics/claude-code-action,在 PR/Issue 里 @claude |
| Agent SDK | 用 Python / TypeScript 把整套 agent 框架嵌进你自己的程序 |
2. 安装与更新
安装
推荐使用官方原生安装器:
# macOS / Linux / WSL curl -fsSL https://claude.ai/install.sh | bash
# Windows PowerShell irm https://claude.ai/install.ps1 | iex
也支持 npm(历史方式,仍可用):
npm install -g @anthropic-ai/claude-code
⚠️ 不要用
sudo npm install -g,会导致权限问题。若已经是 npm 全局安装,可迁移到原生安装:claude install stable --force。
更新
claude update # 别名:claude upgrade,检查并安装更新 claude doctor # 检查安装健康度(不进会话) claude install stable --force # 强制重装原生构建
会话内用 /doctor 可以做带自动修复的完整体检。
首次使用
cd 你的项目 claude # 启动交互式会话
首次启动会走登录流程(Claude 订阅账号或 Anthropic API Key),并要求你确认工作区信任(workspace trust)。
会话内第一件事通常是:
/init
它会扫描代码库并生成一份 CLAUDE.md 项目记忆文件。
3. CLI 启动参数完全参考
3.1 会话控制
| 参数 | 说明 |
|---|---|
[prompt] | 位置参数,启动时带上首条提示词:claude "解释这个项目" |
-c, --continue | 继续当前目录下最近一次会话 |
-r, --resume [value] | 按 session ID 恢复;不带参数则打开交互式选择器(可带搜索词) |
--fork-session | 恢复时新建 session ID,不覆盖原会话(配合 -r / -c) |
--session-id <uuid> | 指定会话 ID(必须是合法 UUID) |
-n, --name <name> | 给会话起显示名(显示在输入框、/resume 列表和终端标题) |
--from-pr [value] | 恢复与某个 PR 关联的会话,按 PR 号/URL,或带搜索词打开选择器 |
--no-session-persistence | 不把会话写入磁盘(仅 --print),不可恢复 |
-w, --worktree [name] | 为本次会话创建新的 git worktree |
--tmux | 为 worktree 创建 tmux 会话(需配合 --worktree) |
--teleport [session] | 恢复 teleport 会话 |
--cloud [desc|id|url] | 创建云会话,或按 session ID / claude.ai/code URL 接入已有会话 |
--environment <id> | 在指定自托管环境(ccpool_...)上创建云会话 |
--bg, --background | 作为后台代理启动并立即返回(用 claude agents 管理) |
--remote-control [name] | 启动带远程控制的交互会话(可命名) |
--remote-control-session-name-prefix <prefix> | 自动生成的远程控制会话名前缀(默认主机名) |
3.2 模型与推理
| 参数 | 说明 |
|---|---|
--model <model> | 会话模型。可用别名 fable / opus / sonnet,或完整名如 claude-fable-5 |
--fallback-model <model> | 主模型过载或不可用时自动回退,可逗号分隔多级(仅 --print)。每轮用户输入开始时会重试主模型 |
--effort <level> | 推理强度:low / medium / high / xhigh / max |
--autocompact <auto|tokens> | 自动压缩窗口大小:auto,或 100k–1M tokens |
--betas <betas...> | 附加 beta 请求头(仅 API Key 用户) |
3.3 权限与工具
| 参数 | 说明 |
|---|---|
--permission-mode <mode> | acceptEdits / auto / bypassPermissions / manual / dontAsk / plan |
--dangerously-skip-permissions | 跳过所有权限检查。仅推荐用于无网络的沙箱 |
--allow-dangerously-skip-permissions | 让提权模式可选但不默认开启(比上一条安全得多) |
--allowedTools, --allowed-tools <tools...> | 免提示放行的工具,支持作用域规则如 "Bash(git *)" |
--disallowedTools, --disallowed-tools <tools...> | 直接拒绝的工具 |
--tools <tools...> | 限定内置工具集:"" 全部禁用,"default" 全部启用,或 "Bash,Edit,Read" |
--add-dir <directories...> | 额外允许工具访问的目录(突破 cwd 限制) |
--disable-slash-commands | 禁用所有技能(skills) |
3.4 提示词与上下文
| 参数 | 说明 |
|---|---|
--system-prompt <prompt> | 替换系统提示词 |
--append-system-prompt <prompt> | 追加到默认系统提示词 |
--exclude-dynamic-system-prompt-sections | 把 cwd、环境、记忆路径、git 状态等逐机差异段落从系统提示词移到首条用户消息,改善跨用户 prompt cache 命中 |
--agent <agent> | 本次会话使用的代理,覆盖 agent 配置项 |
--agents <json> | 内联定义自定义代理的 JSON |
--file <specs...> | 启动时下载的文件资源,格式 file_id:relative_path |
--bare | 极简模式:跳过 hooks、LSP、插件同步、归属标记、自动记忆、后台预取、keychain 读取、CLAUDE.md 自动发现(设 CLAUDE_CODE_SIMPLE=1)。认证严格依赖 ANTHROPIC_API_KEY 或 apiKeyHelper |
--safe-mode | 所有自定义(CLAUDE.md、技能、插件、钩子、MCP、自定义命令/代理、输出风格、工作流、主题、键位)全部禁用启动,用于排查坏配置(设 CLAUDE_CODE_SAFE_MODE=1) |
--plugin-dir <path> | 仅本次会话加载插件目录或 .zip(可重复) |
--plugin-url <url> | 仅本次会话从 URL 拉取插件 zip(可重复) |
--mcp-config <configs...> | 从 JSON 文件或字符串加载 MCP 服务器(空格分隔) |
--strict-mcp-config | 只使用 --mcp-config 传入的 MCP 服务器 |
--settings <file-or-json> | 额外加载的设置文件路径或 JSON 字符串 |
--setting-sources <sources> | 逗号分隔的来源列表:user, project, local |
3.5 输出与自动化(多用于-p)
| 参数 | 说明 |
|---|---|
-p, --print | 打印响应后退出,适合管道。注意:非交互模式下会跳过工作区信任对话框 |
--output-format <format> | text(默认)/ json(单次结果)/ stream-json(实时流) |
--input-format <format> | text(默认)/ stream-json(实时流式输入) |
--json-schema <schema> | 用 JSON Schema 校验结构化输出 |
--max-budget-usd <amount> | API 调用花费上限(美元,仅 --print) |
--include-partial-messages | 输出部分消息分片(需 --print + stream-json) |
--include-hook-events | 输出流中包含全部钩子生命周期事件(需 stream-json) |
--replay-user-messages | 把 stdin 的用户消息回显到 stdout 作确认(需双向 stream-json) |
--forward-subagent-text | 把子代理的文本和思考块作为带 parent_tool_use_id 的消息转发(需 --print + stream-json) |
--verbose | 覆盖配置中的 verbose 设置 |
-d, --debug [filter] | 调试模式,可按类别过滤,如 "api,hooks" 或 "!1p,!file" |
--debug-file <path> | 调试日志写入指定文件(隐式开启调试) |
3.6 界面与集成
| 参数 | 说明 |
|---|---|
--ide | 启动时若只有一个可用 IDE 则自动连接 |
--chrome / --no-chrome | 启用/禁用 Claude in Chrome 集成 |
--ax-screen-reader | 屏幕阅读器友好输出(纯文本,无装饰边框与动画) |
--prompt-suggestions [value] | 提示建议。print/SDK 模式下每轮后发出 prompt_suggestion 消息 |
--brief | 启用 SendUserMessage 工具,供代理向用户发消息 |
-v, --version / -h, --help | 版本 / 帮助 |
4. 子命令详解
claude [options] [command] [prompt]
| 子命令 | 作用 |
|---|---|
claude | 默认启动交互式会话 |
claude update / upgrade | 检查并安装更新 |
claude install [target] | 安装原生构建。target 可为 stable、latest 或具体版本号;--force 强制重装 |
claude doctor | 安装健康检查(当前目录读设置文件不需要信任提示) |
claude auth | 认证管理:login / logout / status |
claude setup-token | 生成长效认证 token,用于 CI/自动化(需 Claude 订阅) |
claude agents | 管理后台代理 |
claude auto-mode | 查看或重置 auto 模式分类器配置 |
claude mcp | 配置与管理 MCP 服务器 |
claude plugin / plugins | 管理插件 |
claude project | 管理项目状态 |
claude import [source] | 从其他 AI 编程代理(codex、gemini)导入配置 |
claude ultrareview [target] | 云端多代理代码审查,审查当前分支或 PR |
claude gateway | 运行企业认证/遥测网关 |
4.1claude agents—— 后台代理
claude --bg "重构一下这个模块" # 把一个会话丢到后台 claude agents # 打开代理管理界面 claude agents --json # 输出 JSON 数组(无需 TTY,便于脚本) claude agents --all --json # 含已完成的后台会话 claude agents --cwd /path/to/proj # 只看某目录下启动的会话
常用选项:
| 选项 | 说明 |
|---|---|
--add-dir <directory> | 派发的会话可访问的额外目录(可重复) |
--agent <agent> | 代理视图派发会话的默认代理 |
--model <model> | 派发会话的默认模型 |
--permission-mode <mode> | 派发会话的默认权限模式 |
--effort <level> | 派发会话的默认推理强度 |
--mcp-config <config> | 应用到派发会话的 MCP 配置(可重复) |
--plugin-dir <path> | 为代理视图和派发会话加载插件(可重复) |
--allow-dangerously-skip-permissions | 让跳权模式对派发会话可选 |
4.2claude mcp
| 子命令 | 作用 |
|---|---|
add [options] <name> <commandOrUrl> [args...] | 添加 MCP 服务器 |
add-json [options] <name> <json> | 用 JSON 字符串添加(stdio 或 SSE) |
add-from-claude-desktop | 从 Claude Desktop 导入(仅 Mac 和 WSL) |
list | 列出已配置服务器(未批准的 .mcp.json 显示为 ⏸ Pending approval) |
get <name> | 查看某个服务器详情 |
login [options] <name> | 向 MCP 服务器认证(HTTP / SSE / claude.ai connector) |
logout <name> | 清除某服务器的 OAuth 凭据 |
remove [options] <name> | 移除服务器 |
reset-project-choices | 重置本项目内所有已批准/已拒绝的 .mcp.json 服务器 |
serve [options] | 把 Claude Code 自身作为 MCP 服务器启动 |
# HTTP 服务器 claude mcp add --transport http sentry https://mcp.sentry.dev/mcp # 带请求头 claude mcp add --transport http corridor https://app.corridor.dev/api/mcp \ --header "Authorization: Bearer xxx" # stdio 服务器 + 环境变量 claude mcp add my-server -e API_KEY=xxx -- npx my-mcp-server # stdio 服务器 + 子进程参数(注意 -- 分隔) claude mcp add my-server -- my-command --some-flag arg1
4.3claude plugin
| 子命令 | 作用 |
|---|---|
install|i <plugin> | 从可用市场安装(plugin@marketplace 指定市场) |
uninstall|remove <plugin> | 卸载 |
enable <plugin> / disable [plugin] | 启用 / 禁用 |
list | 列出已安装插件 |
update <plugin> | 更新到最新版(需重启生效) |
details <name> | 查看插件的组件清单与预估 token 开销 |
init|new <name> | 在 ~/.claude/skills/<name>/ 脚手架新插件 |
validate <path> | 校验插件或市场结构 |
tag [path] | 为插件发布创建 {name}--v{version} git tag |
prune|autoremove | 移除不再需要的自动安装依赖 |
eval [target] | 对插件运行评测用例并输出评分 |
marketplace add|list|remove|update | 管理市场 |
4.4claude auto-mode
自动模式分类器的检查与配置:
claude auto-mode config # 打印生效配置(你的设置覆盖默认值)的 JSON claude auto-mode defaults # 打印默认的 environment / allow / soft_deny / hard_deny 规则 claude auto-mode critique # 对自定义 auto 模式规则获取 AI 反馈 claude auto-mode reset # 从用户设置里移除 autoMode 段,恢复出厂默认
4.5 其他
claude project purge [path] # 删除某项目的全部 Claude Code 状态
# (transcripts、tasks、文件历史、配置项)
claude import codex --dry-run # 预览从 Codex 导入什么
claude import gemini --yes # 直接导入
claude ultrareview --post --timeout 30 # 云端审查并把结果评论到 PR
claude gateway --config gateway.yaml # 企业网关5. 交互模式(REPL)
直接运行 claude 进入交互式会话。这是功能最全的形态:实时流式输出、权限弹窗、图片粘贴、文件引用、检查点回滚。
5.1 输入技巧
| 输入 | 作用 |
|---|---|
/ | 打开斜杠命令选择器 |
@ | 文件路径自动补全 / 引用文件内容 |
! | Bash 模式:直接执行 shell 命令,输出进入上下文 |
# | 行首输入,把该行追加到记忆文件(会问你写进哪个 CLAUDE.md) |
\ + Enter | 换行(续行) |
! 模式非常好用——比如 !git log --oneline -20 直接把提交历史拉进对话,无需 Claude 去跑一遍。
5.2 会话管理
| 命令 | 作用 |
|---|---|
/resume | 恢复历史会话 |
/clear | 清空当前对话上下文 |
/compact [指令] | 压缩对话历史,可带保留指引(如 /compact 保留所有数据库相关的改动) |
/context | 可视化查看上下文窗口占用 |
/export | 导出对话 |
/rewind | 回滚:打开检查点菜单,恢复文件与对话的早期状态 |
/usage | 查看用量与额度 |
5.3 Claude Code 的能力边界
Claude Code 是一个有状态、有工具的代理。它的核心内置工具包括 Read、Write、Edit、Bash、Glob、Grep、WebSearch、WebFetch,以及任务/待办管理和子代理派发。
理解这一点很重要:你在文档里看到的绝大多数"配置",本质上都是在约束或扩展这些工具的行为——权限规则管的是工具调用是否放行,钩子管的是工具调用前后发生什么,MCP 是往工具集里加新工具,技能是把领域知识喂给它。
6. 权限模式:六种模式
权限系统是 Claude Code 安全模型的核心。v2.1.237 的 --permission-mode 提供六种模式:
| 模式 | 行为 |
|---|---|
default / manual | 默认。每个工具首次使用时弹窗询问;「手动」语义,最保守 |
acceptEdits | 自动接受文件编辑类工具(Edit / Write / NotebookEdit),其他工具仍会询问 |
auto | 自动模式。由分类器判定调用是否安全,安全则放行。可通过 claude auto-mode 检查与自定义规则 |
plan | 计划模式。只读调研,Claude 先给出方案,必须经你批准才能动手改任何东西 |
dontAsk | 不询问;未经允许的操作直接不做(而非弹窗打断) |
bypassPermissions | 跳过所有权限检查。仅推荐在无网络的隔离沙箱里使用 |
6.1 会话内切换
Shift+Tab在权限模式之间循环切换/permissions打开权限规则管理界面(allow / deny / ask 三张清单)
bypassPermissions 不在 Shift+Tab 的循环里,必须显式开启:
claude --permission-mode bypassPermissions # 或 claude --dangerously-skip-permissions # 或(推荐):允许提权可选但不默认开启 claude --allow-dangerously-skip-permissions
管理策略还可以彻底封禁提权模式:
{
"permissions": { "disableBypassPermissionsMode": "disable" }
}6.2 权限规则语法
规则用 Tool 或 Tool(匹配模式) 的形式表达,放在 settings 的 permissions.allow / ask / deny 中:
{
"permissions": {
"allow": [
"Bash(npm run test:*)",
"Bash(git diff:*)",
"Bash(git log:*)",
"Read(//src/**)",
"WebFetch(domain:docs.anthropic.com)"
],
"ask": [
"Bash(git push:*)"
],
"deny": [
"Read(./.env)",
"Read(./secrets/**)",
"Bash(curl:*)",
"WebFetch"
],
"additionalDirectories": ["../shared-lib"],
"defaultMode": "acceptEdits"
}
}三层优先级:deny > ask > allow。deny 里的东西无论 allow 怎么写都被拦住。
💡 实践建议:用
deny守住.env、密钥目录、生产配置;用allow把高频只读命令(git log、git diff、npm test)放行;把危险动作(git push、rm、数据库写操作)放进ask。
7. 内置斜杠命令
以下命令已在本机 v2.1.237 二进制中确认存在。
7.1 会话与上下文
| 命令 | 作用 |
|---|---|
/help | 列出可用命令与快捷键 |
/clear | 清空对话 |
/compact [指令] | 压缩上下文 |
/context | 查看上下文占用 |
/resume | 恢复会话 |
/rewind | 检查点回滚 |
/export | 导出对话 |
/exit | 退出会话 |
/usage | 用量与额度 |
/cost | 花费统计 |
/status | 当前状态 |
/tasks | 任务列表 |
/todos | 待办列表 |
/import | 从其他 AI 编程代理导入配置 |
7.2 配置与扩展
| 命令 | 作用 |
|---|---|
/config | 打开配置界面 |
/model | 切换模型 |
/fast | 切换 Fast 模式 |
/effort | 调整推理强度 |
/permissions | 权限规则管理 |
/hooks | 钩子配置 |
/agents | 子代理管理 |
/skills | 技能管理 |
/plugin | 插件管理 |
/mcp | MCP 服务器状态与认证 |
/memory | 编辑记忆文件 |
/init | 生成项目 CLAUDE.md |
/add-dir | 添加可访问目录 |
/output-style | 切换输出风格 |
/statusline | 配置状态栏 |
/terminal-setup | 终端配置(如 Shift+Enter 换行、iTerm2/VS Code) |
/vim | Vim 编辑模式 |
7.3 账号与诊断
| 命令 | 作用 |
|---|---|
/login / /logout | 登录 / 登出 |
/doctor | 体检并可自动修复 |
/bug | 报告 bug |
/feedback | 产品反馈 |
/release-notes | 查看更新日志 |
/privacy-settings | 隐私设置 |
/desktop | 桌面应用相关 |
/chrome | Chrome 集成 |
/remote-control | 远程控制 |
/install-github-app | 安装 GitHub App |
7.4 审查与工作流
| 命令 | 作用 |
|---|---|
/review | 代码审查 |
/code-review | 代码审查(含 ultra 等参数) |
/security-review | 安全审查 |
/ultrareview | 云端多代理深度审查 |
/workflows | 查看/管理多代理工作流 |
/loop | 按间隔重复执行提示词 |
斜杠命令的完整列表以你本机会话内
/help为准——插件、技能和自定义命令都会追加到这份清单里。
8. 键盘快捷键
| 按键 | 作用 |
|---|---|
Shift+Tab | 循环切换权限模式 |
Esc | 中断 Claude 当前生成 |
Esc Esc | 打开 rewind 回滚菜单 |
Ctrl+C | 取消当前输入 / 打断生成 |
Ctrl+D | 退出会话(EOF) |
Ctrl+L | 清屏(保留历史) |
Ctrl+V | 从剪贴板粘贴图片 |
↑ / ↓ | 翻阅输入历史 |
Shift+Enter | 换行不提交(需终端支持,用 /terminal-setup 配置) |
Option+Enter | 换行(macOS) |
Ctrl+J | 换行(通用回退方案) |
输入前缀(行首字符):
| 前缀 | 作用 |
|---|---|
/ | 斜杠命令选择器 |
@ | 文件引用与补全 |
! | Bash 模式(直接执行命令) |
# | 追加到记忆文件 |
不同终端模拟器对
Shift+Enter的支持不一致。如果换行不生效,先跑一次/terminal-setup,或直接用最保险的Ctrl+J。
9. 配置系统:settings.json
9.1 文件位置与优先级
从高到低:
| 级别 | 路径(Windows) | 说明 |
|---|---|---|
| 企业托管策略 | C:\ProgramData\ClaudeCode\managed-settings.json | 顶层天花板,不可被覆盖 |
| 命令行参数 | —— | 本次启动生效 |
| 本地项目设置 | .claude/settings.local.json | 个人用,不提交到 git |
| 共享项目设置 | .claude/settings.json | 团队共享,提交到 git |
| 用户设置 | ~/.claude/settings.json | 全局个人设置 |
macOS 的企业策略路径是 /Library/Application Support/ClaudeCode/,Linux/WSL 是 /etc/claude-code/。
9.2 常用字段
{
"$schema": "https://json.schemastore.org/claude-code-settings.json",
"model": "opus",
"outputStyle": "default",
"alwaysThinkingEnabled": true,
"permissions": {
"allow": ["Bash(npm run lint)", "Bash(npm run test:*)"],
"ask": ["Bash(git push:*)"],
"deny": ["Read(./.env)", "Read(./secrets/**)"],
"additionalDirectories": ["../docs"],
"defaultMode": "acceptEdits",
"disableBypassPermissionsMode": "disable"
},
"env": {
"ANTHROPIC_MODEL": "claude-opus-5",
"MY_API_BASE": "https://internal.example.com"
},
"hooks": {
"PostToolUse": [
{
"matcher": "Edit|Write",
"hooks": [
{ "type": "command", "command": "npx prettier --write $(jq -r '.tool_input.file_path')" }
]
}
]
},
"statusLine": {
"type": "command",
"command": "~/.claude/statusline.sh",
"padding": 0
},
"enableAllProjectMcpServers": false,
"enabledMcpjsonServers": ["github"],
"disabledMcpjsonServers": ["experimental"],
"cleanupPeriodDays": 30,
"includeCoAuthoredBy": true,
"disableAllHooks": false,
"enabledPlugins": {
"my-plugin@my-marketplace": true
},
"apiKeyHelper": "/path/to/get-key.sh",
"forceLoginMethod": "claudeai",
"autoUpdates": true
}字段速查:
| 字段 | 说明 |
|---|---|
apiKeyHelper | 输出 API Key 的脚本路径(配合 key 轮换) |
cleanupPeriodDays | 对话记录保留天数,默认 30 |
env | 每个会话都注入的环境变量 |
permissions | 权限规则(见 §6) |
hooks | 钩子配置(见 §11) |
statusLine | 自定义状态栏命令 |
includeCoAuthoredBy | git 提交是否加 Co-Authored-By: Claude 尾注,默认 true |
enableAllProjectMcpServers | 自动批准所有 .mcp.json 服务器 |
enabledMcpjsonServers / disabledMcpjsonServers | 按名放行 / 拒绝项目 MCP 服务器 |
forceLoginMethod | 强制登录方式:claudeai 或 console |
alwaysThinkingEnabled | 默认开启扩展思考 |
autoUpdates | 自动更新开关 |
disableAllHooks | 一键关闭所有钩子 |
enabledPlugins | 固定启用哪些插件 |
$schema | 给编辑器提供自动补全 |
~/.claude/settings.local.json与项目.claude/settings.local.json都应该加进.gitignore。
10. 记忆系统:CLAUDE.md
Claude Code 的"长期记忆"就是一组 Markdown 文件,会在每个会话启动时注入上下文。
10.1 层级
按加载顺序(全部合并生效):
| 层级 | 位置(Windows) | 用途 |
|---|---|---|
| 企业策略 | C:\ProgramData\ClaudeCode\CLAUDE.md | 组织级强制规范 |
| 用户记忆 | ~/.claude/CLAUDE.md | 你的个人偏好,跨所有项目 |
| 项目记忆 | ./CLAUDE.md | 团队共享,提交到 git |
| 子目录记忆 | 各子目录下的 CLAUDE.md | 按需加载——只有当 Claude 读到该子树文件时才载入 |
| 本地记忆 | ./CLAUDE.local.md | 个人项目备注(应 gitignore) |
10.2 导入语法
CLAUDE.md 里可以用 @path/to/file 引入其他文件,支持递归,最多 5 层:
# 项目规范 @~/.claude/my-coding-style.md @./docs/architecture.md @README.md
相对路径和 ~ 都支持。被导入的文件不会触发"外部文件"审批弹窗。
10.3 三种写入方式
/init—— 让 Claude 扫描代码库自动生成CLAUDE.md/memory—— 打开记忆文件编辑 / 选择编辑哪一个#前缀 —— 会话中随手追加,例如:
# 这个项目用 pnpm 而不是 npm
Claude 会问你写进哪个记忆文件。
10.4 写好 CLAUDE.md 的原则
- 写不可推导的信息:构建命令的怪癖、部署流程、代码之外的约定、踩过的坑
- 不要写代码里能看出来的东西:目录结构、显而易见的命名
- 保持精简:它每个会话都占用上下文预算
- 该懒加载的懒加载:大段领域知识做成 Skill(只在相关时才载入),而不是塞进 CLAUDE.md
11. Hooks 钩子
钩子是由 harness 执行的确定性自动化,不是提示词。这是 Claude Code 里最被低估的能力——凡是"每次 X 就必须 Y"的规则,都应该用钩子而不是靠嘱咐模型。
11.1 事件
| 事件 | 触发时机 |
|---|---|
PreToolUse | 工具调用之前(可拦截) |
PostToolUse | 工具调用之后(可格式化、可反馈错误) |
UserPromptSubmit | 用户提交提示词时(可注入额外上下文) |
Notification | Claude 发送通知时 |
Stop | Claude 结束回复时 |
SubagentStop | 子代理结束时 |
PreCompact | 上下文压缩之前 |
SessionStart | 会话开始 |
SessionEnd | 会话结束 |
11.2 配置结构
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": "/path/to/validate-bash.sh",
"timeout": 60
}
]
}
]
}
}matcher:工具名精确匹配、正则,或*表示全部。SessionStart匹配startup/resume/clearPreCompact匹配manual/autoUserPromptSubmit/Stop/Notification无实际匹配语义
- 钩子脚本从 stdin 接收 JSON,字段包括
session_id、transcript_path、cwd、hook_event_name、tool_name、tool_input、tool_response、prompt等。
11.3 退出码语义(关键)
| 退出码 | 含义 |
|---|---|
| 0 | 成功。stdout 在 transcript 模式显示;对 UserPromptSubmit 和 SessionStart,stdout 会加入 Claude 的上下文 |
| 2 | 阻塞性错误。stderr 反馈给 Claude。PreToolUse 中会阻止工具调用;Stop/SubagentStop 中会阻止停止;PostToolUse 中把错误暴露给 Claude |
| 其他非零 | 非阻塞错误。stderr 显示给用户,执行继续 |
11.4 高级 JSON 输出
钩子也可以往 stdout 输出 JSON 来做精细控制:
{
"continue": false,
"stopReason": "自定义停止原因",
"suppressOutput": true,
"decision": "block",
"reason": "阻止原因",
"hookSpecificOutput": {
"hookEventName": "PreToolUse",
"permissionDecision": "allow",
"permissionDecisionReason": "命中内部白名单",
"additionalContext": "额外注入的上下文"
}
}permissionDecision 可取 allow / deny / ask——这让钩子能实现比静态权限规则复杂得多的判断逻辑(比如"只有改动在 src/ 下的编辑才放行")。
11.5 实战例子
自动格式化:每次编辑后跑 Prettier
{
"hooks": {
"PostToolUse": [
{
"matcher": "Edit|Write",
"hooks": [{
"type": "command",
"command": "jq -r '.tool_input.file_path' | xargs -r npx prettier --write"
}]
}
]
}
}守住敏感文件:阻止任何对 .env 的写入
{
"hooks": {
"PreToolUse": [
{
"matcher": "Edit|Write",
"hooks": [{
"type": "command",
"command": "jq -e '.tool_input.file_path | test(\"\\\\.env$\") | not' > /dev/null || { echo '禁止修改 .env 文件' >&2; exit 2; }"
}]
}
]
}
}会话开始注入上下文:
{
"hooks": {
"SessionStart": [{
"hooks": [{
"type": "command",
"command": "echo \"当前分支: $(git branch --show-current)\"; git status --short"
}]
}]
}
}用 /hooks 可以交互式地查看和配置钩子。
12. 子代理 Subagents
子代理是独立的 Claude 实例,有自己独立的上下文窗口,用于把探索性、高噪音的工作隔离出去,避免污染主会话的上下文。
12.1 定义位置
- 项目级:
.claude/agents/*.md - 用户级:
~/.claude/agents/*.md - 内联:
claude --agents '{"name": {...}}'
12.2 Frontmatter 字段
--- name: code-reviewer description: 审查代码变更,关注正确性、安全性、可维护性。在用户要求 review 或提交前主动使用。 tools: Read, Grep, Glob, Bash model: opus --- 你是一位资深代码审查者。 审查时请: 1. 优先找会导致 bug 的逻辑错误,而不是风格问题 2. 每个问题给出具体的失败场景(什么输入 → 什么错误结果) 3. 用 file:line 格式引用位置
| 字段 | 必填 | 说明 |
|---|---|---|
name | ✅ | 标识符 |
description | ✅ | 决定何时委派——模型根据它判断该不该用这个代理,所以要写清楚触发条件 |
tools | ❌ | 逗号分隔的工具白名单;省略则继承全部工具 |
model | ❌ | sonnet / opus / haiku / inherit |
Markdown 正文就是子代理的系统提示词。
12.3 关键约束
- 子代理有独立上下文窗口——这是它的核心价值
- 子代理不能再派生子代理(只能一层)
- 主会话只收到子代理的最终报告,中间的工具调用输出不进入主上下文
用 /agents 可以交互式地创建和管理。本次会话指定代理用 --agent <name>。
13. 自定义斜杠命令
把常用提示词固化成一条命令。
13.1 位置
- 项目级:
.claude/commands/*.md - 用户级:
~/.claude/commands/*.md - 插件提供:
/plugin-name:command
13.2 结构
--- description: 修复某个 GitHub Issue argument-hint: [issue-number] allowed-tools: Bash(gh issue view:*), Read, Edit, Bash(git:*) model: sonnet --- 请修复 Issue #$1。 先用 `gh issue view $1` 获取 Issue 详情,然后: 1. 定位相关代码 2. 实现修复 3. 补充测试 4. 提交 commit,message 引用该 Issue
Frontmatter:
| 字段 | 说明 |
|---|---|
description | 显示在 / 选择器里 |
argument-hint | 补全时显示的参数提示,如 [issue-number] |
allowed-tools | 该命令可免提示使用的工具 |
model | 该命令的模型覆盖 |
正文中的替换:
| 语法 | 作用 |
|---|---|
$ARGUMENTS | 全部参数作为一个字符串 |
$1, $2, … | 位置参数 |
!`command` | 执行 bash 并把输出内联进来(需 allowed-tools 包含相应 Bash 权限) |
@path/to/file | 内联文件内容 |
命名空间:commands/ 下的子目录成为命名空间。.claude/commands/frontend/component.md → /frontend:component。
📌 新版本中 Skills(
.claude/skills/)在很多场景下是自定义命令的推荐替代品——技能支持配套文件、脚本和渐进式披露(只有 description 常驻上下文)。两者目前都可用。
14. Agent Skills 技能
技能是由模型自主调用的领域知识包,是 Claude Code 里组织"可复用专业能力"的主要方式。
14.1 位置与结构
.claude/skills/<skill-name>/
├── SKILL.md # 必需:frontmatter + 指令
├── reference.md # 可选:按需读取的参考文档
├── scripts/
│ └── helper.py # 可选:可执行脚本
└── assets/
└── template.txt # 可选:模板资源用户级技能放在 ~/.claude/skills/<name>/SKILL.md。
14.2 SKILL.md
--- name: pdf-processing description: 处理 PDF 文件——提取文本、合并、拆分、填表单。当用户提到 PDF 或需要处理 .pdf 文件时使用。 allowed-tools: Read, Bash, Write --- # PDF 处理 ## 可用工具 - `scripts/extract.py` —— 从 PDF 提取文本 - `scripts/merge.py` —— 合并多个 PDF ## 流程 1. 先用 Read 确认 PDF 是否可读 2. 调用 extract.py ... ## 参考资料 详细 API 见 reference.md
| 字段 | 说明 |
|---|---|
name | 技能标识符 |
description | 最关键——模型靠它决定何时调用。要写清楚"做什么"和"什么时候用" |
allowed-tools | 该技能可用的工具 |
14.3 技能 vs 自定义命令 vs CLAUDE.md
| 加载方式 | 适用场景 | |
|---|---|---|
| CLAUDE.md | 每会话全量注入 | 短小、永远相关的项目约定 |
| 自定义命令 | 用户显式 /触发 | 你主动执行的固定流程 |
| Skill | 模型按需自动调用 | 成体系的领域知识,含配套文件与脚本 |
核心优势是渐进式披露:技能的 description 常驻上下文(成本很低),正文和附属文件只在真正相关时才载入。这让你可以挂载大量专业知识而不撑爆上下文窗口。
用 /skills 管理技能。
15. MCP 服务器
MCP(Model Context Protocol)是接入外部工具与数据源的开放协议。接上 MCP 服务器后,它的工具会出现在 Claude 的工具集里。
15.1 传输方式
| 传输 | 说明 |
|---|---|
stdio | 本地子进程,通过标准输入输出通信 |
HTTP | 远程可流式 HTTP,远程场景首选 |
SSE | Server-Sent Events,较老的远程传输,正在被 HTTP 取代 |
15.2 作用域
| 作用域 | 存储位置 | 生效范围 |
|---|---|---|
local | ~/.claude.json 中按项目路径记录 | 只有你,只有这个项目(默认) |
project | 仓库根目录 .mcp.json(提交到 git) | 整个团队 |
user | ~/.claude.json | 只有你,所有项目 |
15.3.mcp.json格式
{
"mcpServers": {
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_TOKEN": "${GITHUB_TOKEN}"
}
},
"sentry": {
"type": "http",
"url": "https://mcp.sentry.dev/mcp",
"headers": {
"Authorization": "Bearer ${SENTRY_TOKEN}"
}
}
}
}支持 ${VAR} 环境变量展开。
项目作用域的服务器首次使用需要用户批准。想全部自动批准可以设 enableAllProjectMcpServers: true,或用 enabledMcpjsonServers / disabledMcpjsonServers 逐个控制。
15.4 使用
/mcp—— 查看服务器状态、处理 OAuth 认证@server:protocol://resource/path—— 引用 MCP 资源- MCP 提供的 prompt 会变成斜杠命令
claude mcp list # 查看所有服务器 claude mcp login sentry # 认证 claude mcp get github # 看详情 claude mcp remove github # 移除 claude mcp serve # 把 Claude Code 本身当 MCP 服务器
💡 安全提示:MCP 服务器是第三方代码,拿到的是你的工具权限。只装信得过的,用
${VAR}传密钥而不是硬编码,提交.mcp.json前检查一遍。
16. 插件与市场
插件把命令 + 子代理 + 技能 + 钩子 + MCP 服务器 + 输出风格打包成一个可分发的整体。
16.1 结构
- 市场定义:
.claude-plugin/marketplace.json - 插件定义:
.claude-plugin/plugin.json
市场通常是一个 GitHub 仓库,也可以是本地路径或 git URL。
16.2 常用命令
# 添加市场 claude plugin marketplace add anthropics/claude-code-plugins claude plugin marketplace list claude plugin marketplace update # 安装与管理 claude plugin install my-plugin@my-marketplace claude plugin list claude plugin enable my-plugin claude plugin details my-plugin # 组件清单 + 预估 token 开销 claude plugin update my-plugin claude plugin uninstall my-plugin # 开发 claude plugin init my-plugin # 脚手架 claude plugin validate ./my-plugin # 校验结构 claude plugin tag ./my-plugin # 打发布 tag
会话内用 /plugin 打开交互式管理界面。
设置里用 enabledPlugins 固定启用清单:
{
"enabledPlugins": {
"my-plugin@my-marketplace": true
}
}17. 输出风格 Output Styles
输出风格直接改写系统提示词,改变 Claude 的表达方式。
17.1 位置
- 项目级:
.claude/output-styles/*.md - 用户级:
~/.claude/output-styles/*.md - 内置:
default、Explanatory、Learning
17.2 自定义
--- name: 中文技术写作 description: 用中文回答,面向有经验的工程师,直给结论 --- - 始终用简体中文回答 - 先给结论,再给理由,不要铺垫 - 代码注释用中文 - 避免"首先/其次/最后"这类连接词
用 /output-style 切换,/output-style:new 创建新的。
说明:Output style 影响的是表达风格;项目约定应该放 CLAUDE.md,不要混用。
18. 无头模式、CI 与 SDK
18.1 基本用法
用 -p / --print 进入非交互模式:
# 单次提问
claude -p "总结这个项目的架构"
# 管道输入
cat error.log | claude -p "这些报错说明了什么?"
# JSON 输出(便于脚本解析)
claude -p "列出所有 TODO" --output-format json
# 流式 JSON
claude -p "重构 utils.js" --output-format stream-json --verbose
# 限制轮数与预算
claude -p "修复 lint 错误" \
--allowedTools "Edit" "Bash(npm run lint:*)" \
--max-turns 10 \
--max-budget-usd 2
# 结构化输出校验
claude -p "提取 API 端点" --json-schema '{"type":"object","properties":{"endpoints":{"type":"array","items":{"type":"string"}}},"required":["endpoints"]}'--output-format json 返回的结果对象包含 result、session_id、total_cost_usd 和 token 用量统计,非常适合 CI 里做成本核算。
18.2 自动化中的安全
非交互模式下没有权限弹窗。你有三个选择:
# 1. 最小权限:只放行必需的 --allowedTools "Read" "Bash(npm test:*)" # 2. 拒绝高危:显式封禁 --disallowedTools "Bash(rm:*)" "WebFetch" # 3. 完全跳过:仅在隔离沙箱中用 --dangerously-skip-permissions
⚠️
--dangerously-skip-permissions在 CI 里意味着一个能执行任意命令的 agent 跑在你的 runner 上。只在没有网络、没有凭据、用完即毁的容器里这么干。
18.3 GitHub Actions
name: Claude Code Review
on:
pull_request:
types: [opened, synchronize]
jobs:
review:
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: write
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
prompt: "审查这个 PR 的改动,重点关注并发安全和错误处理"会话内跑 /install-github-app 可以自动完成 GitHub App 的安装配置。Action 支持响应 Issue/PR 里的 @claude 提及,也支持定时触发。
18.4 Agent SDK
要把整套 agent 框架嵌进自己的程序,用 Claude Agent SDK:
| 语言 | 包名 |
|---|---|
| Python | claude-agent-sdk |
| TypeScript | @anthropic-ai/claude-agent-sdk |
SDK 提供完整的 Claude Code 框架——agent 循环、会话、钩子、子代理、权限、MCP——加上内置工具集(Read/Write/Edit/Bash/Glob/Grep/WebSearch/WebFetch)。由你自己托管,Anthropic 不托管 Agent SDK 应用。
⚠️ 三个容易混淆的产品:
- Agent SDK —— 完整 harness + 内置工具,你自托管
- Tool Runner(Claude API 的
client.beta.messages.tool_runner)—— 只循环调用你自己定义的工具,无内置工具,但支持逐轮审批拦截 - Managed Agents —— Anthropic 托管的服务端沙箱
Agent SDK 的文档在 code.claude.com,不在 platform.claude.com。
19. 环境变量
19.1 认证与端点
| 变量 | 说明 |
|---|---|
ANTHROPIC_API_KEY | 直接 API 调用的密钥 |
ANTHROPIC_AUTH_TOKEN | 自定义 Authorization 头(网关 / 代理场景) |
ANTHROPIC_BASE_URL | 覆盖 API 端点 |
CLAUDE_CODE_USE_BEDROCK | 切换到 Amazon Bedrock |
CLAUDE_CODE_USE_VERTEX | 切换到 Google Vertex AI |
19.2 模型
| 变量 | 说明 |
|---|---|
ANTHROPIC_MODEL | 默认模型 |
ANTHROPIC_DEFAULT_OPUS_MODEL | opus 别名解析到哪个模型 |
ANTHROPIC_DEFAULT_SONNET_MODEL | sonnet 别名解析到哪个模型 |
ANTHROPIC_DEFAULT_HAIKU_MODEL | haiku 别名解析到哪个模型 |
ANTHROPIC_DEFAULT_FABLE_MODEL | fable 别名解析到哪个模型 |
ANTHROPIC_SMALL_FAST_MODEL | ⚠️ 已废弃,改用 ANTHROPIC_DEFAULT_HAIKU_MODEL |
CLAUDE_CODE_MAX_OUTPUT_TOKENS | 单次响应最大输出 token |
MAX_THINKING_TOKENS | 扩展思考的 token 预算 |
💡 通过
ANTHROPIC_BASE_URL+ANTHROPIC_AUTH_TOKEN+ANTHROPIC_DEFAULT_*_MODEL这一组变量,可以把 Claude Code 接到任意兼容 Anthropic 协议的模型服务上。
19.3 超时与行为
| 变量 | 说明 |
|---|---|
BASH_DEFAULT_TIMEOUT_MS | Bash 工具默认超时 |
BASH_MAX_TIMEOUT_MS | Bash 工具最大超时 |
MCP_TIMEOUT | MCP 服务器启动超时 |
MCP_TOOL_TIMEOUT | MCP 工具调用超时 |
CLAUDE_CONFIG_DIR | 重定向配置目录 |
CLAUDE_CODE_GIT_BASH_PATH | Windows 上 Git Bash 的路径 |
CLAUDE_CODE_SAFE_MODE | 等价于 --safe-mode |
CLAUDE_CODE_SIMPLE | 等价于 --bare |
CLAUDE_CODE_API_KEY_HELPER_TTL_MS | apiKeyHelper 输出的缓存时长 |
19.4 隐私与遥测
| 变量 | 说明 |
|---|---|
DISABLE_TELEMETRY | 禁用遥测 |
DO_NOT_TRACK | 同上(通用标准) |
DISABLE_ERROR_REPORTING | 禁用错误上报 |
DISABLE_AUTOUPDATER | 禁用自动更新 |
DISABLE_BUG_COMMAND | 隐藏 /bug |
DISABLE_NON_ESSENTIAL_MODEL_CALLS | 跳过非必要的模型调用 |
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC | 上面几项的集合开关 |
19.5 网络
| 变量 | 说明 |
|---|---|
HTTP_PROXY / HTTPS_PROXY | 代理 |
NO_PROXY | 代理排除列表 |
20. 实战工作流
20.1 接手一个陌生代码库
/init # 生成 CLAUDE.md 请阅读代码库并告诉我: # 让它先调研 1. 整体架构和数据流 2. 核心模块各自负责什么 3. 测试怎么跑
想更结构化就用计划模式(Shift+Tab 切到 plan)——它保证 Claude 只看不改,给出方案等你批准。
20.2 安全的探索式改动
Shift+Tab → plan # 切到计划模式 "重构用户认证模块,先用 JWT 替换 session" # Claude 只调研、出方案 【审阅方案,确认没问题】 Shift+Tab → acceptEdits # 切到自动接受编辑 "按方案执行"
这个「先 plan 后 acceptEdits」的两段式是 Claude Code 最好用的工作流之一:方案阶段零风险,执行阶段零打断。
20.3 TDD 循环
claude # 然后: 请为 utils/parser.js 写测试,覆盖: - 空输入 - 畸形 JSON - 超长输入 - Unicode 先写测试,跑一遍确认失败,再实现到全部通过
20.4 并行调查
让子代理并行探索,主会话保持干净:
用三个子代理并行调查: 1. 认证流程是怎么实现的 2. 数据库 schema 和迁移策略 3. 前端状态管理方案 每个给我一份简明报告
子代理各自的探索噪音不会进入主上下文,主会话只收到结论。
20.5 大重构
claude -w refactor-auth # 在独立 worktree 里干活,不影响主分支
会话里做完改动,测试通过再合并。
20.6 代码审查
/review # 常规审查 /security-review # 安全审查 /ultrareview # 云端多代理深度审查
20.7 自动化守门
在 .claude/settings.json 里设好规则,让团队所有人受益:
{
"permissions": {
"ask": ["Bash(git push:*)", "Bash(npm publish:*)"],
"deny": ["Read(./.env)", "Read(./secrets/**)", "Bash(curl:*)"]
},
"hooks": {
"PostToolUse": [{
"matcher": "Edit|Write",
"hooks": [{
"type": "command",
"command": "jq -r '.tool_input.file_path' | xargs -r npx prettier --write"
}]
}]
}
}21. 速查表
启动
claude # 交互式会话 claude "解释这个项目" # 带首条提示词 claude -c # 继续最近会话 claude -r # 选择恢复某个会话 claude --model opus # 指定模型 claude -p "查询" # 非交互,打印后退出 claude --bg "任务" # 后台代理 claude -w feature-x # 在独立 worktree 中工作 claude --safe-mode # 排查坏配置
会话内
/help /config /model /permissions /init /memory /compact /context /clear /resume /rewind /cost /agents /skills /hooks /mcp /plugin /add-dir /output-style /statusline /doctor /review /security-review /usage /export /exit
输入前缀
/ 斜杠命令 @ 引用文件 ! 执行 bash # 写入记忆
管理
claude update # 更新 claude doctor # 体检 claude mcp list # MCP 服务器 claude plugin list # 插件 claude agents # 后台代理 claude project purge # 清理项目状态
关键路径
| 路径 | 内容 |
|---|---|
~/.claude/settings.json | 用户设置 |
~/.claude/CLAUDE.md | 用户记忆 |
~/.claude/agents/ | 用户子代理 |
~/.claude/commands/ | 用户自定义命令 |
~/.claude/skills/ | 用户技能 |
~/.claude/output-styles/ | 输出风格 |
.claude/settings.json | 项目设置(提交) |
.claude/settings.local.json | 项目本地设置(不提交) |
.claude/agents/ | 项目子代理 |
.claude/commands/ | 项目命令 |
.claude/skills/ | 项目技能 |
CLAUDE.md | 项目记忆(提交) |
.mcp.json | 项目 MCP 服务器(提交) |
优先级速记
- 设置:企业策略 > 命令行参数 >
.claude/settings.local.json>.claude/settings.json>~/.claude/settings.json - 权限:
deny>ask>allow - 记忆:企业 > 用户 > 项目 > 子目录(+ 本地)
附录:官方文档索引
| 主题 | 地址 |
|---|---|
| 文档总索引 | https://code.claude.com/docs/en/claude_code_docs_map.md |
| CLI 参考 | https://code.claude.com/docs/en/cli-reference |
| 斜杠命令 | https://code.claude.com/docs/en/slash-commands |
| 交互模式 | https://code.claude.com/docs/en/interactive-mode |
| 设置 | https://code.claude.com/docs/en/settings |
| 记忆 | https://code.claude.com/docs/en/memory |
| 钩子 | https://code.claude.com/docs/en/hooks |
| 子代理 | https://code.claude.com/docs/en/sub-agents |
| MCP | https://code.claude.com/docs/en/mcp |
| 技能 | https://code.claude.com/docs/en/skills |
| 插件 | https://code.claude.com/docs/en/plugins |
| 无头模式 | https://code.claude.com/docs/en/headless |
| GitHub 仓库 | https://github.com/anthropics/claude-code |
基于 Claude Code v2.1.237 。
到此这篇关于Claude Code命令、模式与配置完全指南的文章就介绍到这了,更多相关Claude Code命令、模式与配置内容请搜索脚本之家以前的文章或继续浏览下面的相关文章,希望大家以后多多支持脚本之家!
