DeepSeek Harness plugin

dsh-timer-scheduler

DSH plugin: an agent self-scheduler that wakes the agent later to check on background/remote work, plus a bottom-right reminder panel in the web UI.

Jump to install

Source facts

Repository
GMH13552/dsh-timer-scheduler
Latest update
Aug 17, 2026
Category
Workflow & Automation
GitHub stars
1
Format
plugin
Catalog evidence
Upstream dsh.bundle evidence
Evidence path
package.json#dsh.bundle
Checked against
0.1.0-rc.8
Upstream check date
2026-08-20

This evidence comes from the upstream catalog. This site has not installed, run, or security-reviewed the plugin.

Install

Start with a prompt that asks an agent to review the GitHub repository and source. Switch to the command if you want to install it yourself.

Copy this prompt into DSH, Codex, or another agent and ask it to review the GitHub repository and source first.

Do not install or run any commands yet. Read this plugin's GitHub repository, README, and relevant source code. Then answer the questions below clearly and directly so I can decide whether it fits my needs:

1. What is this plugin, and what problem does it solve?
2. Who is it for, and what are its typical use cases?
3. How is it used after installation? Include one minimal example.
4. What known limitations or privacy, security, compatibility, or maintenance risks does it have?
5. Give a clear recommendation: recommend, conditionally recommend, or do not recommend, with reasons.

Distinguish statements documented by the repository, inferences from source code, and unknowns. If evidence is insufficient, say so explicitly. Do not guess or simply repeat the README.

GitHub: https://github.com/GMH13552/dsh-timer-scheduler
Plugin: dsh-timer-scheduler
Author: GMH13552

Check the source files

Read the README and other files from this plugin directory before installing.

File explorer4 files
README.mdSource · read only
README language

dsh-timer-scheduler-ui

Languages: English · 简体中文

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. Everything is host-plane: composing this bundle into the web profile's host composition makes the model tools available to every agent regardless of preset, and the route serves the browser panel.

FileHalfRole
lib/index.jsHostThe three model tools (schedule_reminder / list_reminders / cancel_reminder), auto-wake, disk persistence, and GET /api/timer-reminders
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)

Preset adaptation: the anchored-standard preset keeps these tools resident for its agents via its residentTools option; every other preset works without any configuration.

Installation

Not published to npm yet. Install from source:

> Host-plane tools: once this bundle is composed, every agent on any preset can call schedule_reminder / list_reminders / cancel_reminder. If a preset uses an aggressive tool-bootstrap filter (like anchored-standard), keep the three tool names resident so its agents still see them: > > ``yaml > # inside the tool-bootstrap row's config > residentTools: [schedule_reminder, list_reminders, cancel_reminder] > ``

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

``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:

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

3. Verify:

``sh 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 host plugin arms a one-shot Cordis timer and writes {id, note, dueMs, sessionId} to ~/.dsh/timer-reminders.json. 2. On fire, the host 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](LICENSE)