← 返回 Skills 市场
ktech99

Async Queue

作者 ktech99 · GitHub ↗ · v1.0.6 · MIT-0
cross-platform ⚠ suspicious
359
总下载
1
收藏
1
当前安装
7
版本数
在 OpenClaw 中安装
/install async-queue
功能描述
Schedule delayed tasks between OpenClaw agents — set reminders, chain tasks, coordinate agents on a delay. File-backed, no infra needed. NOT for cron-style r...
使用说明 (SKILL.md)

Async Queue

A lightweight, file-backed task queue that fires delayed tasks to any OpenClaw agent at a scheduled time. Consists of four components:

Component What it does
daemon.js Polls queue.json every 30s, delivers due tasks via the queue-wake plugin
push.js CLI to enqueue a new task with a delay
queue-cli.js CLI to list pending tasks, cancel by id prefix, and view history
queue-wake plugin OpenClaw plugin that receives delivery from daemon, enqueues a system event, and calls requestHeartbeatNow for near-exact timing

Installation (first time, macOS)

bash "$(openclaw skill path async-queue)/scripts/install.sh"

This will:

  1. Copy daemon.js + push.js to ~/.openclaw/queue/
  2. Copy the queue-wake plugin to ~/.openclaw/extensions/queue-wake/
  3. Register the daemon under launchd (auto-starts on login, auto-restarts on crash)

Then restart the OpenClaw gateway to activate the plugin:

openclaw gateway restart

Push a task

node ~/.openclaw/queue/push.js --task "description" --delay \x3C10s|5m|2h|HH:MM|H:MMam/pm> [--to \x3CagentId>] [--then "next task text"]

Arguments:

  • --to — agent name (e.g. main). Can also be a full session key like agent:main:main. Optional; defaults to queue/config.json.defaultTo if set, else marcus.
  • --task — what the agent should do when this fires
  • --delay — how long from now: 10s, 5m, 2h, or absolute time: HH:MM (24h) / H:MMam (12h)
  • --then — optional chained task text to enqueue immediately after this task fires
  • --ttl — (optional) seconds before item expires if undelivered (default: 300)

Examples:

# Remind in 30 minutes
node ~/.openclaw/queue/push.js --to main --task "Follow up: did the user save that document?" --delay 30m

# Check deploy health in 5 minutes
node ~/.openclaw/queue/push.js --to main --task "Verify deploy is healthy — check HTTP status" --delay 5m

# Fire today at 6:30 PM (or tomorrow if already past)
node ~/.openclaw/queue/push.js --task "Ping me before dinner" --delay 6:30pm

# Tonight reminder
node ~/.openclaw/queue/push.js --to main --task "Ask user about the pending decision" --delay 2h

# Chain a follow-up immediately after the first task fires
node ~/.openclaw/queue/push.js --task "Run deploy checks" --delay 10m --then "Verify logs are clean"

When to use this skill

Use async-queue when:

  • User asks to be reminded about something in X minutes/hours
  • You spawn a sub-agent or background job and need to check back on it
  • A follow-up needs to happen after a delay (e.g. verify a deploy, nudge a pending action)
  • Any work that can't be completed this turn and needs to continue later

Don't use async-queue for:

  • Immediate actions → just do them
  • Recurring schedules → use openclaw cron
  • Tasks waiting on user input → message the user directly

Schema

{
  "id": "uuid",
  "to": "agentId",
  "task": "string — what to execute when this fires",
  "then": "string — optional chained task to enqueue after successful fire",
  "runAt": "ISO 8601 timestamp",
  "createdAt": "ISO 8601 timestamp",
  "ttl": 300
}

ttl: seconds the item may remain undelivered before being dropped (default: 300s). Increase for tasks scheduled many hours out if the daemon might miss a window.


Delivery flow

push.js → queue.json → daemon.js (polls 30s)
   → POST /api/queue-wake (queue-wake plugin)
      → enqueueSystemEvent([QUEUE:agentId] task)
      → requestHeartbeatNow(agentId)
         → agent wakes, sees task in context

Check queue state

cat ~/.openclaw/queue/queue.json         # pending items
node ~/.openclaw/queue/queue-cli.js list # pretty list
node ~/.openclaw/queue/queue-cli.js history # last 20 deliveries
node ~/.openclaw/queue/queue-cli.js cancel \x3CidPrefix>
tail -20 ~/.openclaw/queue/daemon.log    # delivery history

Daemon status (macOS)

launchctl list | grep queue-daemon       # running?

# Restart if needed:
launchctl unload  ~/Library/LaunchAgents/ai.openclaw.queue-daemon.plist
launchctl load    ~/Library/LaunchAgents/ai.openclaw.queue-daemon.plist

Files installed

Path Purpose
~/.openclaw/queue/daemon.js Polling daemon
~/.openclaw/queue/push.js Push CLI
~/.openclaw/queue/queue.json Queue state file
~/.openclaw/queue/daemon.log Delivery log
~/.openclaw/extensions/queue-wake/ OpenClaw plugin
~/Library/LaunchAgents/ai.openclaw.queue-daemon.plist launchd service

Protocol

See references/PROTOCOL.md for the full protocol: when to queue, rules, TTL guidance, and common task patterns.

