二、Claude Code 核心配置详解:settings.json 与三层记忆体系

前言

当你安装好 Claude Code,兴冲冲地打开它开始编程,可能会遇到这些问题:

  • 每次新会话都要重新交代项目背景,AI 像失忆了一样
  • AI 总是试图执行你不希望的操作,比如删除文件、安装依赖
  • 不同项目的规则混在一起,写 React 项目时它用 Python 风格

这些问题的根源是:你还没有配置 Claude Code

Anthropic 官方反复强调一个观点:模型能力是地板,配置质量才是天花板。花时间把配置做好,比追最新模型版本更有实际收益。

本文将深入讲解 Claude Code 的两大核心配置机制:settings.json 权限配置三层记忆体系,帮你把 Claude Code 从"能用"变成"好用"。


1. settings.json — Claude Code 的"控制面板"

1.1 什么是 settings.json?

settings.json是 Claude Code 的核心配置文件,控制着 AI 的行为边界、权限范围和功能开关。你可以把它理解为给 AI 定的"规矩"——哪些事情可以直接做,哪些事情需要问你,哪些事情绝对禁止。

1.2 配置文件的三个层级

Claude Code 设计了三级配置文件体系,从全局到项目级,层层覆盖:

↓ 优先级递增,后者覆盖前者同名配置

💡最佳实践:通用的安全规则放在全局配置中,项目特定的配置放在项目级配置中。个人偏好(如你本地的测试环境地址)放在.local.json中。

1.3 核心配置项详解

一个典型的settings.json长这样:

{"permissions":{"allow":["Read","Write","Bash(npm *)","Bash(git *)","Bash(node *)","Bash(python *)","Bash(npx *)"],"deny":["Bash(rm -rf *)","Bash(git push --force *)","Bash(sudo *)"]},"model":"sonnet","autoCompactThreshold":80}
1.3.1 权限控制(permissions)

这是最重要的配置,决定了 AI 在执行操作时是否需要问你确认:

权限配置说明示例
allow白名单,AI 可直接执行,不再弹窗确认"Read"— 读取文件
deny黑名单,AI 绝对禁止执行"Bash(rm -rf *)"— 禁止递归删除
未配置的每次执行前都会弹窗询问用户默认行为

推荐的安全配置

{"permissions":{"allow":["Read","Write","Edit","Bash(npm *)","Bash(npx *)","Bash(git status)","Bash(git diff *)","Bash(git log *)","Bash(git add *)","Bash(git commit *)","Bash(ls *)","Bash(cat *)","Bash(find *)","Bash(grep *)"],"deny":["Bash(rm -rf *)","Bash(git push --force *)","Bash(git reset --hard *)","Bash(sudo *)","Bash(curl * | sh)","Bash(wget * | sh)"]}}

⚠️安全提醒:初学者建议保持默认设置(所有操作都需确认),等熟悉了 Claude Code 的行为模式后再逐步放开白名单。

1.3.2 模型选择(model)
{"model":"sonnet"}

Claude Code 支持通过别名或具体模型名切换模型:

