Ctrl K
ComunidadGuías…

scripts/butler-wechat-dual-playbook-probe.sh

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
#!/usr/bin/env bash
# B1 灵文1号 · 维护态/新书态双剧本探针
#
# 1) 静态 preflight(无 LLM):lifecycle、workflow_state、dual-playbook 话术
# 2) 可选 LLM handler sim:dual-playbook.md 各测一句(有 API key 时)
#
# Usage:
#   bash scripts/butler-wechat-dual-playbook-probe.sh
#   bash scripts/butler-wechat-dual-playbook-probe.sh --quick
#   bash scripts/butler-wechat-dual-playbook-probe.sh --static-only
#   bash scripts/butler-wechat-dual-playbook-probe.sh --llm-only
#   bash scripts/butler-wechat-dual-playbook-probe.sh --log
#
set -euo pipefail

ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
cd "$ROOT"
export PYTHONPATH="$ROOT"

STATIC_ONLY=0
LLM_ONLY=0
QUICK=0
LOG=0
for arg in "$@"; do
  case "$arg" in
    --static-only) STATIC_ONLY=1 ;;
    --llm-only) LLM_ONLY=1 ;;
    --quick) QUICK=1 ;;
    --log) LOG=1 ;;
    -h|--help)
      sed -n '1,14p' "$0"
      exit 0
      ;;
  esac
done

if [[ -f "$ROOT/.env" ]]; then
  # shellcheck source=scripts/lib/butler-source-env.sh
  source "$ROOT/scripts/lib/butler-source-env.sh"
  butler_source_env "$ROOT/.env" 2>/dev/null || true
fi

FAIL=0
STAMP="$(date +%Y-%m-%d)"

if [[ "$LLM_ONLY" -eq 0 ]]; then
  echo "== B1 static preflight =="
  if python3 - <<'PY'
import json
from butler.ops.dual_playbook_probe import run_dual_playbook_static_probe

out = run_dual_playbook_static_probe()
print(json.dumps(out.get("details") or {}, ensure_ascii=False, indent=2))
if not out.get("ok"):
    for err in out.get("errors") or []:
        print(f"  error: {err}")
    raise SystemExit(1)
print("B1 static: OK")
PY
  then
    echo "  OK: static preflight"
  else
    echo "  FAIL: static preflight"
    FAIL=1
  fi
fi

if [[ "$STATIC_ONLY" -eq 0 && "$FAIL" -eq 0 ]]; then
  echo ""
  echo "== B1 WeChat scenario sim (handler + LLM) =="
  _args=(--manifest wechat-dual-playbook-scenarios.yaml)
  if [[ "$QUICK" -eq 1 ]]; then
    _args+=(--quick)
  fi
  export BUTLER_WECHAT_OWNER_SIM="${BUTLER_WECHAT_DUAL_PLAYBOOK_SIM:-1}"
  if bash "$ROOT/scripts/butler-wechat-owner-sim.sh" "${_args[@]}"; then
    echo "  OK: dual-playbook sim"
  else
    _rc=$?
    if [[ "$_rc" -eq 0 ]]; then
      echo "  skip: dual-playbook sim (no LLM key or BUTLER_WECHAT_DUAL_PLAYBOOK_SIM=0)"
    else
      echo "  FAIL: dual-playbook sim"
      FAIL=1
    fi
  fi
fi

echo ""
if [[ "$FAIL" -ne 0 ]]; then
  echo "B1 dual-playbook probe: FAIL"
  exit 1
fi

echo "B1 dual-playbook probe: ALL PASSED"

if [[ "$LOG" -eq 1 ]]; then
  LOG_FILE="$ROOT/projects/LingWen1/docs/pilot-log.md"
  ROW="| $STAMP | **B1 双剧本探针** | butler-wechat-dual-playbook-probe.sh PASS |"
  if [[ -f "$LOG_FILE" ]] && ! grep -q "B1 双剧本探针.*$STAMP" "$LOG_FILE" 2>/dev/null; then
    sed -i "/^|------|/a\\$ROW" "$LOG_FILE"
    echo "Appended: $LOG_FILE"
  fi
fi

exit 0