log-stop-failure.sh 926 Bytes
#!/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