返回
官网 Claude 官方博客 AI 逐段翻译 发布 2025-11-25 08:00 收录于 08-11

使用CLAUDE.MD文件:为你的代码库定制Claude Code

DataHot 速览

本文介绍了CLAUDE.md配置文件,它能为Claude Code提供项目特定的上下文,如架构、编码标准和常用命令,从而减少重复解释。文章示例了配置文件的结构,并提供了最佳实践。然而,内容围绕AI编程助手,与数据领域(数据分析、数据库、数据基础设施等)无直接关联。

为什么值得关注:内容聚焦AI编程助手的配置,不涉及数据产品、数据分析或相关基础设施,不符合五类领域任一范畴。

本文目录 12 节
  1. 什么是CLAUDE.md文件?
  2. 使用/init入门
  3. 如何构建你的CLAUDE.md
  4. 给Claude一个地图
  5. 将Claude连接到你的工具
  6. 定义标准工作流程
  7. ‍与 Claude Code 协作的其他技巧
  8. 保持上下文新鲜
  9. 对不同的阶段使用子代理
  10. 创建自定义命令
  11. 从简单开始,有意识地扩展
  12. 让 CLAUDE.md 为您工作

译文

AI 逐段翻译

如果你使用AI编码代理,你会面临同样的挑战:如何在不重复自己的情况下,给它们足够的上下文来理解你的架构、约定和工作流程?

随着代码库的增长,问题会变得更复杂。复杂的模块关系、特定领域的模式和团队约定不容易被了解。你最终不得不在每次对话开始时解释相同的架构决策、测试要求和代码风格偏好。

CLAUDE.md文件通过为Claude提供关于项目的持久上下文来解决这个问题。可以把它看作一个配置文件,Claude会自动将其纳入每次对话,确保它始终了解你的项目结构、编码标准和工作流程偏好。

在本文中,我们将介绍如何构建你的CLAUDE.md,并分享最佳实践和技巧,帮助你充分利用Claude Code。

什么是CLAUDE.md文件?

CLAUDE.md是一个特殊的配置文件,存在于你的仓库中,为Claude提供项目特定的上下文。你可以将其放在仓库根目录以与团队共享,放在父目录用于monorepo设置,或者放在你的主文件夹中以在所有项目中通用。

以下是一个你可能在仓库中有的CLAUDE.md示例:

