@aiwayds/dsh-cron (英语)
安排会议日程 深搜索策略 作为独立的插件:在标准克龙表达式或固定间隔上的时间表提示,绑定在一个准确的会话上——默认生成者,或专用的新会话——没有全局发送(ADR 0010).
需要dsh >= 6.2.0-rc.2 ——此插件仅针对 dsh RC/ stable 线条( CI并发布解析其中最新的 latest编号 :next 运行时的分数). Α行不再被支持.
设计文件 : 内 容 提 要 (荣耀)和 页:1 (决定).
为什么不安排?
@deepseek-ai/dsh-schedule 提供会话范围提醒( e)after 编号 : at 编号 : every_seconds ≥ 5min),其协议明确排除克龙表达. dsh-cron是补充: 真实克龙表达式上的经常性任务,使用相同的有会话约束的纪律——火灾只在会话中降落,任务必须(默认生成,或专用的新会话),而停止的会话会取消它的任务,这与dsh-chedule的提醒完全一样. dsh-chedule说"在时间X重回这次对话"的地方,dsh-cron说"运行这个有界限的克龙任务用于会话Y".
截止 dsh. 0. 2. 0, 正式自动化调度船作为 OPTIONAL BUNDLE 默认已禁用 ——升级后,现有的官方计划任务静悄悄地停止开火,直到你手动选择加入(而官方的时间文本功能也随之变暗了). dsh-cron不受开关的影响:这是一个 独立、常住调度插件 以注册它自己的 cordis 插件和时钟, 不依赖于正式的捆绑 。 。 如果您依赖于官方的预定任务,并且不希望在每次主机升级后猎取隐藏的设置来切换,dsh-cron是总是在运行的选项;两者也可以并存,因为他们的规则词汇不相重叠(在/每一次提醒vs cron表达式和短限间隔).
核心属性
- 以一次届会为准,绝不是全球性的 (ADR 0010):每一项任务都包含
attach—— 说creator(默认)向会话传递出每道火花cron_create· ;new打开任务专用会话(从对话中分离出背景显示器). 其会话被停止的起火从未在别处改道;发生时跳过(ADR 0002). - 没有无限的曲折 (ADR 0006):每个经常性任务都带有强制性有效性窗口(
max_duration_seconds或者说end_at),上限为一年. 任务到期后会交付一个终端expired火和档案本身。 单发任务在他们单发后进行自制. - 两个规则形状 (ADR0007): (中文(简体) )
cron(5-字段日历表达式,主机-本地时间)或every_seconds60分,停靠在start_at,第一个射击 整个间隔. - 该插件拥有时钟 (ADR 0007):模型仅表示意图(
every_seconds: 600, (中文(简体) ),end_at: "2026-12-31T00:00:00Z"); 插件中所有时间的数学发生,工具结果对绝对ISO时间(now, (中文(简体) ),next_fire) (中文(简体) ). 模型从来不需要知道当前时间. - 每个任务执行政策 (ADR0003): (英语:
followup(默认) 通过会话代理器的闲置相间排入一个新的转折—— 繁忙的目标等待和将已逾期的事件合并为一个带有注释的起火coalesced_count。 。 。 .steer通过agent.steer()并在最近的阶地边界上着陆, 中间转弯—— 监督选项. - 两种执行模式 (ADR 0005): (韩语)
sub-agent(默认)——框架指示模型产出一个孤立的背景工作者,然后呼叫cron_report将回填状态/摘要输入火灾记录;self——在捆绑的对话中自己处理,最好的报告. - 错过的事件被跳过, 从来没有迟到 (ADR 0002):如果配置文件已下调,或者当发生时约束会话无法解决,则记录并结算。 在停机档案中少了一发子弹
missed. Cron意为"执行时为X";dsh-cron不复活已过时的工作. - 周期随会 (ADR 0010):当火灾到期时,根据需要恢复冷会(主机重新启动);停止会话(存档于
stopActivity)取消它的任务;归档一个仍然持有克龙任务的会话被拒绝,直到它们停止——dsh-chedule的纪律,被应用于克龙. - 完全可追踪性 (问题3):每一发火都会产生耐用性
FireRecord(时间,政策,模式,结合计数,状态,汇总). 记录与任务一起运行, 上限为每任务7个( 可配置); 结束的任务移动到_history.json(第50页). - 每个顶级代理工具 (ADR 0006): (韩语)
cron_create编号 :cron_list编号 :cron_delete编号 :cron_report在所有运行时代理和每个任务记录上注册createdBy授权的儿童会议在创立时遭到拒绝——他们的会议从未遭到火灾.
代理使用(初级)
LLM直接调用工具. 人类只是说:
- "MH 10 Q CI跑出1234分,"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
cron_create({ every_seconds: 600, prompt: "检查 CI run 1234,终态则 cron_delete 本任务并汇报", max_duration_seconds: 7200 }) - "... 9..." ,"...","..." .....
cron_create({ cron: "0 9 * * 1-5", prompt: "生成本周周报", end_at: "2026-12-31T23:59:59+08:00" }) - "... 90%..." ......"..."..
cron_create({ cron: "0 * * * *", prompt: "检查磁盘使用率", delivery_policy: "steer", execution_mode: "self", max_duration_seconds: 86400 })
工具参考
| 工具 | 目的 |
|---|---|
cron_create | 创建任务 。 一条规则就是cron | every_seconds); 重复性任务需要精确一个窗口(max_duration_seconds | end_at) (中文(简体) ). attach 选择绑定会话 : creator (违约)或 new (专事. |
cron_list | 带有绑定会话,下发时间的主动任务,并保留消防记录. |
cron_delete | 删除和归档( 状态) cancelled) (中文(简体) ). |
cron_report | 倒装出火的结果( E)completed编号 :failed + 摘要;报告一发档案. |
语法
标准5字段 : minute hour day-of-month month day-of-week,附有清单1,3,5),范围(1-5),步骤*/2),以及月/日名称(jan, (中文(简体) ), mon) (中文(简体) ). 评估 主机的本地时区 (每个任务IANA) time_zone 计划快速跟进——见ADR 0009.
人类使用
/cron list
/cron create "*/10 * * * *" "检查 CI run 1234,终态则删除本任务" --for=7200
/cron create "0 9 * * 1-5" "生成周报" --until=2026-12-31T23:59:59+08:00
/cron create "0 * * * *" "磁盘水位巡检" --new-session --for=2592000
/cron delete a1b2c3d4
/cron fires a1b2c3d4
/cron history 20
--new-session 打开任务专用会话而不是绑定
谈话是你指挥的.
持久性
存储为 profile- 级别, 因此绑定可幸存重新启动; 每个任务文件 记录它交付给的会话(ADR 0001存储位置,ADR 0010) 绑定 :
$DSH_HOME/storages/cron/<8-hex-id>.json # active tasks with their fire records
$DSH_HOME/storages/cron/_history.json # capped archive of ended tasks
Antomic 写入(tmp + fsync + rename); 腐败文件被跳过,永远不会致命.
安装
dsh plugin --profile tui add @aiwayds/dsh-cron
然后在配置文件中添加软件包 dsh.profile.bundles (之后) (中文(简体) ) @deepseek-ai/dsh-base)并重新启动配置文件.
卸载
dsh plugin --profile tui remove @aiwayds/dsh-cron
主机自动调节配置文件: dsh.profile.bundles 条目被分解,插件的补丁层会下降——时刻表静静地停止射击,并捆绑 dsh-cron-config 技能随插件从注册处消失.
哪些留在磁盘上,哪些是故意的(删除数据具有破坏性,再安装后再加水):
<dsh home>/storages/cron/<id>.json使用其消防记录,包括时刻表的有效性窗口,执行中的任务.<dsh home>/storages/cron/_history.json——结束任务的封顶档案.
以下为 Reinstall 语义 ADR 0002 (韩语): 插件离开时到期的事件是 跳过并记录下来,从未迟到 ——停机时间一发失联被存档为: missed. Cron 表示"在时间X执行";插件不会在空白后再复活已过时的工作.
遗产说明:0.2.0前的发行记录了手动技能副本(cp -r skill/cron $DSH_HOME/skills/) (中文(简体) ). 该副本已过时,因为技能现在通过供应商登记册上载——删除陈旧的 $DSH_HOME/skills/cron 如果制作一个目录,或者它阴影了被包装的指南。 清除任务数据:
rm -r ~/.dsh/storages/cron
技能(示范指导)——默认安装
Npm 柏油球飞船 a dsh-cron-config 技术(skill/dsh-cron-config/SKILL.md),教导模型何时以及如何使用工具(规则选择、窗口思维、会话约束、部署监测器和监视器模式)。 它会挂起 自动: 插件在启动时将它与主机的技能注册注册( )ctx.skills 提供者, 被捆绑的级别),所以安装插件就是技能安装—— 没有文件副本输入 $DSH_HOME/skills,并删除插件,删除了该插件的技巧,没有残留.
用户从不用手来引用:在任何顶级会话中,通过技巧来表达"MS 10 QQ CI"或"观察这个部署直到完成"等语句,以及模型路线 cron_create技能体生活在 技能/dsh-cron-config/SKILL.md。 。 。 .
设置( E)dsh-cron 配置补丁中的条目)
从第0.1.7段起,遗产 settings.yaml 在启动时导入并重新命名
settings.yaml.imported; 插件设置位于配置补丁
(单位:千美元)~/.dsh/profiles/<profile>/cordis.patch.yml在 dsh-cron 输入。 全体
四键易变 (设置- 页面可编辑, 运行在引擎读取的地方)
* 每分一勾; storageDir 财务报告和审定财务报表 tickIntervalMs 在插件挂载时读取, 所以
重新开始后,该修改将适用.
| 密钥 | 默认 | 含义 |
|---|---|---|
fireHistoryLimit | 第7条 | 每个任务(最老被逐出)都保存着火灾记录. |
historyLimit | 第50条 | 归档任务保存在 _history.json。 。 。 . |
tickIntervalMs | 15000个 | 排程计时周期 . |
storageDir | —— 说 | 存储覆盖; 空 = <dsh home>/storages/cron。 。 。 . |
从0.1.7前安装升级:顶级 cron: 旧章节
settings.yaml (主机重命名为) settings.yaml.imported 之后
1- shoot 导入—— 区域名称不匹配此插件的条目 id) 是
在下一个插件启动时迁移 ONCE 。 遗留价值与
当前有效值写入 dsh-cron 自动输入;
密码记录在审计标记中
<dsh home>/storages/dsh-cron/legacy-import.json (当前标记系指
迁移从不重运行;在下一个启动时重复写入失败 .
限制
- 消防队需要现场资料: dsh-cron是一款由设计(ADR 0001;一个MCP服务器不能推)而来的一个进程内插件. dsh 运行时不会起火, 当火灾发生时,根据需要恢复冷会(ADR 0010),但只有在主机进程启动时.
- 只在约束会话后交付 (ADR 0010):一个会话被停止到会话返回或被停止活动(取消任务)的任务. 从设计上讲,没有其他对话的路线.
- 子代理会话既不创建也不接收- 拒绝授权的儿童开庭
cron_create永远不能成为目标. - 主机- 本地日历时间:日历规则读取主机时钟的区;UTC中的容器会转换出站后钟表(ADR 0009).
self- 模式结果最好:没有什么可以强迫模型调用cron_report;子代理模式是可追踪的默认值.- 每滴一个方向盘:当一个方向盘坐落在一个收件箱中时,后来的事件仍然每勾选一次提交而不是倒塌(dsh的收件箱不能从插件中进行内置).
建筑
src/
index.ts plugin entry: settings, agent/created mount, /cron, tick loop, session lifecycle
scheduler.ts dsh-free tick engine (fires, coalescing, skip, expiry)
attach.ts session binding glue: target resolution, cold resume, dedicated sessions
rule.ts selector + validity-window validation, occurrence math
cron-expr.ts 5-field cron parser + next-fire computation
framing.ts [CRON FIRE] model framing (injection-resistant)
tools.ts cron_create / cron_list / cron_delete / cron_report
store.ts per-id JSON task store + capped history (atomic writes)
legacy-import.ts one-time `cron:` section migration (0.1.5 → 0.1.7) + audit marker
types.ts data model and clock seam
paths.ts dsh home resolution
test/ unit suites over the compiled lib (fake clocks/agents)
scripts/
smoke-boot.mjs real-host smoke: pack → scratch profile → boot
e2e/ podman suite: real dsh TUI in tmux driven against a scripted mock LLM
欧2E
e2e/run-e2e.sh 构建容器图像( Ubuntu + Node + 全球 dsh 安装 + 包装的插件 tarball) 并驱动 tmux 中的真实 TUI 以对抗容器 模拟 OpenAI 兼容 LLM - 没有证书,完全有决定性, 同一个套房的门CI。 这些假设情景将整个链末到:
- profile 组装 - 插件会编成真正的 dsh 捆绑树
- TUI 启动到脚本提供者
- 自模式链——模型生成任务,60后调度器起火
[CRON FIRE]将土地活埋,cron_report回填记录,商店声称status: completed - 副剂链——火产出一种真正的 dsh 子剂,其
cron_report由孩子补充 - 命令过期( e) -
/cron list编号 :/cron help,窗口关闭,任务存档本身为expired, (中文(简体) ),/cron delete存档为cancelled
./e2e/run-e2e.sh # dev machine (uses registry mirrors)
CLEAN_NETWORK=1 ./e2e/run-e2e.sh # CI-like network (official endpoints)
从 @aiwayds/pi-kimi-cron (英语) (从Kimi Code的克龙模块中自行移植),重新设计了dsh的运行时间——三角洲全部被收录在 页:1。 。 。 .