Skip to content
FunCoding

Search

Search docs, agents, posts, Skills and MCP servers

.claude 目录详解

项目里的 .claude 与 ~/.claude 各放什么、何时加载:文件速查、按需求选文件、frontmatter 字段、会话产生的本地数据与保留期、纯文本存储风险、claude project purge。

Claude Code 从项目里的 .claude/(以及根目录的 CLAUDE.md、.mcp.json、.worktreeinclude)和你主目录下的 ~/.claude/ 读取指令、设置、hooks、skills、子智能体、工作流、规则和自动记忆。项目级文件提交进仓库与团队共享,全局级文件对你所有项目生效。官方页面有一个可点击的文件树交互展示,这里整理成文字。

官方没放进文件树的几个文件

文件位置作用
managed-settings.json系统级,因操作系统而异企业强制设置,你无法覆盖(极少数例外)
CLAUDE.local.md项目根目录你对该项目的私人偏好,与 CLAUDE.md 一起加载;需手动创建并加进 .gitignore
AGENTS.md项目根、.claude/ 或任意目录写给 AI 编码智能体的项目说明,Claude Code 可单独或与 CLAUDE.md 一起加载
已安装的插件~/.claude/plugins克隆的插件市场、已安装插件版本、installed_plugins.json 安装记录和各插件数据,由 claude plugin 命令管理

该改哪个文件

