mcpField
D
delayed-command

delayed-command

github.com/paulrberg开发102135 次安装今天更新
代码仓库

关于 delayed-command

delayed-command 是一项用于等待指定时长后运行 Bash 命令的技能。它支持组合小时、分钟和秒;较短等待同步执行,较长等待则在后台运行。

主要功能

  1. 01解析小时、分钟和秒格式的时长
  2. 02在指定延迟后运行命令
  3. 03等待不超过 10 分钟时同步执行
  4. 04较长等待在后台运行
  5. 05报告输出、退出状态和耗时

适用场景

  1. 01短暂等待后运行命令
  2. 02将 Shell 任务延后并在后台执行
  3. 03延迟执行部署或提交命令

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/paulrberg/agent-skills --skill delayed-command

安装后在 Claude Code 中输入/delayed-command确认已加载。

详细介绍

延迟执行命令

等待指定时长后,执行 Bash 命令。

参数

  • duration:执行前的等待时长(例如,30s、5m、1h、1h30m)
  • command:延迟结束后要运行的 Bash 命令

时长格式

格式示例含义
Xs30s30 秒
Xm5m5 分钟
Xh1h1 小时
XhYm1h30m1 小时 30 分钟
XhYmZs1h5m30s1 小时 5 分 30 秒

工作流

1. 解析时长

将时长参数转换为秒:

  • 提取小时(h)、分钟(m)和秒(s)部分
  • 计算总秒数:hours * 3600 + minutes * 60 + seconds

解析逻辑:

duration="$1"
seconds=0

# Extract hours
if [[ $duration =~ ([0-9]+)h ]]; then
  seconds=$((seconds + ${BASH_REMATCH[1]} * 3600))
fi

# Extract minutes
if [[ $duration =~ ([0-9]+)m ]]; then
  seconds=$((seconds + ${BASH_REMATCH[1]} * 60))
fi

# Extract seconds
if [[ $duration =~ ([0-9]+)s ]]; then
  seconds=$((seconds + ${BASH_REMATCH[1]}))
fi
2. 延迟执行

对于不超过 10 分钟(600 秒)的时长:

使用 Bash 工具同步运行,并设置适当的超时时间:

sleep <seconds> && <command>

将 Bash 工具的 timeout 参数设为至少 (seconds + 60) * 1000 毫秒。

对于超过 10 分钟的时长:

使用 run_in_background: true 在后台运行:

sleep <seconds> && <command>

告知用户命令正在后台运行,并提供用于查询状态的任务 ID。

3. 报告结果

执行完成后:

  • 显示命令输出
  • 报告退出状态
  • 注明总耗时

示例

短延迟(同步)

用户:/delayed-command 5m npm test

  1. 解析:5 分钟 = 300 秒
  2. 执行:sleep 300 && npm test(超时:360000ms)
  3. 报告测试结果
长延迟(后台)

用户:/delayed-command 1h git commit -m "auto-commit"

  1. 解析:1 小时 = 3600 秒
  2. 在后台执行:sleep 3600 && git commit -m "auto-commit"
  3. 返回用于查询状态的任务 ID
组合时长

用户:/delayed-command 1h30m ./deploy.sh

  1. 解析:1h30m = 5400 秒
  2. 在后台执行(>600s):sleep 5400 && ./deploy.sh
  3. 告知用户后台任务的相关信息

错误处理

错误响应
时长格式无效显示支持的格式和示例
缺少命令参数提示输入要执行的命令
找不到命令延迟结束后报告错误
时长超过 24 小时警告用户并建议其他方式(cron、at)

评论

支持 Markdown