任务保护
task-protection
by alfredming-2026
Comprehensive task lifecycle management with automatic tracking, failure analysis, and completion feedback. Use when executing recurring system tasks (backups, health checks, news delivery), critical operations (config changes, data sync, deployments), external interactions (email sending, message notifications, API calls), user-delegated one-time tasks, or long-running operations over 1 minute. Provides 9 tool functions, 8 failure type analysis, progress tracking, and automated reporting.
安装
claude skill add --url github.com/openclaw/skills/tree/main/skills/alfredming-2026/task-protection文档
Task Protection - 任务闭环管理机制
核心原则:所有重要任务必须有记忆、追踪、反馈、故障分析机制 —— 闭环管理
🚀 快速开始
基础用法(脚本中)
#!/bin/bash
source /path/to/task-utils.sh
# 1. 初始化任务
TASK_ID="my_task_$(date +%Y%m%d_%H%M%S)"
task_init "$TASK_ID" "任务名称" "任务描述"
# 2. 开始执行
task_start "$TASK_ID"
# 3. 记录过程
task_log "$TASK_ID" "INFO" "正在执行..."
# 4. 完成任务
task_complete "$TASK_ID" "执行成功"
# 或失败时
task_fail "$TASK_ID" "错误信息" "错误类型"
AI 直接执行的任务
AI 在回复中说明并创建状态文件:
📋 任务登记:
- ID: task_20260314_0948_write_article
- 名称:撰写文章
- 状态:执行中
✅ 任务完成!
📋 详情:
- 完成时间:09:48
- 耗时:45 秒
- 状态:成功
📄 状态文件:memory/tasks/task_20260314_0948_write_article.json
📁 文件结构
task-protection/
├── SKILL.md (本文件)
├── scripts/
│ ├── task-utils.sh # 核心工具函数库(9 个函数)
│ ├── ai-task-register.sh # AI 任务自动登记
│ ├── daily-news.sh # 示例:新闻推送
│ ├── system-health-check.sh # 示例:健康检查
│ ├── check-tasks.sh # 示例:任务扫描
│ └── weekly-task-report.sh # 周报统计
├── memory/
│ ├── task-registry.json # 任务注册表
│ └── tasks/ # 任务状态文件目录
├── logs/
│ └── tasks/ # 任务日志目录
└── docs/
├── QUICKSTART.md # 快速上手指南
├── task-trigger-criteria.md # 触发标准
└── ai-task-registration.md # AI 登记指南
🎯 何时使用
✅ 需要完整闭环的任务(5 类)
- 周期性任务 —— 新闻推送、健康检查、备份、定时同步
- 关键操作 —— 配置修改、数据同步、系统升级、服务重启
- 对外交互 —— 邮件发送、消息推送、API 调用、文件上传
- 用户委托 —— 用户直接交代的任务(写文章、分析文件等)
- 长时间运行 —— 执行时间 > 1 分钟的任务
⚠️ 可简化处理的任务(3 类)
- 简单查询 —— 只读操作,无副作用(读取文件、查看状态)
- 即时对话 —— 纯聊天、问答
- 探索性工作 —— 研究性、尝试性任务
🛠️ 核心工具函数(9 个)
1. task_init - 初始化任务
task_init "task_001" "发送邮件" "向团队发送周报"
参数:
task_id- 任务 ID(建议格式:类型_YYYYMMDD_HHMMSS_描述)task_name- 任务名称task_description- 任务描述(可选)
输出:
- 创建状态文件
memory/tasks/{task_id}.json - 记录初始化日志
2. task_start - 开始执行
task_start "task_001"
功能:
- 更新状态为
running - 记录开始时间
- 添加"执行"阶段
3. task_log - 记录日志
task_log "task_001" "INFO" "邮件发送中..."
task_log "task_001" "WARN" "网络延迟"
task_log "task_001" "ERROR" "发送失败"
日志级别:
INFO- 正常进度WARN- 可恢复问题ERROR- 失败/异常DEBUG- 调试信息
4. task_stage - 更新阶段
task_stage "task_001" "准备内容" "running"
task_stage "task_001" "准备内容" "done"
task_stage "task_001" "验证结果" "warning"
阶段状态:
running- 进行中done- 完成failed- 失败warning- 警告
5. task_complete - 完成任务
task_complete "task_001" "邮件已发送,收件人:team@company.com"
功能:
- 更新状态为
success - 记录完成时间和耗时
- 保存结果信息
6. task_fail - 失败处理
task_fail "task_001" "发送超时" "timeout"
故障类型(8 类):
command_not_found- 命令不存在authentication_failed- 认证失败network_error- 网络错误timeout- 执行超时resource_not_found- 资源不存在permission_denied- 权限不足validation_error- 验证失败unknown_error- 未知错误
功能:
- 更新状态为
failed - 自动分析故障原因
- 提供修复建议
- 记录错误详情
7. task_retry - 重试任务
task_retry "task_001" 3 60 # 最多 3 次,间隔 60 秒
参数:
task_id- 任务 IDmax_retries- 最大重试次数(默认 3)interval- 重试间隔秒数(默认 60)
退避策略:
linear- 线性退避(60s, 60s, 60s)exponential- 指数退避(30s, 60s, 120s)fixed- 固定间隔
8. task_status - 查询状态
task_status "task_001"
输出:JSON 格式的任务状态
9. task_list - 列出任务
task_list
输出:所有已登记任务列表
📊 任务状态文件结构
{
"taskId": "task_20260314_0948_example",
"name": "任务名称",
"description": "任务描述",
"status": "success|failed|running|pending",
"stages": [
{"name": "准备", "status": "done", "timestamp": "..."},
{"name": "执行", "status": "done", "timestamp": "..."}
],
"logs": ["[2026-03-14 09:48:00] [INFO] 任务初始化"],
"errors": [],
"result": "任务完成",
"duration": 120,
"createdAt": "2026-03-14T09:48:00+08:00",
"startedAt": "2026-03-14T09:48:00+08:00",
"completedAt": "2026-03-14T09:50:00+08:00"
}
🔄 典型工作流
脚本任务示例
#!/bin/bash
source /path/to/task-utils.sh
TASK_ID="health_check_$(date +%Y%m%d_%H%M%S)"
# 初始化
task_init "$TASK_ID" "系统健康检查" "检查 Gateway、磁盘、内存、日志"
task_start "$TASK_ID"
# 阶段 1: 检查 Gateway
task_stage "$TASK_ID" "检查 Gateway" "running"
if systemctl --user is-active openclaw-gateway > /dev/null 2>&1; then
task_log "$TASK_ID" "INFO" "✅ Gateway 运行正常"
task_stage "$TASK_ID" "检查 Gateway" "done"
else
task_log "$TASK_ID" "ERROR" "❌ Gateway 未运行"
task_stage "$TASK_ID" "检查 Gateway" "failed"
fi
# 阶段 2: 检查磁盘
task_stage "$TASK_ID" "检查磁盘" "running"
DISK_USAGE=$(df -h / | awk 'NR==2 {print $5}' | sed 's/%//')
if [ "$DISK_USAGE" -lt 80 ]; then
task_log "$TASK_ID" "INFO" "✅ 磁盘使用:${DISK_USAGE}%"
task_stage "$TASK_ID" "检查磁盘" "done"
else
task_log "$TASK_ID" "WARN" "⚠️ 磁盘使用过高:${DISK_USAGE}%"
task_stage "$TASK_ID" "检查磁盘" "warning"
fi
# 完成
if [ "$ISSUES_COUNT" -eq 0 ]; then
task_complete "$TASK_ID" "系统健康状态良好"
else
task_fail "$TASK_ID" "发现 $ISSUES_COUNT 个问题" "validation_error"
fi
📋 AI 任务登记流程
方式 1: 使用登记脚本
./scripts/ai-task-register.sh "撰写文章" "为同事写鼓励文章" "normal"
方式 2: AI 直接创建
AI 在回复中说明并创建状态文件:
📋 任务登记:
- ID: ai_task_20260314_0948_write
- 名称:撰写安慰文章
- 类型:one-time
- 优先级:normal
- 状态:pending
📝 执行中...
✅ 任务完成!
📋 详情:
- 完成时间:09:48
- 耗时:45 秒
- 状态:成功
📄 状态文件:memory/tasks/ai_task_20260314_0948_write.json
🎯 最佳实践
✅ 推荐做法
- 任务 ID 唯一:使用时间戳
task_$(date +%Y%m%d_%H%M%S) - 及时登记:任务开始前登记,不要事后补
- 详细日志:关键决策和操作都要记录
- 完整反馈:完成/失败都通知用户
- 故障分析:失败时使用 8 类故障类型
❌ 避免做法
- 事后补登记:失去了追踪意义
- 只记录成功:失败也要记录
- 模糊错误:错误信息要具体
- 无反馈:完成任务不通知
- 过度追踪:简单问答不需要登记
📊 监控方式
命令行查询
# 查看所有任务
task_list
# 查询特定任务
task_status "task_001"
# 查看日志
tail -50 logs/tasks/task_001.log
监控面板
打开 docs/task-dashboard.html 可视化查看
查看注册表
cat memory/task-registry.json | jq '.tasks'
📚 参考文档
- 快速上手:
docs/QUICKSTART.md - 触发标准:
docs/task-trigger-criteria.md- 什么任务需要闭环 - AI 登记:
docs/ai-task-registration.md- AI 任务自动登记流程 - 完整框架:
docs/task-protection.md- 详细设计文档 - 使用示例:
docs/task-protection-examples.md- 更多场景示例
🔧 故障排查
问题:任务失败后如何重试?
task_retry "task_001" 3 60
问题:如何查看历史任务?
ls memory/tasks/*.json | xargs -I {} jq '.name, .status, .completedAt' {}
问题:如何清理过期任务?
task_cleanup 30 # 清理 30 天前的任务
📈 统计报告
生成周报
./scripts/weekly-task-report.sh
输出:articles/任务周报 -YYYY-Www.md
包含:
- 核心指标(总数、成功率、平均耗时)
- 任务分类统计
- 失败任务分析
- 故障类型分布
- 改进建议
维护者: 虾球 🦐
版本: 1.0
最后更新: 2026-03-14
许可: MIT(免费开源)
有任何问题随时提问!
相关 Skills
技能工坊
by anthropics
覆盖 Skill 从创建到迭代优化全流程:起草能力、补测试提示、跑评测与基准方差分析,并持续改写内容和描述,提升效果与触发准确率。
✎ 技能工坊把技能从创建、迭代到评测串成闭环,方差分析加描述优化,特别适合把触发准确率打磨得更稳。
表格处理
by anthropics
围绕 .xlsx、.xlsm、.csv、.tsv 做读写、修复、清洗、格式整理、公式计算与格式转换,适合修改现有表格、生成新报表或把杂乱数据整理成交付级电子表格。
✎ 做 Excel/CSV 相关任务很省心,能直接读写、修复、清洗和格式转换,尤其擅长把乱七八糟的表格整理成交付级文件。
Word文档
by anthropics
覆盖Word/.docx文档的创建、读取、编辑与重排,适合生成报告、备忘录、信函和模板,也能处理目录、页眉页脚、页码、图片替换、查找替换、修订批注及内容提取整理。
✎ 搞定 .docx 的创建、改写与精排版,目录、批量替换、批注修订和图片更新都能自动化,做正式文档尤其省心。
相关 MCP 服务
文件系统
编辑精选by Anthropic
Filesystem 是 MCP 官方参考服务器,让 LLM 安全读写本地文件系统。
✎ 这个服务器解决了让 Claude 直接操作本地文件的痛点,比如自动整理文档或生成代码文件。适合需要自动化文件处理的开发者,但注意它只是参考实现,生产环境需自行加固安全。
by wonderwhy-er
Desktop Commander 是让 AI 直接执行终端命令、管理文件和进程的 MCP 服务器。
✎ 这工具解决了 AI 无法直接操作本地环境的痛点,适合需要自动化脚本调试或文件批量处理的开发者。它能让你用自然语言指挥终端,但权限控制需谨慎,毕竟让 AI 执行 rm -rf 可不是闹着玩的。
EdgarTools
编辑精选by dgunning
EdgarTools 是无需 API 密钥即可解析 SEC EDGAR 财报的开源 Python 库。
✎ 这个工具解决了金融数据获取的痛点——直接让 AI 读取结构化财报,比如让 Claude 分析苹果的 10-K 文件。适合量化分析师或金融开发者快速构建数据管道。但注意,它依赖 SEC 网站稳定性,高峰期可能延迟。