Windows 环境下 Claude Code 的目录结构详解

Claude Code 学习笔记

分类:前置知识

核心主题:Claude Code 在 Windows 系统中的所有相关目录路径及各自作用

主要内容:以本机项目(D:\claude)为例,全面解析 Windows 系统中 Claude Code 的各类目录分布、路径位置、配置层级关系、记忆存储机制以及常见维护方法,帮助用户系统化理解 Claude Code 在 Windows 平台上的文件组织体系。

关键词:Claude Code, Windows, 目录结构, 文件路径, 配置目录, 缓存目录, settings.json, CLAUDE.md, projects, AppData

一、概述

Claude Code 在 Windows 系统中涉及多个目录,分散在用户目录、项目目录等不同位置。这些目录分别存储配置、缓存、记忆、项目指令等不同数据。理解这些目录的作用对于日常使用、故障排查、数据备份都非常重要。

从整体来看,Claude Code 的目录体系可以分为两大层级:用户级全局目录和项目级目录。用户级目录位于 C:\Users\aibing\.claude\ 下,存储对所有项目通用的设置和记忆数据;项目级目录则位于每个项目的根目录下,以 .claude\CLAUDE.md 为核心,提供项目特定的配置和行为指令。

此外,还有由 npm 安装的程序目录和系统临时目录中的运行时数据。本文将从用户级目录开始,逐一展开每个层级的作用与内容。

核心要点:Claude Code 的目录体系分为用户级(全局)、项目级(局部)和运行时(临时)三个层次,理解各层的职责范围和覆盖关系是高效使用 Claude Code 的基础。

二、用户级全局目录

用户级全局目录是所有 Claude Code 项目中共享的配置与数据存储位置。它位于 Windows 用户主目录下的 .claude 隐藏文件夹中,是 Claude Code 启动时加载的第一级配置来源。用户级目录的优先级最低,会被项目级配置覆盖,但它提供了合理的默认值,使得新项目无需重复配置。

下面的内容将逐一介绍该目录下的各个子目录和文件,涵盖全局设置、项目记忆、任务管理、团队协作等不同维度的数据。

2.1 C:\Users\aibing\.claude\ — 用户级全局配置目录

该目录是 Claude Code 在 Windows 系统中的主要配置存储位置,存放所有项目通用的设置文件。它包含四个核心文件/子目录:settings.json(全局配置文件)、keybindings.json(快捷键绑定)、skills\(自定义技能)和 mcp.json(MCP 服务器配置)。

全局配置定义了默认的权限策略、主题外观、模型选择等通用参数,并且可以被项目级配置选择性覆盖。理解这一点非常重要:当某个设置在所有项目中表现一致时,应该放在全局配置中;当需要针对特定项目调整行为时,则应该在项目级配置中覆盖。

# 用户级全局目录的典型结构
C:\Users\aibing\.claude\
├── settings.json # 全局配置文件
├── keybindings.json # 键盘快捷键绑定
├── mcp.json # MCP 服务器配置
├── skills\ # 自定义技能目录
├── projects\ # 项目记忆存储
├── tasks\ # 任务列表目录
├── teams\ # 团队配置目录
└── scheduled_tasks.json # 定时任务持久化
优先级规则:项目级配置始终优先于用户级全局配置。即同一个配置项如果在 .claude/settings.json(项目级)和 ~/.claude/settings.json(用户级)中同时存在,则以项目级的值为准。

2.2 settings.json — 全局配置文件

这是用户级目录中最核心的文件,定义了 Claude Code 在全局范围内的默认行为。它包含权限白名单(permissions)、环境变量(env)、钩子配置(hooks)、MCP 服务器列表(mcpServers)以及界面主题(theme)等设置项。该文件以 JSON 格式组织,Claude Code 启动时自动读取。

