🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

定时例程调度 Jesse-njx/dsh-routines

DeepSeek Harness
Jesse-njx67 天前有提交已提供中文文档扫描:含敏感能力

按 cron 定时跑 prompt,把摘要投递到文件或聊天节点

28/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/9/16 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add Jesse-njx/dsh-routines
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:需留意
是什么[目录]—
dsh 原生插件 · tool
暂无时间戳·判据 →
装得上吗[实装验证]!
实装验证未通过(unknown),装前请到仓库确认最近更新与 issue
L4 · 真实安装等级说明 →
数据截至 2026/10/07·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/03·判据 →
还在维护吗[仓库]—
更新放缓:最近一次提交在 67 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →

可信度证据

⚠︎ 实装验证未通过(unknown · 2026/10/7) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件
查看扫描证据(共 24 处,展示前 24 条)
  • 读取本地文件
    lib/store.js:99
    text = readFileSync(file, 'utf8');
  • 写入本地文件
    lib/store.js:138
    mkdirSync(join(projectDir, '.dsh', 'routines'), { recursive: true });
  • 写入本地文件
    lib/store.js:139
    mkdirSync(globalDir, { recursive: true });
  • 读取本地文件
    lib/store.js:179
    files = readdirSync(dir).filter((f) => f.endsWith('.yaml') || f.endsWith('.yml')).sort();
  • 执行外部命令来自配置/变量
    lib/scheduler.js:58
    child = looksLikeScript ? spawn(process.execPath, [spec.bin, ...args], { cwd: spec.cwd, env: spec.env, stdio: ['ignore', 'inherit', 'inherit'] }) : sp
  • 写入本地文件
    lib/scheduler.js:198
    mkdirSync(runsDir, { recursive: true });
  • 删除本地文件
    lib/scheduler.js:279
    rmSync(entry.patchPath, { force: true });
  • 写入本地文件
    lib/scheduler.js:441
    writeFileSync(patchPath, lines, 'utf8');
  • 读取本地文件
    lib/cli.js:201
    files = readdirSync(dir).filter((f) => f.endsWith('.json')).sort((a, b) => statMtime(join(dir, b)) - statMtime(join(dir, a)));
  • 读取本地文件
    lib/cli.js:218
    return statSync(path).mtimeMs;
  • 读取本地文件
    lib/run.js:43
    return JSON.parse(readFileSync(path, 'utf8'));
  • 写入本地文件
    lib/run.js:53
    mkdirSync(join(path, '..'), { recursive: true });
  • 写入本地文件
    lib/run.js:55
    writeFileSync(tmp, JSON.stringify(record, null, 2) + '\n', 'utf8');
  • 写入本地文件
    lib/run.js:56
    renameSync(tmp, path);
  • 写入本地文件
    lib/run.js:76
    writeFileSync(`${recordPath.replace(/ json$/, '')}.md`, md, 'utf8');
  • 读取本地文件
    lib/state.js:20
    if (!existsSync(path))
  • 读取本地文件
    lib/state.js:22
    const parsed = JSON.parse(readFileSync(path, 'utf8'));
  • 写入本地文件
    lib/state.js:42
    mkdirSync(join(path, '..'), { recursive: true });
  • 写入本地文件
    lib/state.js:44
    writeFileSync(tmp, JSON.stringify(state, null, 2) + '\n', 'utf8');
  • 写入本地文件
    lib/state.js:45
    renameSync(tmp, path);
  • 写入本地文件
    lib/run-record.js:21
    mkdirSync(join(path, '..'), { recursive: true });
  • 写入本地文件
    lib/run-record.js:23
    writeFileSync(tmp, JSON.stringify(record, null, 2) + '\n', 'utf8');
  • 写入本地文件
    lib/run-record.js:24
    renameSync(tmp, path);
  • 读取本地文件
    lib/run-record.js:29
    return JSON.parse(readFileSync(path, 'utf8'));
