DeepSeek Harness (DSH) employs a pluggable architecture. For scenarios that require periodically executed tasks (for example, checking CI status on a schedule), existing mechanisms usually rely on continuous manual intervention or existing sessions. The dsh-plugin-scheduled-tasks plugin aims to solve this problem by allowing preset trigger rules to automatically create a new session and initiate one round of conversation at specified times. It is maintained by Jeff1573.

Core Features

  • Automatically creates a new session and initiates a conversation without manual monitoring.
  • Supports daily, weekly, and fixed-interval trigger rules (minimum interval 5 minutes).
  • Supports IANA time zone calculations and daylight saving time transitions.
  • Includes a built-in “unattended” permission preset (scheduled), restricted to the workspace and does not stop to request approval.
  • Supports multiple notification channels: Bark / WeCom / ntfy / ServerChan / Telegram / Lark / DingTalk / any Webhook.
  • Supports managing tasks via tools within conversations.
  • Includes a bundled patch, so no manual configuration file modifications are required after installation.

Installation and Enablement

Prerequisite: DeepSeek Harness is already installed (via npx @deepseek-ai/dsh web or global installation).

Recommended one-command installation:

dsh plugin --profile web add github:Jeff1573/dsh-plugin-scheduled-tasks

After installation, restart dsh web to activate it. The plugin includes cordis.patch.yml and completes registration automatically, so no manual intervention is required.

Usage

After restarting, a “Scheduled Tasks” entry appears at the bottom of the sidebar.

  1. Create a task: Click “Create Task.” Required fields include the trigger time (daily/weekly/interval), the task name, and the content you want DSH to execute.
  2. Advanced options: Expand “Advanced Options.” It is recommended to set the permission preset to “unattended” (scheduled); otherwise, scheduled runs may get stuck in the approval step. You can configure the working directory, run timeout (default 30 minutes), and failure retry policy.
  3. Run and view: In the task list, you can “Run Now” or pause/edit. Run history records the status of each execution (success/failure/timeout). Click an entry to open the corresponding session.
  4. Notification settings: Configure notifications in the panel. Supports multiple channels such as Bark and WeCom. Notification content can include a summary of the model response (default first 200 characters).

Notes

  • This plugin is not published to the npm registry; install it only from Git.
  • Task data is stored in ~/.dsh/storages/scheduled_tasks.json.
  • WeCom group bots have rate limits (about 20 messages per minute). For high-frequency tasks, notify only on failure.
  • Personal WeChat has no official sending API. Use WeCom or services such as ServerChan as relays.
  • Notification addresses (such as Webhooks) are saved in the SCHEDULED_TASKS_NOTIFY_URL field of ~/.dsh/.credentials.yaml.
  • The sidebar entry and the scheduled_task_* tools are both located in the root context and accessible from every session.