dsh-scheduled-actions
已验证dsh-scheduled-actions · v0.2.0 · MIT · Web 界面
Host-level scheduled actions for DeepSeek Harness — create, verify, and run actions on a schedule (one-shot, interval, daily, weekly, cron, on-startup) with a JSON store and a Settings UI.
安装
dsh plugin add dsh-scheduled-actions 用 dsh --profile default --dump-config 确认 layer 已生效 —— 参见安装指南。
源码
发布到 npm 但没有公开仓库。安装前请检查包内容。
标签
说明文档
dsh-scheduled-actions
Планировщик действий для DeepSeek Harness (DSH) · Host-level scheduled actions for DeepSeek Harness
Плагин добавляет в DeepSeek Harness хост-уровневый планировщик действий: действия создаются, проверяются и выполняются по расписанию — независимо от какой-либо сессии агента. Они сохраняются в JSON-файл и сами запускаются, пока DSH работает.
Возможности
- 6 типов расписаний:
one-shot,interval,daily,weekly,cron,on-startup. - 2 типа действий:
agent-prompt(доставка промпта в сессию агента) иshell-command(команда в POSIX-shell с захватом вывода). - Политики для on-startup:
everyStart,onceNextStartup,oncePerDay,oncePerWeek— действие запускается при старте хоста по выбранному правилу. - JSON store
~/.dsh/scheduled-actions.json(настраивается черезstorePath) с атомарной записью (temp + rename). - SchedulerEngine на
setTimeout— не привязан к сессии, работает на уровне хоста. - Валидация времени через встроенный
Intl.DateTimeFormat(IANA-зоны, DST) — без внешних зависимостей. - UI в Настройках: секция «Запланированные действия» — таблица, фильтр «показать прошедшие», массовое удаление, форма создания/редактирования с проверкой, запуск «выполнить сейчас».
- Куда отправлять запрос (для
agent-prompt): по умолчанию — первому активному агенту, либо конкретный чат из списка живых, либо «создать чат для события» (имя = названию события), либо «каждый раз в новом чате» (имя = событие + дата запуска). Для создания чата выбирается workspace в форме. - AI-инструменты для агентов:
scheduled_action_list,scheduled_action_create,scheduled_action_update,scheduled_action_delete,scheduled_action_run_now. - RPC-мост между браузером и хостом через
ctx.connection(/scheduled-actions/<method>). - Полная обратимость: при остановке/удалении плагина все таймеры и обработчики корректно отключаются.
Установка
dsh plugin --profile web add dsh-scheduled-actions
dsh web
Удаление:
dsh plugin --profile web remove dsh-scheduled-actions
Использование
Настройки (UI)
Откройте Настройки → Запланированные действия. Доступно:
- список действий с расписанием, состоянием (
Активно/Отключено/✓ Выполнено/✗ Ошибка) и временем следующего запуска; - создание и редактирование действия: название, описание, тип (
agent-prompt/shell-command), payload, расписание; - включение/отключение, удаление (по одному или выбранные) и немедленный запуск «выполнить сейчас»;
- переключатель «показать прошедшие» для завершённых и завершившихся с ошибкой действий.
Через агента (AI-инструменты)
Каждый корневой агент получает инструменты управления:
| Инструмент | Назначение |
|---|---|
scheduled_action_list |
Список всех действий: id, label, kind, enabled, next run. |
scheduled_action_create |
Создать действие (dry_run — валидация без сохранения). |
scheduled_action_update |
Обновить поля действия по id. |
scheduled_action_delete |
Удалить действие по id. |
scheduled_action_run_now |
Выполнить действие сейчас, вне расписания. |
Хранилище
Действия лежат в ~/.dsh/scheduled-actions.json. Путь можно переопределить в
конфигурации плагина scheduled-actions (поле storePath).
Сервис ctx.scheduledActions
list(),get(id)create(input),update(id, changes),delete(id),toggle(id)runNow(id),dispatch(action),checkOverdue()runStartupActions()— запуск положенных on-startup действий при старте хоста.
Расписания
| Тип | Параметры | Пример |
|---|---|---|
one-shot |
at (ISO instant, строго в будущем) |
2026-01-01T00:00:00Z |
interval |
intervalSeconds (мин. 300), опц. repeatCount |
каждые 3600 с |
daily |
dailyTime (HH:mm), опц. time_zone |
09:00 |
weekly |
weeklyDay (0–6, 0 = вс), weeklyTime, опц. time_zone |
1, 08:30 |
cron |
cronExpr (5 полей) |
0 6 * * * |
on-startup |
startMode: everyStart / onceNextStartup / oncePerDay / oncePerWeek |
при каждом старте |
После успешного запуска расписание автоматически продвигается: повторяющиеся
действия получают следующее nextRunAt, one-shot переходит в состояние
completed — движок не зацикливается на уже выполненном действии.
Структура
lib/index.js— host-плагин: сервисctx.scheduledActions, RPC-мост, жизненный цикл инструментов.lib/domain.js— модельScheduledAction, валидация времени,computeNextRun.lib/store.js—ScheduledActionStore(JSON-файл, атомарная запись).lib/scheduler.js—SchedulerEngine(таймеры).lib/execution.js— исполнители payload:shell-commandиagent-prompt.lib/tools.js— регистрация AI-инструментов в область агента.lib/remote.js— wire-проекцияview(action)и Typert Remote-контроллер.lib/client.js— браузерный клиент (секция в Настройках).cordis.patch.yml— Cordis-патч, добавляющий плагин в композицию.tests/— smoke-тесты.
Разработка
npm run check # синтаксическая проверка всех lib/*.js
node tests/smoke.mjs
prepack (выполняется при npm publish) автоматически запускает npm run check.
Лицензия
English
Host-level scheduled actions for DeepSeek Harness (DSH). Create, verify and run
actions on a schedule (one-shot, interval, daily, weekly, cron, on-startup)
with agent-prompt / shell-command payloads. Actions persist to a JSON store,
self-execute while DSH is running, are manageable from a Settings UI section and
via agent tools (scheduled_action_list/create/update/delete/run_now).
dsh plugin --profile web add dsh-scheduled-actions