返回目录
界面增强 插件

dsh-timer-scheduler

GMH13552/dsh-timer-scheduler

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

Stars
0
Forks
0
Issues
0
更新
1 天前

PROJECT TOPICS

项目标签

INSTALL REFERENCE

安装参考

未验证
dsh plugin --profile web add github:GMH13552/dsh-timer-scheduler

该命令指向仓库当前默认分支;尚无绑定当前 commit 的完整验证结果。

PROJECT README

README

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.

File Half Role
lib/index.js Host The three model tools (schedule_reminder / list_reminders / cancel_reminder), auto-wake, disk persistence, and GET /api/timer-reminders
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)

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:

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

    {
      "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 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

CLASSIFICATION EVIDENCE

分类依据

项目类型插件
功能分类界面增强
规则置信度

系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: scheduler、ui。