dsh-task-dispatch-table:零大模型介入的周期性任务派发插件

前言

在 DSH 环境中,实现周期性任务调度通常需要大模型介入决策,这会产生 Token 消耗并增加延迟。dsh-task-dispatch-table 插件通过将调度逻辑与执行逻辑分离,提供了一种基于表驱动的调度方案,由宿主进程直接管理调度,不消耗大模型资源。

插件介绍

这是一个 DSH Host 层插件,由 cq-guojia 维护。它通过一张任务定义表驱动周期性工作流,当任务到达时间窗或满足依赖条件时,将其派发为独立的 DSH 会话执行。调度本身使用纯程序逻辑,不涉及大模型调用。

核心功能

调度逻辑

调度器按固定 Tick 间隔运行。它检查任务定义表,判断任务是否在时间窗内以及是否满足依赖条件。只有当任务真正需要执行时,才会创建会话。

调度模式

支持三种模式:
1. 单次:在指定时刻运行一次。
2. 周期性:按每日、每周或每月的固定时刻运行。
3. 间隔:按 N 小时或 N 天的间隔运行。
每种模式均支持“允许延迟窗口”。如果宿主繁忙或宕机,任务会在窗口内补跑;超过窗口则记录为 skipped。

任务依赖

依赖关系由下游任务声明(类似于 Airflow 的 needs 模型)。当任务触发时,插件会冻结上游实例及其输出,并将其传递给下游会话,确保下游获取的数据与触发时刻一致。

会话与状态

每次运行生成独立的会话,包含状态、Token 使用量、产物和事件日志。会话执行后会被归档,可查看日志、提取产物或继续对话。

任务管理 UI

提供任务列表、运行记录、日志、执行时间线和日历视图,支持双语显示。

安装与启用

安装后无需额外配置或本地构建,直接通过 npm 运行。安装命令如下:

dsh plugin --profile web add dsh-task-dispatch-table

使用流程

1. 创建任务

在编辑器中创建新任务。设置标题、提示词、调度方式(单次、周期性或间隔)以及附件。附件支持链接或上传(单个文件最大 20MB)。

2. 配置与触发

通过设置面板配置插件参数(如 Tick interval, Run log retention)。点击任务卡片上的“Run now”按钮可手动触发执行。

3. 追踪执行

在任务详情中展开查看运行历史、日志及归档会话。通过日历和执行时间线追踪所有任务的执行情况。

配置项

插件配置存储在自身的状态数据库中,主要参数如下:

  • Tick interval: 调度器扫描频率,默认 60 秒。
  • Run log retention: 运行日志保留天数,默认 30 天。
  • Temp attachment retention: 临时附件保留天数,默认 7 天。
  • Default model: 任务未指定模型时使用宿主默认模型。
  • Dispatch grace: 等待派发会话出现的最大时长,默认 60 秒。
  • Run lease: 静默会话的租约时长,默认 1800 秒。
  • Observation window: 监控未知状态会话的时长,默认 300 秒。

注意事项

  • 无需构建:安装后无需本地构建,直接运行即可。
  • 数据持久化:配置存储在插件自身的状态数据库中,不会随宿主配置重置而丢失。
  • 附件限制:单个文件上传最大 20MB。
  • 语言切换:UI 支持双语,随 DSH 界面语言设置自动切换。
  • 许可证:MIT 许可证。

结语

该插件通过将调度层与执行层解耦,为 DSH 提供了零大模型介入的周期性任务管理能力。适合需要严格依赖管理、执行状态追踪和周期性工作流编排的场景。

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

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

小夜