{"skill":{"slug":"long-task-handler-v2","displayName":"long-task-handler-v2","summary":"升级版长任务处理技能。整合 frankieway/long-task-handler 和 chrislawyeryounger-spec/long-task-checkin 的优点。 触发场景：编译、部署、训练、数据处理、搜索爬虫、多步骤写作、调用外部API等预计超过60秒的任务。","description":"---\nname: long-task-handler-v2\ndescription: |\n  升级版长任务处理技能。整合 frankieway/long-task-handler 和 chrislawyeryounger-spec/long-task-checkin 的优点。\n  触发场景：编译、部署、训练、数据处理、搜索爬虫、多步骤写作、调用外部API等预计超过60秒的任务。\n---\n\n# Long Task Handler V2 - 升级版长任务处理技能\n\n## 核心升级点\n\n- **双阶段反馈机制**：任务开始前预判 + 执行中定期汇报\n- **智能时间预估**：结合任务类型和数据量给出合理估算\n- **更细致的进度量化**：明确当前步骤/总步骤\n- **优雅的错误处理**：问题主动报告，不假装没事\n\n## 触发条件\n\n满足以下任一条件时激活：\n- 预计耗时 > 60 秒的任务\n- 用户明确要求\"后台运行\"、\"别等我\"\n- 包含已知慢命令：ffmpeg, docker, webpack, tsc, npm build, git push 等\n- 数据量 > 1GB 或文件数 > 100\n- 编译/部署/训练/迁移场景\n\n## 执行流程\n\n### Phase 1: 任务预判（收到任务 5 秒内）\n\n```javascript\n// 任务评估\nfunction assessTask(command, context) {\n  const indicators = {\n    duration: estimateBasedOnCommand(command),\n    background: /--timeout|-t|nohup|background/.test(command),\n    isLongTask: /compile|build|deploy|train|migration|export|process/i.test(command)\n  };\n  \n  return {\n    estimatedMinutes: indicators.duration,\n    shouldBackground: indicators.duration > 1 || indicators.background,\n    notifyInterval: indicators.duration > 5 ? 120 : 60  // >5分钟每2分钟，否则每1分钟\n  };\n}\n\n// 立即反馈格式\nconst confirmTemplate = `🫡 收到！\n\n任务：{taskName}\n预计耗时：{X-Y} 分钟\n通知方式：每 {interval} 秒报告进展\n\n你可以继续问我其他问题，不用等这个任务完成~`;\n```\n\n### Phase 2: 执行中反馈（每 2 分钟）\n\n```javascript\n// 进度汇报格式（严格遵守）\nconst progressTemplate = `📋 进度更新（已运行约 {seconds} 秒）\n\n✅ 当前状态：{正在做什么}\n📍 进度：{current}/{total} - {percentage}%\n⏱ 预计还需：{估算时间}\n\n[继续执行...]`;\n\n// 监控循环\nasync function monitorTask(sessionId, options) {\n  const { pollIntervalMs = 120000, maxSilentMs = 300000 } = options;\n  let lastOutput = '';\n  let silentSince = Date.now();\n  \n  setInterval(async () => {\n    const result = await process({ action: 'poll', sessionId });\n    \n    // 有新输出时记录\n    if (result.output !== lastOutput) {\n      silentSince = Date.now();\n      lastOutput = result.output;\n    }\n    \n    // 每2分钟强制报告（即使无新输出）\n    await sendProgressReport(result);\n    \n    // 静默超过5分钟发送警告\n    if (Date.now() - silentSince > maxSilentMs) {\n      await message({ message: `⚠️ 任务已静默运行 5 分钟，仍在进行中...` });\n      silentSince = Date.now();\n    }\n    \n    // 检查完成\n    if (result.exitCode !== null) {\n      await notifyCompletion(result);\n    }\n  }, pollIntervalMs);\n}\n```\n\n### Phase 3: 完成通知\n\n```javascript\nconst completionTemplate = `{status} **任务完成!**\n\n耗时：{duration}\n退出码：{exitCode}\n{message}`;\n\n// status: ✅ 成功 / ❌ 失败 / ⏰ 超时\n```\n\n## 任务分级处理\n\n| 级别 | 预估时间 | 处理方式 | 反馈频率 |\n|------|---------|---------|---------|\n| 短任务 | <30s | 直接执行 | 无需汇报 |\n| 中任务 | 30s-2min | 后台执行 | 无需汇报（完成后通知） |\n| 长任务 | 2-10min | 后台执行 | 每2分钟汇报进度 |\n| 超长任务 | >10min | 子代理隔离 | 每2分钟汇报 + 完成通知 |\n\n## 智能预判规则\n\n```javascript\n// 编译类\nif (/npm build|npm run build|gradle build|mvn compile/i) \n  → 预估 3-10 分钟，标记为长任务\n\n// 部署类\nif (/docker build|kubectl deploy|terraform apply/i) \n  → 预估 5-15 分钟，标记为超长任务\n\n// 训练类\nif (/train|fine-tune|model.fit|torchrun/i) \n  → 预估 30分钟-数小时，标记为超长任务，使用子代理\n\n// 数据处理\nif (/process.*data|migration|export.*csv|backup/i) \n  → 预估时间 = 数据量/处理速度，标记为长任务\n\n// 搜索爬虫\nif (/crawl|scrape|search.*multiple|fetch.*all/i) \n  → 预估时间 = 目标数 × 平均响应时间，标记为长任务\n```\n\n## 进度量化标准\n\n```javascript\n// ✅ 当前状态：通俗说明在做什么\n// 好：正在搜索8个平台的热榜信息\n// 差：正在执行web_search工具\n\n// 📍 进度：必须量化\n// 好：已完成5/8个平台 (62.5%)\n// 好：第3步，共5步 (60%)\n// 好：已处理230/500条数据 (46%)\n\n// ⏱ 预计还需：保守估算\n// 好：约2-3分钟\n// 好：约1分钟\n// 好：不确定，等待下一个平台响应\n```\n\n## 错误处理升级\n\n```javascript\n// 遇到问题主动报告，不假装没事\nasync function handleTaskIssue(sessionId, error) {\n  const issueTypes = {\n    RATE_LIMIT: '⚠️ 遇到限流，等待恢复...',\n    TIMEOUT: '⏰ 任务响应超时，正在重试...',\n    NETWORK: '🌐 网络波动，任务继续执行中...',\n    MEMORY: '💾 内存使用较高，优化处理中...'\n  };\n  \n  await message({ \n    message: `📋 进度更新（任务遇到小问题）\n\n✅ 当前状态：${issueTypes[error.type]}\n📍 进度：${error.progress}\n⏱ 预计还需：等待恢复后约 X 分钟\n\n[任务自动恢复中...]` \n  });\n}\n```\n\n## 配置参数\n\n```yaml\nskills:\n  long-task-handler-v2:\n    enabled: true\n    defaultTimeoutSeconds: 3600\n    progressReportInterval: 120  # 每2分钟\n    silentWarningThreshold: 300  # 5分钟静默警告\n    maxConcurrentLongTasks: 3\n    notifyOnExit: true\n    autoArchive: true\n    archiveAfterMinutes: 60\n```\n\n## 激活检查清单\n\n收到任务时快速判断（3个✅激活）：\n\n- [ ] 任务涉及编译/部署/迁移/训练？\n- [ ] 数据量 > 1GB 或文件数 > 100？\n- [ ] 包含慢命令（docker, ffmpeg, webpack, tsc）？\n- [ ] 用户要求\"后台运行\"、\"慢慢跑\"？\n- [ ] 预计耗时 > 2 分钟？\n\n## 最佳实践\n\n### ✅ 推荐\n\n1. **5秒内预判**：收到任务立即评估并反馈\n2. **保守估算**：时间预估宁可多说不少说\n3. **量化进度**：必须包含 \"X/Y\" 格式的进度\n4. **通俗语言**：说\"搜索8个平台\"而不是\"执行web_search\"\n5. **问题透明**：遇到限流/错误主动报告\n\n### ❌ 避免\n\n1. 沉默运行 - 超过2分钟无反馈\n2. 预估乐观 - 说\"1分钟\"结果跑了10分钟\n3. 技术术语 - 用户不需要知道你在调用什么工具\n4. 假装没事 - 出了问题要主动说\n\n## 技能元数据\n\n- 名称: Long Task Handler V2\n- 版本: 2.0.0\n- 作者: 乌索普（整合 frankieway + chrislawyeryounger-spec）\n- 创建日期: 2026-05-05\n- 依赖: exec, process, message, sessions_spawn","topics":["数据处理","部署"],"tags":{"latest":"1.0.0"},"stats":{"comments":0,"downloads":368,"installsAllTime":14,"installsCurrent":0,"stars":0,"versions":1},"createdAt":1777921235036,"updatedAt":1778492846193},"latestVersion":{"version":"1.0.0","createdAt":1777921235036,"changelog":"Long Task Handler V2 – Enhanced long task management with smarter feedback and error transparency.\n\n- Introduces dual-phase feedback: quick pre-task estimation and regular progress updates during execution\n- Adds intelligent time estimation based on task type and data volume\n- Provides clear, quantifiable progress metrics (e.g., step X/Y, percentage complete)\n- Upgrades error handling: proactively reports problems with status, notifies on long silence\n- Activates automatically for compile, deploy, training, large data tasks, or on user request\n- Configures reporting intervals, auto-archiving, and concurrent task limits for better control","license":"MIT-0"},"metadata":null,"owner":{"handle":"chrislawyeryounger-spec","userId":"s171y9nng0ccz8bxqcdtv2n6s184b9dc","displayName":"chrislawyeryounger-spec","image":"https://avatars.githubusercontent.com/u/274015848?v=4"},"moderation":null}