Skip to content
Back to skills

Linkfox Task Scheduler

ASecurity

管理 LinkFoxAgent 的定时任务(周期性自动执行的提示词任务)。一个 skill 覆盖六个操作——新增定时任务、更新定时任务、更新任务启用/停用状态、删除定时任务、查询定时任务列表、立即创建 N 分钟/小时后的一次性提醒。用户提到"创建/新增一个定时任务"、"让 Agent 每天/每周/每月定时帮我跑"、"修改我的定时任务"、"启用/停用/暂停某个定时任务"、"删除定时任务"、"看看我有哪些定时任务/任务列表"、"定时提醒/定时汇总/周期性任务"、"N分钟/N小时后提醒我"、"X分钟后发飞书/钉钉提醒"、"schedule a task"、"remind me in X minutes"、"recurring/cron task"、"create/update/delete/list scheduled task"时触发。任务支持每天/每周/每月/不重复四种调度方式,并可配置邮件、钉钉、飞书、自定义 WebHook 通知。

  • 28 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 12, 2026
content-marketingpythonapi

Works with

  • api

Security analysis

A100/100

Pro scans all 4 files and shows the line behind each finding

Scanned September 12, 2026

npx -y skills add ahang1598/doubao-workbuddy-qwenwork-skills --skill linkfox-task-scheduler --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Linkfox Task Scheduler?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Linkfox Task Scheduler
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/ahang1598-linkfox-task-scheduler/badge)](https://www.skillsdirectory.com/skills/ahang1598-linkfox-task-scheduler)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: linkfox-task-scheduler
description: 管理 LinkFoxAgent 的定时任务(周期性自动执行的提示词任务)。一个 skill 覆盖六个操作——新增定时任务、更新定时任务、更新任务启用/停用状态、删除定时任务、查询定时任务列表、立即创建 N 分钟/小时后的一次性提醒。用户提到"创建/新增一个定时任务"、"让 Agent 每天/每周/每月定时帮我跑"、"修改我的定时任务"、"启用/停用/暂停某个定时任务"、"删除定时任务"、"看看我有哪些定时任务/任务列表"、"定时提醒/定时汇总/周期性任务"、"N分钟/N小时后提醒我"、"X分钟后发飞书/钉钉提醒"、"schedule a task"、"remind me in X minutes"、"recurring/cron task"、"create/update/delete/list scheduled task"时触发。任务支持每天/每周/每月/不重复四种调度方式,并可配置邮件、钉钉、飞书、自定义 WebHook 通知。
---

# LinkFox 定时任务管理

管理 LinkFoxAgent 的**定时任务**:把一段提示词内容(任务内容)按设定的周期自动交给 Agent 执行,并可在完成后通过邮件 / 钉钉 / 飞书 / 自定义 WebHook 通知用户。

本 skill 用**一个脚本 + action 参数**统一覆盖五个操作:

| action | 含义 | 后端端点 |
|---|---|---|
| `create` | 新增定时任务 | `POST /task/add4api` |
| `update` | 更新定时任务(全量字段) | `POST /task/update4api` |
| `update-status` | 仅切换启用/停用状态 | `POST /task/updateStatus4api` |
| `delete` | 删除定时任务(支持批量) | `POST /task/delete4api` |
| `list` | 分页查询定时任务列表 | `POST /task/list4api` |
| `remind` | 快速创建 N 分钟/小时后的一次性提醒(客户端自动算目标时刻,转为 `create`) | 内部转 `POST /task/add4api` |

## 核心概念

- **任务内容(`promptContent`)**:定时触发时交给 Agent 执行的提示词,最长 60000 字符。
- **调度(`execType` + `execPoint` + `execTime`)**:决定何时执行。
  - `execType`:`1`=每天、`2`=每周、`3`=每月、`4`=不重复(一次性)。(`5`=每分钟,当前环境通常未开放,使用前确认。)
  - `execTime`:执行时刻,`HH:mm`,如 `"09:00"`。
  - `execPoint`:周期点,含义随 `execType` 变化(见下方「调度规则」)。
- **状态(`taskStatus`)**:布尔。`true`=启用(按周期执行),`false`=停用。
- **通知(`noticeList`)**:**非必填,默认 `[]`**,配置任务执行结果的推送渠道(邮件 / 钉钉 / 飞书 / 自定义 WebHook)。不传或传空数组均表示不配置通知。

> **重要:不要传 `memberId`。** 该字段由后端从鉴权 token 自动注入,调用方传了也会被覆盖。

完整参数表(类型、必填、默认值、枚举、正则约束)、响应字段结构与错误码,见 [`references/api.md`](references/api.md)。

## 提醒模式(remind)

当用户说"N 分钟/小时后提醒我做某事"时,直接使用 `remind` action,**脚本在客户端自动计算目标时刻**,无需手动算时间。

**参数说明**:

| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| `delayMinutes` | number | 条件必填 | 延迟分钟数(与 `delayHours` 可叠加) |
| `delayHours` | number | 条件必填 | 延迟小时数(与 `delayMinutes` 可叠加) |
| `message` | string | 是 | 提醒内容,作为 Agent 在目标时刻执行的提示词;**建议直接写提醒原文**,如 `"请立即发送提醒:该去尿尿了!"` |
| `title` | string | 否 | 任务标题,默认 `"定时提醒"` |
| `feishuWebhook` | string | 条件必填 | 飞书机器人 Webhook 地址,Agent 执行后结果将推送到此;`feishuWebhook` 与 `webhookUrl` 二者至少传一个(`noticeList` 为必填,remind 通过该字段构造) |
| `webhookUrl` | string | 条件必填 | `feishuWebhook` 的别名;二者至少传一个 |

> - `delayMinutes` 与 `delayHours` 至少传一个且总和 > 0。
> - 目标时刻精度为分钟(`HH:mm`),实际触发可能晚 ≤1 分钟。
> - 若延迟后跨过午夜,`execPoint` 自动变为次日日期。
> - 飞书 Webhook 地址格式:`https://open.feishu.cn/open-apis/bot/v2/hook/<UUID>`。
> - `remind` 在客户端转换为 `execType=4`(不重复)的 `create` 调用,创建成功后回显任务 id 与计划执行时刻。

**构造 `message` 的指引**:提醒类任务的 `message` 建议以"请立即输出以下提醒内容,不要添加额外分析:"开头,后接提醒正文。这样 Agent 在执行时会直接输出提醒,推送到 Feishu 的内容才是干净的提醒消息。

## 调度规则(execType ↔ execPoint ↔ execTime)

| execType | 含义 | execPoint | execTime | 说明 |
|---|---|---|---|---|
| `1` | 每天 | 不使用(留空) | `HH:mm` | 每天在 execTime 执行,例:每天 `09:00` |
| `2` | 每周 | 星期,逗号分隔,`1`=周一…`7`=周日,例 `"1,3,5"` | `HH:mm` | 每周指定几天的 execTime 执行 |
| `3` | 每月 | 日期,逗号分隔,例 `"1,15"` | `HH:mm` | 每月指定几号的 execTime 执行 |
| `4` | 不重复 | 具体日期 `YYYY-MM-DD`,例 `"2026-06-01"` | `HH:mm` | 一次性执行;`execPoint+execTime` 必须晚于当前时间,否则报错 |

## 调用方式

- **Python 脚本**:`python scripts/task_scheduler.py <action> '<JSON 参数>' [--inline]`
  - `<action>` ∈ `create | update | update-status | delete | list`
  - `<JSON 参数>` 为该操作的请求体(不含 `memberId`)

**输出策略(脚本默认行为)**:
- **始终**将完整响应写入 `<cwd>/linkfox/<YYYY-MM-DD>/<session>/data/linkfox-task-scheduler-<timestamp>.json`(`<session>` 取自环境变量 `SESSION_ID`;**禁止写入 /tmp**,当前目录不可写则报错)
- 响应体 ≤ 8 KB:落盘后把完整 JSON 打印到 stdout
- 响应体 > 8 KB:落盘后 stdout 只输出摘要(顶层字段、常见计数如 `total`/`costToken`、最大列表字段的长度 + 前 3 条样本)
- 加 `--inline` 强制全量打印到 stdout(同样落盘)
- `delete` 接口后端无返回体,脚本会输出操作成功提示

## 使用指引

1. **识别意图**:从用户输入判断属于五个 action 中的哪一个(新增 / 改内容 / 仅改开关 / 删除 / 查列表)。
2. **构造调度**:把"每天/每周/每月/某天一次"翻译成 `execType` + `execPoint` + `execTime`,校验 `4`(不重复)的时间必须在未来。
3. **`update` 是全量更新**:会用传入的字段整体覆盖原任务(包括 `noticeList`),所以更新前应先用 `list` 拿到现有任务的完整字段,改动后再整体提交,避免丢字段。
4. **只改开关用 `update-status`**:启用/停用单个任务时优先用它,比 `update` 更轻量。注意状态必须真的发生变化(重复设同一状态后端会报错)。
5. **通知地址校验**:`noticeList` 为非必填,默认 `[]`(不通知)。若用户有配置通知渠道,钉钉/飞书 WebHook 有固定格式(见 `references/api.md`),构造前先核对,否则后端会拒绝。
6. **删除是批量**:`delete` 的 `ids` 是数组,单个删除也要包成 `["id1"]`。

### 示例

**1. 新增——每天 09:00 跑一个汇总任务,钉钉通知**
```json
{
  "title": "每日销售汇总",
  "promptContent": "汇总昨天的亚马逊美国站销售数据,输出 Top 10 商品",
  "taskStatus": true,
  "execType": 1,
  "execTime": "09:00",
  "noticeList": [
    {"noticeType": 2, "address": "https://oapi.dingtalk.com/robot/send?access_token=abc123def", "sign": ""}
  ]
}
```
`python scripts/task_scheduler.py create '<上面的 JSON>'`

**2. 新增——每周一三五 10:30 执行,飞书通知**
```json
{"title": "周报提醒", "promptContent": "生成本周竞品动态简报", "taskStatus": true, "execType": 2, "execPoint": "1,3,5", "execTime": "10:30", "noticeList": [{"noticeType": 3, "address": "https://open.feishu.cn/open-apis/bot/v2/hook/<YOUR_HOOK>", "sign": ""}]}
```

**3. 新增——2026-06-01 08:00 执行一次(不重复),钉钉通知**
```json
{"title": "618 预热分析", "promptContent": "分析 618 大促前的类目趋势", "taskStatus": true, "execType": 4, "execPoint": "2026-06-01", "execTime": "08:00", "noticeList": [{"noticeType": 2, "address": "https://oapi.dingtalk.com/robot/send?access_token=<YOUR_TOKEN>", "sign": ""}]}
```

**4. 更新——把某任务改为每月 1 号执行(全量字段,先 list 再改)**
```json
{"id": "task-12345", "title": "月度复盘", "promptContent": "生成上月经营复盘报告", "taskStatus": true, "execType": 3, "execPoint": "1", "execTime": "09:00", "noticeList": [{"noticeType": 3, "address": "https://open.feishu.cn/open-apis/bot/v2/hook/<YOUR_HOOK>", "sign": ""}]}
```
`python scripts/task_scheduler.py update '<上面的 JSON>'`

**5. 停用 / 启用某个任务**
```json
{"id": "task-12345", "taskStatus": false}
```
`python scripts/task_scheduler.py update-status '<上面的 JSON>'`

**6. 批量删除**
```json
{"ids": ["task-12345", "task-67890"]}
```
`python scripts/task_scheduler.py delete '<上面的 JSON>'`

**7. remind——5 分钟后飞书提醒去尿尿**
```json
{
  "delayMinutes": 5,
  "message": "请立即输出以下提醒内容,不要添加额外分析:\n⏰ 提醒时间到!该去尿尿了!",
  "title": "尿尿提醒",
  "feishuWebhook": "https://open.feishu.cn/open-apis/bot/v2/hook/d07890cf-5b29-4461-b8c5-9227ccd2fe5d"
}
```
`python scripts/task_scheduler.py remind '<上面的 JSON>'`

> 脚本自动计算"当前时刻 + 5 分钟"作为执行时间,无需手动填写 execPoint / execTime。

**8. 查询列表——筛选「生效中」+ 关键词 + 分页**
```json
{"taskStatus": 1, "keyword": "汇总", "page": 1, "pageSize": 20}
```
`python scripts/task_scheduler.py list '<上面的 JSON>'`

> 注意:`list` 入参的 `taskStatus` 是**整数**筛选值(`1`=生效中、`2`=已停用、`3`=已完结、不传=全部),与 `create/update` 里布尔型的 `taskStatus` 含义不同。

### 组合示例:用户没给 id 时,先 list 找到 id 再切换状态

`update-status` 必须传任务 `id`。但用户通常说的是"把**每日销售汇总**那个任务停掉",并不知道 id。这时先 `list` 按关键词查出来,从结果里取 `id`,再调 `update-status`。

**第 1 步——按标题关键词查(只查生效中的)**
```json
{"taskStatus": 1, "keyword": "每日销售汇总", "page": 1, "pageSize": 20}
```
`python scripts/task_scheduler.py list '<上面的 JSON>'`

从返回的 `items` 中定位目标任务,拿到它的 `id`(例如 `"task-12345"`):
- 命中**唯一**一条 → 直接用它的 id。
- 命中**多条** → 把候选(id、标题、当前状态、调度)列给用户确认是哪一个,不要擅自批量操作。
- **没命中** → 可能已停用,去掉 `taskStatus` 重查全部,或提示用户核对名称。

**第 2 步——用上一步拿到的 id 停用它**
```json
{"id": "task-12345", "taskStatus": false}
```
`python scripts/task_scheduler.py update-status '<上面的 JSON>'`

> 提示:第 2 步的 `taskStatus` 必须与当前状态不同(重复设同一状态后端会报"状态没有更新")。第 1 步用 `taskStatus:1` 过滤"生效中",能保证查回来的任务确实可被停用;反向(停用→启用)则用 `taskStatus:2` 过滤"已停用"。启用(false→true)时后端还会校验执行时间未过期。

## 展示规则

1. `list` 结果用表格展示:标题、任务内容摘要、状态(生效中/已停用/已完结)、调度(翻译成"每天 09:00"这类人话)、通知渠道、创建时间。
2. 时间戳字段(`createTime`/`lastUpdateTime`,单位 ms)转成可读日期。
3. `create`/`update`/`update-status` 成功后,回显任务 id、标题、新的调度与状态,让用户确认。
4. `delete` 成功后明确告知已删除的任务数量。

## 限制

- `promptContent` 最长 60000 字符。
- `execType=4`(不重复)的执行时间必须晚于当前时间。
- 通知地址(钉钉/飞书)必须符合固定格式,否则被拒。
- 不要传 `memberId`(后端按 token 注入)。
- `agentVersion` 默认 `2`,且更新时不可切换(只能在创建时决定)。

## 适用与不适用

**适用**:
- 让 Agent 周期性 / 定时自动执行某段提示词任务
- 管理(增删改查)用户已有的定时任务及其调度、通知

**不适用**:
- 立即执行一次性任务、即时问答 → 直接用对应数据/分析工具或主 Agent,不要建定时任务
- 查询任务的**执行记录/运行结果**(runStatus、失败原因等)→ 本 skill 不覆盖该接口

## 反馈

参见 `references/api.md` 中的 Feedback API。满足不符、不满、赞扬或改进点时自动上报。

Files in this skill

  • SKILL.md12.6 KB
  • _meta.json84 B
  • references/api.md11 KB
  • scripts/task_scheduler.py9 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…