Skip to content
dsh.fish
Bundle

dsh-schedule-command

Human-facing /schedule slash command for managing session-local scheduled tasks in DeepSeek Harness

Source
piaohua
License
MIT
Updated
Updated 7 days ago

Readme

# 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

Install

dsh plugin --profile web add github:piaohua/dsh-schedule-command

Profile: web

  • This package builds from source on install. pnpm will ask you to allow its build script — that is permission to run the package’s code on your machine, outside the agent sandbox. Only allow sources you trust.
  • This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.
Source