一个好的实践是,将通用的、不涉及敏感信息的权限声明放在全局配置中,而将项目特定的环境变量和钩子放在项目级配置中。例如,如果所有项目都需要允许 npmgit 命令,可以在全局配置中一次性声明,避免在每个项目中重复授权。

# 全局 settings.json 典型内容示例
{
  "permissions": {
    "allow": ["npm", "git", "node"]
  },
  "theme": "dark",
  "model": "claude-sonnet-4-20250514"
}

2.3 keybindings.json — 键盘快捷键绑定配置

该文件用于自定义 Claude Code 中的键盘快捷键,允许用户将常用的操作绑定到特定的按键组合上。它支持单键绑定和和弦绑定(多个按键序列),例如可以将 Ctrl+S 映射为提交聊天内容,或将 Ctrl+K 映射为清除对话上下文。

快捷键配置为全局生效,在所有项目中表现一致。如果需要临时切换绑定方案,可以通过修改此文件并重启 Claude Code 来应用。该文件使用 JSON 格式,每个绑定由一个触发按键和一个操作命令组成。

2.4 projects\ — 项目记忆存储目录

这是 Claude Code 实现跨会话记忆持久化的核心目录。每个项目在首次使用时,系统会根据项目路径生成一个唯一的 hash 值,以此 hash 值作为子目录名称,在 projects\ 下创建对应的存储空间。每个项目目录内包含一个 memory\ 子目录,其中存放 MEMORY.md 索引文件以及与项目相关的各类记忆文件。

记忆系统的作用是在不同的 Claude Code 会话之间保持上下文连续性。当用户在同一个项目中启动新会话时,Claude Code 会自动加载之前存储的记忆数据,从而避免重复介绍项目背景和已做过的决策。这也意味着,如果误删了 projects\ 下的某个目录,该项目的跨会话记忆将会丢失。

# projects 目录结构示例
C:\Users\aibing\.claude\projects\
├── a1b2c3d4e5f6\ # 项目 A(按路径 hash 命名)
│  └── memory\
│     ├── MEMORY.md # 记忆索引文件
│     └── *.md # 其他记忆文件
├── f6e5d4c3b2a1\ # 项目 B
│  └── memory\
│     └── MEMORY.md
└── ...

维护提示

projects\ 目录不建议手动删除或修改其中的文件。如果需要搬家或迁移环境,应当完整复制整个 .claude\ 目录,以确保记忆数据不丢失。如果发现跨会话记忆未生效,可以检查 projects\ 下是否存在对应项目的 hash 目录。

2.5 tasks\ — 任务列表目录

该目录用于存储团队协作场景下的任务数据。当用户创建一个长时间运行的后台任务或安排定时任务时,相关的任务状态、进度和分配信息会持久化到该目录中。它使得 Claude Code 能够在会话重启后继续追踪未完成的任务。

对于单人使用的场景,该目录的使用频率较低,但它仍然是 Claude Code 任务系统的基础设施。如果该目录被删除或损坏,正在进行的后台任务将丢失进度信息。

2.6 teams\ — 团队配置文件目录

该目录存储团队的配置文件(config.json)和团队成员信息。团队配置允许组织共享一组标准的设置和权限策略,使得团队中的所有成员在 Claude Code 行为上保持一致。这对于企业级部署和多人协作项目尤为有用。

团队配置的优先级介于用户级和项目级之间:它可以覆盖用户级的个别设置,但项目级配置仍然具有最高决定权。在实际使用中,团队配置通常由管理员统一维护,普通用户无需直接修改该目录下的文件。

2.7 scheduled_tasks.json — 定时任务持久化文件

该文件存储通过 schedule 技能创建的定时任务(Cron 任务)的持久化数据。无论是周期性的代码检查、定时的部署监控,还是循环执行的自定义任务,其调度规则和状态信息都会保存在此文件中。该文件保证了定时任务在跨会话情境下的可靠执行。

由于该文件包含所有的定时任务定义,如果意外删除,所有已配置的定时任务将丢失。建议在重置或迁移环境前先备份此文件。

