SuperAPI AI 工具集

heap-seance

Heap Seance 是一个面向 Claude Code 的 MCP 服务器与 CLI 工具包,将 JVM 堆内存取证诊断工具整合为结构化的内存泄漏调查工作流。它不直接分析,而是“召唤”jcmd、jmap、jstat、JFR、Eclipse MAT 和 async-profiler 等工具的能力,通过保守扫描与深度取证两级递进模型,对 Java 应用是否存在内存泄漏给出带有置信度的裁决结论。默认提供 2 个斜杠命令(/leak-scan 与 /leak-deep)和 8 个 MCP 工具。其核心特点是“置信度需被证明而非假设”:高危结论要求至少两个独立的强信号,例如单个持续增长的类仅为“观察”,增长叠加 GC 压力为“可疑”,再加入 MAT 支配树或 JFR 关联证据才判定为“很可能内存泄漏”。工具要求 uv、Python 3.10+ 以及 JDK 17+(用于工具链,目标应用可为任意 Java 版本)。适用于 Claude Code 环境下的 Java 内存泄漏排查、根因定位与修复验证。

访问官网

工具介绍

Heap Seance 介绍

用途

Heap Seance 是一个 MCP 服务器 + CLI 工具包,用于 Java 应用的内存泄漏调查。它把 jcmd、jmap、jstat、jfr、Eclipse MAT 和 async-profiler 等 JVM 取证工具串联成一个结构化的工作流,旨在运行于 Claude Code 之内,把分散的工具输出整合为统一的泄漏裁决结论。

主要能力

  • 提供 2 个斜杠命令(/leak-scan、/leak-deep)与 8 个 MCP 工具。
  • 采用两阶段升级模型:保守扫描与深度取证,没有足够证据时不进行深度分析。
  • 所有工具返回同一套统一 schema。
  • 置信度分级:高危结论需至少两个独立强信号;单个持续增长的类为 watch(观察);增长叠加 GC 压力为 suspicious(可疑);再加入 MAT 支配树或 JFR 关联证据才判定为 probable_memory_leak(很可能内存泄漏)。
  • /leak-scan 返回:Verdict(裁决)、Confidence(置信度)、Key Evidence(关键证据)、Suspect Types(可疑类型)、Artifacts(产物)、Next Steps(后续步骤)。
  • /leak-deep 额外返回:Root Holder Hypothesis(根持有者假设,即谁通过哪个字段/链条持有增长对象)、Supporting Evidence(支撑证据)、Remediation Hypotheses(具体修复建议)、Verification Plan(验证计划)。
  • 保留 .jfr、.hprof 与 MAT 报告等产物,供团队审阅。

使用方式

前置条件:需要 uv、Python 3.10+,以及用于工具链的 JDK 17+(目标应用可运行任意 Java 版本)。

  1. 在要调查的 Java 项目中创建 .mcp.json,其中 --directory 指向克隆 Heap Seance 的位置;uv run 会自动处理虚拟环境与依赖。ASYNC_PROFILER_BIN 为可选,缺失时深度模式继续使用 JFR + MAT。
  2. 将 .claude/commands/ 文件夹复制到 Java 项目中,即可使用 /leak-scan 与 /leak-deep 斜杠命令。
  3. 调查流程:启动应用并让其完成初始化;运行 /leak-scan <name-or-pid> 获取第一份直方图快照;在三次直方图采样之间,按提示执行疑似泄漏的行为(如打开/关闭视图、发送请求、重复工作流)——采样之间没有负载则泄漏不可见;阅读裁决,关注 Confidence、Key Evidence、Suspect Types;如扫描标记增长或希望完整取证,运行 /leak-deep <name-or-pid>;修复后重新扫描确认信号下降。

命令行用法也支持在 Claude Code 之外使用。环境变量可在 .mcp.json 的 env 块中设置,或作为 shell 变量;CLI 标志 --sse 与 --streamable-http 可替代 MCP_TRANSPORT。完整配置模板见 .mcp.json.example。

工具链要求:JDK 17+ 用于 jcmd、jmap、jstat,通过 .mcp.json 中的 JAVA_HOME 设置;目标应用可运行任意 Java 版本(包括 Java 8)。深度取证需要 Eclipse MAT CLI(ParseHeapDump.sh / .bat);async-profiler 为可选决胜工具;jfr CLI 为可选,用于 JFR 摘要(若不可用则回退到 jcmd JFR.view;Java 8 目标因格式不兼容会完全跳过 JFR)。可用命令检查环境配置。

适用场景

  • 在 Claude Code 中对 Java 应用进行内存泄漏的初步扫描与深度根因分析。
  • 需要可复现、带置信度分级与产物留存的泄漏调查流程。
  • 修复后验证信号是否下降。

限制与兼容性

  • Java 8 目标:直方图 + GC + MAT 可完整工作;JFR 因 v0.9 格式与现代工具不兼容而被跳过。
  • Windows:MAT 通过 ParseHeapDump.bat 工作;async-profiler 可选,缺失时深度模式继续使用 JFR + MAT;jstat 输出中因区域而异的十进制分隔符(逗号与点)会被自动处理。
  • MAT + JAVA_HOME:MAT 使用 JAVA_HOME 中的 JDK 启动,因此即使系统默认 Java 过旧也可运行。
  • 项目采用双许可:Apache License, Version 2.0。
  • 贡献指南见 CONTRIBUTING.md。
  • 仓库中还包含用于验证的 Java 示例场景(真实泄漏、有界缓存无泄漏、突发分配器无泄漏)。

代码与安装命令保持原文,未做改动。