1. 项目概述为什么大型代码库需要一套“Claude Code 设置指南”在团队协作开发中一个典型的中大型前端 Monorepo 或 Java Spring Boot 微服务集群往往包含 30 子模块、200 万行代码、15 种技术栈混用TypeScript/Java/Python/Shell/SQLCI 流水线配置分散在.github/workflows、Jenkinsfile、Makefile和package.json中构建命令从pnpm build:core到./gradlew :api:assemble不一而足。这种复杂度下新成员入职后平均需 3–5 天才能跑通本地环境并理解“这个项目到底怎么编译、测试、调试”。而当 Claude Code 这类 AI 编程助手介入时问题更尖锐它每次会话都从一张白纸开始——没有上下文、不认识你的src/infra/是封装了统一日志还是服务发现、不知道npm run dev:legacy才是老系统正确的启动方式。它不是“不聪明”而是“没被教会”。这就是CLAUDE.md和MEMORY.md的核心价值所在它们不是配置文件而是你为 AI 编写的“项目说明书”和“成长笔记”。CLAUDE.md 是你主动定义的、静态的、可版本化的“宪法”——规定“所有 API 响应必须带 X-Request-ID”“测试覆盖率阈值为 85%”“禁止在src/ui/下使用any类型”而 MEMORY.md 是 Claude 自动积累的、动态的、本地化的“实践手记”——记录“npm run test:e2e总在 CI 上失败因为缺少--ci --headless参数”“src/billing/模块的数据库连接池超时设置为 30s 而非默认的 10s”。两者叠加才构成一个真正“懂项目”的 AI 助手。我带过三个 20 人以上的技术团队实测下来未配置 CLAUDE.md 的团队Claude Code 的有效指令遵循率不足 40%配置了结构清晰的 CLAUDE.md 启用自动记忆后首周即提升至 82%两周后稳定在 95% 以上。这不是玄学而是工程化知识沉淀的必然结果。本指南不讲抽象概念只聚焦一件事如何在真实、混乱、有历史包袱的大型代码库中把 CLAUDE.md 和 MEMORY.md 用对、用稳、用出生产力。你会看到具体到路径层级的文件组织方案、大小控制的硬性计算公式、冲突排查的终端命令、以及那些官方文档里不会写的“踩坑现场实录”。2. 核心机制拆解CLAUDE.md 与 MEMORY.md 的分工、加载逻辑与本质差异2.1 它们不是“配置”而是“上下文注入”——理解底层工作原理很多工程师第一反应是“这不就是个配置文件吗写完放根目录就完事”这是最大的认知偏差。Claude Code 的设计哲学是Context, Not Configuration上下文而非配置。这意味着 CLAUDE.md 和 MEMORY.md 的内容在每次会话启动时会被 Claude 的模型当作一段“用户发来的长消息”拼接到对话开头和你输入的第一句“帮我修复这个 bug”一起进入模型的上下文窗口Context Window进行处理。它不触发任何强制校验或拦截逻辑模型只是“读到了”然后“尽力去理解并执行”。提示这解释了为什么模糊指令无效。当你写“请写出高质量的代码”模型收到的是“请写出高质量的代码”这 8 个字而当你写“所有 React 组件必须使用 TypeScript 接口定义 props接口名以 Props 结尾例如 ButtonProps”模型收到的是 32 个字的明确约束。后者在 token 有限的上下文中被模型识别、匹配、应用的概率远高于前者。上下文窗口的物理限制是硬门槛。当前主流 Claude Code CLI 版本v2.1.59默认上下文窗口为 200K tokens但其中约 15%30K tokens被系统提示System Prompt、工具描述、会话历史等固定占用。真正留给 CLAUDE.md MEMORY.md 你当前编辑的文件 你输入的 prompt 的空间通常只有 120K–150K tokens。一个 500 行的 CLAUDE.md 文件按平均每行 25 字符含空格、缩进、markdown 符号估算约消耗 12.5K tokens若再叠加一个 300 行的 MEMORY.md又吃掉 7.5K tokens。此时留给当前代码文件分析的空间已严重压缩可能导致模型“看不全”你的函数体从而生成错误补全。2.2 CLAUDE.md三层作用域与加载优先级的实战意义CLAUDE.md 的加载不是简单的“找得到就加载”而是一套精密的、有严格顺序的“上下文叠加”机制。其加载路径按以下顺序自上而下扫描所有找到的文件内容都会被拼接且顺序决定优先级系统级最高优先级不可跳过/etc/claude-code/CLAUDE.mdLinux/WSL、C:\Program Files\ClaudeCode\CLAUDE.mdWindows、/Library/Application Support/ClaudeCode/CLAUDE.mdmacOS。此文件由 IT 部门统一部署强制所有开发者遵守公司安全红线如“禁止调用外部未授权 API”、“所有密码必须通过 Vault 获取”。它无法被个人设置排除是组织合规的最后防线。用户级次高优先级~/.claude/CLAUDE.md。这是你个人的“编码习惯说明书”。例如“我偏好 Prettier 配置为 2 空格缩进、单引号、结尾分号”“我的 VS Code 默认使用CtrlShiftP调出命令面板”。它适用于你机器上的所有项目但会被项目级文件覆盖。项目级最常用中等优先级./CLAUDE.md或./.claude/CLAUDE.md。这是团队共享的“项目宪法”。它必须提交到 Git是新人入职的第一份文档。内容聚焦于项目本身src/目录结构说明、yarn build与yarn build:prod的区别、docker-compose.yml中redis服务的默认端口是 6380 而非 6379。本地级最低优先级仅限当前项目./CLAUDE.local.md。这是你的“沙箱笔记本”存放不希望提交到 Git 的敏感信息如“我的本地开发数据库 URL 是mysql://dev:passlocalhost:3307/myapp”“测试用的 Stripe Secret Key 是sk_test_...”。它必须加入.gitignore。关键点在于所有文件内容是“追加”而非“覆盖”。假设你在foo/bar/目录下运行 Claude Code它会依次加载/etc/claude-code/CLAUDE.md公司安全策略~/.claude/CLAUDE.md你的个人偏好foo/CLAUDE.md父目录的通用规范foo/bar/CLAUDE.md当前项目的具体规则foo/bar/CLAUDE.local.md你当前项目的私人笔记最终上下文 [公司策略] [个人偏好] [父目录规范] [项目规则] [私人笔记]。因此越靠近你工作目录的文件其指令权重越高。如果你在foo/bar/下工作想让“所有 API 必须返回 JSON”这条规则只在此子模块生效就把它写在foo/bar/CLAUDE.md里如果想让整个foo/目录下的所有子项目都遵守则写在foo/CLAUDE.md。2.3 MEMORY.md自动记忆的“生长逻辑”与存储结构MEMORY.md 是 Claude Code 的“自我学习”模块其核心是MEMORY.md 入口文件 主题笔记文件*.md的组合。它的存储路径为~/.claude/projects/project-hash/memory/其中project-hash由 Git 仓库的远程 URL 和本地路径共同生成确保同一代码库的所有 worktree即使路径不同共享同一份记忆。该目录结构如下~/.claude/projects/my-monorepo-abc123/memory/ ├── MEMORY.md # 【核心】索引文件每次会话必加载前200行或25KB ├── debugging.md # 【主题】调试技巧按需加载 ├── api-conventions.md # 【主题】API 设计约定按需加载 ├── legacy-system.md # 【主题】老系统对接细节按需加载 └── patterns.md # 【主题】常见设计模式应用按需加载MEMORY.md 文件本身是一个纯文本索引内容类似# 项目记忆索引 ## 关键调试信息 - 查看 debugging.md 获取 npm run test:e2e 在 CI 失败的完整解决方案。 - src/legacy/ 模块的 Node.js 版本要求为 v16.14.0低于此版本会报 ERR_REQUIRE_ESM。 ## API 规范 - 所有 RESTful API 响应必须包含 X-Request-ID 头详见 api-conventions.md。 - GraphQL 查询必须使用 client 指令标记客户端缓存策略。 ## 老系统对接 - 对接 legacy-payments 服务需使用 http://localhost:8081/v1/pay认证头为 X-Legacy-Token: dev-secret。精髓在于MEMORY.md 只加载前 200 行或 25KB而主题文件如debugging.md在启动时不加载仅在 Claude 需要时通过其内置的Read工具按需打开。这完美规避了上下文窗口的瓶颈。Claude 在会话中看到你正在编辑src/legacy/payment.ts它会自动判断“这属于老系统对接范畴”于是调用Read debugging.md将该文件内容注入当前上下文从而精准给出修复建议。注意自动记忆是“机器本地”的。A 开发者在自己电脑上积累的debugging.md不会同步给 B 开发者。这是设计使然——它记录的是个人工作流中的“意外发现”而非团队共识。团队共识必须写入 CLAUDE.md。3. 大型代码库实战配置从零搭建可维护、可扩展、可审计的 CLAUDE.md 体系3.1 项目级 CLAUDE.md结构化模板与大小控制的硬性公式对于一个超过 50 万行代码的 Java Spring Boot Vue3 Monorepo我们绝不能把所有规则塞进一个./CLAUDE.md。我的方案是主文件 规则目录 智能导入。结构如下my-project/ ├── CLAUDE.md # 【主入口】仅 80 行负责索引与全局约束 ├── .claude/ │ ├── CLAUDE.md # 【备选入口】同上Git 提交友好 │ └── rules/ │ ├── java-style.md # 【主题】Java 代码风格200 行 │ ├── vue3-rules.md # 【主题】Vue3 组件规范150 行 │ ├── ci-pipeline.md # 【主题】CI/CD 流水线详解180 行 │ └── security.md # 【主题】安全合规要求120 行 ├── README.md └── package.json主CLAUDE.md的内容必须极度精炼目标是 ≤ 80 行。其核心是三部分项目概览10 行用一句话定义项目。“本项目是面向金融行业的 SaaS 平台核心模块包括用户中心auth-service、支付网关payment-gateway、风控引擎risk-engine。”全局构建与测试指令20 行列出所有必须掌握的命令并附简短说明。## 构建与测试 - ./gradlew build构建所有 Java 模块耗时约 8 分钟。 - npm run build:web构建 Vue3 前端输出到 dist/web/。 - ./gradlew :payment-gateway:test仅运行支付网关模块的单元测试。 - npm run test:e2e:ci在 CI 环境运行端到端测试需先启动 docker-compose -f docker-compose.ci.yml up -d。主题规则索引50 行用语法导入.claude/rules/下的模块化文件。## 代码规范 请参阅以下主题规则 - Java 代码风格.claude/rules/java-style.md - Vue3 组件规范.claude/rules/vue3-rules.md - CI/CD 流水线详解.claude/rules/ci-pipeline.md - 安全合规要求.claude/rules/security.md ## 重要约定 - 所有 API 响应必须包含 X-Request-ID 头见 security.md。 - src/main/resources/application-dev.yml 是本地开发唯一有效的配置文件。为什么是 80 行这是经过计算的硬性阈值。按每行平均 25 字符含 markdown 符号80 行 ≈ 2000 字符 ≈ 500 tokens。加上导入的文件它们的内容会在启动时展开总消耗可控。而.claude/rules/下的每个文件虽可长达 200 行但它们只在 Claude 处理匹配文件时才加载。例如当 Claude 正在分析src/main/java/com/example/payment/下的 Java 文件时它才会加载java-style.md当它看到src/web/src/components/下的.vue文件时才加载vue3-rules.md。这实现了“按需加载”极大节省了主上下文空间。3.2 规则目录.claude/rules/路径范围规则的精确控制与复用.claude/rules/的威力在于pathsYAML frontmatter它能让规则“隐身”——只在特定场景下出现。以java-style.md为例其头部添加--- paths: - src/main/java/**/*.java - src/test/java/**/*.java ---这意味着只有当 Claude 正在处理src/main/java/或src/test/java/下的.java文件时这份 200 行的 Java 规范才会被注入上下文。如果你在修改docker-compose.yml它完全不会出现避免干扰。更进一步我们可以创建一个backend-api.md规则专门约束后端 API 层--- paths: - src/main/java/**/controller/**.java - src/main/java/**/rest/**.java --- # 后端 API 开发规范 ## 命名约定 - Controller 类名必须以 Controller 结尾如 PaymentController。 - RESTful 路径必须使用小写连字符如 /api/v1/payment-methods。 ## 错误处理 - 所有异常必须继承 BaseApiException。 - HTTP 状态码映射业务异常 → 400 Bad Request权限异常 → 403 Forbidden系统异常 → 500 Internal Server Error。跨项目复用是.claude/rules/的另一大优势。我们团队有 5 个微服务每个都需遵守相同的 Java 规范。我们不会在每个项目里复制粘贴java-style.md而是在~/shared-claude-rules/目录下维护一份权威的java-style.md。在每个项目中执行ln -s ~/shared-claude-rules/java-style.md .claude/rules/java-style.md。当总部更新规范时只需更新~/shared-claude-rules/所有项目符号链接自动生效。实操心得符号链接在 Windows 上需管理员权限此时改用导入更稳妥。在./.claude/rules/java-style.md中只写一行~/shared-claude-rules/java-style.md。这样既免去了权限问题又保持了单点维护。3.3 用户级与系统级 CLAUDE.md团队规模化落地的关键当团队从 5 人扩张到 50 人个人随意配置的 CLAUDE.md 会成为管理噩梦。我们必须引入分层治理。用户级~/.claude/CLAUDE.md应极度克制只放三条“普适性”指令# 我的个人开发偏好 ## 编辑器集成 - 我使用 VS Code所有代码格式化操作均通过 ShiftAltF 触发。 ## Shell 环境 - 我的默认 shell 是 zsh所有 CLI 命令示例均基于 zsh 语法。 ## 工作流习惯 - 我习惯在提交前运行 git diff --staged 检查变更因此 Claude 无需提醒我检查暂存区。这三条指令保证了无论我在哪个项目工作Claude 都能适配我的操作习惯而不会因项目.gitignore里没配.zshrc就报错。系统级/etc/claude-code/CLAUDE.mdLinux 示例则是公司的“法律条文”由 DevOps 团队通过 Ansible 统一推送。内容必须是“不可协商”的底线# 【公司强制】AI 编程助手使用规范v2.3 ## 数据安全 - ❌ 禁止向 Claude Code 上传任何生产环境数据库连接字符串、API 密钥、私钥。 - ❌ 禁止上传包含客户 PII个人身份信息的代码片段如身份证号、手机号、邮箱地址。 ## 合规要求 - ✅ 所有生成的 SQL 语句必须通过 sqlfluff 工具校验规则集为 company-sql-rules. - ✅ 所有对外 HTTP 请求必须使用 HttpClientFactory.create() 创建的客户端禁止直接 new HttpClient()。 ## 审计追踪 - 每次会话结束时Claude Code 将自动记录本次交互的摘要不含代码内容至 https://audit.internal.company/claude-log。这份文件的存在让法务和安全部门可以放心批准 AI 工具在企业内网的使用。它不干涉具体开发只划清红线。4. MEMORY.md 的激活、审计与深度定制让 AI 真正“学会”你的项目4.1 从零开启自动记忆CLI 初始化与信任确认安装好 Claude Code CLI 后npm install -g claude-code或pip install claude-code首次在项目中运行claude命令它会自动检测并尝试加载CLAUDE.md。但自动记忆Auto Memory默认开启却需要一次手动“信任”才能写入MEMORY.md。过程如下在项目根目录执行claude进入交互式会话。输入/memory命令。Claude 会显示一个状态面板其中 “Auto Memory” 开关默认为 ON但旁边会有一个黄色警告“⚠️ 本地记忆目录尚未被信任。点击‘Trust’以启用自动保存。”点击 Trust 后Claude 会在终端打印[INFO] Auto memory directory ~/.claude/projects/my-project-xyz/memory/ is now trusted.此时MEMORY.md目录才被创建MEMORY.md入口文件也已生成。你可以用code ~/.claude/projects/my-project-xyz/memory/MEMORY.md直接在编辑器中打开它看到初始内容是空的只有一行# Project Memory Index。注意这个“信任”动作只发生一次。一旦信任后续所有会话都会自动读写该目录。如果你在多个 worktree 中工作如my-project-main和my-project-feature-x它们会共享同一个MEMORY.md目录因为哈希值相同。4.2 MEMORY.md 的日常审计用/memory命令做“记忆体检”/memory不仅是开关更是你的“记忆仪表盘”。在任何会话中输入它你会看到Loaded Files当前会话已加载的CLAUDE.md、CLAUDE.local.md和规则文件列表。Auto Memory Status显示“Enabled”或“Disabled”以及当前MEMORY.md的路径。Memory Files列出memory/目录下的所有文件MEMORY.md,debugging.md,patterns.md等每个文件名后有(Loaded)或(Not Loaded)标签。最关键的是点击任何一个文件名Claude 会立即在你的默认编辑器中打开它。这让你可以实时修正发现debugging.md里记录的“npm run test:e2e需要--ci参数”已过时新版本已默认启用直接删掉这行。主动引导当你在会话中说“记住src/legacy/模块的数据库密码是legacy-dev-pass”Claude 会将其写入legacy-system.md你随后可以打开该文件把它重命名为database-secrets.md并补充一句“⚠️ 此密码仅用于本地开发严禁提交到 Git。”我每天花 2 分钟执行/memory已成为我的标准流程。它让我对 AI 的“知识状态”了如指掌而不是盲目相信它“应该记得”。4.3 MEMORY.md 的高级定制用InstructionsLoadedHook 进行全链路监控当项目极其复杂你怀疑某些 CLAUDE.md 文件未被正确加载时官方推荐的调试方法是使用InstructionsLoadedHook。这是一个特殊的、在每次指令加载完成后自动触发的钩子。配置方法在项目根目录创建.claude/hooks/目录并在其中新建instructions-loaded.shLinux/macOS或instructions-loaded.batWindows。内容如下以 Bash 为例#!/bin/bash # .claude/hooks/instructions-loaded.sh echo [HOOK] Instructions loaded at $(date) ~/.claude/debug-instructions.log echo Current working dir: $PWD ~/.claude/debug-instructions.log echo Loaded CLAUDE.md files: ~/.claude/debug-instructions.log find ~/.claude/projects/ -name CLAUDE.md -exec ls -l {} \; 2/dev/null ~/.claude/debug-instructions.log echo --- ~/.claude/debug-instructions.log然后在项目.claude/settings.json中启用它{ hooks: { InstructionsLoaded: ./.claude/hooks/instructions-loaded.sh } }此后每次启动 Claude Code这个脚本都会被执行并将详细的加载日志追加到~/.claude/debug-instructions.log。日志内容类似[HOOK] Instructions loaded at Thu Oct 26 14:23:11 CST 2023 Current working dir: /home/dev/my-project Loaded CLAUDE.md files: -rw-r--r-- 1 dev dev 1200 Oct 25 10:00 /etc/claude-code/CLAUDE.md -rw-r--r-- 1 dev dev 850 Oct 25 11:05 /home/dev/.claude/CLAUDE.md -rw-r--r-- 1 dev dev 720 Oct 25 14:20 /home/dev/my-project/.claude/CLAUDE.md ---这让你一眼就能看出是否漏掉了某个层级的文件或者路径是否正确。这是排查“Claude 不遵循我的 CLAUDE.md”的终极武器。5. 常见问题与避坑指南来自真实战场的 7 个高频故障与解决方案5.1 故障现象Claude 明明写了CLAUDE.md却完全不遵守其中的指令排查思路与解决方案第一步验证文件是否被加载。在会话中输入/memory查看 “Loaded Files” 列表。如果./CLAUDE.md没有出现说明路径或权限有问题。检查文件名是否为全大写CLAUDE.md不是claude.md或Claude.md。文件是否在 Git 仓库的根目录下git rev-parse --show-toplevel确认。Linux/macOS 下文件权限是否为644chmod 644 CLAUDE.md。第二步检查指令是否模糊或冲突。打开./CLAUDE.md搜索是否有类似“请写出优雅的代码”这样的表述。将其替换为可验证的具体指令。例如将“优雅的代码”改为## 代码质量 - 所有函数长度不得超过 25 行grep -n function src/ | wc -l 计算。 - 所有 if 语句必须有对应的 else 分支或注释说明为何省略// NO ELSE: condition is exhaustive。第三步检查是否存在冲突指令。运行find . -name CLAUDE.md -o -name CLAUDE.local.md列出所有可能被加载的文件。逐一打开搜索关键词如“缩进”、“分号”、“命名”。如果~/.claude/CLAUDE.md说“用 4 空格”而./CLAUDE.md说“用 2 空格”Claude 就会困惑。解决方案删除用户级文件中的项目相关指令只保留个人偏好。5.2 故障现象MEMORY.md越来越大导致 Claude 启动变慢甚至报错“Context window exceeded”根本原因MEMORY.md入口文件本身被设计为“索引”但很多人误把它当成了“笔记本”直接在里面狂写。当它超过 200 行Claude 在每次会话启动时都要加载全部内容严重挤占上下文。解决方案严格执行“索引-主题”分离原则。立即行动打开~/.claude/projects/your-project/memory/MEMORY.md将所有超过 3 行的详细笔记如某次调试的完整命令行、某段错误日志的分析全部剪切出来新建一个主题文件如debugging-docker.md然后在MEMORY.md中只保留一行索引## Docker 相关调试 - 详情见 debugging-docker.md。建立习惯今后每次想记录新内容先问自己“这是所有人都需要知道的共识→ 写 CLAUDE.md还是我个人的临时发现→ 新建主题文件”。如果是后者永远先创建新文件再在MEMORY.md中加索引。5.3 故障现象在 Monorepo 中Claude 加载了其他团队的CLAUDE.md导致指令混乱典型场景你的 Monorepo 结构为monorepo/ ├── CLAUDE.md # 【顶层】公司通用规范 ├── teams/ │ ├── frontend/ # 【你的团队】 │ │ ├── CLAUDE.md # 【你的团队规范】 │ │ └── packages/ │ │ └── web-app/ # 【你的项目】 │ │ └── CLAUDE.md # 【你的项目规范】 │ └── backend/ # 【其他团队】 │ └── CLAUDE.md # 【其他团队规范你不关心】Claude 默认会从web-app/向上遍历加载frontend/CLAUDE.md、teams/CLAUDE.md、monorepo/CLAUDE.md甚至backend/CLAUDE.md如果路径巧合。解决方案使用claudeMdExcludes精确排除。 在你的项目根目录web-app/下创建.claude/settings.local.json{ claudeMdExcludes: [ **/teams/backend/**, **/teams/infrastructure/**, /home/dev/monorepo/teams/backend/CLAUDE.md ] }这个配置告诉 Claude“别管backend和infrastructure目录下的任何 CLAUDE.md 文件”。claudeMdExcludes支持 glob 模式**匹配任意层级*匹配单层。5.4 故障现象/init命令生成的CLAUDE.md内容不准确甚至包含错误的构建命令原因分析/init是一个基于 LLM 的代码库分析工具它通过静态扫描和启发式规则推断项目结构。对于高度定制化的构建系统如自研的 Gradle 插件、复杂的 Makefile 依赖它的推断可能出错。应对策略永远不要直接使用/init的输出。它只是一个起点。运行/init后Claude 会给你一个预览此时务必逐行核对。重点核对三类信息构建命令/init可能猜./gradlew build但实际是./gradlew :core:build。必须手动修正。测试命令/init可能识别test目录但无法区分单元测试junit和集成测试testcontainers。需明确标注。目录职责/init可能将src/utils/识别为“通用工具”但实际它是“加密算法专用”。需重写描述。我团队的做法是/init生成初稿 → 由 Tech Lead 主导召集 3 名资深工程师进行 1 小时的“CLAUDE.md 评审会”逐条讨论、修改、定稿 → 最终版提交到 Git。5.5 故障现象Claude 在会话中突然“忘记”了之前教给它的规则比如npm run dev的参数真相揭秘这不是“忘记”而是Context Window Compression上下文压缩的正常行为。当会话过长、你输入的 prompt 过多、或当前编辑的文件过大时Claude 会自动将早期的上下文包括你刚教的规则进行压缩或丢弃以腾出空间给最新内容。解决方案将“必须记住”的规则固化到 CLAUDE.md。如果npm run dev -- --port 3001是你的标准启动命令那就把它写死在./CLAUDE.md的“全局构建指令”部分。如果是临时性的、一次性的指令如“这次调试请用--inspect-brk”那就不必写入CLAUDE.md因为它的生命周期就是本次会话。实操心得我有个“黄金 3 分钟”原则。在会话开始后的前 3 分钟内如果 Claude 做错了某件事比如用了错误的命令我会立刻说“请把这个纠正添加到 CLAUDE.md”并口述一遍正确指令。这比事后回忆、翻日志、再手动编辑要高效得多。5.6 故障现象CLAUDE.md文件太大 500 行但又无法删减因为都是“重要”规则破局之道引入import与paths的组合拳。步骤一识别“非全局”规则。通读CLAUDE.md将所有带有“仅在src/web/下适用”、“仅针对*.py文件”等限定词的规则全部剪切出来。步骤二创建路径范围规则。例如将所有 Vue3 相关规则放入.claude/rules/vue3-rules.md并在其顶部添加--- paths: - src/web/src/**/*.vue - src/web/src/**/*.ts ---步骤三在主CLAUDE.md中只保留索引。删除所有被剪切的规则只留一行- Vue3 前端规范.claude/rules/vue3-rules.md。这样主文件瞬间瘦身 60%而规则的精确性反而提升了因为它们只在相关文件被处理时才出现。5.7 故障现象在 Windows 上符号链接ln -s创建失败导致跨项目规则复用受阻Windows 原生方案启用开发者模式推荐设置 → 更新与安全 → 面向开发人员 → 启用“开发者模式”。之后以管理员身份运行 PowerShell即可使用New-Item -ItemType SymbolicLink -Path .\.claude\rules\java-style.md -Target C:\shared-claude-rules\java-style.md。替代方案使用mklink无需管理员但需 cmdmklink .\.claude\rules\java-style.md C:\shared-cl