# @aiwayds/dsh-cron 中文文档

规范地址：https://npmcn.com/package/%40aiwayds/dsh-cron/

版本：0\.6\.1
npm 元数据更新时间：2026-10-26T12:36:33.830Z
中文译文更新时间：2026-11-08T08:19:55.326Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40aiwayds/dsh-cron
原文对照：https://npmcn.com/package/%40aiwayds/dsh-cron/?lang=original
项目主页：https://github.com/fan56/dsh-cron#readme
源码仓库：https://github.com/fan56/dsh-cron

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：217 kB，46 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- Node.js 要求：\>=22\.19\.0
- 运行依赖：0 个
- peer 依赖：@deepseek-ai/cordis ^4\.0\.2，@deepseek-ai/dsh-llm \>=0\.2\.0-rc\.2，@deepseek-ai/dsh-agent \>=0\.2\.0-rc\.2，@deepseek-ai/dsh-tools \>=0\.2\.0-rc\.2，@deepseek-ai/schemastery ^3\.18\.2，@deepseek-ai/dsh-commands \>=0\.2\.0-rc\.2，@deepseek-ai/dsh-settings \>=0\.2\.0-rc\.2
- 首次发布：2026-09-02T16:39:01.250Z
- 最新版本发布：2026-10-26T12:36:33.149Z
- 近 30 天下载量：1857（2026-10-05 至 2026-11-03，npm 官方下载统计）
- 已发布版本数：12（近 12 个月 12 个）

## 中文简介

dsh 插件: cron 排程 — 带有日历和间隔规则的被绑定的任务, 交付给活代理

## 安装

```sh
npm install @aiwayds/dsh-cron
```

也可以使用：`pnpm add @aiwayds/dsh-cron`、`yarn add @aiwayds/dsh-cron`、`bun add @aiwayds/dsh-cron`

## README

# @aiwayds/dsh-cron (英语)

安排会议日程 [深搜索策略](https://github.com/deepseek-ai/deepseek-harness) 作为独立的插件:在标准克龙表达式或固定间隔上的时间表提示,绑定在一个准确的会话上——默认生成者,或专用的新会话——没有全局发送(ADR 0010).

**需要dsh >= 6.2.0-rc.2** ——此插件仅针对 dsh RC/ stable 线条( CI并发布解析其中最新的 `latest`编号 :`next` 运行时的分数). **Α行不再被支持.**

设计文件 : [内 容 提 要](https://npmcn.com/package/%40aiwayds/dsh-cron/CONTEXT.md) (荣耀)和 [页:1](https://npmcn.com/package/%40aiwayds/dsh-cron/docs/adr) (决定).

## 为什么不安排?

`@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_seconds` 60分,停靠在 `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); 腐败文件被跳过,永远不会致命.

## 安装

```bash
dsh plugin --profile tui add @aiwayds/dsh-cron
```

然后在配置文件中添加软件包 `dsh.profile.bundles` (之后) (中文(简体) ) `@deepseek-ai/dsh-base`)并重新启动配置文件.

## 卸载

```bash
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 (韩语)](https://npmcn.com/package/%40aiwayds/dsh-cron/docs/adr/0002-skip-missed-occurrences.md): 插件离开时到期的事件是 **跳过并记录下来,从未迟到** ——停机时间一发失联被存档为: `missed`. Cron 表示"在时间X执行";插件不会在空白后再复活已过时的工作.

遗产说明:0.2.0前的发行记录了手动技能副本(`cp -r skill/cron $DSH_HOME/skills/`) (中文(简体) ). 该副本已过时,因为技能现在通过供应商登记册上载——删除陈旧的 `$DSH_HOME/skills/cron` 如果制作一个目录,或者它阴影了被包装的指南。 清除任务数据:

```bash
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](https://npmcn.com/package/%40aiwayds/dsh-cron/skill/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。 这些假设情景将整个链末到:

1.  profile 组装 - 插件会编成真正的 dsh 捆绑树
2.  TUI 启动到脚本提供者
3.  自模式链——模型生成任务,60后调度器起火 `[CRON FIRE]` 将土地活埋, `cron_report` 回填记录,商店声称 `status: completed`
4.  副剂链——火产出一种真正的 dsh 子剂,其 `cron_report` 由孩子补充
5.  命令过期( e) - `/cron list` 编号 : `/cron help`,窗口关闭,任务存档本身为 `expired`, (中文(简体) ), `/cron delete` 存档为 `cancelled`

```bash
./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 (英语)](https://github.com/fan56/pi-kimi-cron) (从Kimi Code的克龙模块中自行移植),重新设计了dsh的运行时间——三角洲全部被收录在 [页:1](https://npmcn.com/package/%40aiwayds/dsh-cron/docs/adr)。 。 。 .

## 许可证

[麻省理工学院](https://npmcn.com/package/%40aiwayds/dsh-cron/LICENSE)

## 常见问题

### @aiwayds/dsh-cron 是什么？

dsh 插件: cron 排程 — 带有日历和间隔规则的被绑定的任务, 交付给活代理

### 如何安装 @aiwayds/dsh-cron？

在项目目录运行 npm install @aiwayds/dsh-cron，或使用 pnpm add / yarn add / bun add。

### @aiwayds/dsh-cron 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @aiwayds/dsh-cron 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### @aiwayds/dsh-cron 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js \>=22\.19\.0。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### @aiwayds/dsh-cron 可以商用吗？

@aiwayds/dsh-cron 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @aiwayds/dsh-cron 的下载量有多少？

根据 npm 官方下载统计，@aiwayds/dsh-cron 在 2026/10/05 – 2026/11/03 这 30 天内被下载 1,857 次，日均约 62 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @aiwayds/dsh-cron 还在维护吗？

最新版本 0\.6\.1 发布于 2026/10/26（12 天前）；至今共发布 12 个版本，其中过去 12 个月发布了 12 个；首次发布于 2026/09/03。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

