Claude Code 长会话内存越涨越高怎么修

2.1.238:子代理工具结果滚出近期显示窗口后会释放,修交互长会话无界涨内存。适合全天挂着会话反复打 subagent 的人。

Claude Code 长会话内存越涨越高怎么修

claude code 长会话内存泄漏:开着同一个交互会话从早干到晚,中间反复拉起 subagent,进程 RSS 只涨不降。2.1.238 写明:子代理工具结果一旦滚出「近期显示窗口」,就会从内存里释放,修的是这类无界增长。不是魔法缩上下文,而是别把已经滚走的工具回包一直捏在手里。

作者CodePass 技术编辑

先确认是不是这类症状

  • 会话时长按小时计,期间多次 Agent / fork / 后台子任务。
  • 活动监视器里 Claude Code(或宿主 node/bun)内存台阶式上升,闲着也不回落。
  • 重开会话立刻变轻,说明不是整机泄漏。

若只是「对话太长导致变慢」,那是上下文与自动压缩策略问题,要查 /config 里 compact、模型窗长,而不是本修复。若风扇狂转但内存平稳,可能是后台云会话 UI 重绘,见 后台云会话更省资源

升级与验证

claude --version   # 需要 ≥ 2.1.238

验证路径尽量可复现:固定仓库、开会话、循环跑会吐大工具结果的子代理(例如多次 grep/读大文件),看 RSS 在结果滚出可视区后是否趋平。升级前先记一笔基线,避免「感觉好了」无法复盘。

同版本还推迟了自动更新检查(启动约 10 秒后再跑),减轻开机抢 CPU;别把启动瞬间的尖峰当成泄漏。

工作流上怎么少踩

  • 真·全天挂机:升级到含本修复的版本;仍建议对特别脏的评测会话用完就 /clear 或新开。
  • 需要保留证据:把关键工具输出落到仓库文件或 CI artifact,别指望滚动缓冲区当归档。
  • 云端 /ultrareview 一类:本地内存与云端 token 是两本账,本修复主要打本地交互侧。

历史版本还修过 MCP stderr 堆积、LSP 文档 LRU 等泄漏面;若升到 2.1.238 仍涨,列出版本与 MCP 数量再查插件。沙箱与密钥边界另一路见 macOS sandbox 挡 dotenv

什么时候该换会话而不是死磕

内存修好了,上下文质量仍可能变差:早期决策、过期假设、半截 plan 会污染后续。规则可以是:里程碑合并后新开会话;或目标完成后结束,不要把「修泄漏」理解成「无限会话永远正确」。