DeepSeek Harness Hub
← 返回列表

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

DeepSeek Harnessspec-screened在 GitHub 查看 ↗
未验证

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

尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/8/29 · 已提供中文文档

dsh-routines — 为 DSH 提供的定时智能体:按 cron 运行提示词,在你已经所在的地方获取摘要(文件摘要、chatnode 投递、无人值守安全)

综合分
28
GitHub 分
28
用户评分
★ Stars
0
周下载量
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add Jesse-njx/dsh-routines
该插件未发布到 npm,走 GitHub 源安装(pnpm 若拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑)
数据截至 2026/9/16(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
依赖的 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
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

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

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

💬 加入 DPharness 群聊

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

点击加入 QQ 群
DPharness 群聊二维码,手机 QQ 扫码进群
扫码进群