代码资源清理技能Skill skill-refresh

此技能用于管理Claude Code资源,包括自动终止孤儿进程和清理~/.opencode/目录中的过时文件,以提高系统性能并释放存储空间。适用于DevOps环境维护,关键词:Claude Code, 资源清理, 孤儿进程, 目录清理, 系统优化, DevOps。

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

name: 技能-刷新 description: 管理Claude Code资源 - 终止孤儿进程并清理~/.opencode/目录 allowed-tools: Bash, AskUserQuestion

刷新技能(直接执行)

直接执行技能,用于管理Claude Code资源。执行两个操作:

  1. 进程清理:识别并终止孤儿Claude Code进程
  2. 目录清理:清理~/.opencode/中累积的文件

此技能内联执行,无需生成子代理。

执行

步骤1:解析参数

从命令输入中提取标志:

  • --dry-run:预览模式
  • --force:跳过确认,使用8小时默认值
# 从命令输入解析
dry_run=false
force=false
if [[ "$*" == *"--dry-run"* ]]; then
  dry_run=true
fi
if [[ "$*" == *"--force"* ]]; then
  force=true
fi

步骤2:运行进程清理

执行进程清理脚本:

.opencode/scripts/claude-refresh.sh $( [ "$force" = true ] && echo "--force" )

存储进程清理输出以供显示。

步骤3:清理孤儿后飞行标记

清理specs目录中的任何孤儿后飞行协调文件。这些文件通常在后飞行完成后由技能清理,但如果进程中断,可能会残留。

echo ""
echo "=== 清理孤儿后飞行标记 ==="
echo ""

# 查找孤儿后飞行标记(超过1小时)
orphaned_pending=$(find specs -maxdepth 3 -name ".postflight-pending" -mmin +60 -type f 2>/dev/null)
orphaned_guard=$(find specs -maxdepth 3 -name ".postflight-loop-guard" -mmin +60 -type f 2>/dev/null)

# 同时检查遗留的全局标记
legacy_pending=""
legacy_guard=""
if [ -f "specs/.postflight-pending" ]; then
    legacy_pending="specs/.postflight-pending"
fi
if [ -f "specs/.postflight-loop-guard" ]; then
    legacy_guard="specs/.postflight-loop-guard"
fi

if [ -n "$orphaned_pending" ] || [ -n "$orphaned_guard" ] || [ -n "$legacy_pending" ] || [ -n "$legacy_guard" ]; then
    if [ "$dry_run" = true ]; then
        echo "将删除以下孤儿标记:"
        [ -n "$orphaned_pending" ] && echo "$orphaned_pending"
        [ -n "$orphaned_guard" ] && echo "$orphaned_guard"
        [ -n "$legacy_pending" ] && echo "$legacy_pending"
        [ -n "$legacy_guard" ] && echo "$legacy_guard"
    else
        # 删除孤儿任务范围的标记
        find specs -maxdepth 3 -name ".postflight-pending" -mmin +60 -delete 2>/dev/null
        find specs -maxdepth 3 -name ".postflight-loop-guard" -mmin +60 -delete 2>/dev/null

        # 删除遗留的全局标记
        rm -f specs/.postflight-pending 2>/dev/null
        rm -f specs/.postflight-loop-guard 2>/dev/null

        echo "已清理孤儿后飞行标记。"
    fi
else
    echo "未找到孤儿后飞行标记。"
fi

步骤4:运行目录调查

显示当前目录状态,不进行清理:

.opencode/scripts/claude-cleanup.sh

这会显示:

  • 当前~/.opencode/目录大小
  • 按目录细分
  • 可回收的空间

步骤5:基于模式执行

干运行模式

如果设置 --dry-run

echo ""
echo "=== 干运行模式 ==="
echo "显示8小时清理预览..."
echo ""
.opencode/scripts/claude-cleanup.sh --dry-run --age 8

显示预览后退出。

强制模式

如果设置 --force

echo ""
echo "=== 执行清理(8小时默认值)==="
echo ""
.opencode/scripts/claude-cleanup.sh --force --age 8

显示结果并退出。

交互模式(默认)

如果未设置任何标志:

  1. 检查清理候选是否存在(如果找到候选,claude-cleanup.sh 退出代码为1)

  2. 如果没有候选,显示消息并退出:

在默认阈值内未找到清理候选。
所有文件要么受保护,要么最近修改过。
  1. 如果候选存在,提示用户选择年龄阈值:
{
  "question": "选择清理年龄阈值:",
  "header": "年龄阈值",
  "multiSelect": false,
  "options": [
    {
      "label": "8小时(默认)",
      "description": "删除超过8小时的文件 - 积极清理"
    },
    {
      "label": "2天",
      "description": "删除超过2天的文件 - 保守清理"
    },
    {
      "label": "彻底清理",
      "description": "删除除安全边际(1小时)外的所有内容"
    }
  ]
}
  1. 将用户选择映射到年龄参数:

    • “8小时(默认)” → --age 8
    • “2天” → --age 48
    • “彻底清理” → --age 0
  2. 使用选定的年龄执行清理:

case "$selection" in
  "8小时(默认)")
    .opencode/scripts/claude-cleanup.sh --force --age 8
    ;;
  "2天")
    .opencode/scripts/claude-cleanup.sh --force --age 48
    ;;
  "彻底清理")
    .opencode/scripts/claude-cleanup.sh --force --age 0
    ;;
esac
  1. 显示清理结果

示例执行流程

交互流程

# 用户运行:/refresh

# 输出:
Claude Code 刷新
===================

未找到孤儿进程。
所有3个Claude进程都是活动会话。

---

Claude Code 目录清理
=============================

目标:~/.opencode/

当前总大小:7.3 GB

扫描目录中...

目录                   总计     可清理     文件数
----------          -------   ----------    -----
projects/           7.0 GB       6.5 GB      980
debug/            151.0 MB     140.0 MB      650
...

总计                 7.3 GB       6.7 GB     5577

可回收空间:6.7 GB

# 提示出现:
[年龄阈值]
选择清理年龄阈值:
  1. 8小时(默认)- 删除超过8小时的文件
  2. 2天 - 删除超过2天的文件
  3. 彻底清理 - 删除除安全边际外的所有内容

# 用户选择选项1

# 清理执行:
清理完成
================
已删除:5577 文件
失败:  0 文件
回收空间:6.7 GB

新总大小:600.0 MB

干运行流程

# 用户运行:/refresh --dry-run

# 显示调查,然后:
=== 干运行模式 ===
显示8小时清理预览...

将删除:5577 文件
将回收:6.7 GB

干运行总结
===============
未进行任何更改。

强制流程

# 用户运行:/refresh --force

# 显示调查,然后立即:
=== 执行清理(8小时默认值)===

清理完成
================
已删除:5577 文件
回收空间:6.7 GB

安全措施

受保护文件(永不删除)

  • sessions-index.json(在每个项目目录中)
  • settings.json
  • .credentials.json
  • history.jsonl

安全边际

过去一小时内修改的文件永不删除,无论年龄阈值如何。

进程安全

  • 仅针对孤儿进程(TTY = “?”)
  • 从不杀死活动会话
  • 排除当前进程树

错误处理

脚本未找到

如果脚本不存在:

错误:在 .opencode/scripts/ 中未找到清理脚本
请确保 claude-refresh.sh 和 claude-cleanup.sh 已安装。

权限被拒绝

如果因权限而导致终止/删除失败:

警告:由于权限不足,某些操作失败。
失败文件:5
成功删除:5572 文件

无 ~/.opencode/ 目录

如果目录不存在:

错误:未找到 ~/.opencode/ 目录。
无需清理。