360 Secure SkillHub
360 安全技能中心

minutes-scheduled-task

该 Skill 说明 WorkBuddy 内置调度器不支持分钟级触发,改用 Windows 任务计划程序注册可重复触发的计划任务,配合独立 Python 脚本执行定时业务逻辑,并给出创建、验证与清理步骤,另附通过 lark-cli 向飞书推送消息的注意事项。

eddie4xioshi-netizen
eddie4xioshi-netizen
热度 13.25
最近更新 2026-08-05 11:42:36
分类:自动化依赖:代码执行 / 读写文件 / 第三方 API应用场景:自动化脚本 / 工作流 / 日程安排 / 任务管理

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add minutes-scheduled-task
Metadata
name
minutes-scheduled-task
description
当用户需要"每 N 分钟"(如每10分钟、每5分钟)定时执行任务时使用。WorkBuddy 内置调度器仅支持 DAILY/HOURLY/WEEKLY/MONTHLY/YEARLY 且忽略 BYMINUTE,必须改用 Windows 任务计划程序 + 独立脚本实现分钟级调度。
version
1.0.0
agent_created
true
category
productivity

Windows 分钟级定时任务(绕过 WorkBuddy 调度器限制)

适用场景

用户要求"每 N 分钟执行一次"的定时任务(如每 10 分钟推送热搜/行情/邮件检查)。

核心事实(2026-08 实测)

  1. WorkBuddy 自动化调度器 RRULE 只支持 DAILY / HOURLY / WEEKLY / MONTHLY / YEARLY
  2. FREQ=MINUTELY 创建时直接报错 Unsupported RRULE frequency
  3. FREQ=HOURLY;BYMINUTE=0,10,20,30,40,50 可创建,但 BYMINUTE 被忽略,next_run_at 全部被解析为"创建时间+1小时" → 每小时只触发 1 次
  4. 结论:无法用 WorkBuddy 内置调度器实现分钟级,须用 Windows 任务计划程序 + 独立脚本

实施步骤

1. 编写独立脚本(Python)

脚本负责业务逻辑(抓数据/发消息),要求:

  • 使用绝对路径调用解释器(用 python.exe 完整路径,避免 PATH 差异)
  • 日志写入同目录 .log 文件(便于事后验证运行次数)
  • 失败时能自通知(如发送错误消息)

2. 用 PowerShell 创建计划任务

关键参数:

$action = New-ScheduledTaskAction -Execute $python -Argument ('"{0}"' -f $script) -WorkingDirectory $workDir
$trigger = New-ScheduledTaskTrigger -Once -At (Get-Date).AddMinutes(1) -RepetitionInterval (New-TimeSpan -Minutes 10) -RepetitionDuration (New-TimeSpan -Days 365)
$settings = New-ScheduledTaskSettingsSet -StartWhenAvailable -ExecutionTimeLimit (New-TimeSpan -Minutes 5) -MultipleInstances IgnoreNew
Register-ScheduledTask -TaskName 'MyTask' -Action $action -Trigger $trigger -Settings $settings -Force

已知坑:

  • ⚠️ -RepetitionDuration ([TimeSpan]::MaxValue) 报错:任务 XML 包含格式不正确或超出范围的值 (10,42):Duration:P99999999DT23H59M59S → 必须用有限时长(如 365 天)
  • ⚠️ PowerShell 工具 stdout 可能被吞 → 用 *> $log 重定向到文件再读取验证
  • ⚠️ 某些环境里 schtasks 等系统工具被安全策略禁用 → 改用 PowerShell 工具
  • 用脚本文件(.ps1)而非内联命令,避免转义问题;写 ps1 时避免非 ASCII 路径

3. 验证

  • Get-ScheduledTask -TaskName X 确认 State=Ready
  • 检查触发器:Repetition Interval: PT10M、StartBoundary 正确
  • 等首次运行后看脚本日志:应出现对应时间戳的"开始/成功"记录

4. 清理 WorkBuddy 内置自动化

把原先创建的 WorkBuddy 自动化任务全部删除(automation_update mode=delete),避免每小时冗余触发。

飞书推送(lark-cli)要点

  • shim(lark-cli.cmd)在 Git Bash 下路径转换崩溃(c:\c\...)→ 直接调用: node.exe <lark-cli 安装目录>/node_modules/@larksuite/cli/scripts/run.js im +messages-send --user-id <ou_xxx> --text "<msg>" --as bot
  • 用户身份可能缺 im:message.send_as_user → 用 --as bot
  • Python subprocess 调 node 可能崩溃 → 用 subprocess 传参数列表(不经 shell)

其他定时场景参考

  • 分钟级调度均可参考本方案(Windows 计划任务 + 独立脚本)
  • 小时/天级调度可直接用 WorkBuddy 内置自动化