按完成结果调度任务,跨会话重启与睡眠补跑
28.9/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/9/18 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
自动兼容检查有告警:未发布到 npm registry,仅可从源码安装。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add TT-Wang/dsh-cron该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · tool
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 64 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查⚠ 装前注意未发布到 npm registry,仅可从源码安装
展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✗npm 包@dsh-external/dsh-cron(未发布到 npm,仅可源码安装)
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/9/24 00:02:59
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件
查看扫描证据(共 5 处,展示前 5 条)
- 写入本地文件tests.mjs:138
writeFileSync(join(root, 'tasks.json'), '{ 这不是 json') - 读取本地文件tests.mjs:162
r1[0].action === 'fire' && existsSync(mark), JSON.stringify(r1)) - 写入本地文件tests.mjs:172
mkdirSync(root2, { recursive: true }); writeFileSync(mark2, 'x') - 写入本地文件tests.mjs:172
mkdirSync(root2, { recursive: true }); writeFileSync(mark2, 'x') - 读取本地文件tests.mjs:179
r3[0].action === 'done' && !existsSync(shot), JSON.stringify(r3))
扫描于 2026/11/2(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-tools给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 按完成结果调度任务
- 跨会话重启保留任务
- 休眠后补跑
为 DeepSeek Harness 安排定时任务,会话结束、宿主重启、机器休眠都不丢——它调度的是结果(完成窗口 + 效果检查 + 补跑),而不是某个时刻。
README
由 DeepSeek 最新模型翻译生成dsh-cron
跨会话、跨重启、跨睡眠的定时任务 —— DSH host 插件。
为什么需要它
DSH 自带的 schedule 有意只做会话内提醒。它的交付模式在类型里就写死了:
/** Fixed v1 delivery boundary: the original session must be live. /
type ScheduleDeliveryMode = 'session-local'
配套说明是「原会话必须 live,不存在外部通知通道与冷会话调度器」,包 README 更直白:「本包有意不公开 Schedule service 或可变数据库」。
这不是缺陷,是范围裁定:DSH 里干活的单位是「带 live agent 的会话」,不允许任何东西在会话之外持有状态去驱动工作。而 cron 恰恰要求一个比所有会话都活得久的东西。
本插件就是那个东西:住在 host 进程里,跨会话存活,到点从外面把会话叫起来。
它和 crontab / launchd 的区别只有一条
按结果调度,不按时刻调度。
触发器从来不缺。
展开完整文档(README 剩余 1 节)
dsh-cron
跨会话、跨重启、跨睡眠的定时任务 —— DSH host 插件。
为什么需要它
DSH 自带的 schedule 有意只做会话内提醒。它的交付模式在类型里就写死了:
/** Fixed v1 delivery boundary: the original session must be live. /
type ScheduleDeliveryMode = 'session-local'
配套说明是「原会话必须 live,不存在外部通知通道与冷会话调度器」,包 README 更直白:「本包有意不公开 Schedule service 或可变数据库」。
这不是缺陷,是范围裁定:DSH 里干活的单位是「带 live agent 的会话」,不允许任何东西在会话之外持有状态去驱动工作。而 cron 恰恰要求一个比所有会话都活得久的东西。
本插件就是那个东西:住在 host 进程里,跨会话存活,到点从外面把会话叫起来。
它和 crontab / launchd 的区别只有一条
按结果调度,不按时刻调度。
触发器从来不缺。真实断链的记录是这样的:
| 日期 | 断在哪 | 共同点 |
| 8/22–23 | 脚本里 BASE_DIR 拼错一个字母 | 静默 |
| 8/24–25 | 授权过期,会话照开、活没干成 | 静默 |
| 8/26 | 到点没跑,系统日志里查不出原因 | 静默 |
三次三个环节,没有一次断在"开枪"那一步。再加一个更准的触发器,第四次会以第四种方式静默地断。
所以这里的调度单位是完成窗口:
落点(cron 时刻) ──────────── 完成窗口 ──────────→ 窗口关闭
│ │
├─ 问 check:该发生的事发生了吗? │ │ 是 → done(收工) │ │ 否 → 开一枪,过 retryEvery 再问一次 ───────────┤ │ ↓ └──────────────────────────────────────────→ 仍未完成 = MISS(大声记账)
保证是「当天必然送达」,不是「09:00 准点」。后者在一台会睡眠、host 会重启、授权会过期的机器上本来就做不到 —— 承诺它等于承诺一个会静默违约的东西。
白捡的两个性质:host 停机期间错过的窗口,恢复后第一次 tick 就补上(cron 睡眠错过则永不补跑);别人手动把事做了,check 一问即知,我们一枪都不开。
用
cron_add 安排一个任务(带 check 才算真安排) cron_list 看现有任务与当前窗口状态 cron_status 读只追加的运行台账 —— "今天到底跑没跑" 的答案,是证据不是总结 cron_remove 删除 / 暂停 / 恢复 cron_run_now 立刻走一轮评估(测新任务,不用等窗口)
例子(每天 09:00 出日报,6 小时内必须送达):
{
"id": "daily-digest",
"cron": "0 9 * *",
"tz": "Asia/Shanghai",
"window": "6h",
"retryEvery": "30m",
"check": { "kind": "command",
"run": ["/bin/sh", "-c", "grep -q \"$(date +%F)\" ~/reports/sent.log"] },
"fire": { "kind": "session", "preset": "digest-bot",
"prompt": "生成今天的 digest 并发送", "cwd": "/home/you/reports" } }
fire 两种:session 开真会话(带无人值守纪律头:没人可问、失败就换招再来、做完为止),command 直接跑(确定性活儿不必过模型)。
check 两种:command(退出码 0 = 已完成)、http(2xx,可选 contains)。
没有 check 会怎样
降级成普通 cron:每个窗口盲发一枪,成没成没人知道。cron_add 的回执、cron_list 的每一行、台账里的每一条都会标出这个状态。真实断链从来不在开枪那一步,所以这个降级模式的存在只是为了"实在没有可观测的完成判据"的场景,不是默认选项。
装
npm install && npm run link:dsh && npm run build
profile 的 package.json 里加一条依赖,cordis.patch.yml 的 insert 里加一项:
- insert:
- id: dsh-cron
name: '@dsh-external/dsh-cron'
配置项(都可省):root(数据目录,缺省 $DSH_HOME/cron)、tickMs(评估间隔,缺省 60s)、wirePort(开会话用的 host 端口,缺省从 host 的 webServer 读)。
数据落在 $DSH_HOME/cron/:tasks.json(任务与窗口状态,原子写)与 runs.jsonl(只追加的台账,永不改写 —— 一个会被覆盖的状态文件回答不了"今天到底发生了什么")。
边界(诚实说)
- 本插件活在 host 进程里。host 不在,它也不在 —— "谁来唤醒唤醒者"的问题只是上移了一层。要它开机自启,还得靠 launchd 把 host 拉起来。
- 完成判据的质量等于这个包的质量:check 写得松(比如只 test -f 一个每天都在的文件),它就会高高兴兴地报告一切正常。
- 台账只追加,不自动轮转;跑久了自己清。
- 单机、单 host。没有跨机协调,也没有分布式锁。预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
TT-Wang/dsh-cron
按完成结果调度任务,跨会话重启与睡眠补跑
相关插件 · 工具 / 效率
破甲管控台kingcharleslzy-ai/dsh-purge
dsh-purge Community · DeepSeek Harness 社区维护版:宿主兼容、状态诊断、提示词管理、更新与本机备份回滚。基于小杨 / YuJunZhiXue 的 dsh-purge。
★ 4,330已汉化DeepSeek 客户端
74.5
网文长卷lingfengQAQ/webnovel-writer
基于 Claude Code 的长篇网文辅助创作系统,解决 AI 写作中的「遗忘」和「幻觉」问题,支持 200…
★ 7,636已汉化DSH
72.2
多智能体协作HKUDS/AutoSwarm
AutoSwarm: Unify Your Agents. Unify Your Context (Codex · Claude Code · DeepSeek Harness · Muse · Grok · WorkBuddy· nanobot · and more)
★ 2,349已汉化DSH
71.6
Vox 拼贴视频生成Alisa0808/vox-director
🎬 Vox Director拼贴动效导演
★ 2,129已汉化DSH
71.4
Agent 演化引擎Q00/ouroboros
智能体 OS:智能体自己变聪明,我们只守住底线:面试准入、分阶段评估、带预算的进化循环。MCP 服务器,14 种运行时:Claude Code、Codex CLI、Gemini CLI、OpenCode、Copilot、Kiro 等。
★ 6,311已汉化DSH
71.4
智能体运行框架路由HarnessRouter/harnessrouter
智能体 harness 的统一接口。
★ 3,984已汉化DSH
71.3
这是你的仓库?认领条目