Skip to main content

Cursor 占用几十 GB?本地聊天与缓存怎么清

磁盘突然少了二三十 GB,任务管理器里又看不到谁在狂写文件——很多时候是 Cursor 把 Agent / Chat 历史写进了本地数据库,而不是常见的「浏览器式缓存」。

下面按「先分清该留什么、再安全回收」说明怎么处理。步骤以 Windows 为主,macOS / Linux 路径一并标出。

先分清:大头通常不是 Cache 文件夹​

你可能以为实际情况
清掉 Cache / GPUCache 就能瘦身这些目录往往只有几十 MB,几乎解决不了「少了几十 GB」
把对话 Archive(归档)就能腾空间归档多半只是藏起来,基本不释放磁盘
命令里默认填 30,说明已经在按 30 天自动删不是。那只是输入框默认值;目前仍需手动清理
直接删掉数据库文件最快很危险,容易出现聊天一直转圈 Loading Chat

真正占地方的,常见是这份 SQLite 库:

  • Windows:%APPDATA%\Cursor\User\globalStorage\state.vscdb
  • macOS:~/Library/Application Support/Cursor/User/globalStorage/state.vscdb
  • Linux:~/.config/Cursor/User/globalStorage/state.vscdb

里面会堆积多轮 Agent 记录、工具输出、diff、checkpoint 等。重度使用几个月,涨到几十 GB 并不罕见。

哪些值得留,哪些可以清​

建议保留​

  • 编辑器设置、快捷键、代码片段(User 目录下的配置)
  • MCP、Skills、项目里的 .cursor/rules 等你自己维护的规则
  • 近期还可能回看的对话(重要会话先导出再删)

适合定期清理​

内容怎么做会不会丢历史
超过 N 天没再动过的 Agent / Chat命令面板:Developer: Delete Old Chats…会永久删除超龄会话
已无主会话的孤儿数据命令面板:Developer: GC Agent KV Blobs不删你还留着的聊天,只清垃圾
旁边的 state.vscdb.backup(若存在)完全退出 Cursor 后再删这个备份文件不影响当前主库里的对话
扩展安装包缓存、渲染缓存退出后清理对应缓存目录不会;缺了会再生成
长期不用的扩展在扩展面板卸载不会

保留天数怎么选​

策略天数更适合
尽量省盘30几乎不回看旧 Agent 会话
较均衡60多数个人开发者
更保守90偶尔要翻两三个月前的上下文

规则大致是:删「超过 N 天没有再更新 / 再打开」的会话,不是「创建超过 N 天」。上周还在用的老会话会留下。

清理前先做这三件事​

1. 看主库有多大、磁盘还剩多少​

Windows(PowerShell,只读查看):

$db = "$env:APPDATA\Cursor\User\globalStorage\state.vscdb"
Get-Item $db | Select-Object FullName, @{N='SizeGB';E={[math]::Round($_.Length/1GB,2)}}, LastWriteTime

Get-PSDrive -PSProvider FileSystem |
Where-Object { $_.Used -ne $null } |
Select-Object Name, @{N='FreeGB';E={[math]::Round($_.Free/1GB,1)}}

2. 给压缩留出临时空间​

官方清理命令收尾时,常会对数据库做整库重写(SQLite VACUUM)。经验上:

  • 临时额外占用大约接近 当前 state.vscdb 的体积
  • 库有 30 多 GB 时,系统盘若只剩「差不多够」的空闲,仍可能中途写满失败
  • 更稳妥:空闲明显大于库体积,或把临时目录指到空间更大的盘(见下一节)

3. 导出还想留的旧对话​

在聊天历史里打开会话 → 导出(Export Chat)。
Delete Old Chats 是永久删除,没有回收站。

系统盘很满时:把临时文件指到大盘(Windows)​

若 C 盘紧张、另一块盘很空,可在启动 Cursor 之前设置环境变量,让压缩临时文件写到大盘(路径按你机器修改):

$tmp = "D:\cursor-tmp"   # 换成你空闲更多的盘符与目录
New-Item -ItemType Directory -Force -Path $tmp | Out-Null
$env:SQLITE_TMPDIR = $tmp
$env:TMP = $tmp
$env:TEMP = $tmp

# 再从该终端启动 Cursor(不要用未带这些变量的旧快捷方式)
# 例如:
# & "$env:LOCALAPPDATA\Programs\cursor\Cursor.exe"

要点:

  1. 先完全退出 Cursor(含托盘图标)
  2. 在已设置上述变量的终端里再启动
  3. 清理结束后、确认 Cursor 已退出,可自行清空该临时目录里的残留文件

从开始菜单直接打开,通常不会带上这些变量。

官方推荐清理步骤​

以下都在 Cursor 内操作:Ctrl+Shift+P(macOS 为 Cmd+Shift+P)。

