
CLAUDE.md 到底怎么写写了真的有用吗这个问题被问的频率排第一。几乎所有用 Claude Code 的人第一个困惑就是这个文件是干什么的不写行不行一句话回答CLAUDE.md 就是你项目的「团队公约」。 Claude Code 启动时会自动读取它把你写的规则当成团队共同约定来遵守。不写也能用但等于你招了一个能力很强但完全不了解你们项目的新人每次沟通都要从头交代背景。一个实用的 CLAUDE.md 模板长这样CLAUDE.md项目简介用户订单系统Spring Boot 3.2 MyBatis-Plus MySQL 8.0常用命令启动:mvn spring-boot:run测试:mvn test构建:mvn clean package -DskipTests代码规范命名: 驼峰命名表名用下划线分隔分层: Controller 只做参数校验和路由业务逻辑全部在 Service 层数据库: 禁止在代码里写 SQL统一用 XML mapper已知坑点订单表的 create_time 字段用的是 UTC前端展示需要转东八区第三方支付回调地址必须用 HTTPS本地调试用 ngrok为什么有效 Claude Code 的上下文窗口是有限的。如果你不写 CLAUDE.md它每次都要通过读代码、问你问题来理解项目。写了之后相当于把「新员工入职手册」直接拍在桌上省掉大量来回对话的 Token。我在一个 12 万行的 Java 项目里测试过写 CLAUDE.md 之前每次让 Claude Code 改代码平均需要 3-4 轮对话交代背景写完之后第一轮就能给出符合项目规范的方案。Token 消耗直接砍掉将近一半。踩坑提醒 CLAUDE.md 不是越长越好。我见过有人写了 800 行的 CLAUDE.md结果 Claude Code 每次对话都先把这 800 行塞进上下文反而占了大量空间。控制在 100-200 行只写 Claude Code 自己读代码读不出来的东西。CLAUDE.md 的作用范围有三层别搞混了文件位置 作用范围 适合写什么项目根目录/CLAUDE.md 当前项目 技术栈、编码规范、常用命令~/.claude/CLAUDE.md 所有项目 你的个人偏好、通用规则子目录/CLAUDE.md 特定模块 模块特有的架构说明全局的 ~/.claude/CLAUDE.md 我建议写两条代码注释语言偏好比如「注释用中文」和通用规则比如「永远不要在 main 分支上直接提交」。项目级的放具体技术栈信息。这样换项目不用每次都重写。CLAUDE.md 三层作用范围对比全局、项目、子目录的优先级和适用场景Token 太贵了怎么省成本焦虑是被问得第二多的问题。有读者说「用了一天 Claude CodeToken 花了 20 美元心在滴血」。先说结论正常用法下一天大概 3-8 美元。 如果你一天花了 20 美元大概率是以下几种情况之一。省钱的三个最有效手段第一用好 /compact 命令。 这是最被低估的命令。当对话变长时Claude Code 的上下文会越来越大每次请求消耗的 Token 越来越多。/compact 会把历史对话压缩成摘要Token 消耗立刻下降。对话太长时在终端里直接输入/compact也可以加自定义提示指定保留什么信息/compact 保留最近的代码修改记录和当前的bug讨论一个真实的数字我在一次重构会话里上下文从 50K Token 压缩到 8K单次请求成本从 0.3 美元降到 0.05 美元。第二大任务拆小。 别用一句话让 Claude Code 做一整块功能。比如「帮我重构整个用户模块」这句话Claude Code 会读大量文件、生成大量输出。改成「先帮我把 UserService 里的查询方法抽到 UserQueryService」每一步的 Token 消耗可控。第三善用 --model 切换模型。 简单任务用 Sonnet复杂架构设计用 Opus。日常开发用 Sonnet便宜 5 倍claude --model claude-sonnet-4-20250514复杂架构决策切 Opusclaude --model claude-opus-4-20250514模型 输入价格 输出价格 适用场景Sonnet $3/M tokens $15/M tokens 日常编码、文件修改、bug 修复Opus $15/M tokens $75/M tokens 架构设计、复杂重构、多文件协调Token 省钱三步流程压缩上下文、拆小任务、切换模型MCP 是什么怎么配置MCPModel Context Protocol是 Anthropic 推出的一个开放协议简单说就是给 Claude Code 装「外挂工具」的标准接口。你可以把它理解成 Claude Code 的「USB 接口」——通过这个协议Claude Code 可以连接数据库、调用 API、操作浏览器、搜索文档等等。没有 MCPClaude Code 只能读写本地文件有了 MCP它能干的事成倍扩展。配置方式是在 .claude/settings.json项目级或 ~/.claude/settings.json全局中添加 MCP 服务器{“mcpServers”: {“postgres”: {“command”: “npx”,“args”: [“-y”, “modelcontextprotocol/server-postgres”, “postgresql://localhost:5432/mydb”]},“filesystem”: {“command”: “npx”,“args”: [“-y”, “modelcontextprotocol/server-filesystem”, “/path/to/allowed/dir”]}}}踩坑提醒 MCP 服务器启动失败是最常见的报错。90% 的情况是两个原因——Node.js 版本太低需要 v18或者参数里的路径写错了。遇到问题先跑 node --version 检查版本再仔细核对路径。我目前日常用的 MCP 组合是PostgreSQL查数据库、Browser测试页面、Fetch调用 API。三个覆盖了后端开发 80% 的场景。MCP 与 Skill 的关系架构MCP 提供原子工具Skill 编排工作流Claude Code 居中调度Skill 系统是什么和 MCP 有什么区别这个问题特别好因为很多人把 Skill 和 MCP 搞混了。一句话区分MCP 是「工具」Skill 是「工作流」。MCP 给 Claude Code 提供的是原子能力——查数据库、读文件、调 API。Skill 则是一套预定义的指令模板告诉 Claude Code 「遇到某类任务按这个流程走」。打个比方MCP 是给你一把螺丝刀Skill 是给你一套「如何组装宜家书柜」的步骤说明书。螺丝刀可以拆任何东西但只有说明书告诉你先装哪块板。安装 Skill 的方式Skill 文件放在 ~/.claude/skills/ 目录下mkdir -p ~/.claude/skills把 skill 文件夹放进去即可一个最简 Skill 文件夹的结构~/.claude/skills/my-skill/├── SKILL.md # 必须定义触发条件和执行流程├── references/ # 可选参考资料└── templates/ # 可选模板文件什么时候用 MCP什么时候用 Skill 简单判断标准如果你的需求是「给我一个能力」比如查数据库用 MCP如果你的需求是「帮我按流程做某类事」比如写一篇技术文章、做一个代码审查用 Skill。权限管理怎么配总弹权限确认太烦了Claude Code 默认会在执行任何有风险的操作前弹出确认。刚开始用觉得安全用久了觉得烦——特别是写代码写到一半被打断节奏。最实用的配置是 allowlist白名单把你确认安全的操作加进去{“permissions”: {“allow”: [“Bash(npm test)”,“Bash(npm run lint)”,“Bash(mvn test)”,“Bash(git status)”,“Bash(git diff)”,“Bash(git log:*)”,“Read”,“Edit”],“deny”: [“Bash(rm -rf),Bash(git push --force)”]}}三个安全原则只放行你确定安全的命令。 git status 和 mvn test 可以放心放行rm 和 git push --force 永远不要放。用模糊匹配。 Bash(git log:*) 匹配所有 git log 相关命令不用每条都写。分层配置。 个人常用命令放在 ~/.claude/settings.json全局项目特有的放在项目的 .claude/settings.json。一个真实数据 我的全局 allowlist 大概 15 条规则覆盖了日常 90% 的操作。配合之后一天的权限弹窗从 30 次降到 3-5 次都是真正需要确认的操作比如删除文件、推送代码。权限管理 allowlist vs denylist 对比白名单放行 vs 黑名单拦截的安全策略Claude Code 和 Cursor / Copilot 该选哪个这是选型类问题我直接说我的判断框架。三者的核心差异不在能力在交互模式。维度 Claude Code Cursor GitHub Copilot交互方式 终端对话 IDE 内嵌对话 IDE 内补全核心优势 操作系统级别能跑命令、读写文件 编辑器集成度高所见即所得 补全速度快IDE 无感嵌入适合场景 大规模重构、多文件协调、项目级任务 单文件编辑、日常写码 行级/函数级补全上下文能力 全项目扫描 外部工具 当前文件 编辑器上下文 当前文件 光标附近我的建议不是三选一而是组合用。日常写代码用 Cursor或 Copilot因为补全速度快、不需要切换窗口。遇到大任务——比如「重构整个认证模块」「给项目加上单元测试」「排查一个跨 5 个文件的 bug」——切到 Claude Code用对话式交互逐步推进。打个比方Copilot 是自动铅笔随手记笔记用Cursor 是智能笔记本日常办公主力Claude Code 是一个坐在你旁边的资深工程师复杂问题拉他过来 pair programming。Hooks 怎么用能做什么Hooks 是 Claude Code 的「自动化钩子」——在特定事件发生时自动执行你的脚本。最实用的两个场景场景一每次修改代码后自动跑 lint。{“hooks”: {“PostToolUse”: [{“matcher”: “Edit|Write”,“hooks”: [{“type”: “command”,“command”: “cd $CLAUDE_PROJECT_DIR npm run lint – --fix”}]}]}}这样每次 Claude Code 修改文件后自动跑一遍 lint 并修复格式问题不用你手动提醒。场景二对话开始时自动加载环境信息。{“hooks”: {“PreToolUse”: [{“matcher”: “Bash”,“hooks”: [{“type”: “command”,“command”: “echo ‘当前分支:’ $(git branch --show-current) ‘最新commit:’ $(git log --oneline -1)”}]}]}}踩坑提醒 Hook 脚本的执行会影响 Claude Code 的响应速度。如果脚本跑超过 3 秒会觉得 Claude Code 变慢了。建议把耗时操作异步化或者只在必要时触发。我在 PostToolUse 里加了一个跑测试的 Hook结果每次改一个文件都要等 15 秒跑全量测试差点以为网络卡了。后来改成只跑受影响的测试文件才恢复正常速度。Hook 的事件类型一共四种搞清楚触发时机就不会乱用事件类型 触发时机 典型用途PreToolUse 工具调用前 输入校验、权限拦截PostToolUse 工具调用后 lint 格式化、自动测试Notification Claude 需要你关注时 发消息到 Slack/飞书Stop 对话结束时 清理临时文件、生成摘要我见过一个很巧的用法有人在 Notification 事件里接了 BarkiOS 推送Claude Code 跑长时间任务时完成后会自动推送到手机上。这样你可以去干别的事不用盯着终端等。配置文件放在哪里也有讲究。 项目级的 Hook 放在 .claude/settings.json全局的放 ~/.claude/settings.json。两者会合并同名事件的 Hook 按项目优先级执行。上下文太长 / 被截断怎么办这个问题的本质是Claude Code 的上下文窗口是有限的。以 Claude Sonnet 4 为例上下文窗口 200K tokens。听起来很多但如果你让它读了一个 5000 行的文件光文件内容就占了 15K tokens加上对话历史、系统提示、工具输出很快就会逼近上限。四招解决第一/compact 是急救药。 感觉响应变慢或者开始出现遗漏之前信息的情况立刻执行 /compact。第二.claudeignore 是预防药。 把不需要 Claude Code 关注的大文件排除掉.claudeignorenode_modules/dist/*.lock*.min.jscoverage/test/fixtures/我在一个前端项目里加了 .claudeignore 之后Claude Code 的初始扫描从 8 秒降到 2 秒上下文占用少了 40%。第三精确指定文件。 别说「帮我看看这个项目的问题」而是说「帮我看看 src/services/order.ts 和 src/models/order.ts 里的错误处理」。范围越小上下文越够用。第四新开对话处理新问题。 很多人习惯一个 Claude Code 对话窗口从早用到晚上下文里混着三四段不相关的讨论。改完一个 bug/clear 清一下再开始新话题。IDE 集成怎么配VS Code / JetBrains 怎么用Claude Code 目前支持四种形态CLI 终端、Desktop App、Web App、IDE 插件。对于大多数开发者IDE 插件是最自然的接入方式。VS Code 配置最成熟安装 Claude Code VS Code 扩展在 VS Code 扩展商店搜索 “Claude Code” 安装即可或者用命令行code --install-extension anthropic.claude-code安装后在 VS Code 底部终端面板会出现 Claude Code 的输入框。好处是可以直接引用编辑器中选中的代码、跳转到文件、同步光标位置。JetBrains 配置JetBrains IDE (IntelliJ IDEA / WebStorm / PyCharm 等)在 Plugins 市场搜索 “Claude Code” 安装安装后重启 IDE在 Tools 菜单找到 Claude Code一个容易忽略的点 IDE 插件和 CLI 是共享同一个工作目录的。如果你在 VS Code 的 Claude Code 插件里配置了 .claude/settings.json在终端里用 claude 命令也会读取同一份配置。这意味着你只需要配一次。实际体感 我平时写 Java 用 IntelliJ写前端用 VS Code。两个 IDE 都装了 Claude Code 插件日常体验差异不大。JetBrains 的插件启动比 VS Code 版慢 2-3 秒但编辑器集成做得更好——可以直接在代码行旁边看到 Claude 的修改建议。怎么写好 Prompt 让 Claude Code 更准最后一个问题是「元问题」——怎么和 Claude Code 有效沟通。三个立竿见影的技巧第一给上下文不要猜它知道什么。 差的 prompt「这个接口有 bug帮我修」。好的 prompt「src/api/order.ts 的 createOrder 方法当商品库存为 0 时应该返回 400 错误但现在返回了 200 并且创建了一个库存为 0 的订单」。差别在于后者给了文件路径、方法名、期望行为和实际行为。第二用指令链拆复杂任务。 一次性让 Claude Code 做 5 件事它可能会漏掉第 3 件。拆成步骤更可靠不推荐“帮我给项目加上单元测试、集成测试、CI/CD 配置、文档更新”推荐第 1 步“先帮 UserService 的核心方法写单元测试”第 2 步确认上一步没问题后“现在帮我配 GitHub Actions跑刚才写的测试”第三用 CLAUDE.md 减少重复指令。 如果你发现自己每次都告诉 Claude Code「代码要写注释」「用 async/await 不用 callback」「提交信息用 conventional commits 格式」把这些写进 CLAUDE.md。一次配置永久生效。一个被忽视的高级技巧 让 Claude Code 自己生成 CLAUDE.md。在项目根目录执行claude “分析这个项目的代码结构、技术栈和编码规范生成一份 CLAUDE.md 文件”它会扫描你的代码推断出项目规范生成一个初始版本。你再人工审核和修改比自己从零写快得多。常见问题Q1Claude Code 需要联网吗需要。Claude Code 的 AI 推理在云端完成必须保持网络连接。但你操作的是本地文件代码本身不上传到 Anthropic 的训练数据除非你手动开启了数据共享。Q2一个 Claude Pro 订阅够用吗个人开发够用。Claude Pro20 美元/月包含 Claude Code 的使用额度日常编码足够。如果是重度使用每天 4 小时以上建议用 API 计费模式按量付费更可控。Q3Claude Code 支持哪些编程语言理论上支持所有语言——它本质上是读写文本文件。但实际体验上Python、JavaScript/TypeScript、Java、Go 这几种主流语言的体验最好因为训练数据充足生成的代码质量更高。小众语言比如 Rust、Elixir也能用但偶尔需要你手动修正生成的代码。Q4可以用 Claude Code 做代码审查吗可以而且效果不错。用法git diff main | claude “审查这些改动指出潜在的 bug 和代码风格问题”。配合 Hooks 还可以在 PR 提交时自动触发审查。Q5离线环境下怎么办