前言¶
在 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 提供了零大模型介入的周期性任务管理能力。适合需要严格依赖管理、执行状态追踪和周期性工作流编排的场景。