dshplugin.devDeepSeek Harness Plugins
DSH Timer Scheduler plugin logo
DeepSeek Harness Plugin

DSH Timer Scheduler

0
Published by GMH13552

简单的dsh定时任务插件 支持定时列表任务、ui显示,对于长期任务有益

UI & Designagentdeepseek-harnessdshdsh-plugin

Get this plugin

Review the source, then continue to the publisher.

Get this plugin
Share on X ↗

About this plugin

Source snapshot 8/17/2026

dsh-timer-scheduler-ui

A DeepSeek Harness (DSH) plugin: an agent self-scheduler that wakes the agent at a future time to autonomously check on background jobs, remote tasks, or anything that needs a "come back later" look — without a human having to prompt it — plus a bottom-right reminder panel in the web UI.

Features

  • schedule_reminder — schedule a one-shot reminder, relative (delay_seconds) or absolute (at: ISO 8601 / HH:MM[:SS]).
  • list_reminders — list pending reminders.
  • cancel_reminder — cancel a reminder by id.
  • Auto-wake — on fire, the agent is woken through agent.followup() with a new turn; it acts and reports on its own, no human wake-up needed.
  • Persistence — pending reminders are serialized to $DSH_HOME/timer-reminders.json and re-armed on restart.
  • Bottom-right panel (client half) — per-reminder note + live countdown, theme-aware via --dsw-alias-* tokens, hidden when empty, never covering the send button.

Structure

One package, two halves, in the standard dsh.client + dsh.bundle.patch shape:

FileHalfRole
lib/index.jsHostRegisters GET /api/timer-reminders, filtered by sessionId
lib/client.jsClientshell.overlay bottom-right panel, polling every second
cordis.patch.ymlbundleInserts the Host half into the web profile's host composition
package.jsondsh.client (browser bundle) + dsh.bundle.patch (host row)

Note: the model-facing schedule_reminder / list_reminders / cancel_reminder tools themselves live in an agent-plane timer-scheduler preset plugin (one row + one .mjs in agent.cordis.yml), not in this package. This package only provides the visual progress + data route. For a full deployment you need both: the preset gives scheduling + wake + persistence; this package gives the UI.

Installation

Not published to npm yet. Install from source:

  1. Place this directory in the web profile workspace and mount it as a dependency + bundle in the profile's package.json:

    {
      "dependencies": {
        "dsh-timer-scheduler-ui": "file:./packages/dsh-timer-scheduler-ui"
      },
      "dsh": {
        "profile": {
          "bundles": [
            "@deepseek-ai/dsh-base",
            "@deepseek-ai/dsh-web-app",
            "dsh-timer-scheduler-ui"
          ]
        }
      }
    }
    
  2. Install and restart:

    cd <web-profile>
    pnpm install
    # restart dsh web (the Host half runs in the server process), then hard-refresh
    
  3. Verify:

    curl 'http://127.0.0.1:<port>/api/timer-reminders?sessionId=x'   # → {"reminders":[]}
    curl 'http://127.0.0.1:<port>/plugins/dsh-timer-scheduler-ui/client.js'   # → 200 JS
    

Once published to npm: dsh plugin --profile web add dsh-timer-scheduler-ui.

Usage

In an agent session, just say:

  • "Remind me in 30 minutes to check that background job" → schedule_reminder(delay_seconds=1800, note=…)
  • "Check the deployment at 3pm" → schedule_reminder(at="15:00", note=…)
  • Manage with list_reminders / cancel_reminder.

The bottom-right panel shows the countdown while reminders are pending and hides when empty.

How it works

  1. The agent calls schedule_reminder; the preset plugin arms a one-shot Cordis timer and writes {id, note, dueMs, sessionId} to ~/.dsh/timer-reminders.json.
  2. On fire, the preset plugin resolves the agent via agents.get(sessionId), builds a source.kind = 'plugin' user message, and delivers it through agent.followup() to wake the driver.
  3. This package's client half fetches /api/timer-reminders?sessionId=… every second and renders the countdown from that same file.

Known limitations

  • On fire, the owning session must be live (process running, session open). A cold session is skipped with a warning — cold-resume is out of scope for now.
  • Delays beyond ~24.8 days are chunked, so they work, but the mechanism is "in-process timer + disk snapshot"; the timer only needs the process to stay up to fire.

License

MIT