三、项目级目录(在项目根目录下)

项目级目录位于每个项目的根目录下,是与特定项目绑定的配置和行为指令的存放位置。它由三个主要部分组成:.claude\settings.json(项目特定配置)、CLAUDE.md(项目指令文件)和 .claude\worktrees\(工作树隔离目录)。项目级配置的优先级高于用户级全局配置。

项目级目录的设计理念是实现配置的"就近原则"——将与项目紧密相关的设置和指令放在项目内部,使得项目可以独立于用户环境运行,也方便通过版本控制系统(如 Git)在团队成员之间共享这些配置。

3.1 .claude\settings.json — 项目级配置文件

该文件位于项目根目录的 .claude\ 隐藏文件夹中,与用户级 settings.json 的文件格式相同,但作用范围仅限于当前项目。它支持定义环境变量(env)、钩子脚本(hooks)、权限规则(permissions)和 MCP 服务器(mcpServers)等配置项。当用户进入项目目录启动 Claude Code 时,系统会优先读取此文件,并用其中的值覆盖用户级全局配置中的同名设置。

典型的使用场景包括:在 env 中定义项目所需的 API 密钥和数据库连接字符串(建议添加到 .gitignore 以保护敏感信息),在 hooks 中配置每次提交前自动运行 lint 检查,在 permissions 中授予项目特定的命令执行权限等。

# 项目级 settings.json 典型内容示例
{
  "permissions": {
    "allow": ["npm", "node", "python"],
    "allowlist": ["npm test", "npm run build"]
  },
  "env": {
    "NODE_ENV": "development",
    "API_BASE_URL": "http://localhost:3000"
  },
  "hooks": {
    "preCommit": "npm run lint"
  }
}

3.2 CLAUDE.md — 项目指令文件(项目根目录)

这是项目级配置中最重要的文件,它不是放在 .claude\ 目录下,而是直接放在项目根目录中。每次启动新会话时,Claude Code 会自动加载 CLAUDE.md 的内容作为系统提示的一部分,确保 Claude 始终了解项目的上下文、技术栈、代码规范等重要信息。

CLAUDE.md 的优先级是所有配置中最高的,高于项目级 settings.json 和用户级全局配置。这意味着即使在 settings.json 中定义了某些行为指令,如果 CLAUDE.md 中有冲突的描述,Claude 将以 CLAUDE.md 中的指令为准。因此,CLAUDE.md 最适合用来描述项目的核心规则、架构决策和重要约定。

优先级层级(从高到低)
  1. CLAUDE.md(项目根目录)— 最高优先级的项目指令
  2. .claude/settings.json(项目级)— 项目特定配置
  3. ~/.claude/settings.json(用户级)— 全局默认配置

最佳实践

CLAUDE.md 应当被纳入 Git 版本管理,以便团队成员共享项目知识。建议在文件中包含:项目概述、技术栈清单、代码风格指南、重要架构决策、目录结构说明以及常用命令速查。避免在 CLAUDE.md 中放置敏感信息(如密码和 API 密钥)。

3.3 .claude\worktrees\ — 工作树目录

该目录由 Claude Code 的 EnterWorktree 工具自动创建和管理,用于实现 Agent 的隔离运行环境。当 Claude Code 需要在隔离的环境中执行高风险操作(如大规模代码重构、破坏性修改)时,会在此目录下创建一个独立的工作树,将项目文件的副本与主工作目录隔离开来。

工作树目录是临时性的,在操作完成后可以由用户选择保留或自动清理。它通常位于 .claude\worktrees\ 下,每个工作树对应一个子目录,这些子目录不应被手动修改或删除,而应通过 ExitWorktree 工具进行管理。

四、安装与程序目录

Claude Code 通过 npm 以全局模块的形式安装在 Windows 系统中,因此它的程序文件位于 Node.js 的全局模块目录中。同时,系统运行过程中产生的临时文件存储在 Windows 的 AppData 临时目录下。理解和定位这些目录对于程序故障排查和磁盘空间管理有帮助。

