DeepSeek Harness 插件:dsh-plugin-cron

前言

DeepSeek Harness (DSH) 的核心理念是「一切皆插件」。在实际开发中,智能体往往需要定期执行特定任务(如数据导出、周报生成)。传统的做法通常需要编写独立的脚本或手动触发。dsh-plugin-cron 插件通过引入 Cron 调度机制,允许开发者按表达式自动调度 Agent 任务,直接在 DSH 的会话上下文中注入消息,触发完整的 Agent 执行流程。

插件概览

这是由 LittleBlackTong 维护的 dsh-plugin-cron-scheduler 插件。它为 DSH 提供了一个定时任务调度器,支持通过标准 Cron 表达式或侧边栏 UI 管理任务。当触发时间到达时,插件会向目标会话注入一条 User 类型的消息,进而触发 Agent 的完整一轮执行(包括调用工具、读写文件、拉取数据等)。

核心功能

插件具备以下主要能力:

  • Cron 调度:支持标准 5 字段 Cron 表达式(分 时 日 月 周),支持单值、范围、步进和通配符。
  • 会话策略:
    • new:每次触发创建新会话,实现任务隔离。
    • fixed:绑定指定会话,保持上下文累积。
  • 双通道创建:支持在对话中使用自然语言(通过 cron_manage 工具),或在侧边栏 UI 中创建和编辑任务。
  • 持久化与并发:任务数据保存在 Host 平面的 JSON 文件中(<dshHome>/cron-jobs.json)。具备并发保护机制,若上一次执行未结束,新的触发周期会自动跳过。
  • 执行历史:记录每次触发的状态(成功/失败/跳过)、错误信息和运行次数,并在侧边栏列表中展示。
  • 手动触发:支持通过列表中的「立即运行」按钮或对话命令 cron_manage run 立即执行一次。
  • 侧边栏 UI:
    • 注册在侧边栏底部(sidebar.footer.action)。
    • 任务列表内联显示,支持新建、编辑、删除、启停、立即运行等操作。
    • 采用 ResizeObserver 实现宽度自适应,容器宽度小于 220px 时自动折叠部分文本并显示 Tooltip。
  • HTTP API:提供 /api/cron/* 路由,支持列出任务、新建任务、立即运行以及列出存活会话。

安装与启用

通过 DSH 的命令行工具安装:

dsh plugin --profile <profile> add dsh-plugin-cron-scheduler

安装后重启 DSH 进程即可生效。任务配置保存后无需重启,侧边栏 UI 会自动更新。

使用方法

对话自然语言

在 DSH 的对话窗口中,可以使用 cron_manage 命令创建任务。例如:

阿周:每周一 10:30 帮我导出上一周的 ZDP 数据
小蓝:(调用 cron_manage 工具)已创建「每周导出ZDP上周数据」,下次执行:下周一 10:30

支持的操作包括 create / list / update / delete / toggle / run。

Cron 表达式

标准 Cron 表达式格式为 分 时 日 月 周:

* * * * *
│ │ │ │ └─ 周几 (0-7,0 和 7 = 周日)
│ │ │ └─── 月 (1-12)
│ │ └───── 日 (1-31)
│ └─────── 时 (0-23)
└───────── 分 (0-59)

常见示例:

表达式 含义
0 10 * * * 每天 10:00
30 10 * * 1 每周一 10:30
*/5 * * * * 每 5 分钟
0 17 * * 5 每周五 17:00

会话绑定

使用 fixed 策略时,需要绑定一个存活会话。侧边栏 UI 提供下拉选择,直接列出所有存活会话的标题,无需手动输入 ID。如果绑定的会话在触发时已不存在,插件会自动新建一个会话并回写 fixedSessionId。

配置与注意事项

配置项

插件的 Host 平面配置主要包含以下两项:

键 默认值 说明
configFile <dshHome>/cron-jobs.json 任务数据存储路径
cwd process.cwd() new 策略新建会话时的工作目录

重要边界

  • 进程存活依赖:任务只在 DSH 进程活着时存在。如果进程关闭期间到了触发时间,该次触发会被直接跳过,重启后从当前时间重新计算下一次运行时间(不补跑)。
  • 版本兼容性:插件依赖 DSH session format v4(官方 DeepSeek Harness 0.1.7+)。v4 与 v3 白名单互斥,0.2.9 及更早版本在 v4 上会触发错误。请确保 DSH 版本符合要求。
  • 配置冲突警告:不要手动往 profile 的 cordis.patch.yml 中写入 insert entry,这会与 bundle manifest 的自动挂载产生冲突,导致启动失败。
  • 新建会话要求:使用 new 策略创建任务时,必须补齐 agent preset(工具集)、模型选择(agentDefaultModel)和 cwd,否则 Agent 将无法正常启动。

结语

dsh-plugin-cron 为 DeepSeek Harness 提供了标准化的定时任务能力,使得 Agent 可以像传统应用一样按计划执行自动化流程。通过侧边栏 UI 和 HTTP API,开发者可以方便地管理任务流。

羽毛球分组比赛记分
小程序二维码

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

小夜