scripts/butler-wechat-dual-playbook-probe.sh
Rama main · réplica de lectura del repositorio original.
#!/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