Preface

The scheduling functionality of DeepSeek Harness (DSH) is usually limited to the current conversation session. After a session is closed, reminders remain pending until someone reopens that session. This makes it impossible to wake long-running tasks at a specific point in time or trigger automated checks while the session is inactive.

The dsh-clock plugin fills this gap. It provides calendar and clock functionality, allowing a specified conversation to be woken at a chosen moment. Regardless of whether the conversation is currently closed, the system injects accurate system time and time drift, and explicitly indicates in the message whether the wake-up was late.

Feature Overview

  • Wake conversations: Wake a conversation by keyword at a specified time, even if the conversation is closed.
  • Time and drift injection: Include the scheduled time, actual time, time drift, and late warning in wake-up messages.
  • Agent tools and skills: Provide a clock tool for Agent calls (set, now, list, cancel), and include a built-in clock skill to assist conversations.
  • Multi-level timing: Combine in-process timers, a Windows Task Scheduler mirror, and catch-up replay at host startup to ensure accurate timing.
  • Calendar panel: Provide a visual calendar and clock panel, supporting the creation of reminders directly on the calendar.
  • Branch handling: Support conversation branching and prompt to copy alerts when creating a branch to prevent omissions.
  • Drift tolerance: Lateness within 60 seconds is still marked as “on time.”

Installation and Enablement

Run the following commands in the plugin directory to complete installation and build:

npm install
npm run build
dsh plugin --profile web add link:<this-directory>

Or install directly via a Git URL:

dsh plugin --profile web add <git-url>

After installation, restart the DeepSeek Harness Web service. A “Calendar” button will appear at the bottom of the sidebar; click it to open the plugin panel.

Usage

Via Agent Tool

The Agent can directly invoke the clock tool to manage reminders. Supported parameters include:

  • Set a delayed reminder: Wake up N seconds after the current time.
  • Set a precise-time reminder: Wake up at a specific time point (UTC or a specified time zone).
  • Query and cancel: Query the current time, list pending reminders, or cancel a specific reminder.

Example:

// 设置延迟提醒
{
  "action": "set",
  "afterSeconds": 2700,
  "keyword": "check the build",
  "note": "the release job should be done by now"
}

// 设置精确时间提醒(指定时区)
{
  "action": "set",
  "at": "2026-09-11T09:30:00+08:00",
  "keyword": "standup",
  "sessionId": "session-...",
  "timeZone": "Asia/Shanghai"
}

// 查询当前时间
{ "action": "now" }

// 列出待办
{ "action": "list" }

// 取消提醒
{ "action": "cancel", "id": "a-..." }

Via Calendar Panel

  1. Click the “Calendar” button in the sidebar to open the panel.
  2. Click a specific date, enter the time and keyword in the calendar view, and select the target conversation.
  3. Click the button to confirm creation.
  4. The panel automatically distinguishes between “pending” and “triggered” reminders, and supports editing (pending only), immediate triggering, cancellation, or deletion.

Technical Implementation Details

The plugin uses a three-layer timing mechanism to ensure the reliability of wake-ups:

  1. In-process timers: Handle normal cases and maintain the earliest pending reminder.
  2. Windows Task Scheduler: Handle cases where the machine sleeps or the host is suspended, supporting StartWhenAvailable and wakeComputer (requires configuration).
  3. Catch-up replay: If the host was not running, automatically check at startup and resend all missed wake-up messages.

All triggers use a Claim-then-Delivery pattern to avoid duplicate delivery. The system retains triggered reminders for 7 days for traceability.

Notes

  • Runtime dependency: Wake-up requires the DeepSeek Harness host process to be running. This is not a push notification and cannot be triggered externally when the host is off.
  • One-time reminders: Only one-time reminders are currently supported; recurring tasks are not yet supported.
  • Task name conflict: There is a shared task named dsh-clock-wake in the Windows Task Scheduler; multiple Host instances on the same machine share this task name.
  • Panel theme: The calendar panel is a floating layer and does not support theme configuration through Shell slots.

Summary

By injecting time information and calculating drift, dsh-clock solves the problem that DeepSeek Harness cannot reliably schedule wake-ups outside of a session. Combined with the Agent tool and calendar panel, it helps developers achieve precise, time-based intervention in long-running tasks.