mirror of
https://github.com/hansjone/dsh-ops-cron.git
synced 2026-10-13 06:00:47 +08:00
Fork dsh-cron-tasks as dsh-ops-cron with DSH/IM delivery.
Agent cron_* jobs default to IM when created from a WhatsApp session with a matching delivery target; otherwise DSH sidebar sessions. Fire path soft-calls ctx.dshIm.send for summaries. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
parent
4447404361
commit
2f08136adf
17 changed files with 472 additions and 285 deletions
123
README.md
123
README.md
|
|
@ -1,116 +1,31 @@
|
|||
# dsh-cron-tasks
|
||||
# dsh-ops-cron
|
||||
|
||||
[English](#english) · [中文](#zhongwen)
|
||||
Ops fork of [dsh-cron-tasks](https://github.com/Whale-Zhang/dsh-cron-tasks) for DeepSeek Harness.
|
||||
|
||||
A DeepSeek Harness (`dsh`) plugin for **scheduled tasks**. Sidebar entry under **New Session**, plugin settings, isolated run history, and model-facing `cron_*` tools.
|
||||
- Sidebar **运维定时** under New Session
|
||||
- Agent tools: `cron_create` / `cron_list` / `cron_pause` / `cron_resume` / `cron_delete`
|
||||
- Per-job delivery: **DSH** (new root session) or **IM** (`ctx.dshIm.send`)
|
||||
|
||||

|
||||

|
||||
See [FORK.md](FORK.md) for install notes. Do **not** install upstream `@dsh-external/dsh-cron-tasks` in the same profile.
|
||||
|
||||
<a id="zhongwen"></a>
|
||||
|
||||
## 中文
|
||||
|
||||
到点后 **新开一条会话** 跑事先写好的提示词,记进侧栏「定时任务」历史。这类会话不会淹没日常工作区列表。
|
||||
|
||||
这不是官方同会话 reminder(`@deepseek-ai/dsh-schedule`),也不是系统 `crontab`。调度器住在 DSH Host 里:Host 没在跑就不会触发。
|
||||
|
||||
### 安装
|
||||
|
||||
需要已安装 [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness)。一条命令装进网页端和桌面端:
|
||||
## Install
|
||||
|
||||
```sh
|
||||
dsh plugin --profile web add github:Whale-Zhang/dsh-cron-tasks
|
||||
dsh plugin --profile desktop add github:Whale-Zhang/dsh-cron-tasks
|
||||
dsh plugin --profile web add -w "github:hansjone/dsh-im-ops"
|
||||
dsh plugin --profile web add -w "github:hansjone/dsh-ops-cron"
|
||||
# restart dsh web
|
||||
```
|
||||
|
||||
装完后**重启对应 profile**(`dsh web` 或 Desktop)。用下面命令应能看到 `dsh-cron-tasks`:
|
||||
## Delivery defaults
|
||||
|
||||
```sh
|
||||
dsh --profile web --dump-config
|
||||
```
|
||||
| Created from | Default delivery |
|
||||
|--------------|------------------|
|
||||
| WhatsApp / IM session (peer resolved + matching 投递目标) | `im` → that `botId`+`targetId` |
|
||||
| Web / plain DSH session | `dsh` → sidebar history session |
|
||||
| Explicit `delivery` / `im_bot_id`+`im_target_id` | as specified |
|
||||
|
||||
### 卸载
|
||||
Create IM targets first in IM → 投递设置 → 复制调用参数 when you need a stable target for WhatsApp.
|
||||
|
||||
```sh
|
||||
dsh plugin --profile web remove @dsh-external/dsh-cron-tasks
|
||||
dsh plugin --profile desktop remove @dsh-external/dsh-cron-tasks
|
||||
```
|
||||
## License
|
||||
|
||||
### 做什么
|
||||
|
||||
- 左侧 **「新会话」正下方** 的 **「定时任务」** 入口:创建、暂停/恢复、删除、立即运行、搜索
|
||||
- **设置 → 插件 → 插件配置** 里的调度策略(启用、默认时区、历史保留、重叠/漏跑)
|
||||
- 每次触发新开 root Session;点历史记录打开原生对话,可以继续聊
|
||||
- 每个任务可指定 **模型**(钉死后不跟着聊天模型变,额度可预期)
|
||||
- 工作目录可下拉已有工作区,或自定义路径
|
||||
- 也可在对话里对 AI 说「帮我建一个定时任务」(skill `scheduled-tasks` + `cron_create`)
|
||||
|
||||
### 日程
|
||||
|
||||
- 一次性 `at`,或循环 5 字段 cron,IANA 时区(默认 `Asia/Shanghai`)
|
||||
- 「一分钟后」用 `after_minutes`,不要叠 `at` / `hour` / `expr`
|
||||
- 重叠:同一任务已有进行中的运行则跳过
|
||||
- 漏跑:Host 宕机期间错过的节拍 **不补跑**
|
||||
|
||||
### 开发
|
||||
|
||||
```sh
|
||||
node --test test/*.test.js
|
||||
```
|
||||
|
||||
本地 `file:` 安装(开发用,不要用 `link:`):
|
||||
|
||||
```sh
|
||||
dsh plugin --profile web add file:$HOME/.dsh/plugins/dsh-cron-tasks
|
||||
```
|
||||
|
||||
产品契约见 [docs/PRD.md](docs/PRD.md)。实现经验见 [docs/NOTES.md](docs/NOTES.md)。
|
||||
|
||||
---
|
||||
|
||||
<a id="english"></a>
|
||||
|
||||
## English
|
||||
|
||||
At the scheduled time, Harness **opens a fresh root session**, runs a self-contained prompt, and records the run in the **Scheduled tasks** sidebar. Those sessions stay out of the ordinary workspace list.
|
||||
|
||||
This is not the official same-chat reminder (`@deepseek-ai/dsh-schedule`) and not OS crontab. The scheduler lives in the DSH Host process; nothing fires while Host is down.
|
||||
|
||||
### Install
|
||||
|
||||
Requires [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness).
|
||||
|
||||
```sh
|
||||
dsh plugin --profile web add github:Whale-Zhang/dsh-cron-tasks
|
||||
dsh plugin --profile desktop add github:Whale-Zhang/dsh-cron-tasks
|
||||
```
|
||||
|
||||
Restart the profile after installing. `dsh --profile web --dump-config` should list `dsh-cron-tasks`.
|
||||
|
||||
### Uninstall
|
||||
|
||||
```sh
|
||||
dsh plugin --profile web remove @dsh-external/dsh-cron-tasks
|
||||
dsh plugin --profile desktop remove @dsh-external/dsh-cron-tasks
|
||||
```
|
||||
|
||||
### What it does
|
||||
|
||||
- Sidebar entry **under New Session**: create, pause/resume, delete, run now, search
|
||||
- Scheduler policy in **Settings → Plugins → Plugin configuration**
|
||||
- Each fire is a new root session; open a history row to continue in the native chat
|
||||
- Each job can pin a **model** so quota does not follow the chat selector
|
||||
- Working directory: existing workspace or a custom path
|
||||
- Ask the agent to create a job (`scheduled-tasks` skill + `cron_create`)
|
||||
|
||||
### Schedule
|
||||
|
||||
- One-shot `at` or 5-field cron, IANA time zone (default `Asia/Shanghai`)
|
||||
- “In N minutes” → `after_minutes`
|
||||
- Overlap: skip if the same job is already running
|
||||
- Misfire: missed beats while Host was down are **not** replayed
|
||||
|
||||
### License
|
||||
|
||||
MIT
|
||||
MIT (upstream MIT retained).
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue