{
  "schemaVersion": "1.0",
  "item": {
    "slug": "long-task-monitor",
    "name": "长任务监控方案。实现 Worker-Monitor 架构，Monitor 通过 hook-logger 日志监控 Worker 状态，每轮 10 分钟通过 Announce 汇报。采用主会话轮询机制（因子代理 sessions_send 限制）。推荐 OpenClaw 2.21+。触发词：长任务、监控任务、任务监控",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/scotthuang/long-task-monitor",
    "canonicalUrl": "https://clawhub.ai/scotthuang/long-task-monitor",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/long-task-monitor",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=long-task-monitor",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "_meta.json",
      "CHANGELOG.md",
      "long-task-monitor-plan.md",
      "long-task.js",
      "monitor-prompt.txt",
      "SKILL.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-05-07T17:22:31.273Z",
      "expiresAt": "2026-05-14T17:22:31.273Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
        "contentDisposition": "attachment; filename=\"afrexai-annual-report-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/long-task-monitor"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/long-task-monitor",
    "agentPageUrl": "https://openagent3.xyz/skills/long-task-monitor/agent",
    "manifestUrl": "https://openagent3.xyz/skills/long-task-monitor/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/long-task-monitor/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "功能",
        "body": "实现长任务监控方案（V2）：\n\n创建 Worker 执行长任务\n创建 Monitor 监控 Worker 状态（每轮 10 分钟）\n主会话轮询处理 Monitor 汇报\n任务完成时自动清理 Worker/Monitor sessions"
      },
      {
        "title": "English Description",
        "body": "Long-running task monitoring solution (V2). Implements Worker-Monitor architecture: Monitor tracks Worker status via hook-logger logs, reports to main session every 10 minutes via Announce. Uses main session polling mechanism due to subagent sessions_send limitation. Recommended for OpenClaw v2.21+.\n\nNote: This skill is primarily designed for Chinese users, but the monitor/worker mechanism can be implemented independently by referring to long-task-monitor-plan.md in the skill folder.\n\nTrigger: \"长任务\", \"监控任务\", \"任务监控\""
      },
      {
        "title": "1. 安装 hook-logger 插件",
        "body": "本方案依赖 hook-logger 插件读取 Worker 状态，必须先安装：\n\n# 安装 hook-logger 插件\nopenclaw plugins install @scotthuang/hook-logger\n\n# 或手动安装\ncd ~/.openclaw/extensions/hook-logger\nnpm install\n\n注意：确保 hook-logger 已更新到支持 sessionKey 记录的版本（用于过滤特定 Worker 的日志）。"
      },
      {
        "title": "2. 无需额外权限配置",
        "body": "Monitor → 主会话：Announce（自动）\n主会话 → Worker：sessions_send（parent→child 默认允许）"
      },
      {
        "title": "启动长任务流程",
        "body": "# 1. 创建任务\nnode ~/.openclaw/workspace/skills/long-task-monitor/long-task.js start \"任务描述\" \"worker命令\"\n\n# 2. 启动 Worker（获取 session key 后）\nsessions_spawn(task=\"...\", label=\"worker-xxx\", cleanup=\"keep\")\n\n# 3. 更新 Worker Session Key\nnode long-task.js update <task_id> worker \"<sessionKey>\"\n\n# 4. 启动 Monitor\nsessions_spawn(task=\"...\", label=\"monitor-xxx\", cleanup=\"delete\")\n\n# 5. 更新 Monitor Session Key\nnode long-task.js update <task_id> monitor \"<sessionKey>\"\n\n# 6. 任务完成时手动清理\nnode long-task.js complete <task_id> \"结果描述\""
      },
      {
        "title": "快捷命令",
        "body": "# 创建任务\nnode long-task.js start \"描述\" \"worker任务\"\n\n# 更新 Worker Session Key\nnode long-task.js update <task_id> worker \"<sessionKey>\"\n\n# 更新 Monitor Session Key\nnode long-task.js update <task_id> monitor \"<sessionKey>\"\n\n# 生成 Worker 启动命令\nnode long-task.js worker-command <task_id> \"worker任务\"\n\n# 生成 Monitor 启动命令\nnode long-task.js monitor-command <task_id> <worker_session_key> 1\n\n# 标记任务完成并清理 sessions\nnode long-task.js complete <task_id> \"结果描述\"\n\n# 查看任务状态\nnode long-task.js status"
      },
      {
        "title": "任务文件夹结构",
        "body": "~/.openclaw/workspace/long-tasks/<task-id>/\n├── task.json             # 任务信息（包含 workerSessionKey, monitorSessionKey）\n├── status.json           # 最终状态（完成后）\n└── monitor-rounds/       # Monitor 轮次记录\n    ├── current-round.json # 当前轮次记录\n    └── round-1.json      # 第一轮记录"
      },
      {
        "title": "task.json 字段说明",
        "body": "{\n  \"taskId\": \"task-xxx\",\n  \"description\": \"任务描述\",\n  \"workerTask\": \"pip install torch\",\n  \"workerSessionKey\": \"agent:main:subagent:xxx\",\n  \"monitorSessionKey\": \"agent:main:subagent:yyy\",\n  \"createdAt\": \"2026-02-22T10:00:00Z\",\n  \"status\": \"running\",\n  \"monitorRound\": 1,\n  \"workerRestartCount\": 0\n}"
      },
      {
        "title": "Monitor 行为",
        "body": "定期记录 - 写入 monitor-rounds/current-round.json（注：实际取决于执行频率）\n10 分钟到 - Announce 返回结果\n检测完成 - 发现 Worker agent_end 事件时返回\n检测挂掉 - 超过 5 分钟无日志时返回"
      },
      {
        "title": "轮询逻辑",
        "body": "轮次行为1-5自动继续下一轮监控6+询问用户是否继续"
      },
      {
        "title": "1. 任务完成时需要手动清理",
        "body": "当前版本需要手动执行 complete 命令清理 sessions：\n\nnode long-task.js complete <task_id> \"结果描述\""
      },
      {
        "title": "2. Monitor 轮次日志",
        "body": "Monitor 尝试每分钟记录状态，但实际频率取决于 Worker 执行速度。如果 Worker 执行很快，可能只记录 1-2 次。"
      },
      {
        "title": "3. Session Key 更新",
        "body": "spawn Worker/Monitor 后，必须手动更新 task.json：\n\n获取 Worker Session Key → 更新\n获取 Monitor Session Key → 更新"
      },
      {
        "title": "4. 任务完成判断",
        "body": "Monitor 会检测 agent_end 事件判断 Worker 是否完成\n如果 Worker 已完成，Monitor 会返回\"已完成\"状态\n主会话收到后需要手动执行 complete 清理"
      },
      {
        "title": "已知限制",
        "body": "complete 命令有 bug - 当前版本可能报 ReferenceError，需手动清理 sessions\n无法自动检测 Worker 完成 - 需要等待 Monitor 下一轮汇报\nSession Key 需要手动更新 - 无法自动获取"
      },
      {
        "title": "发布更新",
        "body": "如果修改了 skill：\n\ncd ~/.openclaw/workspace/skills/long-task-monitor\n# 未来如有 npm 包需求"
      },
      {
        "title": "⚠️ 安全说明",
        "body": "本 skill 已做安全加固：\n\n使用 execFile + 参数数组防止命令注入\n所有用户输入经过过滤（只允许安全字符，包含 : 用于 session keys）\n依赖 hook-logger 插件，请确保来源可信"
      },
      {
        "title": "⚠️ 已知限制",
        "body": "Monitor Agent 需要使用 exec 工具执行 shell 命令（写入监控日志），这是架构固有限制\nSession Key 必须包含 : 字符（如 agent:main:subagent:xxx），已修复过滤函数允许此字符"
      }
    ],
    "body": "注意：本 Skill 依赖 hook-logger 插件读取 Worker 状态，必须先安装。\n\n当用户说\"长任务\"、\"监控任务\"、\"执行训练\"等需要长时间运行任务时使用此技能。\n\n功能\n\n实现长任务监控方案（V2）：\n\n创建 Worker 执行长任务\n创建 Monitor 监控 Worker 状态（每轮 10 分钟）\n主会话轮询处理 Monitor 汇报\n任务完成时自动清理 Worker/Monitor sessions\nEnglish Description\n\nLong-running task monitoring solution (V2). Implements Worker-Monitor architecture: Monitor tracks Worker status via hook-logger logs, reports to main session every 10 minutes via Announce. Uses main session polling mechanism due to subagent sessions_send limitation. Recommended for OpenClaw v2.21+.\n\nNote: This skill is primarily designed for Chinese users, but the monitor/worker mechanism can be implemented independently by referring to long-task-monitor-plan.md in the skill folder.\n\nTrigger: \"长任务\", \"监控任务\", \"任务监控\"\n\n使用前提\n1. 安装 hook-logger 插件\n\n本方案依赖 hook-logger 插件读取 Worker 状态，必须先安装：\n\n# 安装 hook-logger 插件\nopenclaw plugins install @scotthuang/hook-logger\n\n# 或手动安装\ncd ~/.openclaw/extensions/hook-logger\nnpm install\n\n\n注意：确保 hook-logger 已更新到支持 sessionKey 记录的版本（用于过滤特定 Worker 的日志）。\n\n2. 无需额外权限配置\nMonitor → 主会话：Announce（自动）\n主会话 → Worker：sessions_send（parent→child 默认允许）\n使用方式\n启动长任务流程\n# 1. 创建任务\nnode ~/.openclaw/workspace/skills/long-task-monitor/long-task.js start \"任务描述\" \"worker命令\"\n\n# 2. 启动 Worker（获取 session key 后）\nsessions_spawn(task=\"...\", label=\"worker-xxx\", cleanup=\"keep\")\n\n# 3. 更新 Worker Session Key\nnode long-task.js update <task_id> worker \"<sessionKey>\"\n\n# 4. 启动 Monitor\nsessions_spawn(task=\"...\", label=\"monitor-xxx\", cleanup=\"delete\")\n\n# 5. 更新 Monitor Session Key\nnode long-task.js update <task_id> monitor \"<sessionKey>\"\n\n# 6. 任务完成时手动清理\nnode long-task.js complete <task_id> \"结果描述\"\n\n快捷命令\n# 创建任务\nnode long-task.js start \"描述\" \"worker任务\"\n\n# 更新 Worker Session Key\nnode long-task.js update <task_id> worker \"<sessionKey>\"\n\n# 更新 Monitor Session Key\nnode long-task.js update <task_id> monitor \"<sessionKey>\"\n\n# 生成 Worker 启动命令\nnode long-task.js worker-command <task_id> \"worker任务\"\n\n# 生成 Monitor 启动命令\nnode long-task.js monitor-command <task_id> <worker_session_key> 1\n\n# 标记任务完成并清理 sessions\nnode long-task.js complete <task_id> \"结果描述\"\n\n# 查看任务状态\nnode long-task.js status\n\n任务文件夹结构\n~/.openclaw/workspace/long-tasks/<task-id>/\n├── task.json             # 任务信息（包含 workerSessionKey, monitorSessionKey）\n├── status.json           # 最终状态（完成后）\n└── monitor-rounds/       # Monitor 轮次记录\n    ├── current-round.json # 当前轮次记录\n    └── round-1.json      # 第一轮记录\n\ntask.json 字段说明\n{\n  \"taskId\": \"task-xxx\",\n  \"description\": \"任务描述\",\n  \"workerTask\": \"pip install torch\",\n  \"workerSessionKey\": \"agent:main:subagent:xxx\",\n  \"monitorSessionKey\": \"agent:main:subagent:yyy\",\n  \"createdAt\": \"2026-02-22T10:00:00Z\",\n  \"status\": \"running\",\n  \"monitorRound\": 1,\n  \"workerRestartCount\": 0\n}\n\nMonitor 行为\n定期记录 - 写入 monitor-rounds/current-round.json（注：实际取决于执行频率）\n10 分钟到 - Announce 返回结果\n检测完成 - 发现 Worker agent_end 事件时返回\n检测挂掉 - 超过 5 分钟无日志时返回\n轮询逻辑\n轮次\t行为\n1-5\t自动继续下一轮监控\n6+\t询问用户是否继续\n注意事项\n1. 任务完成时需要手动清理\n\n当前版本需要手动执行 complete 命令清理 sessions：\n\nnode long-task.js complete <task_id> \"结果描述\"\n\n2. Monitor 轮次日志\n\nMonitor 尝试每分钟记录状态，但实际频率取决于 Worker 执行速度。如果 Worker 执行很快，可能只记录 1-2 次。\n\n3. Session Key 更新\n\nspawn Worker/Monitor 后，必须手动更新 task.json：\n\n获取 Worker Session Key → 更新\n获取 Monitor Session Key → 更新\n4. 任务完成判断\nMonitor 会检测 agent_end 事件判断 Worker 是否完成\n如果 Worker 已完成，Monitor 会返回\"已完成\"状态\n主会话收到后需要手动执行 complete 清理\n已知限制\ncomplete 命令有 bug - 当前版本可能报 ReferenceError，需手动清理 sessions\n无法自动检测 Worker 完成 - 需要等待 Monitor 下一轮汇报\nSession Key 需要手动更新 - 无法自动获取\n发布更新\n\n如果修改了 skill：\n\ncd ~/.openclaw/workspace/skills/long-task-monitor\n# 未来如有 npm 包需求\n\n⚠️ 安全说明\n\n本 skill 已做安全加固：\n\n使用 execFile + 参数数组防止命令注入\n所有用户输入经过过滤（只允许安全字符，包含 : 用于 session keys）\n依赖 hook-logger 插件，请确保来源可信\n⚠️ 已知限制\nMonitor Agent 需要使用 exec 工具执行 shell 命令（写入监控日志），这是架构固有限制\nSession Key 必须包含 : 字符（如 agent:main:subagent:xxx），已修复过滤函数允许此字符"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/scotthuang/long-task-monitor",
    "publisherUrl": "https://clawhub.ai/scotthuang/long-task-monitor",
    "owner": "scotthuang",
    "version": "1.0.3",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/long-task-monitor",
    "downloadUrl": "https://openagent3.xyz/downloads/long-task-monitor",
    "agentUrl": "https://openagent3.xyz/skills/long-task-monitor/agent",
    "manifestUrl": "https://openagent3.xyz/skills/long-task-monitor/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/long-task-monitor/agent.md"
  }
}