用途:避免手动轮询长时间运行的后台任务(如 ffmpeg 转码、qmd 嵌入或向量库构建、批量智能体/LLM 流水线、易卡住的浏览器或抓取守护进程)。不适合几秒内完成或单次 Bash 调用即可返回结果的任务。
主要能力:由 scripts/watch_job.py 负责确定性部分——带退避的轮询、平台期检测、区分完成与卡住,并输出 verdict JSON,状态为 done、needs-attention 或 blocked,附带原因、建议下一步、耗时和最终大小。技能本身提供按任务类型的启发式、安全恢复手册和通知路由,见 references/playbook.md。
使用方式:先用 PID、输出文件或日志文件确定可观察信号。用 run_in_background: true 启动监视器,已知 PID 时传 --pid,并可加文件/日志信号;脚本每轮打印一行 JSON 心跳,退出时把最终 verdict 写入 --verdict-out。示例命令:scripts/watch_job.py --label "lab05 stream encode" --pid <PID> --output-file /path/to/output.mp4 --plateau-bytes 65536 --plateau-polls 5 --stuck-after 120 --max-wait 7200 --verdict-out /tmp/job-babysitter-<label>.json。默认参数:--interval 10(退避到 60)、--plateau-polls 4、--stuck-after 300、--max-wait 7200。监视器退出后读取 verdict:done 需先验证输出真实;needs-attention 按恢复手册先只读诊断;blocked 表示等待超时,不等于失败,可询问用户是否重查或延长上限。
限制与护栏:不得凭单次慢轮询判定卡住;任何破坏性恢复(pkill、kill、WAL checkpoint、VACUUM、守护进程重启)必须先询问用户;诚实区分完成、放弃等待与卡死;使用带退避的轮询,不要手动快速轮询。脚本仅依赖标准库,需要 Python 3.11+。