返回顶部
t

task-runner任务运行器

>

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 2.1.0
安全检测
已通过
847
下载量
免费
免费
0
收藏
概述
安装方式
版本历史

task-runner

任务运行器技能

一个持久的、守护进程风格的任务队列。用户可以随时添加任务。调度器在每个心跳周期运行,检查队列并通过子代理执行待处理的工作。任务会累积、完成并被归档——队列本身永不关闭。



两种运行模式

该技能具有两种不同的模式,具有不同的触发条件和行为:

模式触发条件目的
接收模式包含任务意图的用户消息解析消息 → 将任务添加到队列 → 确认 → 立即运行调度器
调度器模式
接收模式之后(主要)· 心跳/定时任务(备用) | 读取队列 → 分发待处理任务 → 报告完成情况 |

两种模式都读取和写入同一个持久化队列文件



A1 — 触发条件

模式 1:接收模式(用户消息)

当用户消息匹配以下任一模式时,激活接收模式:

模式示例
明确添加任务添加任务、添加这些任务、任务:、新任务
委托
帮我做这个、帮我做这些、处理这些、你能做X吗 |
| 框架表述 | 我需要你、帮我、我需要、我希望你 |
| 列表框架 | 任务列表、我的任务、排队这些、处理这些 |
| 控制命令 | 跳过T-03、重试T-02、标记T-01完成、取消T-04 |
| 状态查询 | 显示任务、任务状态、队列里有什么、我有哪些待处理任务 |
| 复合请求 | 包含2个以上不同行动项的任何消息(项目符号、数字、还有、然后) |

以下情况不要激活接收模式:

  • - 纯单问题查询,一句话就能回答(现在几点了?)
  • 仅涉及日程安排、没有实际任务的请求(20分钟后提醒我)
  • 单个网络搜索请求(搜索X)
  • 心跳系统事件(那是调度器模式)

模式 2:调度器模式(接收模式后内联执行、心跳或定时任务)

在以下情况触发时激活调度器模式:

  • - 接收模式之后立即执行 — 在同一轮次中运行,就在任务入队之后(主要路径)
  • 心跳轮询期间检查HEARTBEAT.md(备用:捕获重试和完成情况)
  • 系统事件:TASKRUNNERDISPATCH: 检查队列并运行待处理任务(备用)
  • 为任务运行器注册的任何计划/定时任务触发(备用)



配置


变量位置默认值描述
TASKRUNNERDIRTOOLS.md~/.openclaw/tasks/队列文件和交付物的目录
TASKRUNNERMAX_CONCURRENT
TOOLS.md | 2 | 同时运行的最大任务数 |
| TASKRUNNERMAX_RETRIES | TOOLS.md 或环境变量 | 3 | 标记为阻塞前的最大重试次数 |
| TASKRUNNERARCHIVE_DAYS | TOOLS.md | 7 | 已完成/已阻塞任务归档前的天数 |

如何配置 — 添加到 TOOLS.md:

任务运行器

TASKRUNNERDIR=~/.openclaw/tasks/ TASKRUNNERMAX_CONCURRENT=2 TASKRUNNERMAX_RETRIES=3 TASKRUNNERARCHIVE_DAYS=7

队列文件路径: ${TASKRUNNERDIR}/task-queue.json
(单个持久化文件,不按日期命名——随时间累积所有任务)



A3 — 输出


输出路径/通道描述
队列文件${TASKRUNNERDIR}/task-queue.json单个持久化队列;所有任务
每个任务的完成消息
聊天通知 | 任务完成时立即发送(完成或阻塞) |
| 交付物文件 | 任务特定路径 | 任务产生的文件(如适用) |
| 接收模式确认 | 聊天 | 将任务添加到队列后发送 |


模式 1:接收模式 — 逐步说明

目标: 将用户消息转换为结构化的任务对象,追加到队列,确认。

步骤 0 — 首次运行设置(首次使用时自动配置)

每次调用接收模式时,在执行其他任何操作之前运行此检查:

