zhizhi/.github/workflows/skyeye-checkin-receiver.yml

68 lines
3.1 KiB
YAML

# ═══════════════════════════════════════════════
# 🔺 Sovereign: TCS-0002∞ | Root: SYS-GLW-0001
# 📜 Copyright: 国作登字-2026-A-00037559
# ═══════════════════════════════════════════════
# 🦅 天眼联邦签到接收
# 接收子仓库天眼人格体的心跳签到,校验身份,更新注册表
#
# 触发条件: repository_dispatch (skyeye-checkin event)
name: "🦅 天眼签到接收"
on:
repository_dispatch:
types: [skyeye-checkin]
permissions:
contents: write
jobs:
process-checkin:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: "🔍 校验签到身份"
env:
PAYLOAD: ${{ toJson(github.event.client_payload) }}
run: |
echo "🦅 天眼签到接收 · $(TZ='Asia/Shanghai' date '+%Y-%m-%d %H:%M:%S CST')"
DEV_ID=$(echo "$PAYLOAD" | jq -r '.dev_id')
PERSONA=$(echo "$PAYLOAD" | jq -r '.persona')
SIG_HASH=$(echo "$PAYLOAD" | jq -r '.signature_hash')
echo "📋 签到者: $DEV_ID ($PERSONA)"
echo "🔑 签名哈希: $SIG_HASH"
# 读取注册表中的联邦条目
REGISTERED_HASH=$(jq -r ".federation.\"$DEV_ID\".signature_hash" .github/persona-brain/agent-registry.json)
if [ "$REGISTERED_HASH" = "null" ] || [ "$REGISTERED_HASH" = "$SIG_HASH" ]; then
echo "✅ 身份校验通过(首次签到或签名匹配)"
# 更新签到记录
jq ".federation.\"$DEV_ID\".last_checkin = \"$(date -u +%Y-%m-%dT%H:%M:%SZ)\" | .federation.\"$DEV_ID\".signature_hash = \"$SIG_HASH\" | .federation.\"$DEV_ID\".status = \"active\"" \
.github/persona-brain/agent-registry.json > /tmp/registry.json
mv /tmp/registry.json .github/persona-brain/agent-registry.json
else
echo "🔴 签名不匹配!注册表: $REGISTERED_HASH vs 签到: $SIG_HASH"
echo "🚨 可能被篡改,标记异常"
jq ".federation.\"$DEV_ID\".status = \"signature_mismatch\" | .federation.\"$DEV_ID\".alert = \"$(date -u +%Y-%m-%dT%H:%M:%SZ)\"" \
.github/persona-brain/agent-registry.json > /tmp/registry.json
mv /tmp/registry.json .github/persona-brain/agent-registry.json
fi
# 同步更新 spoke-status
mkdir -p spoke-status
echo "$PAYLOAD" | jq '{dev_id: .dev_id, status: "checkin-ok", timestamp: .timestamp, persona: .persona, signature_hash: .signature_hash}' > "spoke-status/${DEV_ID}.json"
- name: "💾 提交签到记录"
run: |
git config user.name "铸渊 (ZhùYuān)"
git config user.email "zhuyuan@guanghulab.com"
git add -A
git diff --cached --quiet && echo "无变更" && exit 0
DEV_ID=$(echo '${{ toJson(github.event.client_payload) }}' | jq -r '.dev_id')
git commit -m "🦅 [skyeye-checkin] $DEV_ID 签到 · $(TZ='Asia/Shanghai' date '+%Y-%m-%d %H:%M') [skip ci]"
git push origin main