扫描于 2026/11/3(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

社区实装还没有人打卡 · 装过的第一个就是你
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/cordis-plugin-timer@deepseek-ai/dsh-agent@deepseek-ai/dsh-agent-default-model@deepseek-ai/dsh-cmdline@deepseek-ai/dsh-jobs@deepseek-ai/dsh-jobs-local@deepseek-ai/dsh-llm@deepseek-ai/dsh-session@deepseek-ai/schemastery
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 按cron定时跑提示词
  • 摘要写入文件
  • 投递到聊天节点

dsh-routines — 给 DSH 的定时智能体:按 cron 跑提示词,摘要直接送到你手边(文件摘要、chatnode 投递、无人值守也稳)

README

由 DeepSeek 最新模型翻译生成
dsh-routines DSH 的定时 Agent —— 按 cron 跑一个 prompt,把摘要送到你已经在的地方。 dsh-routines 是 DeepSeek Harness 的插件 bundle。routine(例程) 是一个「命名 prompt + 调度 + 投递」,以纯 YAML 文件存放 —— 可人工 diff、可 git 提交。调度器把每个到期例程通过 headless runner 作为独立的一次性会话启动(完整会话日志 = 免费审计,之后可用 dsh-replay 回放),然后投递摘要:最后一条 assistant 消息较短时直接用它,否则对会话日志做一次性摘要调用。 ┌──────────────────────┐ 每日 02:00 ┌──────────────────────────────┐ │ dsh --profile ops │ ─────────────▶ │ dsh --profile headless │ │ 调度器 tick │ 独立会话,cwd │ "跑测试套件,……
展开完整文档(README 剩余 1 节)
dsh-routines

DSH 的定时 Agent —— 按 cron 跑一个 prompt,把摘要送到你已经在的地方。

dsh-routines 是 DeepSeek Harness 的插件 bundle。routine(例程) 是一个「命名 prompt + 调度 + 投递」,以纯 YAML 文件存放 —— 可人工 diff、可 git 提交。调度器把每个到期例程通过 headless runner 作为独立的一次性会话启动(完整会话日志 = 免费审计,之后可用 dsh-replay 回放),然后投递摘要:最后一条 assistant 消息较短时直接用它,否则对会话日志做一次性摘要调用。

┌──────────────────────┐ 每日 02:00 ┌──────────────────────────────┐ │ dsh --profile ops │ ─────────────▶ │ dsh --profile headless │ │ 调度器 tick │ 独立会话,cwd │ "跑测试套件,……" │ │ 读取 .dsh/routines │ = 例程 cwd, │ 审批策略: never │ │ /.yaml │ 审批: never) └──────────────┬───────────────┘ └──────────────────────┘ │ 运行记录: 状态、 │ 摘要 + 运行记录 │ 摘要、会话 id、 ▼ │ 被拒绝的权限
.dsh/routines/runs/.json (+ .md) ──► file 投递(始终开启)
ctx.chatnode(可选) ──► chatnode 投递(软依赖)

旗舰示例 —— 夜间测试分诊

凌晨 2 点跑测试套件、诊断最高优先级失败、在项目里留下摘要的例程;装了会话节点后,摘要还会发到微信,你回复即可批准后续操作(v0.2;v0.1 投递到文件,装了节点也可投递 chatnode)。

~/work/projectx/.dsh/routines/nightly-tests.yaml
name: nightly-tests
schedule: "0 2 * " # 5 段 cron;也支持 "@daily"、"every 4h" timezone: Asia/Shanghai # 显式指定,不静默使用宿主机时区 prompt: | Run the test suite. If anything fails, diagnose the top failure and draft a fix on a branch. Summarize in ;该 profile 必须支持一次性运行(包含 headless bundle,或同样安装本 bundle —— 运行 overlay 无论如何都会禁用嵌套的调度器)。

调度宿主

调度器在安装了本 bundle 的 profile 内 tick,所以也可以把 bundle 加进你的 web profile,web 应用运行期间例程就会触发: console
dsh plugin --profile web add @dsh-routines/bundle

保持进程存活即可触发调度;dsh --profile ops(无内参)即守护模式(CLI 保持安静,调度器掌管进程生命周期)。

例程文件

例程位于两个被监听的目录(改动热重载;非法文件会被报告,不会让 store 崩溃):

| 目录 | 作用域 |
| /.dsh/routines/.yaml | 项目例程(同名覆盖全局) |
| ~/.dsh/routines/.yaml | 全局例程 |

| 字段 | 默认 | 含义 |
| name | —(必填) | [a-z0-9][a-z0-9-],≤ 64 字符 |
| schedule | —(必填) | 0 2 * * 、@daily、@hourly、@weekly、@monthly、@yearly、every 4h、every 30m |
| timezone | UTC | 调度计算的 IANA 时区(绝不使用宿主机时区) |
| prompt | —(必填) | headless 运行要执行的任务 |
| cwd | 操作者 cwd | 运行的 working directory;摘要也落在其下 |
| profile | headless | 运行启动的 DSH profile |
| overlap | skip | skip(绝不在同一仓库叠加两个 agent)、queue(当前结束后运行)、cancel-previous |
| timeoutMin | 45 | 硬超时;卡死的凌晨 2 点 agent 不能占用仓库到早上 9 点 |
| deliver | [{type: file}] | 摘要投递渠道 |

cron 字段支持 、步进后缀(/15)、区间(9-17)、列表(0,30)、?、月份/星期名称。当月内日期与星期同时受限时,任一天匹配即命中(Vixie cron 语义)。

调度器记账(暂停集合、上次运行锚点)存放在 /.dsh/routines/state.json。

CLI

dsh --profile ops routines

| 命令 | 说明 |
| list | 例程列表:调度、暂停状态、下次运行 |
| run | 手动触发(立即运行;打印摘要后退出) |
| pause / resume | 停止 / 恢复定时运行 |
| logs [--limit n] | 最近运行记录:状态、耗时、摘要、会话 id |

运行记录是 /.dsh/routines/runs/.json,旁边还有人类可读的 .md 摘要。run 也是在信任调度前测试例程的手动触发方式。

安全默认值

定时 agent 无人值守运行,因此每个运行子进程都会被 patch 为:

- 一切需要提示的都自动拒绝 —— 运行 overlay 把审批策略强制为 never(sandbox 模式保持 profile 继承值,通常为 workspace-write)。被拒绝的请求会被收集进运行记录(denied)并体现在摘要里。
- 绝不调度嵌套运行 —— 运行 overlay 会在运行 profile 内禁用调度器行。
- 绝不让调度器崩溃 —— 投递失败、摘要失败、spawn 失败都记录在运行记录上,不抛出。

错过的运行(笔记本休眠):唤醒后最多补跑一次,绝不重放积压。

投递

- file(始终开启):/.dsh/routines/runs/ 下的运行记录 + 摘要 markdown。
- chatnode(可选):装了 ctx.chatnode 服务({ send(input: { text, title? }): Promise })时把摘要发过去;没有则记录为 not-installed,运行照常完成。未来的 @dsh-cowork/chatnode-wechat 暴露该服务后会自动点亮。

架构

一个 bundle,三个插件(+ 一个运行驱动),均可作为子路径安装:

| 模块 | 职责 |
| @dsh-routines/bundle/store | 监听 .dsh/routines/.yaml(项目 + 全局)、校验、热重载、管理持久化状态 |
| @dsh-routines/bundle/scheduler | 在 ctx.jobs 上注册到期例程(kind routine);负责 overlap、错过运行、超时语义 |
| @dsh-routines/bundle/cli | dsh routines ... 命令行 |
| @dsh-routines/bundle/run | 子进程侧驱动,通过生成的 --patch overlay 注入每次一次性运行;写运行记录与摘要 |

运行启动 dsh --profile --patch -- "",工作目录为例程 cwd。overlay 禁用内置 headless runner、在同一 task 服务上挂载 run 驱动、并强制无人值守审批策略 —— 既保留完整的 headless 体验(全新持久化会话、provider 选择),又写出只有 dsh-routines 知道怎么读的审计记录。

开发 console
pnpm install
pnpm build # tsc -> lib/
pnpm test # node --test(46 个测试:cron、调度矩阵、store、run、cli、e2e)

e2e 测试会在临时 DSH_HOME 里用脚本化 mock LLM adapter(离线、无需凭证)启动真实的 dsh 子进程,完整走通 store → 调度器 → jobs → 子进程 → 运行驱动 → 摘要 → 记录。

非目标

云端执行(仅本机;错过运行策略如实处理休眠笔记本)、例程市场、亚分钟级调度。

License

MIT
预览分享卡片长什么样 ↓Jesse-njx/dsh-routines
分享 · DeepSeek Harness Hub
Jesse-njx/dsh-routines

按 cron 定时跑 prompt,把摘要投递到文件或聊天节点

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部