dsh-task-dispatcher
Manifest valid★ 3Task dispatcher for DeepSeek Harness: use TickTick (滴答清单) as the daily task dispatcher — a cordis timer pulls today's due tasks, writes them to the task file, and notifies (WeChat via ClawBot / flomo / macOS); optional auto-execute with result receipts
dsh-task-dispatcher — TickTick daily task dispatcher
Use TickTick (滴答清单) as DSH's daily task dispatcher: a cordis timer pulls today's due tasks from the configured source list (default In progress), writes them to today's task file, and notifies via WeChat (ClawBot), flomo, or macOS (configurable). The agent reads the file, works through the items, and writes results back to TickTick with ticktick_complete.
Reuses the already-installed
dsh-ticktickplugin (its data layer + OAuth credentials in~/.dsh/dsh-ticktick.json) — no duplicate configuration.
Features
- Interval dispatch: cordis
ctx.intervalpolls every minute and dispatches when the configured interval (minutes) has elapsed; 0 disables the timer;dispatcher_rundispatches manually anytime. - Task source: default the
In progresslist (projectName/projectIdconfigurable);dueMode=todaypulls due-today/overdue + undated,dueMode=allpulls all incomplete. - Today task file: writes a Markdown checklist (default
~/.dsh/dsh-task-dispatcher/today-tasks.md). - Execution-result receipts (
notifyResult, on by default): every auto-executed task pushes a SHORT outcome message (OK/FAIL+ title + a one-line result, or the failure reason such as a worker timeout) as soon as its worker settles, plus a compact batch tally when a pass runs more than one task - a run reports back by itself instead of relying on the worker callingdispatcher_report. The summary is the worker's stdout final answer (progress/reasoning go to stderr), stripped of ANSI and theDONEmarker and capped at 220 characters. - Notify on change only:
notifyWechat(WeChat, relayed through the local DSH-WeChatClawBot gateway; the recipient is auto-detected) +notifyFlomo(reuses~/.dsh/dsh-flomo.json) +notifyMac(osascript); a repeated pull with no new tasks stays silent. - WeChat notifications (ClawBot): the plugin POSTs the text to the local gateway
/send(defaulthttp://127.0.0.1:51235), which relays it to the WeChat account that scanned the QR code. The plugin never talks to WeChat directly and stores no WeChat credentials. The recipient defaults to theuserIdrecorded in the ClawBot state dir (~/.dsh-wechat, override withDSH_WECHAT_HOME) underaccounts/<botId>.json, or can be set explicitly withwechatTo; long bodies are split into 1200-character chunks. An unavailable channel only marks that channel as failed — it never fails the dispatch. - Auto-execute (autoExecute): when on, each pulled task runs in its own
dsh --profile headlesssession (serial, one task per session); success writes back to TickTick viaticktick_complete; failed tasks wait out the retry cooldown. - Worker timeout (workerTimeoutMinutes): each auto-execute worker is SIGKILLed after this many minutes (default 30, range 1–1440), configurable via
dispatcher_config/ the settings panel. It used to be a hardcoded 10 minutes, which killed long-but-healthy tasks and reported them as failures. - Cheap mode (
cheapMode, off by default): when on, auto-execution only starts during DeepSeek's off-peak (discounted) hours; during peak it queues tasks to the next off-peak start (cheapStrategy=wait) or skips the round (skip). The gate sits strictly before a worker is spawned — pull cadence, filtering and serial execution are untouched; off means 100% legacy behaviour. Official schedule (peak/off-peak pricing since 2026-08-17): peak = Mon–Fri 09:00–12:00 and 14:00–18:00 Beijing time; everything else is off-peak (~half price). The windows are not hardcoded:cheapPreset(official-2026/legacy-utcold UTC 16:30–00:30 /custom) +peakWindows+cheapTimezone. Queued tasks andnextCheapStartAtare persisted, so a DSH restart loses nothing;dispatcher_runhonours cheap mode by default and acceptsignoreCheapMode: trueto bypass it. Notifications distinguish “queued for the HH:MM off-peak window” from a normal run. - Worker workspace (workerWorkspaceId): the auto-execute worker session runs in the user's home dir by default; set a DSH workspace id and the worker spawns with cwd = that workspace's directory, so files are written there and the produced session shows up under that workspace in the GUI sidebar. The settings panel provides a workspace dropdown (list read from
~/.dsh/storages/workspace.json); empty = home dir. - Deferred-sync panel (agent -> TickTick): the settings page configures the write-back path directly - silence threshold (
idleMinutes), per-session top-level cap, and the launchd check interval - and shows the queue, the whole-harness idle time, timer state and the last flush result. Buttons: save thresholds, flush now, force flush, reload timer. The control plane only reads the queue file and drives the script/timer; the writing itself stays in the standalone script + launchd, so a flush still happens while DSH is closed, and no write logic is duplicated between the two halves. Routes:GET /api/dsh-task-dispatcher/deferred,POST .../deferred/{config,flush,timer}. - Agent tools:
dispatcher_status/dispatcher_config/dispatcher_run/dispatcher_report+ a Web settings panel.
Compatibility
Requires DeepSeek Harness ≥ 0.1.5-rc.1 (declared as dsh.engines.dsh in the package manifest, so the DSH plugin marketplace can report it) and is verified against 0.1.5-rc.1. This build carries the DSH 0.1.5 adaptations: the strict tool-result contract (lossless-JSON snapshot, additionalProperties: false schema validation, and output.render returning ContentBlock[]) plus executable resolution that survives a launchd-started host whose PATH is only /usr/bin:/bin.
Install
# from npm (published package)
dsh plugin --profile web add dsh-task-dispatcher
# or local development
dsh plugin --profile web add link:/path/to/dsh-task-dispatcher
# restart dsh web to activate
Current release: v0.5.0 (CHANGELOG · Releases · npm).
Dev
pnpm install
pnpm build && node tests/smoke.mjs
License
MIT
Compatibility
Versions
| Latest version | Published | Size |
|---|---|---|
| 0.1.0 | — | — |
| 0.1.1 | — | — |
| 0.1.2 | — | — |
| 0.1.3 | — | — |
| 0.1.4 | — | — |
| 0.1.5 | — | — |
| 0.2.0 | — | — |
| 0.3.0 | — | — |
| 0.6.1 | — | — |
| 0.6.0 | — | — |
| 0.4.0 | — | — |
Comments
Loading…
Similar plugins
by stitchmaps
To-do list panel for DeepSeek Harness: large task cards in collapsible sections, hour-precision due times, per-task reminder lead times, and DingTalk notifications through a group robot webhook or an
★ 0
MIT
JavaScript
Oct 30, 2026
dsh plugin --profile web add todolistby zhengjy01
Two-way TickTick/Dida365 (滴答清单) task sync via the official OAuth Open API: pull tasks across lists, create/update/complete/delete tasks, and one-shot title-deduped sync, with a web settings panel.
★ 0
MIT
TypeScript
Sep 29, 2026
dsh plugin --profile web add dsh-ticktickby KelaoHu
Time-shifting task delegation for DeepSeek Harness (dsh): plan tasks at leisure, they run unattended off-peak, come back to a report. Human-adjudicated, desktop + web.
★ 173
↓ 301/wk
MIT
TypeScript
Aug 24, 2026
dsh plugin --profile web add dsh-lowtideby kaotusi
DeepSeek Harness (DSH) system-level task notifications: approval required / awaiting reply / task finished (background job, subagent, workflow) → OS notification center with chimes + in-app bell panel
★ 4
MIT
JavaScript
Aug 15, 2026
dsh plugin --profile web add @deepseek-ai/dsh-task-notifyby Saretheya
Session-local scheduled tasks for DeepSeek Harness: inject a prompt into the current session after a delay, at a fixed time, or on a repeating interval — with a Web management panel, a /schedule command, and model-facing management tools.
★ 0
MIT
JavaScript
Oct 2, 2026
dsh plugin --profile web add dsh-tickby lp86ndlb
Per-session draggable todo sticky note for DeepSeek Harness: short-term tasks, a long-term plan with real phase progress, and three todo_note_* tools so the agent and you share the same note.
★ 1
MIT
JavaScript
Nov 8, 2026
dsh plugin --profile web add dsh-todo-note