00-bkci-global-archite…
用于跨模块开发、排查链路归属、判断某个需求应该落在哪个 BK-CI 模块,或需要快速理解流水线全链路协作时使用。单模块修改时优先读取对应模块 skill,而不是停留在这里。
分析 Java heap dump、.hprof 文件、Eclipse MAT HTML 报告、Leak Suspects zip、Class Histogram、Dominator Tree、GC 异常、JVM OOM 或内存泄漏问题,并把 retained heap 证据关联回 Java/Kotlin/Spring/Quartz 项目代码,产出中文的根因判断、修复方案、验证计划和故障复盘文档。适用于用户要求分析 dump/hprof/heap dump/MAT 报告、内存泄漏、OOM、retained heap、dominator
$ npx -y skills add tencentblueking/bk-ci --skill java-heap-dump-triage --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/java-heap-dump-triageContext preview
The summary Claude sees to decide when to auto-load this skill.
分析 Java heap dump、.hprof 文件、Eclipse MAT HTML 报告、Leak Suspects zip、Class Histogram、Dominator Tree、GC 异常、JVM OOM 或内存泄漏问题,并把 retained heap 证据关联回 Java/Kotlin/Spring/Quartz 项目代码,产出中文的根因判断、修复方案、验证计划和故障复盘文档。适用于用户要求分析 dump/hprof/heap dump/MAT 报告、内存泄漏、OOM、retained heap、dominator
name: java-heap-dump-triage description: 分析 Java heap dump、.hprof 文件、Eclipse MAT HTML 报告、Leak Suspects zip、Class Histogram、Dominator Tree、GC 异常、JVM OOM 或内存泄漏问题,并把 retained heap 证据关联回 Java/Kotlin/Spring/Quartz 项目代码,产出中文的根因判断、修复方案、验证计划和故障复盘文档。适用于用户要求分析 dump/hprof/heap dump/MAT 报告、内存泄漏、OOM、retained heap、dominator tree、RAMJobStore、ThreadLocal 泄漏、缓存泄漏、classloader 泄漏,或要求结合仓库代码优化内存问题的场景。
把 heap dump 证据转成可落地的工程诊断。优先给出有证据支撑的窄根因,不要泛泛罗列 JVM 调优建议。
1. 定位分析材料。
2. 如果没有 MAT 报告,从 `.hprof` 生成报告。
3. 优先读取 MAT 报告,而不是一上来硬啃原始 dump。
4. 找 retained memory 的真正持有者。
5. 把 dump 里的类名关联回代码。
6. 形成可证伪的根因。
7. 给出修复方案。
8. 验证。
9. 输出结论。
查找 heap 相关文件:
find ~/Desktop -maxdepth 3 \( -iname '*.hprof' -o -iname '*dump*' -o -iname '*heap*' -o -iname '*Leak_Suspects*.zip' -o -iname '*System_Overview*.zip' -o -iname '*Top_Components*.zip' \) -print
查找本机 Eclipse MAT 命令行:
command -v ParseHeapDump.sh || true command -v MemoryAnalyzer || true find /Applications "$HOME" -maxdepth 5 \( -iname 'ParseHeapDump.sh' -o -iname 'MemoryAnalyzer' \) -print 2>/dev/null
从原始 hprof 生成 MAT 报告:
/Applications/MemoryAnalyzer.app/Contents/Eclipse/ParseHeapDump.sh \ /path/to/heap_dump.hprof \ org.eclipse.mat.api:suspects \ org.eclipse.mat.api:overview \ org.eclipse.mat.api:top_components
生成后确认产物:
find /path/to/dump-dir -maxdepth 1 \( \ -name 'heap_dump*.index' \ -o -name 'heap_dump.threads' \ -o -name 'heap_dump_*Suspects.zip' \ -o -name 'heap_dump_*Overview.zip' \ -o -name 'heap_dump_*Components.zip' \ \) -print | sort
查看 MAT 报告 zip:
unzip -l /path/to/heap_dump_Leak_Suspects.zip | sed -n '1,160p'
安全提取 MAT HTML 文本:
TMP=/tmp/heap_report_$$
mkdir -p "$TMP/leak" "$TMP/overview" "$TMP/top"
unzip -q /path/to/heap_dump_Leak_Suspects.zip -d "$TMP/leak"
unzip -q /path/to/heap_dump_System_Overview.zip -d "$TMP/overview"
unzip -q /path/to/heap_dump_Top_Components.zip -d "$TMP/top"
python3 - "$TMP" <<'PY'
from pathlib import Path
import html, re, sys
base = Path(sys.argv[1])
for p in base.rglob("*.html"):
if p.name.startswith(("Class_Histogram", "Top_Consumers", "Thread_Overview", "System_Properties")) or p.name == "index.html":
s = p.read_text(errors="ignore")
s = re.sub(r"<script.*?</script>|<style.*?</style>", "", s, flags=re.S|re.I)
s = re.sub(r"<[^>]+>", "\n", s)
lines = [html.unescape(x.strip()) for x in s.splitlines() if x.strip()]
print(f"\n===== {p.relative_to(base)} =====")
print("\n".join(lines[:180]))
PY按可疑类和 API 回查代码:
rg -n "Quartz|RAMJobStore|CronTrigger|scheduleJob|deleteJob|ThreadLocal|Cache|put\\(|evict|shutdown|close\\(" src -g '*.kt' -g '*.java' -g '*.yml' -g '*.yaml' -g '*.properties'本技能沉淀自一次从原始 dump 重新生成报告的实测流程:
1. 原始输入只保留 `/Users/greysonfang/Desktop/heap_dump.hprof`,大小约 `2.6G`。 2. 先将已有 MAT 派生物移走,包括 `heap_dump*.index`、`heap_dump.threads`、`heap_dump_Leak_Suspects.zip`、`heap_dump_System_Overview.zip`、`heap_dump_Top_Components.zip`。 3. 找到本机 MAT 命令:`/Applications/MemoryAnalyzer.app/Contents/Eclipse/ParseHeapDump.sh`。 4. 执行:
/Applications/MemoryAnalyzer.app/Contents/Eclipse/ParseHeapDump.sh \ /Users/greysonfang/Desktop/heap_dump.hprof \ org.eclipse.mat.api:suspects \ org.eclipse.mat.api:overview \ org.eclipse.mat.api:top_components
5. MAT 先解析 hprof、生成 `.threads` 和索引,再计算 Dominator Tree,最后输出三个报告 zip。 6. 本次生成的报告大小约为:
7. `Top
用于跨模块开发、排查链路归属、判断某个需求应该落在哪个 BK-CI 模块,或需要快速理解流水线全链路协作时使用。单模块修改时优先读取对应模块 skill,而不是停留在这里。
处理 BK-CI Agent 构建机侧能力时使用,例如守护进程、心跳、Ask 轮询、任务拉起、升级更新和与 Dispatch/Worker 的协作。当用户要改构建机宿主侧行为而不是…
设计 BK-CI API 契约时使用,例如 Resource 路径设计、HTTP 方法选择、请求响应对象、错误码和版本策略。当用户要定义接口而不是实现业务逻辑时优先使用。
处理 BK-CI 制品上传下载、制品元数据、BkRepo 或磁盘后端存储、文件任务和清理链路时使用。当用户提到构建产物、制品归档、下载令牌、报告文件、BkRepo…
处理 BK-CI Auth 模块时使用,例如 RBAC 权限校验、用户组与资源管理、IAM 集成、授权迁移和 OAuth2 认证。当用户要改权限平台实现而不是单次权限模型变更时优先使用。
编写 BK-CI 后端微服务代码时使用,例如新增 Resource、组织 API/Service/DAO 分层、依赖注入、服务归属判断和 Spring Boot 开发约定。当用户要做…