# Project ContextWhen working with this codebase, prioritize readability over cleverness. Ask clarifying questions before making architectural changes.
## About This ProjectFastAPI REST API for user authentication and profiles. Uses SQLAlchemy for database operations and Pydantic for validation.
## Key Directories-`app/models/` - database models
-`app/api/` - route handlers
-`app/core/` - configuration and utilities
## Standards- Type hints required on all functions
- pytest for testing (fixtures in `tests/conftest.py`)
- PEP 8 with 100 character lines
## Common Commands```bash
uvicorn app.main:app --reload  # dev server
pytest tests/ -v               # run tests
```## NotesAll routes use `/api/v1` prefix. JWT tokens expire after 24 hours.

配置良好的CLAUDE.md会转变Claude与你的特定项目协作的方式。该文件有多个用途:提供架构上下文、建立工作流程、将Claude与你的开发工具连接起来。每个新增内容都应解决你实际遇到的问题,而不是Claude可能需要的理论上的担忧。

该文件可以记录常用的bash命令、核心工具、代码风格指南、测试指令、仓库约定、开发者环境设置以及项目特定的警告。没有必需的格式。建议保持文件简洁且人类可读,将其视为人类和Claude都需要快速理解的文档。

你的CLAUDE.md文件成为Claude系统提示的一部分。每次对话都从已加载此上下文开始,无需重复解释基本的项目信息。

使用/init入门

从零开始创建CLAUDE.md可能会让人望而生畏,尤其是在不熟悉的代码库中。

该/init命令通过分析你的项目并生成一个入门配置来自动化此过程。

在任何Claude Code会话中运行/init :

cd your-project
claude
/init

Claude会检查你的代码库——读取包文件、现有文档、配置文件和代码结构——然后生成一个针对你的项目定制的CLAUDE.md。生成的文件通常包括构建命令、测试指令、关键目录以及它检测到的编码约定。

把/init视为起点,而不是成品。生成的CLAUDE.md捕获了明显的模式,但可能错过特定于你工作流程的细微差别。审查Claude生成的内容,并根据你团队的实际实践进行改进。

你也可以对已有CLAUDE.md的现有项目使用/init 。Claude将审查当前文件,并根据其从探索你的代码库中学到的内容提出改进建议。

运行/init之后,考虑以下步骤:

  • 审查生成的内容以确保准确性
  • 添加Claude无法推断的工作流指令(分支命名约定、部署流程、代码审查要求)
  • 删除不适用于你项目的通用指南
  • 将文件提交到版本控制,以便你的团队受益

该/init命令对于快速定位很有用,但真正的价值在于随着时间的推移对生成的文件进行迭代。当你使用Claude Code时,使用#键来添加你发现自己重复的指令——这些添加会累积成一个真正反映你团队工作方式的CLAUDE.md。

如何构建你的CLAUDE.md

以下部分向你展示如何结构内容以获得最大影响力:导航复杂架构、跟踪多步骤任务的进度、集成自定义工具以及通过一致的工作流程防止返工。

给Claude一个地图

每项新任务都解释你的项目架构、关键库和编码风格会变得枯燥。你需要Claude在没有手动强化的情况下保持对代码库结构的一致上下文。

在CLAUDE.md中添加项目摘要和高层目录结构。这使Claude在导航你的代码库时能立即定位。

一个显示关键目录的简单树状输出有助于Claude理解不同组件的位置:

main.py
├── logs
│   ├── application.log
├── modules
│   ├── cli.py
│   ├── logging_utils.py
│   ├── media_handler.py
│   ├── player.py

包含关于你的主要依赖、架构模式以及任何非标准组织选择的信息。如果你使用领域驱动设计、微服务或特定框架,请记录下来。Claude使用这个地图做出更好的决策,确定在哪里查找代码以及在哪里进行修改。

将Claude连接到你的工具

Claude继承了你的完整环境,但需要关于使用哪些自定义工具和脚本的指导。你的团队可能有专门的部署、测试或代码生成工具,Claude应该知道这些。

在CLAUDE.md中记录你的自定义工具并提供使用示例。包括工具名称、基本用法模式以及何时调用它们。如果你的工具通过--help标志提供帮助文档,请提及,以便Claude知道去检查。对于复杂的工具,添加你团队经常使用的常见调用示例。

Claude充当MCP(模型上下文协议)客户端,连接到扩展其能力的MCP服务器。通过项目设置、全局配置或检入的.mcp.json文件来配置这些。--mcp-debug标志有助于排除工具未按预期出现时的连接问题。

例如,如果你为组织配置了Slack MCP服务器,并且需要Claude了解如何使用它,请在CLAUDE.md中包含类似以下内容:

### Slack MCP- Posts to #dev-notifications channel only
- Use for deployment notifications and build failures
- Do not use for individual PR updates (those go through GitHub webhooks)
- Rate limited to 10 messages per hour

了解更多关于MCP基础知识与最佳实践。

有关为 Claude Code 设置权限的更多信息,请参见 settings.json 文档: code.claude.com。

定义标准工作流程

让 Claude 直接进入代码修改而不进行规划会产生返工。Claude 可能会实施一个遗漏需求的解决方案,选择错误的架构方法,或做出破坏现有功能的更改。

您需要 Claude 在行动前思考。在您的 CLAUDE.md 中定义标准工作流程,Claude 应针对不同类型的任务遵循这些流程。一个可靠的默认工作流程在做出更改前解决四个问题:

  1. 这是否是一个需要首先调查的关于当前状态的问题?
  2. 这是否需要在实施前制定详细计划?
  3. 缺少哪些额外信息?
  4. 如何测试有效性?

具体的工作流程可能包括:功能开发的探索-计划-编码-提交,算法工作的测试驱动开发,或 UI 更改的可视化迭代。记录您的测试要求、提交消息格式以及任何审批步骤。当 Claude 提前了解您的工作流程时,它会按照您团队的实际流程来组织工作,而不是猜测。

一个示例工作流程指令可能是:

1) Before modifying code in the following locations: X, Y, Z
	- Consider how it might affect A, B, C
	- Construct an implementation plan
	- Develop a test plan that will validate the following functions...

‍与 Claude Code 协作的其他技巧

除了配置您的 CLAUDE.md 文件之外,还有三种技术可以改善您与 Claude Code 的协作方式。

保持上下文新鲜

随着时间的推移,与 Claude Code 协作会积累不相关的上下文。来自早期任务的文件内容、不再重要的命令输出以及无关的对话填满了 Claude 的上下文窗口。随着信噪比的下降,Claude 难以专注于当前任务。

在独立任务之间使用/clear来重置上下文窗口。这会移除累积的历史记录,同时保留您的 CLAUDE.md 配置和 Claude 以全新上下文处理新问题的能力。可以将其视为关闭一个工作会话并打开另一个。

当您完成调试身份验证并切换到实现新的 API 端点时,请清除上下文。身份验证细节不再重要,并且会分散对新工作的注意力。

对不同的阶段使用子代理

长时间的对话会积累干扰新任务的上下文。您已经调试了一个复杂的身份验证流程,现在需要对同一代码进行安全审查。调试细节会影响 Claude 的安全分析,可能导致其忽略问题或关注已解决的顾虑。

告诉 Claude 使用子代理来处理工作的不同阶段。子代理维护独立的上下文,防止早期任务的信息干扰新分析。在实现支付处理器后,指示 Claude“使用子代理对该代码进行安全审查”,而不是在同一个对话中继续。

子代理最适合多步骤工作流程,其中每个阶段需要不同的视角。实现需要架构上下文和功能需求;安全审查需要专注于漏洞的新视角。上下文分离使两种分析都保持敏锐。

创建自定义命令

重复的提示浪费了时间。您发现自己一遍又一遍地输入“审查此代码的安全问题”或“分析此代码的性能问题”。每次您都需要记住能获得良好结果的确切措辞。

自定义斜杠命令将这些命令存储为您的 .claude/commands/ 目录中的 markdown 文件。创建一个名为performance-optimization.mm的文件,其中包含您偏好的性能优化提示,它就在任何对话中作为/performance-optimization可用。命令通过 $ARGUMENTS 或编号占位符(如$1和$2)支持参数,让您传递特定的文件或参数。

例如,performance-optimization.md可能看起来像这样:

# Performance OptimizationAnalyze the provided code for performance bottlenecks and optimization opportunities. Conduct a thorough review covering:
## Areas to Analyze### Database & Data Access- N+1 query problems and missing eager loading
- Lack of database indexes on frequently queried columns
- Inefficient joins or subqueries
- Missing pagination on large result sets
- Absence of query result caching
- Connection pooling issues
### Algorithm Efficiency- Time complexity issues (O(n²) or worse when better exists)
- Nested loops that could be optimized
- Redundant calculations or repeated work
- Inefficient data structure choices
- Missing memoization or dynamic programming opportunities
### Memory Management- Memory leaks or retained references
- Loading entire datasets when streaming is possible
- Excessive object instantiation in loops
- Large data structures kept in memory unnecessarily
- Missing garbage collection opportunities
### Async & Concurrency- Blocking I/O operations that should be async
- Sequential operations that could run in parallel
- Missing Promise.all() or concurrent execution patterns
- Synchronous file operations
- Unoptimized worker thread usage
### Network & I/O- Excessive API calls (missing request batching)
- No response caching strategy
- Large payloads without compression
- Missing CDN usage for static assets
- Lack of connection reuse
### Frontend Performance- Render-blocking JavaScript or CSS
- Missing code splitting or lazy loading
- Unoptimized images or assets
- Excessive DOM manipulations or reflows
- Missing virtualization for long lists
- No debouncing/throttling on expensive operations
### Caching- Missing HTTP caching headers
- No application-level caching layer
- Absence of memoization for pure functions
- Static assets without cache busting
## Output FormatFor each issue identified:
1.**Issue**: Describe the performance problem
2.**Location**: Specify file/function/line numbers
3.**Impact**: Rate severity (Critical/High/Medium/Low) and explain expected performance degradation
4.**Current Complexity**: Include time/space complexity where applicable
5.**Recommendation**: Provide specific optimization strategy
6.**Code Example**: Show optimized version when possible
7.**Expected Improvement**: Quantify performance gains if measurable
If code is well-optimized:
- Confirm optimization status
- List performance best practices properly implemented
- Note any minor improvements possible
**Code to review:**```
$ARGUMENTS
```

您无需手动编写自定义命令文件。请让 Claude 为您创建它们:

Create a custom slash command called /performance-optimization that analyzes code for database query issues, algorithm efficiency, memory management, and caching opportunities.

Claude 会将 markdown 文件写入.claude/commands/performance-optimization.md,该命令立即可用。

从简单开始,有意识地扩展

立即创建全面的 CLAUDE.md 很诱人。抵制这种冲动。

CLAUDE.md 每次都会添加到 Claude Code 的上下文中,所以从上下文工程和提示工程的角度来看,保持简洁。一种选择:将信息拆分为单独的 markdown 文件,并在 CLAUDE.md 文件中引用它们。

不要包含敏感信息、API 密钥、凭据、数据库连接字符串或详细的安全漏洞信息——特别是如果您提交到版本控制。由于 CLAUDE.md 成为 Claude 系统提示的一部分,请将其视为可以公开共享的文档。

让 CLAUDE.md 为您工作

CLAUDE.md 文件将 Claude Code 从通用助手转变为专门为您的代码库配置的工具。从简单的基本项目结构和构建设文档开始,然后根据工作流程中的实际痛点进行扩展。

最有效的 CLAUDE.md 文件解决实际问题:它们记录您重复输入的命令,捕获需要十分钟解释的架构上下文,并建立防止返工的工作流程。您的文件应反映您的团队实际开发软件的方式——而不是听起来不错但不符合现实的理论最佳实践。

将定制视为持续的实践,而不是一次性的设置任务。项目会变化,团队会学习更好的模式,新工具会进入您的工作流程。维护良好的 CLAUDE.md 会随着您的代码库而演变,持续减少在复杂软件上使用 AI 辅助的摩擦。

这篇内容对你有用吗?

反馈只用于改善内容筛选,不等同于收藏

分享这条资讯
分享海报
保存图片
iOS 也可以长按图片保存