Introduction¶
DeepSeek Harness (DSH)’s built-in dsh-schedule only supports storing reminders in the current session. If you need persistent automation capabilities across projects and sessions, a global plugin is required. dsh-scheduled is designed for this purpose: it provides a global automation plugin instance, maintained by ylxmf2005 and licensed under the MIT License.
Purpose¶
The plugin implements persistent heartbeat and Cron automation in DSH. Unlike built-in components that only operate on session logs, it stores automation state in global files and supports scheduled tasks across sessions and projects.
Core Features¶
- Persistent Heartbeat: Restore a saved DSH session and continue following up in that thread.
- Scheduled Tasks: Create a new project session for each run, with optional isolated Git worktree.
- RFC 5545 Rules: Support IANA time zones and provide DST-aware wall-clock scheduling.
- Data Persistence: Automation state and history are stored in an atomic JSON file located at
$DSH_HOME/automations/automations.json. - Robustness Design: Includes overlap prevention, skip records, interruption recovery, and explicit error codes.
- Operations Interface: Provides Agent tools and a web configuration page based on the same Host RPC service.
- Lifecycle Management: Uses Cordis-owned timers to ensure the plugin effects are torn down together with the DSH lifecycle.
Installation and Enablement¶
The plugin is a DSH Bundle and can be installed via plugin commands.
Option 1: Install by Specific Commit
dsh plugin --profile web add github:ylxmf2005/dsh-scheduled#56c067b
After installation, restart DSH and configure it in Settings > Plugins > Scheduled.
Option 2: Use a Prebuilt Package
If source building is not required, you can use the v0.1.4 prebuilt package:
dsh plugin --profile web add https://github.com/ylxmf2005/dsh-scheduled/releases/download/v0.1.4/dsh-scheduled-0.1.4.tgz
Option 3: Build from Source
After cloning from GitHub, you need to allow builds in the profile’s pnpm-workspace.yaml:
allowBuilds:
dsh-scheduled: true
Then run the installation command (replace with a specific commit hash):
dsh plugin --profile web add github:ylxmf2005/dsh-scheduled#<commit>
Typical Usage¶
Scheduling Format
Schedule configurations use the RFC 5545 text format. If wall-clock time is involved, both DTSTART and TZID are required:
DTSTART;TZID=Asia/Shanghai:20260822T090000
RRULE:FREQ=DAILY;BYHOUR=9;BYMINUTE=0
Tool Operations
The automation_update tool provides operations such as create, list, view, update, delete, run, runs, and mark_read.
Error Handling
Failed runs are recorded and not automatically retried. Unless the automation is manually paused or completed, the next recurrence remains in the scheduled state.
Requirements and Notes¶
Environment Requirements
Node.js version >= 22.19.0 and pnpm are required.
Source Code Security
Git-based installation fetches source code and runs the package’s built-in prepare build script. Only build source code from trusted sources.
Storage and Worktree
* Storage File: Uses a temporary-file rename mechanism for writing. If the storage file is found corrupted at startup, it exits with an error instead of silently discarding schedules, ensuring data safety.
* Worktree: By default, Git worktrees created by Cron runs are retained so that DSH sessions and agent changes can still be inspected after task completion. Delete them manually after inspection.
Conclusion¶
dsh-scheduled provides reliable automation capabilities for DeepSeek Harness through global state management and the RFC 5545 standard. With the configuration and tools described above, you can build automation workflows that span sessions and projects.