前言¶
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中写入insertentry,这会与 bundle manifest 的自动挂载产生冲突,导致启动失败。 - 新建会话要求:使用
new策略创建任务时,必须补齐agent preset(工具集)、模型选择(agentDefaultModel)和cwd,否则 Agent 将无法正常启动。
结语¶
dsh-plugin-cron 为 DeepSeek Harness 提供了标准化的定时任务能力,使得 Agent 可以像传统应用一样按计划执行自动化流程。通过侧边栏 UI 和 HTTP API,开发者可以方便地管理任务流。