claude fable 5.1 内存持续上涨是设计行为而非泄漏,因其主动缓存上下文、工具历史和 memory_filesystem 数据;真泄漏表现为空闲期 rss 以 >50mb/min 持续增长或触发 javascript heap out of memory 错误。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

确认是不是真泄漏,还是 GC 没来得及回收
看到 ps aux 里 claude 进程 RSS 持续涨到 2GB+,别急着断定是内存泄漏。Claude Fable 5.1 在长链路 Agent 场景下会主动缓存上下文、工具调用历史、memory_filesystem 中的持久化节点,这些数据默认不随单次请求结束而释放——它不是 bug,是设计行为。真正的泄漏表现为:内存占用在任务空闲期(无新请求、无后台计划)仍以 >50MB/min 的速率上涨,或触发 FATAL ERROR: JavaScript heap out of memory。
关闭非必要缓存模块,尤其 memory_filesystem 和递归工具链
Fable 5.1 的系统提示词里明确启用了 <memory_filesystem></memory_filesystem> 和支持 Claudeception(模型调用自身 API)的递归能力,这两者在无人值守 Agent 运行数小时后极易造成引用堆积。实操建议:
将 Claude Agent SDK 与 You.com HTTP MCP 服务器集成,支持 Python 和 TypeScript。当开发者提及 Claude Agent SDK、Anthropic Agent SDK 或将 Claude 与 MCP 工具集成时使用。
- 若不需要跨会话记忆,启动时显式禁用:
--disable-memory-filesystem(CLI)或在配置中设memory_enabled: false - 检查是否启用了
computer_use工具链中的自动脚本执行;如仅需静态分析,关掉bash和python执行权限 - 避免在提示词中使用
<recursive_plan></recursive_plan>类标签——Fable 5.1 对该结构的引用清理不彻底,已知在 >30 步计划中引发对象滞留
强制 GC 触发与堆快照抓取时机很关键
Node.js 环境下运行的 Claude 服务(如本地部署的 claude-code)默认不会主动触发全量 GC。不要依赖 global.gc()(V8 未启用时无效),而是:
- 启动时加参数:
node --max-old-space-size=4096 --expose-gc your-server.js,并确保代码中在空闲周期调用gc() - 当 RSS 达到 1.5GB 时,用
kill -USR2 <pid></pid>(Linux/macOS)触发 V8 堆快照,文件名形如Heap.20260927.123456.heapsnapshot - 用 Chrome DevTools 的 Memory 面板加载快照,按
Constructor排序,重点关注Context、Closure、ArrayBuffer实例——Fable 5.1 泄漏高发点在这三类
绕过 fable_safeguards_routing 的静默降级陷阱
系统提示词里 <fable_safeguards_routing></fable_safeguards_routing> 机制会在检测到敏感操作时,把请求静默 fallback 到 opus_4.8,但部分状态(如临时 artifact 缓存、MCP 连接器 session)未同步清理,导致残留对象持续持有引用。这不是你代码的问题,是路由层缺陷。
- 在日志里搜索
"fallback to opus"或"safeguards triggered",一旦出现,立刻重启进程——别等 OOM - 生产环境务必开启
aws_review模式(即使不用 Bedrock),它会强制重置所有中间状态,代价是略增延迟,但能规避该泄漏路径 - 如果必须用 Fable 5.1 的原生能力,且无法接受重启,可在每次 Agent 任务结束时,手动调用
clearAllCaches()(暴露在claude-sdkv2.3+ 的Runtime实例上)
fable_safeguards_routing 已经悄悄把你切到了另一个运行时,而那个运行时的清理逻辑和主流程不一致。










