关于 finops-caches
finops-caches 是用于分析仓库或组织内 GitHub Actions 缓存的技能,可按大小、键模式和分支分布拆解缓存,并检测过期缓存及提供清理命令。
主要功能
- 01分析缓存大小和用量
- 02按键前缀汇总缓存
- 03查看各分支缓存分布
- 04检测过期或孤立的 PR 缓存
- 05使用 gh 查询和删除缓存
适用场景
- 01排查接近仓库限额的缓存用量
- 02查找待清理的过期缓存
- 03审查缓存键策略
- 04分析组织范围的缓存用量
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ laurigates/ claude-plugins --skill finops-caches安装后在 Claude Code 中输入/finops-caches确认已加载。
附带文件scripts/cache-analysis.sh
详细介绍
/finops:caches
分析 GitHub Actions 缓存用量,包括大小分布、缓存键模式、分支分布和过期缓存检测。
适用场景
| 场景 | 使用此技能 | 替代方案 |
|---|---|---|
| 缓存用量接近上限或未知 | /finops:caches | - |
| 查找过期或孤立的 PR 缓存 | /finops:caches | - |
| 检查缓存键策略的有效性 | /finops:caches | - |
| 快速检查整个仓库的健康状况 | /finops:overview | 先从概览开始 |
| 比较多个仓库的缓存用量 | /finops:compare | 使用 compare 查看多个仓库 |
| 优化工作流触发器,而非缓存 | /finops:waste | 使用 waste 检查工作流级问题 |
上下文
- 当前仓库 URL:!
git remote get-url origin
参数
| 参数 | 描述 | 默认值 |
|---|---|---|
repo | 采用 owner/name 格式的仓库 | 当前仓库 |
org:orgname | 分析整个组织的缓存用量 | - |
执行
bash "${SKILL_DIR}/scripts/cache-analysis.sh" $ARGS
输出格式
=== Cache Analysis: org/repo ===
Summary:
45 caches, 2340MB used
23% of 10GB limit
=== By Key Prefix ===
node-modules: 12 caches, 1200MB
playwright: 8 caches, 800MB
turbo: 15 caches, 300MB
=== By Branch ===
main: 10 caches, 500MB
develop: 8 caches, 400MB
PR 123: 3 caches, 150MB
PR 118: 3 caches, 140MB
=== Largest Caches ===
node-modules-linux-abc123: 180MB
playwright-linux-def456: 150MB
=== Stale Caches (>7 days old) ===
8 stale caches, 450MB reclaimable
Oldest: 2025-01-15T10:30:00Z
=== PR Branch Caches ===
12 PR caches, 580MB (check if PRs are merged/closed)
Agentic 优化
| 上下文 | 命令 |
|---|---|
| 缓存列表(JSON) | gh api "/repos/{owner}/{repo}/actions/caches?per_page=100" --jq '.actions_caches' |
| 缓存总数 | gh api "/repos/{owner}/{repo}/actions/caches" --jq '.total_count' |
| 删除过期缓存 | gh api -X DELETE "/repos/{owner}/{repo}/actions/caches/{id}" |
| 搜索缓存键 | gh api "/repos/{owner}/{repo}/actions/caches?key=prefix" --jq '.actions_caches[].key' |
| 精简摘要 | bash "${SKILL_DIR}/scripts/cache-analysis.sh" $ARGS |
后续操作
根据分析结果,建议:
- 用量占上限的比例较高 -> 清理过期缓存,检查缓存键策略
- PR 缓存较多 -> 为已关闭的 PR 添加缓存清理工作流
- 单个缓存较大 -> 考虑拆分或压缩
- 存在过期缓存 -> 提供清理命令:
# Delete stale caches gh api "/repos/$REPO/actions/caches?per_page=100" \ --jq '.actions_caches[] | select(.last_accessed_at < "CUTOFF") | .id' | \ while read id; do gh api -X DELETE "/repos/$REPO/actions/caches/$id"; done
评论
支持 Markdown