
DSH Timer Scheduler
☆ 0简单的dsh定时任务插件 支持定时列表任务、ui显示,对于长期任务有益
Get this plugin
Review the source, then continue to the publisher.
About this plugin
Source snapshot 8/17/2026dsh-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.jsonand 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:
| File | Half | Role |
|---|---|---|
lib/index.js | Host | Registers GET /api/timer-reminders, filtered by sessionId |
lib/client.js | Client | shell.overlay bottom-right panel, polling every second |
cordis.patch.yml | bundle | Inserts the Host half into the web profile's host composition |
package.json | — | dsh.client (browser bundle) + dsh.bundle.patch (host row) |
Note: the model-facing
schedule_reminder/list_reminders/cancel_remindertools themselves live in an agent-planetimer-schedulerpreset plugin (one row + one.mjsinagent.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:
-
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" ] } } } -
Install and restart:
cd <web-profile> pnpm install # restart dsh web (the Host half runs in the server process), then hard-refresh -
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
- The agent calls
schedule_reminder; the preset plugin arms a one-shot Cordistimerand writes{id, note, dueMs, sessionId}to~/.dsh/timer-reminders.json. - On fire, the preset plugin resolves the agent via
agents.get(sessionId), builds asource.kind = 'plugin'user message, and delivers it throughagent.followup()to wake the driver. - 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