模型别名适用场景特点
haiku简单补全、格式化、小修改速度极快,成本最低
sonnet日常开发、功能实现(默认推荐速度与质量最佳平衡
opus复杂架构设计、疑难 Bug、算法难题推理能力最强,成本较高

模型选择的四种方式(优先级从高到低):

1. claude --model opus ← 启动参数(临时) 2. export ANTHROPIC_MODEL=opus ← 环境变量 3. settings.json → "model": "opus" ← 配置文件(推荐) 4. 会话中 /model 命令 ← 运行时切换
1.3.3 上下文压缩阈值(autoCompactThreshold)
{"autoCompactThreshold":80}

当上下文使用量达到该百分比时,Claude Code 会自动压缩对话历史为摘要,腾出空间。默认值通常为 80,意味着上下文使用 80% 时自动压缩。

💡 建议设置为 60~70,避免等到上下文快满了才压缩——那时 AI 已经开始"遗忘"早期内容,回答质量下降。

1.3.4 其他常用配置
{"env":{"ANTHROPIC_BASE_URL":"https://api.example.com","ANTHROPIC_AUTH_TOKEN":"your-api-key","HTTP_PROXY":"http://127.0.0.1:7890","HTTPS_PROXY":"http://127.0.0.1:7890","CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC":"1"},"cleanupPeriodDays":30,"autoMemoryEnabled":true}
配置项说明
ANTHROPIC_BASE_URLAPI 代理地址(使用第三方服务时需要)
ANTHROPIC_AUTH_TOKENAPI 密钥
HTTP_PROXY/HTTPS_PROXY网络代理(国内用户通常需要)
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC设为"1"禁用自动更新、遥测等非必要流量
cleanupPeriodDays会话记录保留天数,默认 30 天
autoMemoryEnabled自动记忆开关,默认true

2. 三层记忆体系 — 让 AI 越用越懂你

Claude Code 的每个会话默认从全新的上下文窗口开始。为了实现跨会话的知识传递,官方设计了三层记忆体系,每一层解决不同层次的问题:

2.1 第一层:CLAUDE.md — 项目的"入职手册"

CLAUDE.md 是 Claude Code 中最重要的配置文件。它就像你给新来的实习生写的"项目入职手册"——告诉 AI 这个项目的背景、技术栈、编码规范和当前进度。

没有 CLAUDE.md:AI 每次开始工作都要花时间"重新认识"你的项目。
有了 CLAUDE.md:AI 一启动就知道项目的全部背景,效率大幅提升。

2.1.1 CLAUDE.md 的三级位置

Claude Code 为 CLAUDE.md 设计了三个层级,同时生效、不冲突

┌─────────────────────────────────────────────────────────────┐ │ 全局级 ~/.claude/CLAUDE.md │ │ → 所有项目都会读取 │ │ → 适合写:个人偏好、回复语言、身份信息 │ │ 例如:"永远用中文回答"、"我是后端工程师" │ ├─────────────────────────────────────────────────────────────┤ │ 项目级 项目根目录/CLAUDE.md │ │ → 仅当前项目生效 │ │ → 适合写:技术栈、架构、编码规范、进度(提交 Git 团队共享) │ ├─────────────────────────────────────────────────────────────┤ │ 文件夹级 子目录/CLAUDE.md │ │ → 仅该子目录生效 │ │ → 适合写:模块专属约定 │ │ 例如:src/payment/CLAUDE.md 写支付模块踩过的坑 │ └─────────────────────────────────────────────────────────────┘ 优先级:文件夹级 > 项目级 > 全局级

💡 还有两个特殊位置:

  • CLAUDE.local.md(项目根目录):个人项目偏好,不提交 Git
  • 组织级策略文件(/Library/Application Support/ClaudeCode/CLAUDE.md):由 IT 统一管理,无法被个人排除
2.1.2 编写 CLAUDE.md

快速生成:在项目目录启动 Claude Code,输入/init,AI 会自动扫描项目并生成一份 CLAUDE.md 初稿。

手动编写模板

# 项目名称 ## 项目概述 一句话描述这个项目做什么。 ## 技术栈 - 前端:Next.js 14 + TypeScript + Tailwind CSS - 后端:Next.js API Routes - 数据库:Prisma + PostgreSQL - 部署:Vercel ## 项目结构 src/ ├── app/ # Next.js App Router 页面 ├── components/ # React 组件 │ ├── ui/ # 通用 UI 组件 │ └── features/ # 业务组件 ├── lib/ # 工具函数 ├── prisma/ # 数据库 Schema └── types/ # TypeScript 类型定义 ## 编码规范 - 使用函数式组件 + React Hooks - 组件文件使用 PascalCase(如 UserCard.tsx) - 工具函数使用 camelCase - 所有数据库操作通过 Prisma Client - API 返回统一格式:{ success, data?, error? } ## 构建与测试 - 安装依赖:npm install - 开发模式:npm run dev - 构建:npm run build - 测试:npm test - 类型检查:npx tsc --noEmit ## 当前状态 - 用户认证模块已完成 - 商品列表 API 开发中 - 搜索功能待开发 ## 注意事项 - .env 文件包含敏感信息,不要提交到 Git - prisma/dev.db 是本地数据库,不提交 - 所有新功能先创建 Git 分支再开发

编写原则

原则说明
保持简洁控制在 200 行以内,过长会消耗过多上下文
足够具体写"使用 2 空格缩进"而不是"正确格式化代码"
写明禁忌把"不要做什么"也写清楚
保持更新项目加了功能、踩了坑,及时同步更新
避免冲突不同文件中的规则不要互相矛盾

进阶用法 — 导入外部文件

CLAUDE.md 支持@path/to/file语法导入其他文件:

有关项目概述,请参阅 @README.md 有关可用命令,请参阅 @package.json ## 额外规范 - Git 工作流参见 @docs/git-workflow.md - API 设计参见 @docs/api-design.md
2.1.3 使用 .claude/rules/ 组织规则

对于大型项目,可以将指令拆分为多个独立文件:

项目根目录/ └── .claude/ └── rules/ ├── testing.md # 测试规范 ├── api-design.md # API 设计规范 ├── security.md # 安全规范 └── frontend/ ├── components.md # 组件开发规范 └── styling.md # 样式规范

路径范围规则(按需加载,节省上下文):

---paths:-"src/api/**/*.ts"---# API 开发规则-所有 API 端点必须包括输入验证-使用标准错误响应格式-包含 OpenAPI 文档注释

这样配置的规则,只有在 Claude 处理src/api/下的 TypeScript 文件时才会加载。

2.2 第二层:Auto Memory — AI 的"工作笔记本"

如果说 CLAUDE.md 是你主动立下的规矩,那 Auto Memory 就是AI 在干活过程中默默记下的设计笔记

2.2.1 工作原理

Auto Memory 让 Claude 从日常交互中自动积累知识,无需手动配置:

你与 Claude Code 对话 │ ▼ ┌──────────────────┐ │ 后台分析对话内容 │ │ 提取有价值的信息 │ └────────┬─────────┘ │ ▼ ┌─────────────────────────────────────┐ │ 自动记忆存储 │ │ │ │ ~/.claude/projects/<project>/ │ │ memory/ │ │ ├── MEMORY.md ← 核心索引 │ │ ├── debugging.md ← 调试笔记 │ │ ├── api-conventions.md ← API 决策 │ │ └── ... │ └─────────────────────────────────────┘

加载机制

  1. 每次会话启动时,先加载MEMORY.md的前 200 行(或 25KB)作为索引
  2. 遇到具体问题时,AI 按需读取对应的子文件获取详细信息
  3. 不会把所有记忆一次性全部塞进上下文
2.2.2 自动记忆记录什么?
类型含义示例
user关于你的信息你是 Go 专家但不熟悉 React
feedback你给过的工作指导“不要 mock 数据库”、“回复要简洁”
project项目相关信息进度、决策、技术选型
reference外部资源索引“设计文档在 docs/design.md”
2.2.3 启用与管理
# 在 Claude Code 会话中输入/memory# 在菜单中选择"启用 Auto Memory"

也可以通过配置文件控制:

{"autoMemoryEnabled":true}

管理技巧

  • Ctrl+O查看当前被加载的记忆内容
  • 记错了直接跟 AI 说"忘掉刚才说的 XX",它会删除
  • /memory打开记忆文件夹,手动编辑或删除记忆文件
  • 主动说"记住 XX",AI 会写入自动记忆

2.3 第三层:自建参考文档 — 专项知识按需加载

某些知识不适合全塞进 CLAUDE.md(太长、太专业),但 AI 需要时必须能查到。这就是第三层记忆的作用。

2.3.1 典型场景
docs/ ├── brand-visual.md # 品牌视觉规范:颜色、字体、间距 ├── copywriting-style.md # 产品文本风格:语调、术语表 └── api-conventions.md # API 约定:请求响应格式、错误码

在 CLAUDE.md 中加上指引:

## 外部参考文档 - 修改前端视觉、调颜色、调间距时 → 必读 `docs/brand-visual.md` - 写产品文案、按钮文字、提示语时 → 必读 `docs/copywriting-style.md` - 写 API、定义返回格式时 → 必读 `docs/api-conventions.md`

这样 AI 只在"需要的时候"才去读完整文档,既保证准确性,又不占多余上下文。

2.3.2 与 .claude/rules/ 的区别
特性自建参考文档.claude/rules/
存放位置项目任意目录.claude/rules/固定目录
加载方式通过 CLAUDE.md 中的指引按需读取可通过paths字段自动按需加载
适用场景专项知识(设计规范、业务规则)编码规范、测试规范等技术规则
维护方式手动维护手动维护

3. 三层记忆的协作关系

三层记忆不是孤立的,它们在每次会话中协同工作:

┌─────────────────────────────────────────────────────────────┐ │ 会话启动 │ │ │ │ │ ┌────────────┼────────────────┐ │ │ ▼ ▼ ▼ │ │ 加载 CLAUDE.md 加载 MEMORY.md 等待按需调用 │ │ (全量注入) (前200行索引) (参考文档) │ │ │ │ │ │ │ ▼ ▼ ▼ │ │ ┌──────────────────────────────────────────┐ │ │ │ 合并到系统上下文 │ │ │ │ CLAUDE.md(明规则)+ 记忆索引(隐规则) │ │ │ └──────────────────────┬───────────────────┘ │ │ │ │ │ ▼ │ │ 开始会话交互 │ │ │ │ │ ┌───────────┼───────────┐ │ │ ▼ ▼ ▼ │ │ AI 执行任务 遇到专项知识 需要详细记忆 │ │ │ → 读参考文档 → 读记忆子文件 │ │ │ │ │ │ │ └───────────┼───────────┘ │ │ │ │ │ ▼ │ │ 会话结束 │ │ │ │ │ ▼ │ │ ┌───────────────────────┐ │ │ │ 后台分析本次对话 │ │ │ │ 提取有价值信息 │ │ │ │ 写入 Auto Memory │ │ │ └───────────────────────┘ │ └───────────────────────────────────────────────────────────────┘

一句话总结

  • 第一层 CLAUDE.md:你主动写的"明规则",全量加载,优先级最高
  • 第二层 Auto Memory:AI 自己记的"隐规则",按需读取,越用越懂你
  • 第三层参考文档:手动维护的专项知识,AI 遇到对应任务才读

本质认知:Agent 的所有"记忆",本质上都是在合适的时候向大模型注入压缩过的上下文。三层记忆是组织这些上下文的分层策略,核心目标是在有限的上下文窗口中,最大化注入有价值的信息。


4. 实战配置清单

4.1 新手起步配置

// ~/.claude/settings.json{"permissions":{"allow":["Read"],"deny":["Bash(rm -rf *)","Bash(sudo *)"]},"model":"sonnet"}

先保持最小权限,所有写操作和命令执行都需确认,逐步熟悉后再放开。

4.2 团队项目推荐配置

// 项目/.claude/settings.json{"permissions":{"allow":["Read","Write","Edit","Bash(npm *)","Bash(git status)","Bash(git diff *)","Bash(git add *)","Bash(git commit *)","Bash(npx tsc --noEmit)","Bash(npm test)"],"deny":["Bash(rm -rf *)","Bash(git push --force *)","Bash(git reset --hard *)","Bash(sudo *)"]},"model":"sonnet","autoCompactThreshold":70}

4.3 快速配置流程

1. 安装 Claude Code npm install -g @anthropic-ai/claude-code 2. 全局配置 vim ~/.claude/settings.json ← 设置基础权限和模型 3. 进入项目目录 cd your-project 4. 生成项目说明 claude > /init ← 自动生成 CLAUDE.md 5. 开启自动记忆 > /memory ← 选择"启用 Auto Memory" 6. 编辑全局偏好 > /memory ← 选择"全局 CLAUDE.md" 写入个人偏好(如"永远用中文回答") 7. 开始使用 直接描述需求即可

5. 常见问题

CLAUDE.md 写了但 AI 不遵守?

  1. 运行/memory确认文件已被正确加载
  2. 检查文件是否在正确位置
  3. 指令写得更具体:“使用 2 空格缩进” 而非 “正确格式化”
  4. 检查是否有跨文件的冲突规则

上下文用完了怎么办?

命令效果适用时机
/compact压缩历史为摘要,保留关键决策同一任务对话过长,还要继续
/clear彻底清空,等于重开一个任务结束,开始全新任务
/context查看上下文占比和各部分占用诊断什么在消耗上下文

💡 心法:宁可多/clear几次重新介绍背景,也不要一直聊下去。每次/clear都是给 AI 一次重新聚焦的机会。

自动记忆记错了怎么办?

直接告诉 AI “忘掉 XX”,或者用/memory打开记忆文件夹手动删除。所有记忆文件都是纯文本 Markdown,可以直接编辑。


6. 总结

Claude Code 的配置体系可以概括为两个核心机制:

机制解决的问题核心文件
settings.json“AI 能做什么、不能做什么”~/.claude/settings.json
三层记忆“AI 知道什么、该记住什么”CLAUDE.md+ Auto Memory + 参考文档

settings.json控制行为边界——权限白名单让日常操作更顺畅,权限黑名单防止危险操作,模型选择平衡性能与成本。

三层记忆管理知识传递——第一层 CLAUDE.md 是全量注入的明规则,第二层 Auto Memory 是按需读取的隐规则,第三层参考文档是专项知识的按需加载。三者配合,让 AI 越用越懂你。

配置不是一次性的工作,而是持续优化的过程。随着你对 Claude Code 的使用越来越深入,不断调整权限、完善 CLAUDE.md、校准自动记忆,AI 会逐渐从一个"聪明的陌生人"变成"真正懂你的搭档"。


参考资源

官方文档

资源链接说明
Claude Code 官方文档docs.anthropic.com/en/docs/claude-code完整使用文档
Claude Code 记忆系统docs.anthropic.com/en/docs/claude-code/memory记忆系统官方指南
Claude Code 权限管理docs.anthropic.com/en/docs/claude-code/permissions权限与安全配置
Anthropic API 文档docs.anthropic.comAPI 参考与模型说明

社区资源

资源链接说明
Karpathy 的 Claude Skillsgithub.com/multica-ai/andrej-karpathy-skillsKarpathy 分享的几百行通用规则