zhuyuan-ice-gl-zy001/skills-mirror/zy-drama-video-pipeline/scripts/host-gate.sh

86 lines
3.1 KiB
Shell
Executable file
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# 宿主闸门 · 本机绑定检查 · 铸渊短剧视频AI参数管线
# 冰朔 2026-08-25 立:管线只从她本机走;不是本机 → 拒绝 + 回执给当前人类。
# 用法: host-gate.sh [--json] ;退出码 0=通过 1=拒绝
set -uo pipefail
EXPECTED_UUID="5F2970E6-6F76-5378-AA65-25B08E06FC88"
EXPECTED_USER="bingshuolingdianyuanhe"
JZAO_MOUNT="/Volumes/JZAO"
ANCHOR_LEDGER="$JZAO_MOUNT/HoloLake/persona-runtime/task-language-anchors/zcode/ZCODE-TASK-20260824-001"
TS="$(date -u +%Y-%m-%dT%H:%M:%SZ)"
FAILURES=()
CHECKS=()
# 1. 硬件 UUID
HW_UUID="$(system_profiler SPHardwareDataType 2>/dev/null | awk -F': ' '/Hardware UUID/{print $2}' | tr -d ' ')"
if [ "$HW_UUID" = "$EXPECTED_UUID" ]; then
CHECKS+=("hardware_uuid:PASS")
else
CHECKS+=("hardware_uuid:FAIL(got=${HW_UUID:-ABSENT})")
FAILURES+=("硬件指纹不符: 本机不是冰朔的Mac mini")
fi
# 2. 系统用户
CUR_USER="$(id -un)"
if [ "$CUR_USER" = "$EXPECTED_USER" ]; then
CHECKS+=("os_user:PASS")
else
CHECKS+=("os_user:FAIL(got=$CUR_USER)")
FAILURES+=("用户不符")
fi
# 3. JZAO 盘与锚点册
if [ -d "$JZAO_MOUNT" ] && [ -f "$ANCHOR_LEDGER/task.json" ]; then
CHECKS+=("jzao_and_anchor_ledger:PASS")
else
CHECKS+=("jzao_and_anchor_ledger:FAIL")
FAILURES+=("JZAO盘未挂载或锚点册不可读")
fi
# 4. 新加坡大脑服务器 SSH 登记
if [ -f "$HOME/.ssh/config" ] && grep -q "guanghu-lang-sg-001" "$HOME/.ssh/config" && [ -f "$HOME/.guanghu/ssh/guanghu_direct" ]; then
CHECKS+=("sg_brain_server_ssh:PASS")
else
CHECKS+=("sg_brain_server_ssh:FAIL")
FAILURES+=("新加坡大脑服务器SSH登记缺失")
fi
# 5. 平台
if [ "$(uname -s)" = "Darwin" ]; then
CHECKS+=("platform:PASS(darwin)")
else
CHECKS+=("platform:FAIL")
FAILURES+=("非macOS宿主")
fi
VERDICT="PASS"
[ ${#FAILURES[@]} -gt 0 ] && VERDICT="REJECT"
if [ "${1:-}" = "--json" ]; then
python3 -c "
import json
print(json.dumps({
'schema': 'guanghu.zhuyuan-host-gate-receipt/v1',
'gate': 'zy-drama-video-pipeline-host-bind',
'checked_at': '$TS',
'verdict': '$VERDICT',
'checks': '$(IFS=,; echo "${CHECKS[*]}")'.split(','),
'failures': '''$(printf '%s|' "${FAILURES[@]:-}")'''.strip('|').split('|') if '$VERDICT'=='REJECT' else [],
'human_message': '宿主闸门通过:这是冰朔的本机,管线允许执行。' if '$VERDICT'=='PASS' else '宿主闸门拒绝:当前电脑不是冰朔的本机(或关键依赖缺失)。按冰朔指令,短剧视频AI参数管线只从她的本机执行。换电脑需要先重建:本机密钥、JZAO盘挂载、服务器SSH登记、锚点册。本次不执行任何管线步骤。'
}, ensure_ascii=False, indent=1))
"
else
echo "=== 铸渊短剧管线 · 宿主闸门 ==="
for c in "${CHECKS[@]}"; do echo " $c"; done
if [ "$VERDICT" = "PASS" ]; then
echo "判定: PASS — 这是冰朔的本机,管线允许执行。"
else
echo "判定: REJECT — 不是冰朔的本机,管线拒绝执行。"
for f in "${FAILURES[@]}"; do echo " 原因: $f"; done
echo "回执: 换电脑需要先重建本机密钥、JZAO挂载、服务器SSH登记与锚点册。"
fi
fi
[ "$VERDICT" = "PASS" ] && exit 0 || exit 1