DeepSeek Harness 自动化任务
想让 Agent 每天定时帮你整理记录、生成周报,或者半小时后提醒你检查一次部署?DeepSeek Harness 的自动化任务(Schedule)就是为此准备的:在对话里用一句话创建提醒,到期后宿主自动恢复对应会话并把任务投递进去。
本章节介绍自动化任务(Schedule)的入口、支持的调度规则、投递语义与使用边界。

创建第一个提醒
直接在会话里提出请求即可,模型会调用 schedule_create 完成 创建。
每天 23:00 提醒我查看天气。

接下来会自动创建这个任务:

创建后打开自动化任务页面,选中刚创建的提醒,检查频率一栏显示的是「每日」规则和所需时区,而不是「仅一次」。

自然语言里的时间默认按浏览器上报的时区解释,显式指定时区可以避免歧义,尤其是跨时区协作或在意夏令时的场景。
能力入口与前提
发布的 Web profile 自带宿主 Schedule 服务与「自动化任务」页面,桌面版同样提供该入口。
使用前先完成模型配置——创建提醒本质上是让模型调用工具,没有可用的模型就无法创建。
| 运行环境 | 定时任务能力 |
|---|---|
| Web profile | 宿主 Schedule 服务 + 自动化任务页面,开箱即用 |
| 标准 / PTC / 创造模式 | 声明 schedule_create、schedule_list、schedule_update、schedule_delete 四个工具,外加把当前时间与浏览器时区交给模型的时钟上下文 |
| 极简模式 | 不声明工具与时钟上下文,无法创建提醒 |
| 子代理(subagent) | 委派行已 deny 这四个工具,子代理看不见也不能调用 |
为什么要带时钟上下文:模型本身不知道「现在几点」。
preset 把当前时间和时区交给模型,它才能把「每天晚上 11 点」换算成正确的规则。
支持的调度规则
定时任务支持六类规则,从一次性延迟到 cron 表达式全覆盖。
| 规则类型 | 说明 | 示例 |
|---|---|---|
| 一次性延迟(After) | 正整数秒,从创建时刻起算 | 30 分钟后提醒我 |
| 绝对时间(At) | 绝对日期时间,可带 IANA 时区 | 2026-11-01 09:00 提醒我 |
| 固定间隔(Every) | 至少 1 分钟的固定间隔,按经过时间触发 | 每 2 小时检查一次日志 |
| 每日 | 带 IANA 时区的每日本地时间 | 每天 Asia/Shanghai 23:00 |
| 每周 | 带 IANA 时区 + ISO 星期(周一 1 至周日 7) | 每周五 18:00 生成周报 |
| cron | 五字段表达式,带显式 IANA 时区,以规范化形式保存 | 工作日 09:30 站会提醒 |
夏令时与异常时间的处理有明确规则:不存在的每日本地时间(如夏令时切换时被跳过的 02:30)会被跳过;重叠时间选择当天较早的一次。
绝对时间请求则直接拒绝不存在的本地时间,重叠时同样取较早时刻。
管理任务:查看、修改与删除
从侧栏打开自动化任务页面,可以查看所有提醒,不需要激活。

页面支持按任务名称、指令或所属会话 id 搜索,并用「全部 / 已开启 / 已结束」状态筛选。
点击具体的任务可以查看任务规则、关联的会话及删除任务:

修改活动任务
选中活动任务打开「规则」,可修改名称、指令和运行时间,修改先存本地草稿,点「保存更改」一次性提交。
模型侧的 schedule_update 是等价入口:原地修改提醒,保留任务 id、原对话和已保存的投递记录。
「重复」菜单提供每周、周一至周五、每天、每 N 小时 / 分钟 / 秒、仅一次和自定义 cron;规范化后等价的规则不会重设计时——例如把 Every 间隔保存为相同值,不会重新起算。

删除任务
选择删除并确认,可停止未来投递并将任务从列表移除,包括未运行的任务。
删除会连带移除该任务的全部已保存历史,且不会删除原对话,也不会撤回已进入队列的消息。

时间与投递语义
定时任务什么时候触发、错过怎么办,官方语义可以归纳成几条:
| 场景 | 行为 |
|---|---|
| 宿主运行期间到期 | 恢复原 Session 并排入 follow-up,不中断当前工作 |
| 宿主重启后 | 补投逾期的一次性提醒,或每条重复任务最近错过的一次 |
| 宿主关闭 | 调度停止,直到宿主再次启动 |
| 同一 Session 多个到期任务 | 可以共用一条消息投递 |
| 固定间隔改变 | 改变前与创建时间对齐,改变后与接受保存的时间对齐 |
投递不保证恰好一次:收件箱持久化后崩溃或任务写入失败,可能留下未记入发送记录的已投递消息并重复投递。
对精确性要求高的场景(如对外通知),应把自动化任务当作触发器,在指令里让 Agent 先检查再执行。
投递历史与保留策略
已保存的记录在追加确认时自动裁剪:宿主保留确认时间落在 deliveryHistoryDays 窗口内的记录,且最多保留最新的 deliveryHistoryRecords 条。
最近一次回执始终保留;发生裁剪时,页面会标记更早记录不可用。
历史保存在内存中,每次确认都会重写完整任务行;分页只是限制单次返回的条数,不限制保留的历史总量。
没有已保存历史的任务只能显示已有的最近一次回执,缺失的更早记录无法恢复,也不会用当前指令顶替缺失的指令快照。
边界与不支持的操作
自动化任务有几个明确的「不支持」,使用前心里有数:
| 不支持的操作 | 说明与替代做法 |
|---|---|
| 暂停任务 | 没有暂停开关;不需要时删除,需要时重新创建 |
| 每次运行新建 Session | 投递总是回到原会话;想要全新上下文,请在指令中让 Agent 自行开子代理处理 |
| 跨会话转交工作流 | 修改只能原地(保留 id 与原对话),不能把任务转移到另一个会话 |
| 自动调度仅存在于旧日志的提醒 | 仅记录在旧 Session 日志中的提醒不会自动调度,重新创建仍需要的提醒即可 |
一句话总结:自动化任务是「会话级提醒」——任务绑定创建它的会话,到期把消息送回那个会话。
它不是 cron 系统的替代品,没有外部通知渠道,也不能保证执行成功。
常见问题
| 现象 | 原因与处理 |
|---|---|
| 模型说无法创建提醒 | 当前 preset 是极简模式,或请求发给了被委派的子代理;换标准 / PTC / 创造模式在主会话重试 |
| 创建的时间不对 | 自然语言时间按浏览器时区解释;显式指定 IANA 时区,创建后到页面核对频率 |
| 任务从对话目录里消失了 | 一次性任务投递后变为未运行;目录和 schedule_list 只显示活动任务,用「未运行」筛选找回 |
| 运行记录显示已投递但没看到结果 | 记录只确认消息进入收件箱,不代表模型完成了工作;打开原会话查看实际执行情况 |
| 重启后没有收到提醒 | 宿主关闭期间调度停止;重启后只补投逾期一次性提醒或重复任务最近错过的一次 |
| 更早的运行记录不见了 | 超出 deliveryHistoryDays 窗口或超过 deliveryHistoryRecords 上限被裁剪;最近一次回执始终保留 |
点我分享笔记