安全使用建议
This package appears to implement a local delayed-task queue as described, but review a few items before installing: - Authentication & port assumptions: daemon.js POSTs to 127.0.0.1:18789 with no auth headers while the plugin route declares auth: "plugin". Confirm how your OpenClaw gateway exposes plugin HTTP routes and whether unauthenticated localhost POSTs are accepted. If your gateway requires tokens, the daemon will fail unless adapted. - Port binding is assumed (18789). Verify your OpenClaw instance listens on that port or update daemon.js accordingly. - Persistent daemon: running the provided install.sh will copy files into ~/.openclaw and register+load a launchd job that auto-starts on login and restarts on crash. Only run the install script if you accept a persistent process running under your user account. - Files & permissions: the queue file (queue.json), history, and logs live in your home directory. Inspect their contents and set restrictive file permissions if needed to prevent other local users from inserting tasks. - Default agent name: push.js falls back to a hard-coded default agent 'marcus' if no config is present. If you don't specify --to and don't set config.json, queued tasks may target that account; consider editing config.json or the code to set the desired default. - Review the plugin code: it enqueues system events and calls requestHeartbeatNow to wake agents — this is needed for the feature but is a capability you should be comfortable granting. Ensure only trusted local processes can write to the queue.json or call the plugin endpoint. If you want to proceed safely: (1) audit the files in the package, (2) run the install.sh inside a controlled user account (not root), (3) verify the plugin endpoint and its auth model on your OpenClaw gateway, and (4) consider changing the default agent and tightening filesystem permissions on ~/.openclaw/queue.
功能分析
Type: OpenClaw Skill Name: async-queue Version: 1.0.6 The async-queue skill provides a legitimate mechanism for scheduling delayed tasks between OpenClaw agents using a local file-backed queue. It implements persistence via a macOS launchd daemon (ai.openclaw.queue-daemon.plist) and a local HTTP plugin endpoint (/api/queue-wake), both of which are explicitly disclosed in SKILL.md and public.json. The implementation is transparent, uses only built-in Node.js modules (fs, path, http, crypto), and restricts network communication to 127.0.0.1, with no evidence of data exfiltration or unauthorized execution.
能力评估
Purpose & Capability
Name/description align with what the package installs: a file-backed queue, a daemon to poll queue.json, a push CLI, a queue-cli, and an OpenClaw plugin that wakes agents. The files present (daemon.js, push.js, plugin code) are consistent with the stated functionality.
Instruction Scope
The runtime instructions and code assume the daemon can POST to an OpenClaw plugin HTTP endpoint at 127.0.0.1:18789 with no authentication headers; the plugin declares route auth: "plugin". It's unclear whether the OpenClaw HTTP layer will accept unauthenticated local posts or if additional auth tokens are required. The daemon also hard-codes port 18789 and expects the plugin to be reachable there — this is an external assumption not enforced in the plugin code. Also push.js falls back to a hard-coded default agent name ('marcus') if no config is present; that default may cause tasks to be directed to an unexpected agent if a user doesn't supply --to or a config.
Install Mechanism
No remote downloads or installers — install.sh copies packaged files into the user's home (~/.openclaw), writes a launchd plist, and runs launchctl load. All code is included in the skill bundle, which is the lowest-risk install type short of being instruction-only. The script does start the daemon immediately via launchctl when run.
Credentials
The skill requests no environment variables, credentials, or external services. Files are written under the user's home (~/.openclaw/queue and ~/.openclaw/extensions/queue-wake). No unrelated secrets or system credentials are requested.
Persistence & Privilege
The install script installs a launchd job and loads it so the daemon runs persistently (RunAtLoad + KeepAlive). This is expected for a background queue, but installing a persistent daemon is a privileged change to the user's environment and should be done consciously. The skill is not force-included (always: false) and does not request elevated system-wide privileges beyond the user's own home directory and launchd entry.
如何使用
  1. 确保已安装 OpenClaw(本地或 Docker 部署)
  2. 在对话框中输入安装命令:/install async-queue
  3. 安装完成后,直接呼叫该 Skill 的名称或使用 /async-queue 触发
  4. 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
版本历史
v1.0.6
Fix: version sync between SKILL.md and package.json.
v1.0.5
Better description — clearer use cases, won't truncate in search. No code changes.
v1.0.4
Fix documentation inconsistency: clarified daemon.js uses http module (not execSync). Added openclaw minimum version requirement (2026.3.7).
v1.0.3
Remove hard-coded agent targets (jarvis/marcus), remove unused execSync import, fix documentation to match actual implementation (HTTP POST, not CLI invocation).
v1.0.2
Security fixes: removed hard-coded agent targets (now user-configurable via targets.json), added required binaries to metadata (node, launchctl, openclaw), clarified install is manual not automatic.
v1.0.1
Added security disclosure in SKILL.md and public.json — clarifies launchd daemon, execSync usage, and file paths. No functional changes.
v1.0.0
Initial release — file-backed async task queue for OpenClaw agents. Schedule delayed tasks, chain follow-ups, queue discipline pattern with hash reporting.
元数据
Slug async-queue
版本 1.0.6
许可证 MIT-0
累计安装 1
当前安装数 1
历史版本数 7
常见问题

Async Queue 是什么?

Schedule delayed tasks between OpenClaw agents — set reminders, chain tasks, coordinate agents on a delay. File-backed, no infra needed. NOT for cron-style r... 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 359 次。

如何安装 Async Queue?

在 OpenClaw 或 Claude Code 对话框中运行命令「/install async-queue」即可一键安装,无需额外配置。

Async Queue 是免费的吗?

是的,Async Queue 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。

Async Queue 支持哪些平台?

Async Queue 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。

谁开发了 Async Queue?

由 ktech99(@ktech99)开发并维护,当前版本 v1.0.6。

💬 留言讨论