Claude Code高效使用指南:核心指令、CLAUDE.md与权限配置实战
我见过太多人拿到 Claude Code 第一件事就是到处翻指令清单把一百多条命令复制到备忘录里结果真正用起来还是只会claude 帮我写个函数。标题说“每天用 Claude Code 的人常用指令都在这一百条里”这句话不假但我想换个说法真正每天高频使用的其实不超过二十条剩下的都是围绕这二十条衍生的变体。这篇文章我就按自己的使用习惯把指令拆成“骨架 血肉”来讲从安装、核心指令、CLAUDE.md 记忆文件到权限配置、hooks 拦截、常见报错尽量让你看完能直接上手而不是又收藏一份吃灰的指令大全。Claude Code 是 Anthropic 出的命令行 AI 编程助手本质上是让 Claude 不只在聊天窗口里给建议而是直接读你的代码、改文件、跑命令、查日志甚至帮你提交代码。它对两类人最有价值一类是已经装好但不知道怎么用得顺手的开发者另一类是刚听说想入坑、但被各种安装步骤和术语劝退的新手。我自己日常写 Python 和 Go也会处理运维脚本和项目重构大概用了四个月中间踩了不少坑下面这些内容都是我实打实验证过的。1. 别急着背指令先搞懂 Claude Code 的指令骨架1.1 它到底是个什么样的工具如果你用惯了 ChatGPT 或者 Claude 网页版第一次打开 Claude Code 可能有点懵没有漂亮的对话框只有一个终端光标在闪。因为它的核心交互方式就是“终端里的 AI 结对程序员”你输入自然语言描述需求它通过工具调用tool calls去执行一系列操作读取文件、搜索代码、执行终端命令、编辑文件等。这个设计思路很关键——它不是说说话就完了而是会把“意图”翻译成“动作”。比如你说“把这个项目的测试跑一遍”它不是给你一段命令让你复制而是真的去终端里执行pytest tests/ -v再把输出结果拿回来分析。所以它的指令体系天然分成两层一层是你和它对话时输入的内容另一层是启动时给它的参数。1.2 三层指令体系我习惯把 Claude Code 的“指令”分成三类这个分类比单纯背命令清单有用得多。第一类是斜杠指令Slash Commands。在交互会话里输入以/开头的命令比如/init、/review、/compact。这类指令负责的是“会话内的状态控制”——让 Claude 扫描项目、让 Claude 审查代码、压缩上下文都是在对话过程中触发的。第二类是启动参数CLI Flags。比如claude -p 写一个快速排序、claude --model opus。这类指令在你敲下claude命令的那一刻生效决定用什么模型、以什么模式运行、输出格式是什么。它适合脚本化调用也就是非交互场景。第三类是项目记忆文件也就是CLAUDE.md和.claude/目录下的配置文件。这部分容易被忽略但它才是让 Claude Code 真正“懂你项目”的关键。每次启动会话时Claude 都会读取这些文件相当于给它一份项目说明书告诉它这个项目的技术栈、目录约定、代码风格、常用命令。新手最容易犯的错误是只盯着斜杠指令背忽略了 CLAUDE.md 和启动参数。实际上斜杠指令解决的是“当下怎么操作”CLAUDE.md 解决的是“长期怎么保持一致”启动参数解决的是“怎么批量调用”。这三个层面配合起来才算真正会用。2. 安装与启动第一次真正跑起来2.1 三种安装方式对比安装 Claude Code 的常见方式有三种npm 全局安装、官方脚本安装、VS Code 扩展安装。我分别试过说下实际感受。npm 全局安装是我最推荐的方式前提是你机器上有 Node.js 18 或更高版本。安装命令很简单npm install -g anthropic-ai/claude-code装完之后在终端输入claude就能启动。这种方式的好处是升级方便而且生态兼容性最好因为很多辅助工具都是基于 npm 包来扩展的。官方脚本安装适合那些不想装 Node.js 的环境或者临时需要一个测试实例。官方提供的安装脚本大概是这样curl -fsSL https://claude.ai/install.sh | bash脚本会自动检测系统架构下载对应的二进制包。但我在某些偏门 Linux 发行版上遇到过脚本不兼容的情况所以如果你只是普通开发机建议还是用 npm。VS Code 扩展安装是很多人第一次接触 Claude Code 的入口。直接在扩展市场搜 “Claude Code for VS Code”装好之后可以通过命令面板CmdShiftP输入 “Claude Code” 启动。它的底层仍然是调 CLI但好处是无需切出编辑器可以在左侧面板看到会话记录和文件改动。注意如果你用的是 Ubuntu 这类 Linux 环境先确认基础的依赖都在特别是gitClaude Code 的很多操作依赖 Git 来做差异对比和提交。用git --version查一下没装的话先sudo apt install git补上。2.2 第一次启动要跑的三条指令装好之后第一次启动建议按顺序执行这三条能少走很多弯路。claude回车进入交互模式。第一次会要求登录按提示操作即可。进入项目目录后先输入/init。这条命令会让 Claude 扫描当前项目的文件结构、技术栈、现有配置然后在项目根目录生成一个CLAUDE.md。这个文件就是刚才说的“项目说明书”。输入/status查看当前会话的状态包括上下文用量、当前项目路径、使用的模型等。养成随时看状态的习惯能帮你判断是不是该压缩上下文了。这三条跑完之后你就有了一个基本可用的环境。此时试着说一句“帮我介绍一下这个项目的模块划分”看它能不能根据 CLAUDE.md 和源码给出结构化的回答。如果这一步没问题说明整个链路已经通了。2.3 VS Code 环境下的配置细节VS Code 扩展装好后有个容易被忽略的点它默认会读取当前工作区里的CLAUDE.md。如果你在 VS Code 打开的是项目根目录那没问题但如果你习惯把某个子目录单独打开Claude Code 就只会看到子目录的上下文跨目录操作时会迷路。我的习惯是要么始终在项目根目录打开工作区要么在 CLAUDE.md 里明确写出全局目录结构。另外Windows 上如果项目路径含中文或空格容易出现路径解析问题。我踩过一次坑路径是D:\项目\我的代码Claude 在读取文件时拼接路径报错。后来统一改成英文目录名就再没出过这个问题。如果你暂时改不了目录名启动时把项目路径用引号包起来比如claude D:\project\demo能缓解一部分问题。3. 核心指令详解使用频率最高的二十几条3.1 会话控制类别等到上下文爆了才想起来/clear用来清空上下文。当你切换任务、或者感觉 Claude 开始答非所问的时候直接/clear开新会话。注意它是彻底清空Claude 会忘掉之前聊的所有内容所以千万不要在讨论到一半的时候误操作。/compact是我的最爱也是很多人不知道的救命指令。它的作用是把当前对话历史压缩成精简摘要释放上下文空间同时保留关键信息。和/clear的区别在于/clear是全部遗忘/compact是“选择性遗忘”。比如你让 Claude 读了十几个文件讨论了一个复杂的重构方案此时上下文已经用了大半但又不想让它忘记方案结论就用/compact。它会总结出一个浓缩版继续聊重要结论还在。/model用来切换模型。Claude Code 一般默认用 Sonnet 模型速度较快适合常规任务遇到特别复杂的问题可以切到 Opus理解力更强但响应更慢。我的习惯是普通代码生成、写测试、改配置用默认模型涉及架构设计、跨文件重构、排查诡异 bug 时切换到 Opus 再聊。/rewind回退到之前的检查点。Claude Code 会在每次工具调用前自动创建检查点相当于操作快照。如果 Claude 改坏了一批文件你不想手动 git 撤销直接/rewind回到改动之前的状态。我在批量重构时基本每次跑完都会看一眼改动发现不对劲立刻回退。3.2 代码与文件操作类从“看”到“改”/init在之前的安装步骤已经说过了它的核心作用是生成 CLAUDE.md。刚把 Claude Code 引入已有项目时跑一次/init会节省后面所有对话的沟通成本。它会自动总结项目概览不准确的地方手动改。/add-dir或--add-dir参数可以把整个目录加入上下文。默认情况下 Claude 只关注当前目录和它读取过的文件如果你想让它了解某个子模块的所有代码不需要一个个文件去提。用/add-dir把目录路径加进去它就能在后续操作中引用这些文件。大项目里控制好上下文用量别一次加太多否则很快触顶。/edit会打开系统编辑器让你手动修改某个文件。这个指令的场景是Claude 改了文件你不太满意但又不想让它重写一遍而是想自己手动微调。执行/edit加上文件名它会用默认编辑器打开文件改完保存返回终端。/bug用来报告错误。当 Claude Code 自身行为异常比如某条命令不生效、或者生成了明显错误的代码输入/bug会调出错误报告入口把当前会话的日志和堆栈信息打包提交。我遇到过几次模型输出中断的问题就是靠/bug把现场信息反馈上去的。3.3 上下文管理类让 Claude 记住该记住的/memory查看 Claude 当前加载的记忆内容。Claude Code 的记忆来自 CLAUDE.md 文件项目级和用户级/memory可以快速确认它到底记住了哪些约束。比如你明明在 CLAUDE.md 里写了“禁止修改 migrations 目录”但它还是改了那就要查一下是不是文件路径写错了或者项目级配置没生效。/vibe查看当前上下文的快照包括加载了哪些文件、环境信息、最近的操作记录。它和/status有点类似但/vibe更偏重“上下文内容”/status更偏重“运行状态”。排查对话跑偏、出现幻觉的时候先看/vibe再决定是/compact还是/clear。关于 CLAUDE.md 的详细写法我在第 4 章专门讲。这里先强调一个原则好的 CLAUDE.md 能让你少说一百句话因为你不用在每次对话里重复“记住这个项目用 Poetry 管理依赖不要用 pip”。3.4 审查与调试类让工具给自己挑毛病/review会让 Claude 对当前 Git 工作区里的改动做一次代码审查。它会把改动 diff 拿过来逐行分析给出风格问题、潜在 bug、性能隐患。我每次提交代码前都会执行一次/review相当于有了一个免费 code review 搭子。但注意它的建议不一定都对尤其是涉及业务逻辑的复杂判断还是要有自己的判断力。/doctor是环境诊断工具用来排查安装问题、鉴权问题、网络连通性问题。如果 Claude Code 莫名其妙不能启动、或者一直登录失败先跑/doctor它会输出一条条检查结果你根据报错项去处理。/permissions查看当前权限配置。Claude Code 执行危险操作前会询问你比如“允许运行 rm 命令吗”这些权限规则可以在会话里查看和调整。权限模型我会在第 5 章展开。4. 进阶用法把指令组合成工作流4.1 CLAUDE.md项目记忆的详细写法CLAUDE.md 是我觉得 Claude Code 最值得花时间研究的配置文件。它本质上是一个 Markdown 文件Claude 每次启动都会读取。你可以把它理解为“给 AI 同事看的入职文档”告诉它项目的基本规矩。我自己的项目 CLAUDE.md 一般包含这几块# 项目名称 ## 技术栈 - 后端Python 3.11 / FastAPI - 数据库PostgreSQL 15 / SQLAlchemy 2.0 - 前端React 18 / Vite ## 目录结构 - app/ —— FastAPI 主应用 - app/api/ —— 路由层 - app/services/ —— 业务逻辑层 - app/models/ —— 数据库模型 - tests/ —— pytest 测试镜像 app/ 结构 ## 常用命令 - 启动开发服务uvicorn app.main:app --reload - 运行测试pytest tests/ -v - 数据库迁移alembic upgrade head ## 代码规范 - 所有新函数必须添加类型注解 - 数据库查询禁止裸 SQL必须走 ORM - 提交信息遵循 Conventional Commits 格式这种写法有几个关键点技术栈要写准避免 Claude 用错库常用命令要写全它能直接帮你跑测试代码规范要具体比如“禁止裸 SQL”比“注意代码质量”有用一百倍。存放位置也需要注意。项目根目录的CLAUDE.md是项目级配置只对当前项目生效用户主目录下的~/.claude/CLAUDE.md是用户级配置对所有项目生效。我的习惯是用户级写全局偏好比如“默认使用黑色主题”“提交信息用中文写”项目级写项目专属规则。4.2 权限配置与安全边界Claude Code 默认会在执行敏感操作时征求你的同意比如执行 Shell 命令、修改文件。但如果你在跑一组重复性任务每改一个文件都弹一次确认体验会非常差。这时候就需要权限配置。Claude Code 支持几种模式默认询问模式acceptEdits模式自动接受文件编辑但运行命令仍然询问还有bypassPermissions模式跳过所有权限检查。我的建议是日常开发用默认模式最多设置一些针对性规则让特定操作免确认比如Edit src/**允许直接改 src 目录批量重构场景用 acceptEdits效率高且仍然保留命令确认的兜底绝对不要在你不熟悉或没法回滚的环境里用 bypassPermissions我见过有人为了省事直接跳过所有权限然后 Claude 误删了一个临时目录几小时的工作白费。权限配置写在项目的.claude/settings.json里比如{ permissions: { allow: [ Bash(npm run lint), Edit(app/**) ], deny: [ Bash(rm -rf *) ] } }这样设置了之后Claude 执行npm run lint不需要问你修改app/目录下的文件不需要问你但删除类命令依然会被拦下来。4.3 用 hooks 自动拦截危险操作权限规则是静态的如果你想让 Claude Code 在特定操作前后自动执行脚本那要用到 hooks。hooks 是在工具执行前后触发的回调脚本类似 Git hooks 的概念。最实用的场景是用 PreToolUse 钩子拦截危险命令。比如在.claude/settings.json里配置{ hooks: { PreToolUse: [ { matcher: Bash, hooks: [ { type: command, command: node .claude/hooks/block-danger.sh } ] } ] } }然后在block-danger.sh里写判断逻辑检查命令内容是否包含rm -rf、git push --force这类高危操作是的话就以非零退出码阻止。这对团队协作尤其重要——你可以把 hooks 配置提交到仓库让每个成员的 Claude Code 都带上这条安全带。4.4 把 Git 工作流和 Claude Code 串起来Claude Code 对 Git 的集成非常深。默认情况下它执行文件编辑之后会把改动 stage 起来等你 review。你可以在对话里让它“帮我看看当前改了哪些文件”它会调git diff给你逐段展示。我的习惯是任务完成后先让 Claude “总结一下改动内容”再手动git diff快速扫一遍确认没有意外改动然后才提交。提交信息可以指定格式比如用 Conventional Commits 格式为当前改动生成提交信息它写出来的提交信息一般比我自己手写的规范得多。特别是大改之后让 Claude 按“类型/影响范围/具体内容”补全信息省很多事。另外git log也是 Claude 排查问题的利器。遇到“这段代码为什么这么写”的问题直接让 Claude “看下这个文件的近期提交历史”它能从提交记录里推出当时的背景。5. 常见报错与排查实录5.1 安装失败先查环境再查网络我遇到过最多的安装问题一个是权限报错一个是 Node 版本太低。权限报错长这样EACCES: permission denied。原因通常是当前用户对 npm 全局目录没有写权限。正确的解法不是sudo npm install -g而是用 Node 版本管理工具比如 nvm安装完 Node 之后全局包都会落到用户目录完全绕开权限问题。如果已经用 sudo 装了可以卸载后重新用 nvm 装。Node 版本太低的症状是安装时报引擎不兼容或者装完启动报语法错误。查一下node -v低于 18 就先升级。我建议直接上 20 LTS 版本稳定且各种扩展兼容性好。5.2 登录与鉴权问题如果你设置了ANTHROPIC_API_KEY环境变量Claude Code 会优先使用这个 key不会再走交互式登录。我遇到过的情况是key 过期了但环境变量一直保留着导致 Claude Code 反复报 401。排查方法很简单先env | grep ANTHROPIC看看有没有残留的环境变量有的话更新或删掉再试。还有一种是提示登录失败、无法启动会话。这种情况先跑/doctor它会逐项检查网络、配置文件、API key 有效性。根据我经验网络问题占绝大多数其次是配置文件的 JSON 写错被忽略。检查一下.claude/settings.json里的 JSON 语法多一个逗号都会导致配置不生效。5.3 上下文爆炸与响应质量下降长会话跑到后期你会明显感觉 Claude 开始“健忘”——刚才说过不要往某个文件里加代码结果它又加了。这不是它变笨了是上下文窗口被你塞满了。此时最好的操作顺序是先/vibe看当前上下文里有什么确认哪些信息最重要。用/compact压缩历史把关键结论保留下来。如果压缩完之后还是觉得信息丢失太多直接开新会话把最重要的上下文用一句话重新声明特别是“我们之前讨论完了 XX 模块的重构结论是 A 方案现在开始做 B 部分”。最后这个做法听起来笨其实很高效。新会话上下文干净Claude 的注意力集中在一个明确目标上配合 CLAUDE.md 里的项目说明效果往往比硬撑着长对话好。5.4 权限拒绝与工具调用失败如果 Claude 想执行某个操作但被权限拦住终端会显示类似The user denied permission的提示。此时要么手动输y批准如果它还在等待响应要么在settings.json里加 allow 规则免去后续重复确认。还有一种情况是工具调用本身失败比如读取文件时路径不对。这通常是你给的路径是相对路径但 Claude 当前工作目录不在项目根目录。遇到这种问题最简单的办法是先把当前目录切到项目根再重新让 Claude 操作。路径问题不要跟它争论直接帮它把绝对路径或在正确目录下重新跑。6. 常用指令速查表最后整理一份我日常使用频率最高的指令表你可以截图或者保存下来用到再看。类别指令作用使用频率会话控制/clear清空上下文彻底重开高会话控制/compact压缩上下文保留关键信息高会话控制/model切换模型中会话控制/rewind回退到之前的检查点中会话控制/resume恢复之前会话低项目初始化/init生成 CLAUDE.md 项目说明高新项目必用文件操作/add-dir把目录加入上下文中文件操作/edit用编辑器手动改文件低审查调试/review对当前 diff 做代码审查高审查调试/status查看会话状态与上下文用量高审查调试/vibe查看上下文快照中审查调试/doctor环境诊断低异常时用权限管理/permissions查看权限配置中记忆管理/memory查看记忆内容低错误反馈/bug提交错误报告低启动参数方面常用这几个参数作用claude -p 查询非交互模式直接输出结果适合脚本调用claude --model opus指定模型启动claude --continue继续上一个会话claude --output-format json输出 JSON 格式方便程序解析claude --verbose输出详细日志排查问题用claude --debug进入调试模式我个人实际用得最多的组合是claude -p配合--output-format json把 Claude Code 当成一个可以批量调用的“编码助手 API”直接在构建脚本里调用实现自动化生成测试用例之类的效果。用 Clude Code 这段时间我最大的体会是它不会替你做架构决策但它能把从“决策”到“实现”之间的大量重复劳动撕开一道口子。以前改一个跨文件的重构我要手动梳理所有调用点现在让 Claude 先读一遍相关文件列出影响范围我再基于它的输出决定具体怎么改速度和准确性都上了一个台阶。最后分享一个小技巧每次开始新任务时别急着让 Claude 动手先花五分钟把 CLAUDE.md 里的“当前任务”部分写清楚——目标是什么、约束是什么、成功标准是什么。这五分钟省下来的是后面可能持续几个小时的无头苍蝇式试错。指令可以边用边查但项目上下文这种东西越早沉淀越值钱。