你想要编辑范围
给 Claude 项目上下文和约定CLAUDE.md项目或全局
允许或阻止某些工具调用settings.json 的 permissions 或 hooks项目或全局
在工具调用前后运行脚本settings.json 的 hooks项目或全局
为会话设置环境变量settings.json 的 env项目或全局
让个人覆盖项不进 gitsettings.local.json仅项目
添加用 /name 调用的提示或能力skills/<name>/SKILL.md项目或全局
定义有自己工具的专用子智能体agents/*.md项目或全局
用脚本编排很多子智能体workflows/*.js项目或全局
通过 MCP 连接外部工具.mcp.json仅项目
改变 Claude 回复的格式output-styles/*.md项目或全局

文件速查

项目级文件在仓库的 .claude/ 下(CLAUDE.md、.mcp.json、.worktreeinclude 在根目录),全局级在 ~/.claude/ 下。

文件范围提交作用
CLAUDE.md项目和全局✓每个会话加载的指令
rules/*.md项目和全局✓按主题划分的指令,可按路径限定
settings.json项目和全局✓权限、hooks、环境变量、模型默认值
settings.local.json仅项目你的个人覆盖,Claude Code 保存设置到这里时会被 gitignore
.mcp.json仅项目✓团队共享的 MCP 服务器
.worktreeinclude仅项目✓要复制进新 worktree 的、被 gitignore 的文件
skills/<name>/SKILL.md项目和全局✓可复用提示,用 /name 调用或自动调用
commands/*.md项目和全局✓单文件提示;与 skills 是同一机制(新工作流建议用 skills,可附带支持文件)
output-styles/*.md项目和全局✓调整 Claude 工作方式的自定义指令集
agents/*.md项目和全局✓有自己提示和工具的子智能体定义
workflows/*.js项目和全局✓Claude 编写并从 /workflows 保存的动态工作流脚本,每个文件成为一个 /<name> 命令
agent-memory/<name>/项目和全局✓子智能体的持久记忆
~/.claude.json仅全局应用状态、OAuth、UI 开关、个人 MCP 服务器
projects/<project>/memory/仅全局自动记忆:Claude 写给自己的跨会话笔记
keybindings.json仅全局自定义键盘快捷键
themes/*.json仅全局自定义颜色主题

有几样东西可以覆盖这些文件里写的内容:组织部署的托管设置优先于一切(极少数例外);--permission-mode、--settings 等 CLI 标志在该会话内覆盖 settings.json;部分环境变量优先于对应的设置,因变量而异。

各文件的 frontmatter 字段

文件字段
skills/<name>/SKILL.mdname、description、when_to_use、argument-hint、arguments、disable-model-invocation、user-invocable、allowed-tools、disallowed-tools、model、effort、context、agent、background、hooks、paths、shell、metadata、license、compatibility
commands/*.mdskill 的字段去掉 name 和 paths
agents/*.mdname、description、tools、disallowedTools、model、permissionMode、maxTurns、skills、mcpServers、hooks、memory、background、effort、isolation、color、initialPrompt、omitClaudeMd、experimental
output-styles/*.mdname、description、keep-coding-instructions、force-for-plugin
rules/*.mdpaths

插件里自带的智能体只支持子智能体字段的一个子集。某个设置、hook 或文件没生效时,用官方的「Debug your configuration」页里的检查命令和按症状查找表。

应用数据

除了你编写的配置,~/.claude 还存放 Claude Code 在会话中写入的数据。这些文件是明文的:任何经过工具的内容,包括文件内容、命令输出、粘贴的文本,都会写进磁盘上的转录。

自动清理

超过 cleanupPeriodDays(默认 30 天,最小 1)的下列路径会被删除:

~/.claude/ 下的路径内容
projects/<project>/<session>.jsonl完整对话转录:每条消息、工具调用和工具结果
projects/<project>/<session>/subagents/子智能体对话转录,随父会话转录一起清理
projects/<project>/<session>/tool-results/溢出到单独文件的大工具输出,以及 MCP 工具返回图片的完整副本
file-history/<session>/Claude 修改过的文件的编辑前快照,用于检查点恢复(保留最近 100 个检查点)
plans/计划模式下写的计划文件
debug/开启调试日志时的每会话调试日志
paste-cache/大段粘贴的内容
uploads/<session>/从网页或手机 App 附加到 Remote Control 会话的文件
session-env/、tasks/、shell-snapshots/、backups/会话环境元数据、任务列表、启动时捕获的 shell 别名/函数、~/.claude.json 的旧版本(保留最近 5 个)
feedback-bundles/、feedback/drafts//feedback 写出的脱敏转录包;待你审阅的 Claude 起草的反馈
usage-data//insights 写出的报告及缓存的分析数据

另有几类遵循自己的保留规则:sessions/(每个运行中会话一个小文件,会话退出时移除)、自动记忆(projects/<project>/memory/,清理不会删其中的记忆文件)、Claude Desktop 和 Cowork 转录(保留,除非设置 desktopSessionCleanupPeriodDays)。以下情形会跳过清理:claude -p --bare 模式;Claude Code 无法安全确定保留期时会暂停清理。

会话 scratchpad 目录

scratchpad 是 Claude Code 给 Claude 存放临时文件(中间结果、辅助脚本、不属于项目的草稿)的每会话目录,位于 Claude Code 的临时目录下,不在 ~/.claude:

  • macOS:/private/tmp/claude-<uid>/<project>/<session-id>/scratchpad/
  • Linux:/tmp/claude-<uid>/<project>/<session-id>/scratchpad/(系统设置了 $TMPDIR 时同形状放在它下面)
  • Windows:%TEMP%\claude\<project>\<session-id>\scratchpad\

<project> 是工作目录路径,把字母和数字以外的字符都替换为 -。设置了 CLAUDE_CODE_TMPDIR 则整棵树移到该目录下。scratchpad 与会话转录同寿命。只有满足以下全部条件时才有 scratchpad:用 claude.ai 账号登录(非 API Key)、会话使用 Anthropic API(非 Bedrock、Vertex、Foundry)、enableArtifact 没被设为 false。

保留到你删除为止

路径内容
history.jsonl你输入的每个提示词,含时间戳和项目路径,用于上箭头回溯、Ctrl+R 历史搜索和 ! 命令补全
stats-cache.json/usage 显示的聚合 token 和成本计数
remote-settings.json服务端托管设置的缓存副本
cache/changelog.md/release-notes 显示的变更日志缓存
policy-limits.json组织的功能策略缓存(部分账号类型才有)

其他文件取决于你用的功能。缓存和锁文件可以放心删除,但要保留这些状态文件:.credentials.json(登录凭据)、agent-memory/(子智能体记忆)、jobs/ 和 daemon/(后台会话状态)。

明文存储

转录和历史不加密,唯一保护是操作系统的文件权限。工具读了 .env 文件或命令打印了凭据,值就会写进转录。降低暴露的办法:

  • 调低 cleanupPeriodDays 缩短保留时间
  • 设置 desktopSessionCleanupPeriodDays 给 Desktop 和 Cowork 转录加年龄限制
  • 设置 CLAUDE_CODE_SKIP_PROMPT_HISTORY 环境变量,在任何模式下都不写转录和提示历史(非交互模式也可以 -p 加 --no-session-persistence)
  • 用权限规则拒绝读取凭据文件

清除本地数据

claude project purge 删除 Claude Code 为某个项目保存的状态:projects/ 下的转录和自动记忆、每会话的 tasks/、debug/、file-history/ 条目、history.jsonl 里该项目的提示行、以及 ~/.claude.json 里该项目的条目。粘贴/附加的图片和 scratchpad 存放在临时目录,不会被它清除。命令会先打印完整的删除计划并要求确认;用 --dry-run 只预览不删除:

claude project purge ~/work/my-repo --dry-run

没有匹配状态时命令打印错误并以状态 1 退出。shell-snapshots/ 不属于项目范围,不会被动,backups/ 里可能还有旧快照,会自动轮换。