4.1 Node.js 全局模块目录

通过 npm install -g 安装的 Claude Code 程序文件位于 C:\Users\aibing\AppData\Roaming\npm\node_modules\@anthropic-ai\claude-code\ 目录下。在该目录中可以找到 Claude Code 的核心代码、依赖库和资源文件。claude.cmd 是 Windows 命令提示符下的入口脚本,而 claude 则是 PowerShell 和 Bash 环境下的可执行命令。

如果需要更新 Claude Code 到最新版本,可以运行 npm update -g @anthropic-ai/claude-code。如果遇到程序异常,重新安装(先卸载再安装)通常可以解决问题。npm 全局模块目录在安装时自动加入系统 PATH 环境变量,因此用户可以在任意目录下直接调用 claude 命令。

# Claude Code 在 npm 全局模块中的路径
C:\Users\aibing\AppData\Roaming\npm\
├── node_modules\
│   └── @anthropic-ai\
│       └── claude-code\ # Claude Code 程序目录
├── claude.cmd # Windows 命令入口
└── claude # Bash/PowerShell 入口

4.2 AppData 缓存目录

Claude Code 在运行过程中会产生一些临时文件,这些文件存储在 C:\Users\aibing\AppData\Local\Temp\claude\ 目录下。该目录包含子代理的输出文件、临时会话数据、日志文件等运行时产物。这些文件是高速缓存性质的数据,在会话结束后不再有实际用途。

此临时目录的内容可以安全地手动清理,不会影响 Claude Code 的正常功能。如果用户发现磁盘空间不足,清理 Temp\claude\ 目录是一个简单有效的操作。不过需要注意的是,正在进行的活动会话可能会向该目录写入数据,清理前最好确认没有活跃的会话在运行。

维护提示

临时目录 Temp\claude\ 可以放心清理,但 Roaming\npm\node_modules\@anthropic-ai\claude-code\ 是程序目录,不应手动删除。如果希望彻底清除 Claude Code,应使用 npm uninstall -g @anthropic-ai/claude-code 命令。

五、会话与临时目录

除了程序临时目录外,Claude Code 在每次对话过程中还会产生多种临时数据。这些数据包括会话上下文、后台任务输出和子代理的 JSONL 转录文件。理解这些临时数据的位置和生命周期有助于判断在何时可以安全释放磁盘空间,以及在排错时如何定位日志线索。

5.1 临时会话文件

每次启动 Claude Code 会话时,系统会在系统临时目录(%TEMP%C:\Users\aibing\AppData\Local\Temp\)下创建一些临时文件。这些文件保存了当前对话的上下文数据、已发送和接收的消息记录、以及对话状态的快照。当会话正常结束时,大多数临时文件会被自动清理,但在异常退出(如进程崩溃或强制关闭终端)的情况下,可能会有残留文件。

后台任务的输出文件也存储在此区域,供用户随时查询任务执行状态。子代理的 JSONL 转录文件则记录了子代理在独立隔离环境中的完整操作日志,这些文件主要用于调试和审计目的。

5.2 日志文件

如果用户在项目级或全局级配置了 hooks(钩子),Claude Code 可能会在 .claude\ 目录下生成 hooks.log 日志文件,记录钩子脚本的执行情况和任何错误信息。例如,如果配置了 preCommit 钩子来自动运行代码格式化,那么每次提交时钩子的执行结果都会追加到这个日志文件中。

日志文件对于排查钩子脚本的故障非常有用。当钩子执行失败导致流程中断时,可以通过查看 hooks.log 中的错误信息快速定位问题。该日志文件会不断增长,建议定期检查或配置日志轮转策略。

