DeepSeek Harness 无人值守定时任务调度器:dsh-wb-cron

前言

DeepSeek Harness(DSH)的生态理念是「一切皆插件」。在本地开发或部署场景中,开发者常面临需要定时执行任务的需求。现有的方案往往依赖操作系统级 cron 或需要单独维护子进程与凭据,而 DSH 内置的 schedule_create 主要用于会话内的提醒,无法满足跨会话的无人值守执行。

dsh-wb-cron 是一款针对这一场景的插件,它将调度器集成在 web profile 进程内,到点自动拉起全新的 root agent 执行指令。

功能特性

  • 三种调度形态:支持 Vixie 标准的 5 字段 cron 表达式(支持步长、区间、列表、英文名及 IANA 时区)、固定间隔(最小间隔 ≥5 分钟)以及一次性绝对时刻。
  • 对话式与 GUI 双管理:提供 cron_create / cron_list / cron_update / cron_delete / cron_run_now / cron_next / cron_history 等工具,也提供两级 GUI(侧边栏速览与设置页完整管理)。
  • 进程内执行:任务在宿主进程内拉起 root agent,无需子进程,天然继承宿主 Profile 的模型路由、记忆注入(dsh-wb-memory)、skills 和 hooks。
  • 零依赖与零遥测:自身无 npm 运行时依赖,不向任何外部地址发送统计或心跳,仅执行任务指令时的网络行为由 Agent 决定。
  • Agent 预设管理:每任务可独立钉住预设(如 standard / ptc / minimal),若预设不可用,按三级降级策略执行并记录错误。
  • 会话落盘与续聊:执行产生的会话正常落盘,可通过 Web 侧边栏或历史记录进行续聊。

安装与启用

插件安装需分两步:先通过 DSH CLI 安装,再手动修改配置文件。

dsh plugin --profile web add dsh-wb-cron

安装后,编辑宿主配置文件 ~/.dsh/profiles/web/package.json,在 dsh.profile.bundles 数组中追加 "dsh-wb-cron",重启宿主生效。

核心机制

  • 调度器生命周期:调度器运行在宿主进程内。如果宿主未启动或处于 headless profile,调度器不会启动。宿主启动后,调度器在后台定期检查触发条件。
  • 错过处理:当任务触发时间已过,调度器发现 nextFire 超过 2 分钟容差,会根据配置选择 skip(默认,记 skipped-missed)或 runOnce(立即补跑一次)。无论哪种方式,最多补跑一次,绝不回放积压。
  • 停止与超时:当用户要求停止任务时,调度器会置取消标志,并尽力调用 agent 的 stop / abort / dispose 方法。由于 agent 尚无公开的 stop 接口,停止操作可能仅释放资源,任务可能在后台继续跑完,但会话会正常落盘。
  • 与内置调度器分工:
    | 特性 | schedule_create (内置) | cron_create (本插件) |
    |—|—|—|
    | 触发场景 | 会话内提醒 | 跨会话无人值守执行 |
    | 会话关闭后 | 提醒一直逾期,等会话回来 | 照常触发,会话落盘可续聊 |

Agent 预设降级策略

任务是无人值守的,因此预设不可用时不应中断执行。插件采用三级降级链,并将原因记录在运行历史的 error 字段中:

  1. 级 0:尝试任务钉住的 preset。若失败,记录 预设 X 不可用,降级…。
  2. 级 1:尝试内置标准模式 standard。若失败,记录 standard 亦不可用,降级为全局默认…。
  3. 级 2:尝试全局默认预设(agentPresets.resolve(undefined))。若失败,记录 无任何可用预设,以裸上下文执行。
  4. 级 3:使用裸上下文(meta 不带 agentPreset)。仅执行本身失败才向上抛错。

配置项

通过修改 cordis.patch.yml 或配置文件,可调整以下参数:

{
  "maxConcurrentJobs": 1,        // 全局并发上限,默认串行
  "tickMs": 30000,               // 调度检查间隔(毫秒)
  "historyLimit": 500,           // history.jsonl 保留条数
  "defaultTimeoutMinutes": 30,   // 单次运行看门狗超时
  "appendMemoryLogDefault": true // 任务头默认是否带 wb-memory 收尾指引
}

适用场景与注意

  • 权限审查:安装任何 DSH 插件都意味着以你的权限运行第三方代码。本插件源码结构包含入口、调度解析、存储、执行和前端模块,请自行审查。
  • 数据存储:任务数据与历史记录存储在 ~/.dsh/wb-cron/ 目录下(jobs.json 和 history.jsonl)。
  • 生态背景:本插件收录于社区目录(SkillHub),与 DeepSeek 或幻方无官方从属关系。

结尾

dsh-wb-cron 提供了在 DSH 生态内实现无人值守定时任务的落地方案,通过进程内执行和完善的降级策略,保证了任务触发的稳定性与可控性。

  • 仓库:https://github.com/miseryrua/dsh-wb-cron
  • 目录:https://www.skillhub.cn/plugins/miseryrua/dsh-wb-cron
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