#!/usr/bin/env bash # StopFailure 钩子:回合因 API 错误终止时记一条日志(官方语义:该事件输出与退出码被忽略、 # 无 decision 控制,"Used for side effects like logging or cleanup"——无法在此自动续跑; # 如官方未来改变该事件语义再考虑续跑。核实于 2026-06-11 code.claude.com/docs/en/hooks.md: # "StopFailure | No | Output and exit code are ignored" # 用途:无人值守长跑被网络错误打断时(曾停摆 14 小时无人接管),事后可从日志确认中断时间 # 与错误类型,人工或外部 watcher 据此续跑。 set -u INPUT="$(cat)" LOG="${TMPDIR:-/tmp}/erp-stopfailure.log" ts="$(date '+%Y-%m-%d %H:%M:%S')" etype="$(printf '%s' "$INPUT" | sed -n 's/.*"error_type"[[:space:]]*:[[:space:]]*"\([^"]*\)".*/\1/p' | head -n1)" printf '%s StopFailure error_type=%s\n' "$ts" "${etype:-unknown}" >> "$LOG" 2>/dev/null || true exit 0