每周跑一次的自动任务:内置 schedule 做不到,要用系统计划任务
配方模板 · 尚未在本站完成实测
本页是配方模板,尚未在本站完成实测。运行记录、token与耗时会在复测后补上;在那之前不填任何估算数字。
适用场景
想让某个任务每周自动跑一次。先别急着写配置——DSH内置的schedule只覆盖会话内提醒,表达不了「每周一09:00」。先分清你要的是哪一种。
准备
- 宿主版本
- 待填(实测时记录具体rc版本号)
- 模型
- 待填
- 模式 / 权限
- 建议先用标准模式 + 工作区内修改
- 需装插件
- 无(如用到插件,在实测后补齐名称与版本)
- 输入材料
- 放在独立工作区,原始文件先备份
完整指令
我要一个每周一 09:00 执行的任务:汇总上周新增的 feedback 文件,生成周报到 weekly/YYYY-Www.md。
请先回答一件事再动手:当前这个环境里,「每周一 09:00」这个调度靠什么实现?
按你的实际能力回答,三种情况分开说:
A. 宿主内置 schedule 能做到(若是,给出配置,并说明时区字段在哪)
B. 内置 schedule 做不到,需要系统计划任务调用 dsh --profile headless(若是,给出 Windows 计划任务或 crontab 的完整写法)
C. 都做不到
回答完再给方案。给方案时遵守:
1. 时区必须显式写,标明是 UTC 还是本地时间。
2. 如果走系统计划任务,工作目录必须显式 cd 进去——headless 的工作区就是进程当前目录,不是配置项。
3. 给一条能立即验证的命令(手动触发一次,或查调度器状态),并说明看到什么输出算成功。
4. 不许编造不存在的配置项。如果内置 schedule 只支持固定间隔而不支持日历规则,直接说,不要假装能配「每周」。
5. 最后给一张表:验证项 | 怎么验 | 我实际看到的结果(最后一列留空给我填)。运行记录
| 项目 | 数值 | 备注 |
|---|---|---|
| 耗时 | 待实测 | |
| 结果 | 待实测 | |
| 输入 / 输出token | 待实测 | |
| 残留 | 待实测 |
产物
跑通后在这里给出文件清单与截图,并说明原始文件有没有被改动。
验收清单
点一下可勾选,用来逐条核对。
- 先答了「靠什么实现」再给方案,没有直接跳进配置
- 说清了内置schedule支持什么、不支持什么(日历规则 / cron是否支持)
- 时区被显式写出,标明UTC还是本地
- 走系统计划任务时,工作目录是显式cd进去的
- 有一条能立即跑的验证命令,且说明成功输出
- 「我实际看到的结果」留空,没有替你填
失败与边界
- 实测事实(官方文档docs/subsystems/schedule.zh.md):DSH内置schedule是「仅限Session内」的持久提醒,三种规则只有延时after、绝对时间at、固定间隔every(不低于300秒)。原文明确写:协议不包含日历规则或Cron表达式、重复调度时区。所以「每周一09:00」内置做不到。
- 内置schedule的交付也只在会话内:已live且空闲的agent能立即交付到期工作,而已关闭或cold的会话会让提醒保持逾期,直到有live根agent恢复会话。没有邮件、短信、推送。
- 所以每周任务的正解是系统计划任务 + dsh --profile headless,工作目录靠cd。这条配方的价值就在于区分这两层,而不是给你一个不存在的cron配置。
- headless的工作区 = 进程当前目录。实测DSH_CWD环境变量在headless下不生效,必须cd。
- 卡在哪:已确认内置schedule不支持日历规则(官方文档原文:协议不包含日历规则或Cron表达式),所以每周任务必须走系统计划任务;缺的是在本机真正注册一条计划任务并等它触发一次——这需要跨周等待,只能先写方法。