# dsh-schedule-command [English](README_EN.md) | 中文 为 [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) 提供人类友好的 `/schedule` 斜杠命令:用自然语言在当前会话中创建和管理定时任务,会话将按计划自动执行。 - 🗣️ **自然语言创建**:`/schedule 每 10 分钟,监控当前机器的运行情况并进行分析总结` - ⏰ **会话标识**:含定时任务的会话自动在标题前加 `⏰`,侧边栏一眼可辨 - 🔄 **单次 + 周期**:支持延时(`after`)、绝对时间(`at`)、固定间隔(`every`) - 🧩 **开箱即用**:安装时自动挂载 `@deepseek-ai/dsh-schedule` 运行时,无需额外配置 ## 安装 ```bash # 从 GitHub 安装 dsh plugin --profile web add github:piaohua/dsh-schedule-command # 或使用本地目录(开发调试) dsh plugin --profile web add /path/to/dsh-schedule-command ``` 安装后,`dsh plugin` 会自动将插件加入 profile 的 bundle 栈。**重启 DSH 后生效。** > **注意**: 安装本插件会同时挂载 `@deepseek-ai/dsh-schedule` 运行时(这是 dsh 核心能力,但默认没有任何 bundle 挂载它)。没有该运行时,`/schedule` 只会写入无效的日志记录,定时任务永远不会真正触发。 ## 使用方式 ### 创建定时任务 ``` /schedule 30分钟后提醒我喝水 /schedule 每天早上9点生成项目晨报 /schedule 2小时后检查构建状态 /schedule tomorrow 3pm review PR comments /schedule every 2 hours check disk usage /schedule 每个工作日上午9:00,为这个项目生成一份简明的晨间简报 ``` ### 管理定时任务 ``` /schedule list # 列出所有活跃定时任务 /schedule delete schedule-1 # 删除指定任务 /schedule clear # 删除所有任务 /schedule # 显示帮助信息 ``` ## 支持的时间格式 | 模式 | 示例 | 映射规则 | |------|------|---------| | X分钟后/小时后/秒后 | `30分钟后提醒我` | `after_seconds` | | in X minutes/hours | `in 2 hours check status` | `after_seconds` | | 每X分钟/小时/天 | `每2小时检查一次` | `every_seconds` | | every X minutes/hours/days | `every 30 minutes sync` | `every_seconds` | | 每天/每小时 | `每天生成报告` | `every_seconds: 86400` | | 明天/今天 HH:MM | `明天下午3点开会` | `at` (绝对时间) | | tomorrow/today HH:MM | `tomorrow 9am standup` | `at` (绝对时间) | | 每个工作日 | `每个工作日9:00晨报` | `every_seconds: 86400` + 工作日约束标注 | > **注意**: 底层 `dsh-schedule` v1 仅支持固定间隔(`every_seconds`),不支持 Cron 表达式。"每个工作日"等日历规则会降级为 24 小时间隔,并在提示词中标注约束条件,由模型在执行时自行判断是否跳过。 ## 会话标识 含活跃定时任务的会话自动获得 `⏰` 标题前缀;在全新会话中直接创建任务时,插件还会自动生成形如 `⏰ 定时任务:监控当前机器的运行情况…` 的标题,并主动开启一次对话,确保会话有内容、有标题、在工作区可见: ``` ⏰ 定时任务:监控当前机器的运行情况并进行分析总结。 ``` 所有定时任务被清除后,前缀自动移除;之后重新创建任务,前缀会再次恢复。 ## 跨平台唤醒建议 定时任务仅在会话保持活跃时准时触发。如果电脑进入睡眠状态,任务会在恢复后变为 overdue 并补发(周期任务仅补发最新一次)。 | 平台 | 建议 | |------|------| | **Linux** | 服务器通常不睡眠,无需额外配置 | | **macOS** | 使用 `sudo pmset schedule wake "MM/DD/YYYY HH:MM:SS"` 设置定时唤醒 | | **Windows** | 在任务计划程序中勾选"唤醒计算机以运行此任务" | ## 已知限制 - **仅会话本地交付**: 提醒只在原会话 live 时触发;冷会话不会收到外部通知 - **固定间隔**: 不支持 Cron 表达式或复杂日历规则 - **最新一次追赶**: 逾期的周期任务只补发最新一次,不回放积压 - **自然语言解析**: 基于正则匹配,复杂表达可能降级为默认规则 ## 开发 ```bash pnpm install pnpm build # 编译 TypeScript → lib/ pnpm clean # 清理构建产物 ``` ## 许可证 MIT