📋 CLAUDE.md-克劳德代码的优化配置
目的: Claude Code CLI的优化指令文件 版本: 1.0 最后更新时间: 2025年11月
______________________________________________________________________
这是什么?
这个项目包含一个精心设计的 CLAUDE.md file-Claude Code在启动时自动加载的特殊配置。它作为可执行规范和行为指令,塑造了Claude在所有会话中的行为。
我们解决的问题: 默认的Claude代码行为缺乏特定于项目的上下文、一致的规则执行和对可用MCP(模型上下文协议)服务器的感知。
我们的解决方案: 一个结构化的、研究支持的CLAUDE.md:
- 始终如一地执行关键规则
- 动态适应可用的MCP工具
- 保持注意力模式的最佳大小
- 使用“三明治模式”以最大限度地保留规则
______________________________________________________________________
为什么选择新的CLAUDE.md?
注意力问题
Claude的系统提示注意力机制(如Claude.md)遵循特定的模式:
╔═══════════════════════════════════════════════════════╗
║ Beginning of file → HIGHEST attention (5/5) ║
║ Middle of file → MEDIUM attention (3/5) ║
║ End of file → HIGH attention. (4/5) ║
╚═══════════════════════════════════════════════════════╝关键见解: 这与最近=最高优先级的对话历史记录不同。对于系统提示 开始 具有最高优先级。
尺寸问题
研究和测试表明:
- 推荐: 最多500-600行
- 除此之外: 注意力下降,规则被“遗忘”
- 解决方案: 简洁的章节,需要时参考详细配置
我们的CLAUDE.md针对注意力进行了优化,不会丢失重要信息。
______________________________________________________________________
三明治模式解释
我们使用一种称为“三明治模式”的特定优先级结构:
┌─────────────────────────────────────────────────────┐
│ PRIORITY #1 - CRITICAL RULES │ Rating: ⭐⭐⭐⭐⭐
│ Lines 1-120: Non-negotiable foundation │
│ • Language requirements │
│ • Code modification boundaries │
│ • File creation constraints │
│ • MCP server awareness │
│ • Session start protocol │
├─────────────────────────────────────────────────────┤
│ PRIORITY #2 - GENERAL PREFERENCES │ Rating: ⭐⭐⭐⭐
│ Lines 124-282: Standard operating procedures │
│ • Communication style │
│ • Code architecture │
│ • Testing approach │
│ • Git operations │
│ • Web research protocol │
├─────────────────────────────────────────────────────┤
│ PRIORITY #4 - MCP CONFIGURATIONS. │ Rating: ⭐⭐⭐ ← WHY HERE?
│ Lines 285-515: Conditional tool configurations │
│ • Context7, Sequential Thinking, Serena │
│ • Chrome DevTools, Exa, Argus, Yggdrasil │
├─────────────────────────────────────────────────────┤
│ PRIORITY #3 - CRITICAL REMINDER │ Rating: ⭐⭐⭐⭐
│ Lines 519-574: Reinforcement of top rules │
│ • Checklist format │
│ • Repeats Priority #1 rules │
└─────────────────────────────────────────────────────┘为什么MCP配置处于中间位置(优先级#4)?
问题: 既然MCP配置很重要,为什么不把它们放得更高呢?
答案: 三个原因:
- 有条件的性质
- MCP配置仅在检测到特定服务器时适用 - 并非每个会话都需要每个MCP配置 - 将它们置于“关键”位置会将最高关注空间浪费在可能无关的内容上
- 确定性逻辑
- MCP检测清楚:刀具模式存在→ 应用配置 - 没有需要高度关注的歧义 - 明确触发条件(mcp__servername__*)不言自明
- 参考资料
- MCP配置是“在需要时进行咨询”,而不是“始终记忆” - 中间位置非常适合参考材料 - Claude在会话开始时检查MCP工具,然后应用相关配置
规则: 关键的不可谈判规则贯穿始终。条件/参考材料在中间。
为什么要在最后重复规则?
“三明治模式”在开头和结尾都放置了关键规则:
Beginning: DEFINE the rules (highest authority)
Middle: Details, examples, conditional configs
End: REINFORCE the rules (recency within system prompt)重要提示: 结束并不比开始更重要。it is 的常用口语形式 通过重复强化,就像起飞前飞行员的检查表一样——飞行手册(开始)有权威,但检查表(结束)确保不会忘记任何事情。
类比:
Teacher at start: "Today's 3 key concepts: A, B, C"
[45 minutes of detailed lesson]
Teacher at end: "Remember: A, B, C were the key points"结束不会覆盖开始,它会强化它。
______________________________________________________________________
MCP条件加载
CLAUDE.md文件是静态Markdown,不支持IF-ELSE语句。但克劳德足够聪明,可以:
- 检查哪些工具可用(参见
mcp__servername__*在功能列表中) - 解释自然语言条件指令
- 仅根据检测到的工具应用相关部分
我们的方法
## Yggdrasil MCP (Semantic Memory Server)
**Trigger:** `mcp__Yggdrasil__*` tools detected
[Configuration only applies when trigger condition is met]
**When NOT available:** Session-only context, no persistence每个MCP部分包括:
- 触发: 什么工具模式激活此配置
- 目的: MCP提供什么
- 您必须: MCP可用时所需的行为
- 关键模式: 使用示例
- 当不可用时: 回退行为
这允许一个CLAUDE.md在安装了不同MCP服务器的不同环境中工作。
______________________________________________________________________
用于语义分组的类XML标签
您会注意到我们的CLAUDE.md使用类似XML的标签:
...critical rules here...
...MCP configurations here...
...reminder checklist here...
为什么使用XML标签?
1.语义边界
XML标签创建了清晰、明确的部分边界。与Markdown标题不同(##)XML标签是分层但扁平的,明确标记逻辑块的位置 开始 和 末端.
## Section A ← Where does Section A end?
content...
## Section B ← Here? Or was there supposed to be more?
← Section A starts here
content...
← Section A definitively ends here
← Section B starts here2.优先级属性
XML允许传递元数据的属性:
这句话不仅告诉克劳德“这很关键” 多么关键 -the priority="HIGHEST" 属性以机器可解析的方式增强了重要性。
3.LLM模式识别
大型语言模型是在大量结构化数据上训练的,包括:
- HTML/XML文档
- 配置文件
- API响应
Claude识别XML模式并理解:
...=包含相关内容- 属性如
priority="HIGH"=关于内容的元数据 - 嵌套结构=层次关系
4.混合Markdown+XML
我们使用 两者 Markdown和XML的战略:
| 元素 | 格式 | 原因 |
|---|---|---|
| 标题 | Markdown ## | 人类可读性、导航 |
| 内容 | Markdown | 格式、列表、代码块 |
| 逻辑部分 | XML标签 | 明确边界,优先级提示 |
| 优先级标记 | XML属性 | 机器可解析重要性 |
我们的CLAUDE.md示例:
# 🔴 CRITICAL RULES (NON-NEGOTIABLE) ← Markdown for human readers
← XML for semantic grouping
## Language Requirements ← Markdown for structure
**Code & Technical Content:** ← Markdown for formatting
- **ALWAYS** use English for:
- All code
...
← Clear end of critical section我们使用的标签
| 标签 | 目的 | 位置 |
|---|---|---|
| `` | 不可协商规则 | 开始(优先级#1) |
| `` | 条件MCP配置 | 中等(优先级#4) |
| `` | 规则强化检查表 | 结束(优先级#3) |
为什么不是纯Markdown?
纯Markdown缺少:
- 显式结束标记 -
##开始部分但不结束它们 - 属性支持 -无法添加
priority="HIGHEST"元数据 - 语义分组 -标题是分层的,没有分组
纯XML将缺少:
- 可读性 -更难扫描和编辑
- 丰富的格式 -列表、粗体、代码块在XML中很冗长
混合方法 让我们两全其美。
______________________________________________________________________
使用meta.yaml进行项目识别
代替内联标签(#user=John #project=Alpha),我们使用结构化方法:
项目根目录中的meta.yaml:
codename: ProjectName # Required - used for tagging
user: Username # Required - used for tagging
team: TeamName # Optional - stored in metadata
related_projects: # Optional - stored in metadata
- Alpha
- Beta
- Enigma它是如何工作的:
- 会话开始: 克劳德检查
./meta.yaml在项目根中 - 如果存在: 用途
codename和user用于自动Yggdrasil标签 - 如果缺失: 回退到
user:default_user和project:default_project
优点:
- 无需记住每条消息中的标签
- 跨会话的一致标记
- 与代码一起存储的项目元数据
- 团队协作上下文可用
______________________________________________________________________
文件结构
~/.claude/
├── CLAUDE.md # Main configuration (this is the CLAUDE.md from this repo!).
└── settings.json # Claude Code global user settings.
project-root/
├── meta.yaml # Project identification for Yggdrasil.
├── .mcp.json # MCP server configurations.
├── .claude/
│ └── settings.local.json # Project-specific settings.
└── CLAUDE.md # Optional project-specific overrides.______________________________________________________________________
关键设计决策
1.尺寸优化
为什么? 超过600行的文件显示对中间内容的关注度下降。
怎样:
- 删除了详细的工具描述(Claude在函数列表中看到了它们)
- 专注于如何以及何时,而不是存在什么
- 使用简洁的模式而不是详尽的文档
示例-避免列出所有MCP服务器工具(由于工具描述,Claude知道这些工具的作用):
## Yggdrasil MCP
### Available Tools:
- save_memory - Store new information...
- get_memory - Retrieve specific memory...
[list of 27 tools with descriptions]示例-告诉克劳德在某些时刻和情况下如何表现:
## Yggdrasil MCP (Semantic Memory Server)
**Trigger:** `mcp__Yggdrasil__*` tools detected
**YOU MUST:**
- Read meta.yaml at session start
- Tag memories with user:{user} and project:{codename}
- Use search_memories for semantic search
[Key patterns and when to save]2.三明治优先级结构
为什么? 系统提示的开始和结束得到了最高的关注。
怎样:
- 开始时的关键规则(优先级#1)
- 接下来是一般偏好(优先级#2)
- MCP配置位于中间(优先级#4)
- 最后的关键提醒(优先级#3)
3.MCP条件加载
为什么? 不同的环境有不同的MCP服务器。
怎样:
- 每个MCP部分都有明确的触发条件
- 为MCP不可用时定义的回退行为
- 会话开始时的检测协议
4.meta.yaml集成
为什么? 一致的项目标识,没有内联标签。
怎样:
- 项目根目录中的结构化YAML文件
- 必填字段:
codename,user - 存储在Yggdrasil元数据中的可选字段
5.记忆指南(何时保存)
为什么? 克劳德需要指导什么值得坚持。
类别:
- 决策与解决方案
- 用户和项目背景
- 技术知识
- 项目进度
- 会话上下文
______________________________________________________________________
用法
安装
- 复制
CLAUDE.md到~/.claude/CLAUDE.md:
cp CLAUDE.md ~/.claude/CLAUDE.md- 创建
meta.yaml在项目根目录中:
codename: MyProject
user: YourName
team: Personal- 在中配置MCP服务器
.mcp.json(项目根或~/.claude/):
{
"mcpServers": {
"Yggdrasil": {
"type": "http",
"url": "http://localhost:8080/mcp-project"
}
}
}______________________________________________________________________
测试您的配置
验证检查表
✓ Structure Test:
[ ] Critical rules in first 100 lines?
[ ] MCP configs in middle section?
[ ] Reminder in last 60 lines?
[ ] Total under 600 lines?
✓ Content Test:
[ ] Priority #1 rules are truly non-negotiable?
[ ] MCP sections have clear triggers?
[ ] Reminder repeats Priority #1 rules?
✓ Effectiveness Test:
[ ] Start new Claude session
[ ] Ask "What are your critical rules?"
[ ] Verify Priority #1 rules mentioned first
[ ] Test MCP detection with available servers______________________________________________________________________
贡献
修改CLAUDE.md时:
- 保持尺寸在600行以下
- 保持三明治结构 (优先级#1→ #2 → #4 → #3)
- 更新开始和结束 对于关键规则
- 使用实际的Claude Code会话进行测试
- 直接询问Claude Code -开始对话并问:
Can you read my CLAUDE.md and tell me if it's clear and well-structured? What works well and what could be improved? - 在您自己的研究文件中记录更改
______________________________________________________________________
鸣谢
特别感谢 雅各布 · 戈斯蒂尼亚克 通过我们对优化的CLAUDE.md结构和注意力模式的讨论来启发这个项目。
______________________________________________________________________
参考文献
______________________________________________________________________
📚 脚注
\[1\] MCP内存服务器
用于持久上下文存储的可用MCP内存服务器:
