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问题检查(仅本地分析) |
分析内容
- 本地存储 - ~/.claude/ 中的所有文件夹,包括大小和文件计数
- 调试文件夹 - 调试转录积累(常被忽略)
- 会话/代理文件 - 每个项目的文件计数和年龄细分
- 大文件 - 大于10MB的文件,可能指示膨胀
- API状态 - Anthropic服务状态(status.anthropic.com)
- 已知问题 - 影响性能的最新GitHub问题
- 版本检查 - 当前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标志跳过网络请求,用于离线诊断- 调试文件夹现已包含在分析中(之前被忽略)