如何清理本地 Claude Code 缓存和配置(macOS / Windows 双系统)
我是 Quentin,OpenClaw 作者,OpenClaw 拼车的维护者。
Claude Code 跑久了之后,本地会沉淀下一堆会话记录、shell 快照、todo、统计数据。它们躺在 ~/.claude/ 里,单个文件不大但加起来很猛 —— 我自己一台主开发机三个月就攒到 1.5 GB。
更糟的是:遇到一些诡异 bug,比如启动卡住、登录态错乱、模型切换失效,多半都是这堆历史数据把 Claude Code 自己绊住了。
这篇给你两套方案:温柔派(只挪历史会话,保留登录态)和 核弹派(连 auth 一起重置)。两套都封装成可复用的 shell 脚本,下次再出问题直接跑就行。
清完一切想重新接拼车 token,一行就回到工作状态:
curl -fsSL https://cp.bizq.net/setup.sh | bash -s -- claude-max-20x
为什么要清
Claude Code 在用户目录下用到的关键路径:
| 路径 | 作用 | 清掉影响 |
|---|---|---|
~/.claude/projects/ | 各项目的会话记录 | 历史对话消失 |
~/.claude/shell-snapshots/ | 工具调用前的 shell 状态快照 | 没影响,纯调试用 |
~/.claude/todos/ | 当前 todo list | 当前 todo 丢失 |
~/.claude/statsig/ | 远端实验配置缓存 | 自动重新拉 |
~/.claude/ 其他 | 插件、cache、log | 大概率没影响 |
~/.claude.json | 登录态 + 全部配置(含 auth profile) | 清掉 = 需要重新登录 |
所以清理策略要分两档:
- 常规清理:留
~/.claude.json的 auth、留插件配置,只挪projects / shell-snapshots / todos / statsig - 彻底重置:连
.claude目录和.claude.json一起改名归档
macOS / Linux:脚本化清理
我建议永远不要 rm -rf。把目录改个名归档保留,万一发现某个项目记录有用还能找回来。下面两个脚本都按这个思路。
方法一:ccclear.sh —— 温柔清理
只挪历史会话目录,保留登录态。日常清理推荐这个。
#!/bin/bash
# ccclear.sh —— 温柔清理 Claude Code 历史记录
# 不动 ~/.claude.json,登录态保留
set -euo pipefail
TS=$(date "+%Y%m%d%H%M%S")
BASE=~/.claude
if [ ! -d "$BASE" ]; then
echo "没有 ~/.claude 目录,无需清理"
exit 0
fi
# 退出运行中的 Claude Code
pkill -f "claude" 2>/dev/null || true
# 挪走历史会话和实验缓存
[ -d "$BASE/projects" ] && mv "$BASE/projects" "$BASE/projects-$TS"
[ -d "$BASE/shell-snapshots" ] && mv "$BASE/shell-snapshots" "$BASE/shell-snapshots-$TS"
[ -d "$BASE/todos" ] && mv "$BASE/todos" "$BASE/todos-$TS"
[ -d "$BASE/statsig" ] && mv "$BASE/statsig" "$BASE/statsig-$TS"
echo "清理完成,归档时间戳:$TS"
ls -la "$BASE"跑法:
chmod +x ccclear.sh
./ccclear.sh方法二:ccmoveconfig.sh —— 彻底重置
把 ~/.claude 整个目录和 ~/.claude.json 一起改名归档。等于全新初始化,重新启动会要求重新登录。
#!/bin/bash
# ccmoveconfig.sh —— 彻底重置 Claude Code
# 包括登录态、全部历史、所有配置
set -euo pipefail
TS=$(date "+%Y%m%d%H%M%S")
pkill -f "claude" 2>/dev/null || true
[ -d ~/.claude ] && mv ~/.claude ~/.claude-$TS
[ -f ~/.claude.json ] && mv ~/.claude.json ~/.claude.json-$TS
echo "已彻底归档,时间戳:$TS"
echo "下次启动 claude 会要求重新登录"跑完之后怎么办?
如果你跑的是温柔版(ccclear.sh),直接 claude 即可,登录态都还在。
如果你跑了彻底版(ccmoveconfig.sh),别去再点 /login 折腾了,直接走 OpenClaw 拼车一键回血:
curl -fsSL https://cp.bizq.net/setup.sh | bash -s -- claude-max-20x脚本会重新写出 ~/.claude.json 的 auth profile,把 ANTHROPIC 环境变量也补好。一行结束。
Windows 系统
Windows 上 PowerShell 走法基本一致,路径换成 %USERPROFILE%。
方法一:图形界面手动改名
打开文件资源管理器,地址栏输入 %USERPROFILE%(即 C:\Users\<你的用户名>)。找到这两项:
.claude\目录.claude.json文件
右键改名,加上日期后缀:
.claude→.claude-20260427.claude.json→.claude.json-20260427
下次启动 Claude Code 等于全新初始化。
方法二:PowerShell 脚本
把下面存成 ccclear.ps1:
# ccclear.ps1 —— Windows 版彻底清理
$ts = Get-Date -Format "yyyyMMddHHmmss"
$base = "$env:USERPROFILE"
Get-Process -Name "claude" -ErrorAction SilentlyContinue | Stop-Process -Force
if (Test-Path "$base\.claude") { Rename-Item "$base\.claude" ".claude-$ts" }
if (Test-Path "$base\.claude.json") { Rename-Item "$base\.claude.json" ".claude.json-$ts" }
Write-Host "清理完成,归档时间戳:$ts"
Get-ChildItem $base -Filter ".claude*"跑法(管理员或普通 PowerShell 都行):
powershell -ExecutionPolicy Bypass -File .\ccclear.ps1我自己的清理节奏
跑了快一年了,沉淀下这套节奏:
| 频率 | 跑哪个 | 触发条件 |
|---|---|---|
| 每月一次 | ccclear.sh | 例行卫生 |
| 出现「启动卡住 / 模型不切换」 | ccclear.sh | 一般就好了 |
| 出现「登录失败 / token 过期循环」 | ccmoveconfig.sh + 拼车 setup | 核弹级 |
| 大版本升级前 | ccclear.sh | 防止旧 statsig 配置干扰 |
| 切换 OpenClaw 网关或换 token | ccmoveconfig.sh + 拼车 setup | 必做 |
归档目录每三个月手动看一次有没有要保留的会话,没有就 rm -rf ~/.claude-* 永久删除。
几条最佳实践
- 永远归档不要直接删。
mv重命名几乎零成本,删了就追不回来。 - 清理前确认 Claude Code 完全退出。脚本里我加了
pkill,手动操作时记得自己先关。 - 重要 prompt 写到项目
CLAUDE.md。~/.claude里的对话历史不是版本可控的,别把关键 prompt 留在那。CLAUDE.md 模板见 CLAUDE.md 约束提示词指南。 - 彻底清完之后用拼车一键恢复。比手动登录快得多,也避免奇怪的 OAuth 重定向问题。
- 磁盘 < 5GB 时立刻清。Claude Code 在磁盘满的时候会出现非常诡异的写入错误。
立即开始
清完之后让 Claude Code 在 30 秒内回到工作状态:
curl -fsSL https://cp.bizq.net/setup.sh | bash -s -- claude-max-20x更多文档见 https://cp.bizq.net。
相关文章
- 如何彻底卸载 Claude Code — 不止清缓存,连包都拔掉的完整流程
- CLAUDE.md 约束提示词指南 — 把关键 prompt 沉淀到项目里,不再依赖本地缓存
- OpenClaw VPS 部署指南 — 把 Claude Code + OpenClaw 一起搬到 VPS