# hooks.log 示例内容
[2026-05-01 16:13:42] Running preCommit hook: npm run lint
[2026-05-01 16:13:45] Hook completed successfully
[2026-05-01 16:14:10] Running preCommit hook: npm run lint
[2026-05-01 16:14:12] ERROR: Lint failed - 3 errors found

六、目录关系图

为了更直观地理解 Claude Code 各目录之间的层级关系和覆盖顺序,下面用文字描述的方式呈现整个目录体系的结构。这种层次化的组织方式确保了配置的灵活性和可维护性——通用设置放在顶层,项目特定设置在底层,下层覆盖上层的同名配置。

配置层级关系

用户级配置~/.claude/settings.json)← 全局默认值,最低优先级

↓ 被覆盖

项目级配置.claude/settings.json)← 项目特定值,中等优先级

↓ 被覆盖

项目指令CLAUDE.md)← 最高优先级的项目指令

记忆系统关系

项目根路径 → hash 计算 → ~/.claude/projects/[hash]/memory/MEMORY.md

每个项目根据其文件系统路径生成唯一的 hash 值,作为记忆存储的目录名。这种方式保证了即使多个项目同名,只要位于不同的父目录中,它们的记忆数据就不会互相干扰。

文件系统关系总览

用户级~/.claude/(全局配置、快捷键、MCP、项目记忆、定时任务)

项目级D:\claude\.claude\(项目设置、工作树)+ D:\claude\CLAUDE.md(指令)

程序级%AppData%/npm/node_modules/@anthropic-ai/claude-code/(程序文件)

运行时%TEMP%/claude/(缓存、日志、临时会话数据)

配置层级对比表

配置层级 文件路径 优先级 作用范围 版本控制
用户级全局 ~/.claude/settings.json 最低 所有项目 建议不纳入
项目级 D:\claude/.claude/settings.json 中等 当前项目 可酌情纳入
项目指令 D:\claude/CLAUDE.md 最高 当前项目 强烈建议纳入

各目录功能对比表

目录/文件 主要用途 是否可手动清理 备份建议
~/.claude/settings.json 全局默认配置 不推荐 必须备份
~/.claude/projects/ 项目跨会话记忆 不推荐 建议备份
~/.claude/scheduled_tasks.json 定时任务数据 不推荐 必须备份
D:\claude/CLAUDE.md 项目行为指令 不推荐 通过 Git 管理
D:\claude/.claude/worktrees/ 隔离工作环境 通过工具管理 不需要
%TEMP%/claude/ 运行时临时数据 可以安全清理 不需要

七、常见问题与维护

在日常使用 Claude Code 的过程中,可能会遇到配置不生效、记忆丢失、磁盘空间不足等问题。本节整理了最常见的问题及其解决方案,帮助用户快速定位和修复问题,保持 Claude Code 的良好运行状态。

7.1 配置不生效

当用户修改了某个设置但 Claude Code 的行为没有改变时,首先应该检查是否在正确的层级上做了修改。例如,如果希望修改仅影响当前项目,应该在项目级的 .claude/settings.json 中配置;如果修改对所有项目生效,则在用户级的 ~/.claude/settings.json 中配置。由于项目级配置会覆盖用户级配置,如果在两个层级中都有同一个设置项,项目级的值最终生效。

此外,某些配置项(如 hooks)修改后需要启动新的会话才会生效。如果修改后未观察到变化,可以尝试关闭当前会话并重新启动 Claude Code。

排查步骤
  1. 确认修改的目标文件是否正确(用户级 vs 项目级)
  2. 确认 JSON 格式是否正确(可以使用 JSON 校验工具检查)
  3. 确认没有其他层级的同名配置在覆盖当前设置
  4. 重启会话后验证修改是否生效

7.2 跨会话记忆丢失

如果 Claude Code 在新建会话后忘记了过去对话中保存的记忆,最可能的原因是 ~/.claude/projects/ 目录下的对应项目 hash 目录丢失或被移动。项目路径的 hash 值是根据绝对路径计算得出的,如果项目目录被移动或重命名,系统会生成一个新的 hash 值,旧的记忆数据就不会被加载。