方案 A:只回收垃圾,不删对话​

  1. 运行 Developer: GC Agent KV Blobs
  2. 等进度跑完(大库可能要很久)
  3. 完全退出 Cursor(不要只 Reload Window)
  4. 退出时若短暂卡住,多等一会,避免强行结束进程

适合想先试探能收回多少、又不想丢历史的情况。若体积几乎都是你仍保留的真实聊天,体积可能降得有限。

方案 B:按天数删除旧会话(更常需要)​

  1. (可选)先导出重要旧会话
  2. 运行 Developer: Delete Old Chats…
  3. 把默认的 30 改成你需要的天数,例如 60 或 90,再确认
  4. 等删除与压缩完成
  5. 再运行 Developer: GC Agent KV Blobs
  6. 完全退出 Cursor,再去看 state.vscdb 是否变小

社区里较稳的顺序就是:先按天数删除 → 再 GC → 彻底退出。只删不做 GC,空间往往回收不完整。

单条删除​

在 History 里对会话选 Delete,不要只 Archive。删过一批后,仍建议再跑一次 GC。

可选:删除陈旧备份文件​

完全退出 Cursor 后,若同目录存在体积很大的 state.vscdb.backup,可只删这个备份文件。不要动正在使用的 state.vscdb。

不要做的事​

操作风险更稳妥的做法
直接删除或改名 state.vscdb聊天一直 Loading、历史损坏用 Delete Old Chats + GC
Cursor 还在运行时删库文件锁定或损坏先彻底退出
空闲空间明显小于库体积时硬跑压缩盘满、清理失败先腾空间,或临时目录指到大盘
自己用数据库工具改内部表数据不一致、更难修只用官方 Developer 命令
清空整个 Cursor 用户数据目录「重来」设置、扩展、历史一起没只清缓存 + 官方聊天清理

实在无法压缩时的退路​

若空间或损坏导致官方命令跑不下去,且你能接受本地聊天历史清空:

  1. 完全退出 Cursor
  2. 把 state.vscdb(以及若有的 .backup / -wal / -shm)移动到其它盘备份,不要直接扔掉
  3. 再打开 Cursor,让它生成新的小库
  4. 旧文件仅作冷备份;搬回去也不保证能完整恢复所有会话

其它小体积项(通常远小于主库)​

在 Cursor 已完全退出 后,可按需清理(路径在 Windows 的 %APPDATA%\Cursor\ 下):

  • CachedExtensionVSIXs:扩展安装包缓存
  • Cache、Code Cache、GPUCache 等:渲染相关缓存

用户目录 %USERPROFILE%\.cursor\extensions 里是已装扩展;长期不用的在扩展面板卸载即可。
%USERPROFILE%\.cursor\projects 下是各工作区附属数据,只删你确定不会再打开的旧项目目录。

清理后如何确认生效​

$db = "$env:APPDATA\Cursor\User\globalStorage\state.vscdb"
Get-Item $db | Select-Object @{N='SizeGB';E={[math]::Round($_.Length/1GB,2)}}, LastWriteTime

对比清理前后的 GB 数。若几乎没变:可能主要是真实历史而非孤儿数据,或退出不彻底导致压缩未落盘——可缩短保留天数后再跑一轮,并确保完全退出。

建议养成的节奏​

  • 主库涨得很快时:每月做一次 GC,并完全退出
  • 主库长期维持在十几 GB 以上:按 60 或 90 天跑一次 Delete Old Chats,再 GC
  • 大任务结束后:确定无用的会话直接 Delete,避免单线程无限变长、工具日志堆进本地库
  • 目前没有「自动每 30/60 天过期」的稳定设置;命令里的 30 只是默认填值

常见现象对照​

现象常见原因建议
清理后体积几乎不变留下的都是真实历史;或未完全退出缩短保留天数 + GC + 彻底退出
清理过程中磁盘暴涨压缩需要接近库大小的临时空间停稳后检查空闲;改用大盘临时目录再试
聊天一直 Loading手删或损坏了主库避免再手动改库;从备份恢复或接受重建空库
对话框显示 30仅默认值改成 60 / 90 再确认即可

最短操作清单(例如保留 60 天)​

  1. 导出仍需要的旧对话
  2. 确认空闲空间(或大盘临时目录)明显大于当前 state.vscdb
  3. 完全退出后,必要时用大盘临时目录重新启动 Cursor
  4. Developer: Delete Old Chats… → 输入 60
  5. Developer: GC Agent KV Blobs
  6. 完全退出 Cursor
  7. 再查看 state.vscdb 体积

记住一条线: 配置和近期对话值得留;超龄 Agent 历史与孤儿数据才是该回收的体积。用官方删除与 GC,不要手删 state.vscdb。