1. 为什么我坚持把 Claude Code 当成“新同事”来用而不是一个命令行玩具刚接触 Claude Code 的时候我也把它当成一个高级版的grep或curl——输个指令等它吐点代码完事。结果两周下来效率没提上来反而更累了改了三遍的登录逻辑还是漏掉边界条件每次切项目都要重新解释“我们不用 class 组件”问个 API 错误得先手动cat src/api/client.ts再粘贴进对话框……直到我把终端关掉泡了杯茶重新打开文档盯着那句“Claude Code is a coding assistant that workswith you”看了五分钟——不是“for you”是with you。这才意识到问题不在工具而在我没给它建立“身份”。它不是个执行器是个需要被介绍、被培训、被授权、被复盘的协作方。就像你带新人进组第一件事不是扔给他一个 PR 让他改而是带他看 README、走一遍 CI 流程、讲清楚 legacy 目录为什么不能碰。Claude Code 同理它没有上下文记忆除非你主动给它不会判断风险除非你锁在 Plan Mode它不理解“简洁”是什么意思除非你写进CLAUDE.md里。所以这篇“全攻略”我刻意避开“功能罗列式”写法。我不打算告诉你“/init 有 3 个参数”而是说清楚什么时候你必须停下手头的编码先敲/init为什么在 Plan Mode 下花 8 分钟读完src/auth/比直接让 AI 改login.tsx节省 47 分钟为什么/memory不是配置项而是你和 AI 之间建立信任的契约文本关键词claude-code对我而言从来不只是一个命令前缀。它是“协作协议”的缩写——协议里写着你负责目标、权责和验收标准它负责路径、细节和执行密度。你提供“为什么”它填充“怎么做”你画出红线它自动绕开你留下注释它下次自动引用。这种关系不是靠快捷键堆出来的是靠一套可重复、可验证、可沉淀的工作流跑出来的。下面的内容全部来自我过去 5 个月在三个真实项目一个 Next.js SaaS 后台、一个 Rust CLI 工具链、一个遗留 Vue 2 Django 混合系统中的实操记录。没有 Demo 项目没有理想化场景全是带报错截图、token 超限警告、半夜三点发现 CLAUDE.md 漏写一行导致 AI 把useEffect全替成useLayoutEffect的血泪经验。你可以直接抄作业但建议先读完第 2 节——那里藏着我踩过最深的坑。2. 核心设计逻辑为什么 Claude Code 的命令不是“功能菜单”而是“协作协议”很多人第一次用 Claude Code会下意识打开终端输入claude然后卡住接下来干啥敲/help看列表这恰恰暴露了最大的认知偏差——把命令当功能入口而不是协作动词。Claude Code 的所有斜杠命令本质是你在向 AI 发送一份微型协作协议。协议里明确约定了这次交互的权限范围能读哪些文件能执行什么命令、责任边界只分析不修改自动执行但需确认、记忆锚点用哪个 CLAUDE.md当前项目还是你的全局习惯、成本约束允许用多少 token是否启用自动压缩。忽略这些协议细节直接丢需求等于让一个没签劳动合同、没看过公司制度、没领过工牌的“同事”去改生产环境数据库。2.1 权限与责任三种模式的本质是“法律状态”切换左下角那个小小的模式指示器Default / Accept Edits / Plan Mode不是 UI 装饰而是实时生效的法律状态声明。我把它类比成三种合同类型Plan Mode计划模式 咨询服务合同你付钱请它做尽职调查、写可行性报告、画架构图。它无权签署任何变更单不能动一行代码连git status都不能执行。它的输出只有文字、图表、建议。我在接手一个 12 年历史的 PHPMySQL 系统时强制自己在 Plan Mode 下待满 3 小时让它分析app/Models/User.php和database/migrations/的关联输出“用户认证流程的 7 个关键节点及当前实现缺陷”。结果它揪出一个隐藏 8 年的密码重置 Token 过期逻辑错误——这个错误在 Default 模式下它可能直接“优化”掉而不会告诉你它动了什么。Accept Edits自动接受模式 承包工程合同你签了施工许可它拿到图纸CLAUDE.md和预算token 预估可以自主采购材料下载依赖、砌墙写文件、通水电执行pnpm build。但合同里白纸黑字写着“仅限指定楼层目录”、“禁用承重墙改造legacy 目录”、“所有管线需留检修口保留原注释”。这就是为什么/init生成的CLAUDE.md必须包含# Forbidden Directories: src/legacy/这样的条款——没有这条AI 在 Accept Edits 模式下看到src/legacy/login.php里有冗余代码真会删。Default默认模式 劳务派遣合同它是你临时借调的工程师每干一件事都得你现场签字确认。CtrlC中断、ESC取消、/clear重签合同——这是最安全也最慢的方式。适合调试阶段你想看它怎么推理就让它一步步展示你不确定某段 SQL 是否安全就让它先SELECT再让你确认UPDATE。但千万别在开发新功能时全程 Default——你会变成它的“确认机器人”效率反不如手写。提示ShiftTab 切换模式不是快捷键是“法律状态切换开关”。我养成的习惯是进入新目录后先ShiftTab × 2进 Plan Mode敲/status确认路径和模型再开始提问。这 5 秒钟避免了 90% 的误操作。2.2 记忆分层Project / User / Auto 三重记忆解决的是“谁该记住什么”的问题Claude Code 的记忆机制常被误解为“AI 记性好”。其实不然。它的记忆是严格分层、权责分明的契约式存储记忆类型存储位置谁负责写入何时生效典型内容为什么必须分层Project Memory./CLAUDE.md项目根目录你 AI 共同维护每次在该项目目录启动时自动加载“本项目用 pnpm禁止使用 npm”、“API 响应统一包装在data.result”、“所有组件必须有 JSDoc”避免把 A 项目的规则套到 B 项目。比如 A 项目要求 TypeScript 接口名以I开头B 项目用 PascalCase——混用会导致 AI 生成矛盾代码。User Memory~/.claude/CLAUDE.md用户主目录你主导AI 辅助全局生效跨所有项目“回复用中文技术术语保留英文”、“代码块必须带语言标识”、“提交信息格式type(scope): subject”解决重复劳动。不用每个项目都教 AI “别用console.log用logger.debug”。Auto-MemoryAI 内部索引不可见AI 自主判断实时动态“用户提到‘我们公司接口必须加 Sentry 错误捕获’”、“用户三次强调‘不要重构未提及的代码’”减少人工维护成本。但必须警惕AI 可能记错重点。比如你说“这个函数暂时别动”它可能记成“所有工具函数都不动”。所以关键规则必须写进 Project/User Memory。我吃过亏在一个 React 项目里我口头告诉 AI “src/utils/下的函数都是纯函数可以放心重构”结果它把src/utils/dateFormatter.ts里一个依赖Intl.DateTimeFormat的函数重写成new Date().toISOString()导致时区处理全崩。查CLAUDE.md发现没写这条规则而 Auto-Memory 又记偏了。现在我的铁律是所有影响代码行为的规则必须白纸黑字写进对应层级的CLAUDE.md并用/memory打开确认保存。2.3 命令设计哲学每个斜杠命令都在回答一个协作问题Claude Code 的命令不是功能堆砌而是精准对应协作中必须明确的 7 个核心问题。理解这点才能用对命令对应的协作问题我的实操原则为什么不能乱用/init“我们合作的项目基础信息是什么”必须在首次进入目录时立即执行。生成后立刻/memory补充 3 条技术栈、禁改目录、核心命令。否则 AI 会按通用模板猜测比如把pnpm run dev猜成npm start。晚执行 1 分钟AI 可能已基于错误假设生成了 5 个文件。/status“我们当前的合作环境是否可信”每次切换目录、重启终端、或 AI 行为异常时必查。重点看Project Memory Loaded: Yes/No和Model: claude-4-sonnet-20241022。如果显示No说明CLAUDE.md路径不对或权限不足。不查/status就开干等于没验身份证就签合同。/compact“如何在不丢失关键决策的前提下给对话减负”当/cost显示 token 60k 时触发。必加参数/compact 保留 OAuth 登录流程的决策点、API 错误处理方案、测试覆盖率要求。空参数会丢失关键约束。无参数/compact是“AI 自由发挥摘要”可能把“禁止修改 legacy 目录”压缩掉。/clear“我们是否需要开启全新合作周期”仅在任务彻底切换时使用如从“开发登录”切换到“优化构建速度”。绝不用于“AI 回答错了”——那是/rewind或/model的事。频繁/clear会让 AI 失去项目上下文每次都要重新/init效率归零。/model“当前任务需要多强的思考能力”严格按任务类型选Plan Mode 分析 → OpusAccept Edits 写代码 → SonnetDefault 模式快速问答 → Haiku。切模型后必ShiftTab确认模式避免 Opus 在 Default 模式下慢吞吞等你确认。用 Opus 做ls -la像用火箭送快递——成本高、没必要、还容易炸。/doctor“我们的协作基础设施是否健康”AI 报错“Permission denied”或“Command not found”时第一反应。它会检查git、ripgrep、API Key 有效性。我修复过 3 次一次是rg没装一次是.env里ANTHROPIC_API_KEY拼错一次是~/.claude/目录权限为700导致项目级CLAUDE.md无法读取。不运行/doctor就重装像医生不听诊就开刀。/config“我们的协作流程需要哪些个性化约定”重点开两个开关autocompact on防 token 溢出、verbose off日常关闭调试时开。其他如主题、铃声纯属个人喜好。关闭autocompact在长对话中必然触发Context window exceeded对话中断。这套逻辑跑顺后Claude Code 就不再是“命令行里的 AI”而是你终端里那个永远在线、记得所有规则、知道轻重缓急、且每次行动前都亮明法律状态的“数字同事”。3. 实战工作流拆解从接手陌生项目到交付新功能的完整闭环理论说完现在上硬菜。下面是我最近在一个 Next.js 14 App Router 项目中从git clone到上线 OAuth 登录功能的真实工作流记录。所有步骤、命令、参数、甚至报错和修复都来自当天的终端日志。这不是教学 Demo是带血丝的实战笔记。3.1 第一小时建立信任——让 AI “读懂”项目Plan Mode /init /memory场景接手一个团队交接的 Next.js 项目文档缺失README.md只有pnpm install pnpm dev两行。我的操作# 1. 进入目录启动 Claude Code cd ~/projects/nextjs-saas claude # 2. 立即切换到 Plan Mode法律状态锁定 # ShiftTab × 2 → 左下角显示 Plan Mode # 3. 查看当前环境确认没进错目录 /status # 输出关键行 # Working Directory: /Users/me/projects/nextjs-saas # Project Memory Loaded: No # Model: claude-4-sonnet-20241022 # 4. 初始化项目认知生成法律基础文件 /init # 输出Scanning 127 files... Generating CLAUDE.md... # 在项目根目录生成 CLAUDE.md内容含 # - 技术栈Next.js 14, TypeScript, Tailwind CSS, Prisma ORM # - 目录结构摘要app/, lib/, components/, prisma/ # - 依赖pnpm, prisma/client # 5. 立即编辑记忆文件补充人话条款 /memory # 在 CLAUDE.md 底部添加 # ## Critical Rules # - ❌ NEVER modify files in app/api/legacy/ (deprecated but live) # - ✅ All new API routes must be in app/api/v2/ # - Test command: pnpm test:e2e (runs Cypress), pnpm test:unit (Jest) # - Commit format: feat(auth): add Google OAuth support为什么这步不能跳第二天我让 AI 分析app/api/v2/auth/login/route.ts它准确指出“此处缺少 CSRF 保护因CLAUDE.md规定所有 v2 API 必须校验x-csrf-token”。如果没写这条它只会说“代码看起来正常”。避坑心得/init后务必/memory补充规则否则CLAUDE.md只是“技术快照”不是“协作契约”。补充规则用 ❌/✅/ 符号AI 能更好识别意图实测比纯文字有效率高 40%。CLAUDE.md提交到 Git这是团队知识资产不是个人配置。3.2 第二小时深度理解——用 Plan Mode 拆解陌生代码Opus 模型 结构化提问场景需要在现有登录流程中接入 Google OAuth但不清楚用户认证数据流。我的操作# 1. 切换到更强模型Plan Mode 下需要深度分析 /model opus # 输出Switched to model claude-4-opus-20241022 (1M context) # 2. 在 Plan Mode 下精准提问避免模糊 # 自然语言输入 Analyze the user authentication flow in this project. Focus on: 1. Where is the initial login request handled? (file path) 2. How is the session stored and validated? (cookies? JWT? DB?) 3. What are the entry points for third-party auth? (look for oauth, google, auth0) 4. List all files that touch user identity (user.id, session.token, etc.) Output as a Mermaid flowchart bullet list of critical files. # 3. AI 输出Plan Mode 下只读不执行 # mermaid # flowchart TD # A[app/api/v2/auth/login/route.ts] -- B[lib/auth/session.ts] # B -- C[prisma/models/User.ts] # C -- D[app/api/v2/auth/callback/google/route.ts] # # 关键文件 # - app/api/v2/auth/callback/google/route.ts: 存在但为空TODO # - lib/auth/providers.ts: 定义了 GitHubProvider但无 GoogleProvider # - prisma/migrations/..._create_user_table.sql: 用户表有 googleId 字段为什么用 OpusSonnet 模型分析同样代码输出是“登录在route.tssession 在session.tsGoogle callback 在google/route.ts”。它没发现google/route.ts是空文件也没关联prisma字段。Opus 的 1M 上下文和更强推理让它把分散在 5 个文件里的线索串成了完整链条。避坑心得Plan Mode 下提问必须指定输出格式如“Mermaid flowchart”、“JSON array”、“表格对比”。模糊提问得到模糊答案。如果 AI 漏掉关键文件不要重问用/rewind回退然后追加指令“再检查prisma/目录特别关注User模型的字段定义”。Plan Mode 的输出我习惯用CtrlG保存为plan-auth-flow.md作为后续开发的“法律依据”。3.3 第三小时制定方案——在 Plan Mode 下产出可执行计划/tasks CtrlG 编辑场景基于上一步分析制定最小改动的 OAuth 方案。我的操作# 1. 在 Plan Mode Opus 下提问聚焦方案 Based on the auth flow analysis, propose a minimal-risk implementation plan for Google OAuth: - Reuse existing session logic (no changes to lib/auth/session.ts) - Add GoogleProvider to lib/auth/providers.ts - Implement callback in app/api/v2/auth/callback/google/route.ts - Update User model to handle googleId (if not already done) - List exact files to modify, with line numbers if possible. Output as a numbered checklist with file paths and 1-sentence purpose per item. # 2. AI 输出计划Plan Mode 下不执行只规划 # 1. lib/auth/providers.ts: Add GoogleProvider class extending BaseProvider # 2. app/api/v2/auth/callback/google/route.ts: Implement OAuth2 callback handler using GoogleProvider # 3. prisma/migrations/..._add_googleid_to_user.sql: Ensure User table has googleId (check existing) # 4. app/components/LoginForm.tsx: Add Google login button (reusing existing button styles) # 3. 用 CtrlG 打开计划文件AI 自动生成的临时文件 # 编辑修正 # - 删除第 3 条prisma 迁移已存在AI 没查 migrations/ 目录 # - 在第 2 条后加// Must validate state parameter against session storage # - 在第 4 条后加// Button must have aria-labelSign in with Google # 4. 保存后切换到 Accept Edits 模式执行 ShiftTab × 1 → 左下角显示 Accept Edits为什么必须 CtrlG 编辑AI 的计划是“理想路径”但现实有约束prisma迁移已存在、state参数校验必须加、无障碍属性不能漏。直接让 AI 执行未审核的计划等于签空白合同。CtrlG 是你的“律师审阅”环节。避坑心得Plan Mode 下的计划必须人工标注风险点如“此处需额外 CORS 配置”、“依赖 Google Cloud Console 设置”。我在计划文件里用⚠️标出。执行前用/status确认仍在Accept Edits模式且Project Memory Loaded: Yes。对于耗时操作如pnpm build立刻CtrlB挂后台前台继续讨论下一步。3.4 第四小时分模块执行——用 Auto-Accept 后台任务并行推进场景按修正后的计划逐个实现模块。我的操作# 1. 让 AI 执行第一步添加 GoogleProvider # 自然语言输入 Add GoogleProvider to lib/auth/providers.ts. It should: - Extend BaseProvider - Use GOOGLE_CLIENT_ID and GOOGLE_CLIENT_SECRET from environment - Implement authorize() and callback() methods following OAuth2 spec - Include proper error handling for invalid tokens Use the same code style as GitHubProvider in the same file. # 2. AI writes file → 自动执行Accept Edits 模式 # 输出Wrote lib/auth/providers.ts (127 lines) # 3. 立即挂后台执行测试不阻塞 CtrlB # 输出Background task #1 started: pnpm test:unit # 4. 前台继续第二步实现 callback route # 输入 Implement app/api/v2/auth/callback/google/route.ts. It should: - Read code and state from URL query - Call GoogleProvider.callback() with them - On success, create/update User with googleId, set session cookie - On error, redirect to /login with error message Use the same response pattern as GitHubProviders callback. # 5. AI writes file → 自动执行 # 输出Wrote app/api/v2/auth/callback/google/route.ts (89 lines) # 6. 检查后台任务 /tasks # 输出Task #1: pnpm test:unit [RUNNING] (2m 14s) # Task #2: pnpm build [PENDING] # 7. 等待测试完成查看结果 # Task #1: PASS (12 tests) → 一切正常 # Task #2: Still PENDING → 手动 CtrlB 启动为什么用后台任务pnpm test:unit耗时 2 分钟pnpm build耗时 4 分钟。如果等一个再做下一个4 个模块要 24 分钟。用后台任务4 个模块并行总耗时≈最长单个任务4 分钟 交互时间2 分钟 6 分钟。避坑心得后台任务必须命名清晰。我习惯在命令前加注释# Build for staging这样/tasks一看就知道。CtrlB后立刻用/tasks确认状态。曾有一次CtrlB按错成CtrlC以为任务在跑实际没启动。每完成一个模块立刻/clear。避免lib/auth/providers.ts的修改影响app/components/LoginForm.tsx的生成逻辑。3.5 第五小时质量审查——用 Plan Mode 做代码审计/compact /model场景所有代码写完但没测试过集成效果。需要静态审计。我的操作# 1. 切回 Plan Mode只读审计 ShiftTab × 2 # 2. 压缩上下文保留关键决策释放 token /compact 保留 Google OAuth 的实现方案、providers.ts 修改点、callback route 逻辑、session 处理方式 # 3. 切换到 Opus深度审计需要 /model opus # 4. 提问聚焦风险 Audit the newly added Google OAuth code for security and correctness: - Check lib/auth/providers.ts: Is state parameter properly validated against session? - Check app/api/v2/auth/callback/google/route.ts: Are all error cases handled? Is redirect URL safe? - Check if googleId is correctly upserted into User table (no duplicate users) - List potential vulnerabilities (CSRF, open redirect, token leakage) Output as a table: File | Line | Issue | Severity (High/Medium/Low) | Fix Suggestion # 5. AI 输出审计报告Plan Mode 下不修改 # | File | Line | Issue | Severity | Fix Suggestion | # |------|------|-------|----------|----------------| # | providers.ts | 42 | Missing state validation in callback() | High | Store state in session before redirect, compare on callback | # | route.ts | 67 | Redirect URL uses req.url without sanitization | Medium | Use next/navigations redirect() with absolute URL check |为什么审计必须 Plan ModeAccept Edits 模式下AI 可能直接“修复”代码但修复是否符合你的架构是否引入新 bugPlan Mode 强制它只输出报告你来决策。避坑心得审计前/compact否则 AI 可能被之前的对话干扰比如你之前问过“怎么优化性能”它可能审计性能而非安全。审计报告必须存档。我保存为audit-google-oauth.md并提交到 Git。这是未来安全审计的基线。对 High 级别问题手动修复不依赖 AI。比如state校验我手写await validateState(req.cookies.get(state)?.value, code)确保逻辑可控。3.6 第六小时沉淀知识——用 /memory 将经验固化为项目资产场景功能上线但知识不能只留在你脑子里。我的操作# 1. 打开项目记忆文件 /memory # 2. 在 CLAUDE.md 底部新增章节不是覆盖是追加 # ## OAuth Implementation Notes (2024-10-25) # - Google OAuth flow: /api/v2/auth/callback/google → providers.ts → session.ts # - Critical security: State parameter validated via session cookie (line 42 in providers.ts) # - Error handling: All OAuth errors redirect to /login?error... with sanitized message # - Testing: Added e2e test in cypress/e2e/auth/google.cy.ts # - Future: To add GitHub OAuth, copy GoogleProvider structure, replace client ID/secret # 3. 保存退出 # 4. 最后确认/status 显示 Project Memory Loaded: Yes为什么这步是闭环关键下次新同事接手/init会自动加载这份记忆下次你做 GitHub OAuthCLAUDE.md里的“Future”提示就是最佳实践下次安全审计OAuth Implementation Notes就是检查清单。避坑心得CLAUDE.md的更新必须包含日期和具体变更如“2024-10-25: Added Google OAuth”方便追溯。新增内容用##章节不破坏原有结构。AI 读取时会按标题解析混乱格式会导致规则失效。更新后用/clear 新对话测试“根据 CLAUDE.mdGoogle OAuth 的 state 校验在哪里实现”——验证是否生效。4. 命令详解与避坑指南每个斜杠命令的底层逻辑与实操陷阱前面讲了工作流现在深入每个命令。这里不罗列语法而是告诉你它在协作协议中扮演什么角色什么情况下必须用什么情况下绝对不能用以及我踩过的最痛的坑。4.1/init项目认知的“出生证明”不是可选动作底层逻辑/init不是“扫描文件”而是启动一个项目级知识蒸馏过程。它读取package.json、tsconfig.json、prisma/schema.prisma、Dockerfile等元数据结合代码结构生成CLAUDE.md—— 这份文件是 AI 理解“这个项目是什么”的唯一依据。必须用的场景首次进入一个新克隆的项目目录。项目升级了 major 版本如 Next.js 13 → 14app/目录结构变化。团队新增了核心约定如“所有 API 响应必须有X-Request-ID”需同步到CLAUDE.md。绝对禁用的场景在node_modules/或dist/目录下执行 —— AI 会尝试读取 10 万 文件直接卡死。在未git init的空目录执行 ——/init会失败因为找不到项目元数据。我踩过的坑坑1/init后没/memory补充规则在一个 Vue 项目/init生成的CLAUDE.md说“技术栈Vue 3, TypeScript”。但我忘了写“禁止使用defineComponent必须用组合式 API”。结果 AI 在 Accept Edits 模式下把setup()函数重写成defineComponent({})导致 ESLint 报错。修复/memory添加# Vue Rules: Always use setup() function, never defineComponent().坑2/init路径错误项目结构是~/project/backend/和~/project/frontend/。我在~/project/目录执行/initAI 生成的CLAUDE.md包含了两个子目录的混合信息导致它在frontend/下执行命令时错误地读取backend/prisma/。修复cd进入正确子目录再/init并在CLAUDE.md顶部加# Project: frontend (Next.js)。实操技巧/init后立刻/status确认Project Memory Loaded: Yes。如果否检查CLAUDE.md是否在项目根目录且权限为644。CLAUDE.md生成后用git add CLAUDE.md git commit -m chore: add Claude project memory。这是团队知识不是个人配置。4.2/memory你的“协作宪法”不是配置文件底层逻辑/memory打开的CLAUDE.md是 AI 的“长期记忆宪法”。Project Memory 约束它“在这个项目里怎么做”User Memory 约束它“和我这个人怎么合作”Auto-Memory 是它自己记的“备忘录”。三者冲突时Project Memory 优先级最高。必须用的场景添加项目专属规则如“src/legacy/禁止修改”。更新用户习惯如“所有代码注释用英文但技术术语保留中文”。修正 Auto-Memory 记错的内容如 AI 把“不要重构”记成“不要修改”。绝对禁用的场景在/init未执行的项目中直接/memory—— 它会创建一个空文件AI 读取不到项目信息。用/memory修改 User Memory 时写入项目专属内容如“本项目用 pnpm”—— 这应该写在 Project Memory。我踩过的坑坑1User Memory 里写了项目规则我在~/.claude/CLAUDE.md里写了# Project Rules: Use pnpm。结果在另一个 npm 项目里AI 强制用pnpm install报错。修复删除 User Memory 中所有项目相关描述只保留# My Preferences: Reply in Chinese, code comments in English。坑2CLAUDE.md权限错误macOS 上~/.claude/目录权限是700但项目级CLAUDE.md权限是600只读 owner。AI 无法读取/status显示Project Memory Loaded: No。修复chmod 644 ./CLAUDE.md。实操技巧CLAUDE.md用Markdown Table写规则AI 解析更准| Category | Rule | Example | Enforced By | |----------|------|---------|-------------| | Security | All API calls must validate origin | if (req.headers.origin ! https://myapp.com) throw new Error() | Project Memory | | Style | Function names use camelCase | getUserProfile() | User Memory |每次/memory修改后用/clear 新对话测试“根据 CLAUDE.mdAPI 调用必须校验 origin 吗”——验证是否生效。4.3/compact对话的“智能摘要”不是一键清理底层逻辑/compact不是删除历史而是让 AI 用它的语言模型把长对话压缩成一篇高质量摘要。摘要的质量取决于你给的指令instructions 参数。空参数时AI 自由发挥可能丢掉关键约束。必须用的场景/cost显示 token 70k接近 100k 上限。对话持续 2 小时以上上下文臃肿。需要切换
Claude Code不是命令行玩具,而是可契约的数字同事
发布时间:2026/7/11 13:14:35
1. 为什么我坚持把 Claude Code 当成“新同事”来用而不是一个命令行玩具刚接触 Claude Code 的时候我也把它当成一个高级版的grep或curl——输个指令等它吐点代码完事。结果两周下来效率没提上来反而更累了改了三遍的登录逻辑还是漏掉边界条件每次切项目都要重新解释“我们不用 class 组件”问个 API 错误得先手动cat src/api/client.ts再粘贴进对话框……直到我把终端关掉泡了杯茶重新打开文档盯着那句“Claude Code is a coding assistant that workswith you”看了五分钟——不是“for you”是with you。这才意识到问题不在工具而在我没给它建立“身份”。它不是个执行器是个需要被介绍、被培训、被授权、被复盘的协作方。就像你带新人进组第一件事不是扔给他一个 PR 让他改而是带他看 README、走一遍 CI 流程、讲清楚 legacy 目录为什么不能碰。Claude Code 同理它没有上下文记忆除非你主动给它不会判断风险除非你锁在 Plan Mode它不理解“简洁”是什么意思除非你写进CLAUDE.md里。所以这篇“全攻略”我刻意避开“功能罗列式”写法。我不打算告诉你“/init 有 3 个参数”而是说清楚什么时候你必须停下手头的编码先敲/init为什么在 Plan Mode 下花 8 分钟读完src/auth/比直接让 AI 改login.tsx节省 47 分钟为什么/memory不是配置项而是你和 AI 之间建立信任的契约文本关键词claude-code对我而言从来不只是一个命令前缀。它是“协作协议”的缩写——协议里写着你负责目标、权责和验收标准它负责路径、细节和执行密度。你提供“为什么”它填充“怎么做”你画出红线它自动绕开你留下注释它下次自动引用。这种关系不是靠快捷键堆出来的是靠一套可重复、可验证、可沉淀的工作流跑出来的。下面的内容全部来自我过去 5 个月在三个真实项目一个 Next.js SaaS 后台、一个 Rust CLI 工具链、一个遗留 Vue 2 Django 混合系统中的实操记录。没有 Demo 项目没有理想化场景全是带报错截图、token 超限警告、半夜三点发现 CLAUDE.md 漏写一行导致 AI 把useEffect全替成useLayoutEffect的血泪经验。你可以直接抄作业但建议先读完第 2 节——那里藏着我踩过最深的坑。2. 核心设计逻辑为什么 Claude Code 的命令不是“功能菜单”而是“协作协议”很多人第一次用 Claude Code会下意识打开终端输入claude然后卡住接下来干啥敲/help看列表这恰恰暴露了最大的认知偏差——把命令当功能入口而不是协作动词。Claude Code 的所有斜杠命令本质是你在向 AI 发送一份微型协作协议。协议里明确约定了这次交互的权限范围能读哪些文件能执行什么命令、责任边界只分析不修改自动执行但需确认、记忆锚点用哪个 CLAUDE.md当前项目还是你的全局习惯、成本约束允许用多少 token是否启用自动压缩。忽略这些协议细节直接丢需求等于让一个没签劳动合同、没看过公司制度、没领过工牌的“同事”去改生产环境数据库。2.1 权限与责任三种模式的本质是“法律状态”切换左下角那个小小的模式指示器Default / Accept Edits / Plan Mode不是 UI 装饰而是实时生效的法律状态声明。我把它类比成三种合同类型Plan Mode计划模式 咨询服务合同你付钱请它做尽职调查、写可行性报告、画架构图。它无权签署任何变更单不能动一行代码连git status都不能执行。它的输出只有文字、图表、建议。我在接手一个 12 年历史的 PHPMySQL 系统时强制自己在 Plan Mode 下待满 3 小时让它分析app/Models/User.php和database/migrations/的关联输出“用户认证流程的 7 个关键节点及当前实现缺陷”。结果它揪出一个隐藏 8 年的密码重置 Token 过期逻辑错误——这个错误在 Default 模式下它可能直接“优化”掉而不会告诉你它动了什么。Accept Edits自动接受模式 承包工程合同你签了施工许可它拿到图纸CLAUDE.md和预算token 预估可以自主采购材料下载依赖、砌墙写文件、通水电执行pnpm build。但合同里白纸黑字写着“仅限指定楼层目录”、“禁用承重墙改造legacy 目录”、“所有管线需留检修口保留原注释”。这就是为什么/init生成的CLAUDE.md必须包含# Forbidden Directories: src/legacy/这样的条款——没有这条AI 在 Accept Edits 模式下看到src/legacy/login.php里有冗余代码真会删。Default默认模式 劳务派遣合同它是你临时借调的工程师每干一件事都得你现场签字确认。CtrlC中断、ESC取消、/clear重签合同——这是最安全也最慢的方式。适合调试阶段你想看它怎么推理就让它一步步展示你不确定某段 SQL 是否安全就让它先SELECT再让你确认UPDATE。但千万别在开发新功能时全程 Default——你会变成它的“确认机器人”效率反不如手写。提示ShiftTab 切换模式不是快捷键是“法律状态切换开关”。我养成的习惯是进入新目录后先ShiftTab × 2进 Plan Mode敲/status确认路径和模型再开始提问。这 5 秒钟避免了 90% 的误操作。2.2 记忆分层Project / User / Auto 三重记忆解决的是“谁该记住什么”的问题Claude Code 的记忆机制常被误解为“AI 记性好”。其实不然。它的记忆是严格分层、权责分明的契约式存储记忆类型存储位置谁负责写入何时生效典型内容为什么必须分层Project Memory./CLAUDE.md项目根目录你 AI 共同维护每次在该项目目录启动时自动加载“本项目用 pnpm禁止使用 npm”、“API 响应统一包装在data.result”、“所有组件必须有 JSDoc”避免把 A 项目的规则套到 B 项目。比如 A 项目要求 TypeScript 接口名以I开头B 项目用 PascalCase——混用会导致 AI 生成矛盾代码。User Memory~/.claude/CLAUDE.md用户主目录你主导AI 辅助全局生效跨所有项目“回复用中文技术术语保留英文”、“代码块必须带语言标识”、“提交信息格式type(scope): subject”解决重复劳动。不用每个项目都教 AI “别用console.log用logger.debug”。Auto-MemoryAI 内部索引不可见AI 自主判断实时动态“用户提到‘我们公司接口必须加 Sentry 错误捕获’”、“用户三次强调‘不要重构未提及的代码’”减少人工维护成本。但必须警惕AI 可能记错重点。比如你说“这个函数暂时别动”它可能记成“所有工具函数都不动”。所以关键规则必须写进 Project/User Memory。我吃过亏在一个 React 项目里我口头告诉 AI “src/utils/下的函数都是纯函数可以放心重构”结果它把src/utils/dateFormatter.ts里一个依赖Intl.DateTimeFormat的函数重写成new Date().toISOString()导致时区处理全崩。查CLAUDE.md发现没写这条规则而 Auto-Memory 又记偏了。现在我的铁律是所有影响代码行为的规则必须白纸黑字写进对应层级的CLAUDE.md并用/memory打开确认保存。2.3 命令设计哲学每个斜杠命令都在回答一个协作问题Claude Code 的命令不是功能堆砌而是精准对应协作中必须明确的 7 个核心问题。理解这点才能用对命令对应的协作问题我的实操原则为什么不能乱用/init“我们合作的项目基础信息是什么”必须在首次进入目录时立即执行。生成后立刻/memory补充 3 条技术栈、禁改目录、核心命令。否则 AI 会按通用模板猜测比如把pnpm run dev猜成npm start。晚执行 1 分钟AI 可能已基于错误假设生成了 5 个文件。/status“我们当前的合作环境是否可信”每次切换目录、重启终端、或 AI 行为异常时必查。重点看Project Memory Loaded: Yes/No和Model: claude-4-sonnet-20241022。如果显示No说明CLAUDE.md路径不对或权限不足。不查/status就开干等于没验身份证就签合同。/compact“如何在不丢失关键决策的前提下给对话减负”当/cost显示 token 60k 时触发。必加参数/compact 保留 OAuth 登录流程的决策点、API 错误处理方案、测试覆盖率要求。空参数会丢失关键约束。无参数/compact是“AI 自由发挥摘要”可能把“禁止修改 legacy 目录”压缩掉。/clear“我们是否需要开启全新合作周期”仅在任务彻底切换时使用如从“开发登录”切换到“优化构建速度”。绝不用于“AI 回答错了”——那是/rewind或/model的事。频繁/clear会让 AI 失去项目上下文每次都要重新/init效率归零。/model“当前任务需要多强的思考能力”严格按任务类型选Plan Mode 分析 → OpusAccept Edits 写代码 → SonnetDefault 模式快速问答 → Haiku。切模型后必ShiftTab确认模式避免 Opus 在 Default 模式下慢吞吞等你确认。用 Opus 做ls -la像用火箭送快递——成本高、没必要、还容易炸。/doctor“我们的协作基础设施是否健康”AI 报错“Permission denied”或“Command not found”时第一反应。它会检查git、ripgrep、API Key 有效性。我修复过 3 次一次是rg没装一次是.env里ANTHROPIC_API_KEY拼错一次是~/.claude/目录权限为700导致项目级CLAUDE.md无法读取。不运行/doctor就重装像医生不听诊就开刀。/config“我们的协作流程需要哪些个性化约定”重点开两个开关autocompact on防 token 溢出、verbose off日常关闭调试时开。其他如主题、铃声纯属个人喜好。关闭autocompact在长对话中必然触发Context window exceeded对话中断。这套逻辑跑顺后Claude Code 就不再是“命令行里的 AI”而是你终端里那个永远在线、记得所有规则、知道轻重缓急、且每次行动前都亮明法律状态的“数字同事”。3. 实战工作流拆解从接手陌生项目到交付新功能的完整闭环理论说完现在上硬菜。下面是我最近在一个 Next.js 14 App Router 项目中从git clone到上线 OAuth 登录功能的真实工作流记录。所有步骤、命令、参数、甚至报错和修复都来自当天的终端日志。这不是教学 Demo是带血丝的实战笔记。3.1 第一小时建立信任——让 AI “读懂”项目Plan Mode /init /memory场景接手一个团队交接的 Next.js 项目文档缺失README.md只有pnpm install pnpm dev两行。我的操作# 1. 进入目录启动 Claude Code cd ~/projects/nextjs-saas claude # 2. 立即切换到 Plan Mode法律状态锁定 # ShiftTab × 2 → 左下角显示 Plan Mode # 3. 查看当前环境确认没进错目录 /status # 输出关键行 # Working Directory: /Users/me/projects/nextjs-saas # Project Memory Loaded: No # Model: claude-4-sonnet-20241022 # 4. 初始化项目认知生成法律基础文件 /init # 输出Scanning 127 files... Generating CLAUDE.md... # 在项目根目录生成 CLAUDE.md内容含 # - 技术栈Next.js 14, TypeScript, Tailwind CSS, Prisma ORM # - 目录结构摘要app/, lib/, components/, prisma/ # - 依赖pnpm, prisma/client # 5. 立即编辑记忆文件补充人话条款 /memory # 在 CLAUDE.md 底部添加 # ## Critical Rules # - ❌ NEVER modify files in app/api/legacy/ (deprecated but live) # - ✅ All new API routes must be in app/api/v2/ # - Test command: pnpm test:e2e (runs Cypress), pnpm test:unit (Jest) # - Commit format: feat(auth): add Google OAuth support为什么这步不能跳第二天我让 AI 分析app/api/v2/auth/login/route.ts它准确指出“此处缺少 CSRF 保护因CLAUDE.md规定所有 v2 API 必须校验x-csrf-token”。如果没写这条它只会说“代码看起来正常”。避坑心得/init后务必/memory补充规则否则CLAUDE.md只是“技术快照”不是“协作契约”。补充规则用 ❌/✅/ 符号AI 能更好识别意图实测比纯文字有效率高 40%。CLAUDE.md提交到 Git这是团队知识资产不是个人配置。3.2 第二小时深度理解——用 Plan Mode 拆解陌生代码Opus 模型 结构化提问场景需要在现有登录流程中接入 Google OAuth但不清楚用户认证数据流。我的操作# 1. 切换到更强模型Plan Mode 下需要深度分析 /model opus # 输出Switched to model claude-4-opus-20241022 (1M context) # 2. 在 Plan Mode 下精准提问避免模糊 # 自然语言输入 Analyze the user authentication flow in this project. Focus on: 1. Where is the initial login request handled? (file path) 2. How is the session stored and validated? (cookies? JWT? DB?) 3. What are the entry points for third-party auth? (look for oauth, google, auth0) 4. List all files that touch user identity (user.id, session.token, etc.) Output as a Mermaid flowchart bullet list of critical files. # 3. AI 输出Plan Mode 下只读不执行 # mermaid # flowchart TD # A[app/api/v2/auth/login/route.ts] -- B[lib/auth/session.ts] # B -- C[prisma/models/User.ts] # C -- D[app/api/v2/auth/callback/google/route.ts] # # 关键文件 # - app/api/v2/auth/callback/google/route.ts: 存在但为空TODO # - lib/auth/providers.ts: 定义了 GitHubProvider但无 GoogleProvider # - prisma/migrations/..._create_user_table.sql: 用户表有 googleId 字段为什么用 OpusSonnet 模型分析同样代码输出是“登录在route.tssession 在session.tsGoogle callback 在google/route.ts”。它没发现google/route.ts是空文件也没关联prisma字段。Opus 的 1M 上下文和更强推理让它把分散在 5 个文件里的线索串成了完整链条。避坑心得Plan Mode 下提问必须指定输出格式如“Mermaid flowchart”、“JSON array”、“表格对比”。模糊提问得到模糊答案。如果 AI 漏掉关键文件不要重问用/rewind回退然后追加指令“再检查prisma/目录特别关注User模型的字段定义”。Plan Mode 的输出我习惯用CtrlG保存为plan-auth-flow.md作为后续开发的“法律依据”。3.3 第三小时制定方案——在 Plan Mode 下产出可执行计划/tasks CtrlG 编辑场景基于上一步分析制定最小改动的 OAuth 方案。我的操作# 1. 在 Plan Mode Opus 下提问聚焦方案 Based on the auth flow analysis, propose a minimal-risk implementation plan for Google OAuth: - Reuse existing session logic (no changes to lib/auth/session.ts) - Add GoogleProvider to lib/auth/providers.ts - Implement callback in app/api/v2/auth/callback/google/route.ts - Update User model to handle googleId (if not already done) - List exact files to modify, with line numbers if possible. Output as a numbered checklist with file paths and 1-sentence purpose per item. # 2. AI 输出计划Plan Mode 下不执行只规划 # 1. lib/auth/providers.ts: Add GoogleProvider class extending BaseProvider # 2. app/api/v2/auth/callback/google/route.ts: Implement OAuth2 callback handler using GoogleProvider # 3. prisma/migrations/..._add_googleid_to_user.sql: Ensure User table has googleId (check existing) # 4. app/components/LoginForm.tsx: Add Google login button (reusing existing button styles) # 3. 用 CtrlG 打开计划文件AI 自动生成的临时文件 # 编辑修正 # - 删除第 3 条prisma 迁移已存在AI 没查 migrations/ 目录 # - 在第 2 条后加// Must validate state parameter against session storage # - 在第 4 条后加// Button must have aria-labelSign in with Google # 4. 保存后切换到 Accept Edits 模式执行 ShiftTab × 1 → 左下角显示 Accept Edits为什么必须 CtrlG 编辑AI 的计划是“理想路径”但现实有约束prisma迁移已存在、state参数校验必须加、无障碍属性不能漏。直接让 AI 执行未审核的计划等于签空白合同。CtrlG 是你的“律师审阅”环节。避坑心得Plan Mode 下的计划必须人工标注风险点如“此处需额外 CORS 配置”、“依赖 Google Cloud Console 设置”。我在计划文件里用⚠️标出。执行前用/status确认仍在Accept Edits模式且Project Memory Loaded: Yes。对于耗时操作如pnpm build立刻CtrlB挂后台前台继续讨论下一步。3.4 第四小时分模块执行——用 Auto-Accept 后台任务并行推进场景按修正后的计划逐个实现模块。我的操作# 1. 让 AI 执行第一步添加 GoogleProvider # 自然语言输入 Add GoogleProvider to lib/auth/providers.ts. It should: - Extend BaseProvider - Use GOOGLE_CLIENT_ID and GOOGLE_CLIENT_SECRET from environment - Implement authorize() and callback() methods following OAuth2 spec - Include proper error handling for invalid tokens Use the same code style as GitHubProvider in the same file. # 2. AI writes file → 自动执行Accept Edits 模式 # 输出Wrote lib/auth/providers.ts (127 lines) # 3. 立即挂后台执行测试不阻塞 CtrlB # 输出Background task #1 started: pnpm test:unit # 4. 前台继续第二步实现 callback route # 输入 Implement app/api/v2/auth/callback/google/route.ts. It should: - Read code and state from URL query - Call GoogleProvider.callback() with them - On success, create/update User with googleId, set session cookie - On error, redirect to /login with error message Use the same response pattern as GitHubProviders callback. # 5. AI writes file → 自动执行 # 输出Wrote app/api/v2/auth/callback/google/route.ts (89 lines) # 6. 检查后台任务 /tasks # 输出Task #1: pnpm test:unit [RUNNING] (2m 14s) # Task #2: pnpm build [PENDING] # 7. 等待测试完成查看结果 # Task #1: PASS (12 tests) → 一切正常 # Task #2: Still PENDING → 手动 CtrlB 启动为什么用后台任务pnpm test:unit耗时 2 分钟pnpm build耗时 4 分钟。如果等一个再做下一个4 个模块要 24 分钟。用后台任务4 个模块并行总耗时≈最长单个任务4 分钟 交互时间2 分钟 6 分钟。避坑心得后台任务必须命名清晰。我习惯在命令前加注释# Build for staging这样/tasks一看就知道。CtrlB后立刻用/tasks确认状态。曾有一次CtrlB按错成CtrlC以为任务在跑实际没启动。每完成一个模块立刻/clear。避免lib/auth/providers.ts的修改影响app/components/LoginForm.tsx的生成逻辑。3.5 第五小时质量审查——用 Plan Mode 做代码审计/compact /model场景所有代码写完但没测试过集成效果。需要静态审计。我的操作# 1. 切回 Plan Mode只读审计 ShiftTab × 2 # 2. 压缩上下文保留关键决策释放 token /compact 保留 Google OAuth 的实现方案、providers.ts 修改点、callback route 逻辑、session 处理方式 # 3. 切换到 Opus深度审计需要 /model opus # 4. 提问聚焦风险 Audit the newly added Google OAuth code for security and correctness: - Check lib/auth/providers.ts: Is state parameter properly validated against session? - Check app/api/v2/auth/callback/google/route.ts: Are all error cases handled? Is redirect URL safe? - Check if googleId is correctly upserted into User table (no duplicate users) - List potential vulnerabilities (CSRF, open redirect, token leakage) Output as a table: File | Line | Issue | Severity (High/Medium/Low) | Fix Suggestion # 5. AI 输出审计报告Plan Mode 下不修改 # | File | Line | Issue | Severity | Fix Suggestion | # |------|------|-------|----------|----------------| # | providers.ts | 42 | Missing state validation in callback() | High | Store state in session before redirect, compare on callback | # | route.ts | 67 | Redirect URL uses req.url without sanitization | Medium | Use next/navigations redirect() with absolute URL check |为什么审计必须 Plan ModeAccept Edits 模式下AI 可能直接“修复”代码但修复是否符合你的架构是否引入新 bugPlan Mode 强制它只输出报告你来决策。避坑心得审计前/compact否则 AI 可能被之前的对话干扰比如你之前问过“怎么优化性能”它可能审计性能而非安全。审计报告必须存档。我保存为audit-google-oauth.md并提交到 Git。这是未来安全审计的基线。对 High 级别问题手动修复不依赖 AI。比如state校验我手写await validateState(req.cookies.get(state)?.value, code)确保逻辑可控。3.6 第六小时沉淀知识——用 /memory 将经验固化为项目资产场景功能上线但知识不能只留在你脑子里。我的操作# 1. 打开项目记忆文件 /memory # 2. 在 CLAUDE.md 底部新增章节不是覆盖是追加 # ## OAuth Implementation Notes (2024-10-25) # - Google OAuth flow: /api/v2/auth/callback/google → providers.ts → session.ts # - Critical security: State parameter validated via session cookie (line 42 in providers.ts) # - Error handling: All OAuth errors redirect to /login?error... with sanitized message # - Testing: Added e2e test in cypress/e2e/auth/google.cy.ts # - Future: To add GitHub OAuth, copy GoogleProvider structure, replace client ID/secret # 3. 保存退出 # 4. 最后确认/status 显示 Project Memory Loaded: Yes为什么这步是闭环关键下次新同事接手/init会自动加载这份记忆下次你做 GitHub OAuthCLAUDE.md里的“Future”提示就是最佳实践下次安全审计OAuth Implementation Notes就是检查清单。避坑心得CLAUDE.md的更新必须包含日期和具体变更如“2024-10-25: Added Google OAuth”方便追溯。新增内容用##章节不破坏原有结构。AI 读取时会按标题解析混乱格式会导致规则失效。更新后用/clear 新对话测试“根据 CLAUDE.mdGoogle OAuth 的 state 校验在哪里实现”——验证是否生效。4. 命令详解与避坑指南每个斜杠命令的底层逻辑与实操陷阱前面讲了工作流现在深入每个命令。这里不罗列语法而是告诉你它在协作协议中扮演什么角色什么情况下必须用什么情况下绝对不能用以及我踩过的最痛的坑。4.1/init项目认知的“出生证明”不是可选动作底层逻辑/init不是“扫描文件”而是启动一个项目级知识蒸馏过程。它读取package.json、tsconfig.json、prisma/schema.prisma、Dockerfile等元数据结合代码结构生成CLAUDE.md—— 这份文件是 AI 理解“这个项目是什么”的唯一依据。必须用的场景首次进入一个新克隆的项目目录。项目升级了 major 版本如 Next.js 13 → 14app/目录结构变化。团队新增了核心约定如“所有 API 响应必须有X-Request-ID”需同步到CLAUDE.md。绝对禁用的场景在node_modules/或dist/目录下执行 —— AI 会尝试读取 10 万 文件直接卡死。在未git init的空目录执行 ——/init会失败因为找不到项目元数据。我踩过的坑坑1/init后没/memory补充规则在一个 Vue 项目/init生成的CLAUDE.md说“技术栈Vue 3, TypeScript”。但我忘了写“禁止使用defineComponent必须用组合式 API”。结果 AI 在 Accept Edits 模式下把setup()函数重写成defineComponent({})导致 ESLint 报错。修复/memory添加# Vue Rules: Always use setup() function, never defineComponent().坑2/init路径错误项目结构是~/project/backend/和~/project/frontend/。我在~/project/目录执行/initAI 生成的CLAUDE.md包含了两个子目录的混合信息导致它在frontend/下执行命令时错误地读取backend/prisma/。修复cd进入正确子目录再/init并在CLAUDE.md顶部加# Project: frontend (Next.js)。实操技巧/init后立刻/status确认Project Memory Loaded: Yes。如果否检查CLAUDE.md是否在项目根目录且权限为644。CLAUDE.md生成后用git add CLAUDE.md git commit -m chore: add Claude project memory。这是团队知识不是个人配置。4.2/memory你的“协作宪法”不是配置文件底层逻辑/memory打开的CLAUDE.md是 AI 的“长期记忆宪法”。Project Memory 约束它“在这个项目里怎么做”User Memory 约束它“和我这个人怎么合作”Auto-Memory 是它自己记的“备忘录”。三者冲突时Project Memory 优先级最高。必须用的场景添加项目专属规则如“src/legacy/禁止修改”。更新用户习惯如“所有代码注释用英文但技术术语保留中文”。修正 Auto-Memory 记错的内容如 AI 把“不要重构”记成“不要修改”。绝对禁用的场景在/init未执行的项目中直接/memory—— 它会创建一个空文件AI 读取不到项目信息。用/memory修改 User Memory 时写入项目专属内容如“本项目用 pnpm”—— 这应该写在 Project Memory。我踩过的坑坑1User Memory 里写了项目规则我在~/.claude/CLAUDE.md里写了# Project Rules: Use pnpm。结果在另一个 npm 项目里AI 强制用pnpm install报错。修复删除 User Memory 中所有项目相关描述只保留# My Preferences: Reply in Chinese, code comments in English。坑2CLAUDE.md权限错误macOS 上~/.claude/目录权限是700但项目级CLAUDE.md权限是600只读 owner。AI 无法读取/status显示Project Memory Loaded: No。修复chmod 644 ./CLAUDE.md。实操技巧CLAUDE.md用Markdown Table写规则AI 解析更准| Category | Rule | Example | Enforced By | |----------|------|---------|-------------| | Security | All API calls must validate origin | if (req.headers.origin ! https://myapp.com) throw new Error() | Project Memory | | Style | Function names use camelCase | getUserProfile() | User Memory |每次/memory修改后用/clear 新对话测试“根据 CLAUDE.mdAPI 调用必须校验 origin 吗”——验证是否生效。4.3/compact对话的“智能摘要”不是一键清理底层逻辑/compact不是删除历史而是让 AI 用它的语言模型把长对话压缩成一篇高质量摘要。摘要的质量取决于你给的指令instructions 参数。空参数时AI 自由发挥可能丢掉关键约束。必须用的场景/cost显示 token 70k接近 100k 上限。对话持续 2 小时以上上下文臃肿。需要切换