SuperAPI AI 工具集

scheduler

办公与效率

查看项目

更新于 10-15 15:04

技能介绍

调度助手用于帮助用户设置和管理按计划自动执行的 Claude Code 任务,并基于操作系统原生调度器运行:macOS 使用 launchd(LaunchAgents),Linux 使用 crontab,Windows 使用任务计划程序。

用途与主要能力

该技能可以:把自然语言转换为 cron 表达式(例如“every weekday at 9am”转换为“0 9 * * 1-5”);解释 cron 语法与调度概念;设置原生系统调度器;排查调度问题;为常见工作流建议自动化模式。

一次性任务与循环任务

调度器同时支持一次性任务和循环任务。

一次性任务用于在特定时间执行一次,例如“run at 3pm today”“tomorrow at noon”“next Tuesday at 2pm”,执行完成后会自动清理。

循环任务用于按计划重复执行,例如“every day at 9am”“daily at 6pm”“weekdays at 10am”,或直接使用类似 0 9 * * 1-5 的 cron 表达式。

检测规则:除非包含“every”“daily”“weekly”等表示循环的关键词,任务会被视为一次性任务。

Git Worktree 模式(隔离分支)

对于会产生修改的任务,worktree 模式会在隔离环境中运行。示例流程为:用户要求“每晚 2 点重构已弃用的 API 调用并推送以供审阅”,系统询问是否在隔离的 git worktree 中运行,用户选择“是”,随后创建带分支前缀 claude-task/、目标远端为 origin 的任务。

其工作方式为:任务触发后创建带新分支的全新 worktree;Claude 在该 worktree 中运行(与主工作目录隔离);变更被提交并推送到远端;推送成功后清理 worktree;用户随后自行审阅 PR。若推送失败,worktree 会被保留以供手动审阅。

配置项:worktree.enabled 默认 false,用于启用 worktree 隔离;worktree.branchPrefix 默认“claude-task/”,为分支名前缀;worktree.remoteName 默认“origin”,为推送目标远端。

Cron 快速参考

格式为五个字段:分钟、小时、日、月、星期。其中分钟为 0-59,小时为 0-23,日为 1-31,月为 1-12,星期为 0-6(周日为 0)。

常见模式包括:0 9 * * * 表示每天上午 9 点;0 9 * * 1-5 表示工作日每天上午 9 点;*/15 * * * * 表示每 15 分钟;0 */2 * * * 表示每 2 小时;0 9 1 * * 表示每月 1 日上午 9 点;0 9 * * 1 表示每周一上午 9 点。完整语法可参见 CRON_REFERENCE.md。

平台设置

任务由操作系统的原生调度器执行:macOS 为 launchd(LaunchAgents),Linux 为 crontab,Windows 为任务计划程序。平台相关细节可参见 PLATFORM_SETUP.md。

常见用例

每日代码审查:计划 0 9 * * 1-5(工作日每天上午 9 点),命令 /review-code --scope=yesterday。

每周依赖审计:计划 0 10 * * 1(每周一上午 10 点),命令为检查过时的依赖与安全漏洞。

自动化测试:计划 0 */4 * * *(每 4 小时),命令为运行测试套件并报告失败。

故障排查

任务未运行时,可检查 /scheduler:schedule-status 查看健康状况,确认任务已启用(/scheduler:schedule-list),查看日志 /scheduler:schedule-logs <task-id>,并确保调度器环境中 claude CLI 位于 PATH。

常见问题包括:调度器环境中的 PATH 未正确设置;工作目录不存在;命令语法错误;调度器守护进程未运行。

辅助脚本

可使用以下命令校验 cron 表达式:python scripts/parse-cron.py "0 9 * * 1-5"

可用命令

/scheduler:schedule-add 创建新计划任务;/scheduler:schedule-list 查看所有计划任务;/scheduler:schedule-remove <id> 删除计划任务;/scheduler:schedule-status 检查调度器健康状况;/scheduler:schedule-run <id> 手动运行任务;/scheduler:schedule-logs <id> 查看执行日志。