检查 ${TASKRUNNERDIR}/task-queue.json 是否存在
如果文件不存在:
→ 这是首次运行。在继续之前静默自动配置所有内容。

[1] 创建目录:
执行: mkdir -p ${TASKRUNNERDIR}

[2] 初始化队列文件:
写入 ${TASKRUNNERDIR}/task-queue.json 使用默认结构:
{ lastId: null, tasks: [], archivedCount: 0 }

[3] 注册心跳条目:
读取 HEARTBEAT.md(如果缺失则创建)
如果 任务运行器调度器 尚未在文件中:
追加以下块(前面加一个空行):

## 任务运行器调度器
每次心跳:检查 ${TASKRUNNERDIR}/task-queue.json
- 如果存在待处理或运行中的任务 → 运行调度器模式(任务运行器技能)
- 如果没有待处理任务 → HEARTBEAT_OK(跳过)

写入更新后的 HEARTBEAT.md

[4] 注册备用定时任务:
调用 cron 工具,参数:
action: add
job:
name: 任务运行器调度器
schedule: { kind: every, everyMs: 900000 }
payload: { kind: systemEvent, text: TASKRUNNERDISPATCH: 检查队列并运行待处理任务 }
sessionTarget: main
enabled: true

[5] 通知用户:
⚙️ 任务运行器已初始化。
心跳调度器已在 HEARTBEAT.md 中注册。
备用定时任务已注册(每15分钟运行一次)。
您的任务将自动执行。

→ 然后继续执行下面的正常接收模式步骤。

如果文件已存在:
→ 完全跳过步骤 0。直接进入步骤 1。

幂等性规则: 步骤 0 仅在真正的首次运行时触发(队列文件不存在)。
它永远不会重复注册心跳条目或创建重复的定时任务。



步骤 1 — 加载队列

读取 ${TASKRUNNERDIR}/task-queue.json
如果文件不存在:
使用默认结构初始化(参见 references/queue-schema.md)
设置 lastId = null

步骤 2 — 从消息中解析任务

使用以下线索将用户消息拆分为单个任务:

  • - 编号列表(1.、2.、3.)
  • 项目符号列表(-、*、•)
  • 明确分隔符(首先、还有、然后、接下来)
  • 包含多个祈使句的复合句
  • 单个任务:整条消息就是一个任务

步骤 3 — 分配 ID

从队列文件中的 lastId 继续:

  • - 如果 lastId = T-05,下一个任务是 T-06
  • 如果 lastId = null,从 T-01 开始
  • 格式:T-NN(零填充,最少2位;当 N > 99 时扩展为3位)

步骤 4 — 构建任务对象

为每个解析出的任务创建一个 JSON 对象(模式见 references/queue-schema.md):

  • - 设置 id、description、goal、status = pending、added_at
  • 设置 retries = 0、maxRetries 来自配置
  • 执行字段留空

步骤 5 — 追加到队列并保存

将新的任务对象追加到 queue.tasks[]
更新 queue.lastId 为最后分配的 ID
将更新后的队列文件写入磁盘

步骤 6 — 向用户确认

已添加 T-06:[描述]。现在开始...

对于多个任务:

📋 已将 3 个任务添加到队列:
• T-06:[描述]
• T-07:[描述]
• T-08:[描述]
现在启动调度器...

然后立即在同一轮次中运行调度器模式(下面的步骤 1-5)。
不要退出并等待下一个心跳。任务必须立即开始执行。
心跳/定时任务调度器是重试和完成检查的备用方案——不是主要的执行路径。

步骤 7 — 处理控制命令

| 命令 | 操作 |
|---------

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 autonomous-task-runner-1776419952 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 autonomous-task-runner-1776419952 技能

通过命令行安装

skillhub install autonomous-task-runner-1776419952

下载

⬇ 下载 task-runner v2.1.0(免费)

文件大小: 27.22 KB | 发布时间: 2026-4-17 19:57

v2.1.0 最新 2026-4-17 19:57
INTAKE now immediately triggers DISPATCHER in the same turn. Tasks start executing the moment they are queued. Heartbeat/cron is backup only.

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部