解决方法是:检查 ~/.claude/projects/ 目录是否存在与当前项目对应的 hash 子目录,如果不存在,可能需要将旧的记忆目录重命名为新路径对应的 hash 值。另一种预防措施是避免频繁移动项目目录的位置。

7.3 磁盘空间清理

随着使用时间的增长,Claude Code 会在系统临时目录中积累大量缓存文件。这些文件位于 C:\Users\aibing\AppData\Local\Temp\claude\,可以安全地定期清理。在 Windows 中,可以手动进入该目录删除所有文件,或者使用磁盘清理工具自动清理系统临时文件。

需要注意的是,不要手动删除 ~/.claude/projects/ 目录下的文件,因为这些是重要的记忆数据,删除后将导致跨会话记忆永久丢失。同样,settings.jsonscheduled_tasks.json 也不建议手动删除或随意编辑。

7.4 环境迁移与备份

如果需要将 Claude Code 的工作环境迁移到另一台 Windows 机器上,只需要备份以下关键文件即可恢复完整的配置:~/.claude/settings.json(全局配置)、~/.claude/keybindings.json(快捷键绑定)和各个项目中的 CLAUDE.md.claude/settings.json(项目配置)。记忆数据(projects\ 目录)虽然不是必需的,但备份后可以保持跨会话记忆的连续性。

迁移后的恢复步骤是:在新机器上安装 Claude Code,然后将备份的配置文件复制到相应的目录位置。如果希望保留所有项目的记忆数据,需要将整个 .claude\ 目录复制到新机器的用户主目录下。

7.5 多项目管理

如果同时使用 Claude Code 管理多个项目,建议为每个项目独立配置 .claude/settings.jsonCLAUDE.md。这样可以确保每个项目的配置互不干扰,也方便通过 Git 在团队内部共享项目特定的配置。

在切换项目时,Claude Code 会自动识别当前所在的项目根目录,并加载对应的项目级配置和 CLAUDE.md。只要项目路径不变,跨会话记忆系统也会自动关联到正确的 hash 目录。如果某个项目不再需要,可以安全地删除项目目录中的 .claude\ 文件夹,但建议先将 CLAUDE.md 留作文档参考。

八、核心要点总结

Windows 环境下 Claude Code 目录结构的核心要点

  • 用户级配置~/.claude/,包含全局设置、快捷键、MCP、项目记忆和定时任务;项目级配置.claude/CLAUDE.md 中,与特定项目绑定。
  • CLAUDE.md 是最高优先级的项目指令文件,位于项目根目录,每次会话自动加载为系统提示。所有配置层级的优先级关系为:CLAUDE.md > 项目级 settings.json > 用户级 settings.json。
  • 跨会话记忆存储在 ~/.claude/projects/[hash]/memory/ 目录下,按项目路径 hash 命名。删除此目录将导致记忆丢失,迁移项目时需注意 hash 值会随路径变化。
  • 临时文件在系统 %TEMP%/claude/ 目录下,可以安全手动清理以释放磁盘空间。程序文件在 %AppData%/npm/node_modules/@anthropic-ai/claude-code/,不应手动操作。
  • 备份建议:至少备份 settings.json(用户级 + 各项目级)和各个项目的 CLAUDE.md,即可在迁移时恢复完整的 Claude Code 工作环境。
  • Windows 路径注意事项:系统路径使用反斜杠(\),但在 Bash 环境(如 Git Bash)中推荐使用正斜杠(/)。AppData 目录默认是隐藏文件夹,需要在文件资源管理器中开启"显示隐藏文件"才能看到。
一句话总结:Claude Code 的 Windows 目录体系采用"用户级 — 项目级 — 项目指令"三层配置结构,优先级逐级递增;记忆数据按项目路径 hash 隔离存储;临时文件位于系统 Temp 目录,可安全清理。