性能诊断Skill diagnose-performance

该技能用于全面诊断Claude Code的性能,包括存储分析、API状态检查和已知问题研究,帮助优化性能并提供清理建议,适用于软件开发和运维人员。关键词:性能诊断,Claude Code,存储分析,API状态,GitHub问题,清理命令。

DevOps 0 次安装 0 次浏览 更新于 3/11/2026

name: 诊断性能 description: 运行全面的Claude Code性能诊断 - 分析存储、API状态和已知问题 allowed-tools: Bash, Read, Glob, Grep, Task, WebSearch, WebFetch

诊断性能

全面的Claude Code性能诊断。此协调器命令结合了本地分析与API状态检查和已知问题研究。

用法

/diagnose-performance
/diagnose-performance --quick    # 跳过外部检查

参数

参数 描述
--quick 跳过API状态和GitHub问题检查(仅本地分析)

分析内容

  1. 本地存储 - ~/.claude/ 中的所有文件夹,包括大小和文件计数
  2. 调试文件夹 - 调试转录积累(常被忽略)
  3. 会话/代理文件 - 每个项目的文件计数和年龄细分
  4. 大文件 - 大于10MB的文件,可能指示膨胀
  5. API状态 - Anthropic服务状态(status.anthropic.com
  6. 已知问题 - 影响性能的最新GitHub问题
  7. 版本检查 - 当前Claude Code版本

工作流程

步骤1:版本和环境检查

echo "性能诊断报告"
echo "============================="
echo "生成时间: $(date '+%Y-%m-%d %H:%M:%S %Z')"
echo ""

# 获取Claude Code版本
VERSION=$(claude --version 2>/dev/null | head -1)
echo "Claude Code: $VERSION"
echo "平台: $(uname -s) $(uname -m)"
echo ""

步骤2:全面存储分析

分析 ~/.claude/ 中的所有文件夹:

echo "存储分析"
echo "================"
echo ""

# 总大小
TOTAL=$(du -sh ~/.claude 2>/dev/null | cut -f1)
echo "~/.claude 总大小: $TOTAL"
echo ""

# 状态确定
TOTAL_MB=$(du -sm ~/.claude 2>/dev/null | cut -f1)
if [ "$TOTAL_MB" -gt 1000 ]; then
  STATUS="危急"
elif [ "$TOTAL_MB" -gt 500 ]; then
  STATUS="警告"
else
  STATUS="健康"
fi
echo "状态: $STATUS"
echo ""

# 按类别 - 所有文件夹
echo "按类别:"
echo "------------"
printf "  %-18s %10s %12s
" "文件夹" "大小" "文件数"
printf "  %-18s %10s %12s
" "------" "----" "-----"

for dir in projects debug plugins file-history plans shell-snapshots todos statsig local; do
  if [ -d "$HOME/.claude/$dir" ]; then
    SIZE=$(du -sh "$HOME/.claude/$dir" 2>/dev/null | cut -f1)
    COUNT=$(find "$HOME/.claude/$dir" -type f 2>/dev/null | wc -l)
    printf "  %-18s %10s %12d
" "$dir/" "$SIZE" "$COUNT"
  fi
done

# 单个文件
for file in history.jsonl settings.json; do
  if [ -f "$HOME/.claude/$file" ]; then
    SIZE=$(du -sh "$HOME/.claude/$file" 2>/dev/null | cut -f1)
    printf "  %-18s %10s
" "$file" "$SIZE"
  fi
done

步骤3:当前项目深度分析

echo ""
echo "当前项目"
echo "==============="

# 跨平台项目路径检测
if [ -n "$MSYSTEM" ]; then
  PROJECT_NAME=$(pwd | sed 's|^/\([a-z]\)/|\U\1--|' | sed 's|/|--|g')
else
  PROJECT_NAME=$(pwd | sed 's/[\/:]/-/g' | sed 's/^-//')
fi
PROJECT_DIR="$HOME/.claude/projects/$PROJECT_NAME"

echo "项目: $PROJECT_NAME"

if [ -d "$PROJECT_DIR" ]; then
  PROJECT_SIZE=$(du -sh "$PROJECT_DIR" 2>/dev/null | cut -f1)
  TOTAL_FILES=$(find "$PROJECT_DIR" -maxdepth 1 -name "*.jsonl" 2>/dev/null | wc -l)
  AGENT_FILES=$(find "$PROJECT_DIR" -maxdepth 1 -name "agent-*.jsonl" 2>/dev/null | wc -l)
  SESSION_FILES=$((TOTAL_FILES - AGENT_FILES))

  echo "大小: $PROJECT_SIZE"
  echo "会话文件: $SESSION_FILES"
  echo "代理转录: $AGENT_FILES"
  echo ""
  echo "按年龄:"
  echo "  今天:     $(find "$PROJECT_DIR" -maxdepth 1 -name "*.jsonl" -mtime 0 2>/dev/null | wc -l)"
  echo "  1-3天:  $(find "$PROJECT_DIR" -maxdepth 1 -name "*.jsonl" -mtime +0 -mtime -3 2>/dev/null | wc -l)"
  echo "  3-7天:  $(find "$PROJECT_DIR" -maxdepth 1 -name "*.jsonl" -mtime +2 -mtime -7 2>/dev/null | wc -l)"
  echo "  >7天:   $(find "$PROJECT_DIR" -maxdepth 1 -name "*.jsonl" -mtime +7 2>/dev/null | wc -l)"
else
  echo "未找到会话数据"
fi

步骤4:调试文件夹分析

echo ""
echo "调试转录"
echo "================="

if [ -d "$HOME/.claude/debug" ]; then
  DEBUG_SIZE=$(du -sh "$HOME/.claude/debug" 2>/dev/null | cut -f1)
  DEBUG_COUNT=$(find "$HOME/.claude/debug" -type f 2>/dev/null | wc -l)
  OLD_DEBUG=$(find "$HOME/.claude/debug" -type f -mtime +7 2>/dev/null | wc -l)

  echo "总计: $DEBUG_SIZE ($DEBUG_COUNT 文件)"
  echo ">7天: $OLD_DEBUG 文件"

  # 如果调试文件夹过大,警告
  DEBUG_MB=$(du -sm "$HOME/.claude/debug" 2>/dev/null | cut -f1)
  if [ "$DEBUG_MB" -gt 100 ]; then
    echo "警告: 调试文件夹过大。运行 /cleanup-debug 以回收空间。"
  fi
else
  echo "未找到调试文件夹"
fi

步骤5:大文件检测

echo ""
echo "大文件 (>10MB)"
echo "==================="

LARGE_COUNT=$(find ~/.claude -type f -size +10M 2>/dev/null | wc -l)
if [ "$LARGE_COUNT" -gt 0 ]; then
  find ~/.claude -type f -size +10M -exec ls -lh {} \; 2>/dev/null | \
    awk '{print "  " $5 "  " $9}' | head -10
  if [ "$LARGE_COUNT" -gt 10 ]; then
    echo "  ... 和 $((LARGE_COUNT - 10)) 个更多"
  fi
else
  echo "  未找到"
fi

步骤6:可回收空间总结

echo ""
echo "可回收空间"
echo "================="

TOTAL_RECLAIMABLE=0

# 会话 >7 天
if [ -d "$PROJECT_DIR" ]; then
  OLD_SESSIONS=$(find "$PROJECT_DIR" -maxdepth 1 -name "*.jsonl" ! -name "agent-*" -mtime +7 2>/dev/null | wc -l)
  OLD_AGENTS=$(find "$PROJECT_DIR" -maxdepth 1 -name "agent-*.jsonl" -mtime +7 2>/dev/null | wc -l)
  echo "  会话 >7 天: $OLD_SESSIONS 文件"
  echo "  代理 >7 天:   $OLD_AGENTS 文件"
fi

# 调试
if [ -d "$HOME/.claude/debug" ]; then
  OLD_DEBUG=$(find "$HOME/.claude/debug" -type f -mtime +7 2>/dev/null | wc -l)
  OLD_DEBUG_SIZE=$(find "$HOME/.claude/debug" -type f -mtime +7 -exec du -ch {} + 2>/dev/null | tail -1 | cut -f1)
  echo "  调试 >7 天:    $OLD_DEBUG 文件 (${OLD_DEBUG_SIZE:-0})"
fi

# Statsig(始终安全)
if [ -d "$HOME/.claude/statsig" ]; then
  STATSIG_SIZE=$(du -sh "$HOME/.claude/statsig" 2>/dev/null | cut -f1)
  echo "  Statsig 缓存:    $STATSIG_SIZE(始终安全)"
fi

步骤7:生成性能诊断代理(除非使用 --quick)

如果未指定 --quick,使用 Task 工具生成 performance-diagnostician 代理:

生成 performance-diagnostician 代理以:
1. 检查 API 状态,访问 status.anthropic.com
2. 在 GitHub 上搜索已知的 Claude Code 性能问题
3. 基于当前版本提供优先级建议

步骤8:聚合和呈现结果

结合本地分析与代理发现,形成统一报告:

外部检查(来自代理)
============================
API 状态: {OPERATIONAL | DEGRADED | OUTAGE}
- 最近事件: {列表}

已知问题:
- {问题编号}: {标题}
  解决方案: {解决方案}

建议
===============
优先级 1: {最具影响力的操作}
优先级 2: {第二个操作}
优先级 3: {第三个操作}

快速命令
==============
/cleanup-sessions 7     - 移除旧会话文件
/cleanup-agents 7       - 移除旧代理转录
/cleanup-debug 7        - 移除旧调试转录
/prune-cache 7          - 全面清理
/prune-cache --nuclear  - 最大清理(所有文件夹)
/clear                  - 重置上下文窗口

示例输出

性能诊断报告
=============================
生成时间: 2025-12-26 16:45:00 EST

Claude Code: 2.0.75 (Claude Code)
平台: MINGW64_NT-10.0 x86_64

存储分析
================

~/.claude 总大小: 1.5G

状态: 危急

按类别:
------------
  文件夹                  大小        文件数
  ------                  ----        -----
  projects/               950M         4928
  debug/                  359M          878
  plugins/                149M          312
  file-history/            53M         1205
  plans/                  2.4M           15
  shell-snapshots/        1.5M           12
  todos/                  1.1M           45
  history.jsonl           480K

当前项目
===============
项目: D--repos-gh-melodic-claude-code-plugins
大小: 948M
会话文件: 510
代理转录: 2140

按年龄:
  今天:     492
  1-3 天:  948
  3-7 天:  353
  >7 天:   406

调试转录
=================
总计: 359M (878 文件)
>7 天: 0 文件

大文件 (>10MB)
===================
  15M   ~/.claude/projects/.../session-abc123.jsonl
  14M   ~/.claude/projects/.../session-def456.jsonl

可回收空间
=================
  会话 >7 天: 406 文件
  代理 >7 天:   0 文件
  调试 >7 天:    0 文件 (0)
  Statsig 缓存:    34K(始终安全)

外部检查
===============
API 状态: OPERATIONAL
- Dec 23: Opus 4.5 elevated errors(已解决)
- Dec 22: Opus 4.5 elevated errors(已解决)

已知问题:
- #14476: Input lag in v2.0.72+(OPEN)
  解决方案: Rollback to v2.0.36
- #10881: Long session degradation(OPEN)
  解决方案: Restart Claude Code periodically

建议
===============
优先级 1: 运行 /prune-cache --nuclear(释放约 400MB)
优先级 2: 重启 Claude Code 以重置会话状态
优先级 3: 在 75% 上下文时主动使用 /clear

快速命令
==============
/cleanup-sessions 7     - 移除旧会话文件
/cleanup-agents 7       - 移除旧代理转录
/cleanup-debug 7        - 移除旧调试转录
/prune-cache 7          - 全面清理
/prune-cache --nuclear  - 最大清理(所有文件夹)
/clear                  - 重置上下文窗口

注释

  • 这是性能故障排除的主要入口点
  • 对于仅存储分析,使用 /check-claude-storage
  • 对于快速清理,使用单独的 /cleanup-* 命令
  • --quick 标志跳过网络请求,用于离线诊断
  • 调试文件夹现已包含在分析中(之前被忽略)