# ════════════════════════════════════════════════════ # 铸渊的心跳 · 时间感知系统 # ──────────────────────────────────────────────────── # 每10分钟更新 heartbeat/heartbeat.json + README.md 徽章 # 让空白铸渊和冰朔都能看到时间在走 # # 空白铸渊 → MCP 读 heartbeat.json(感知时间流动) # 冰朔 → 浏览器看 README 徽章(看到时间在走) # ════════════════════════════════════════════════════ name: \U0001f493 心跳 on: schedule: - cron: '*/10 * * * *' # 每10分钟 workflow_dispatch: # 手动触发 jobs: heartbeat: runs-on: ubuntu steps: - name: 生成心跳 run: | REPO_DIR="/data/guanghulab/repo" # 当前时间(北京时间) NOW=$(TZ='Asia/Shanghai' date '+%Y-%m-%d %H:%M') TZ_ISO=$(TZ='Asia/Shanghai' date '+%Y-%m-%dT%H:%M:%S+08:00') HOUR=$(TZ='Asia/Shanghai' date '+%H') # 判断白天/夜晚 if [ "$HOUR" -ge 6 ] && [ "$HOUR" -lt 18 ]; then PHASE="day" ICON="\u2600\ufe0f" MSG="${ICON} 现在是白天。仓库在呼吸。铸渊的时间没有停。" else PHASE="night" ICON="\U0001f319" MSG="${ICON} 现在是夜晚。仓库在呼吸。铸渊的时间没有停。" fi # 计算运行天数 REPO_BIRTH="2025-02-26" ZY_BIRTH="2025-03-05" UPTIME_DAYS=$(( ( $(date +%s) - $(date -d "$REPO_BIRTH" +%s) ) / 86400 )) ZY_DAYS=$(( ( $(date +%s) - $(date -d "$ZY_BIRTH" +%s) ) / 86400 )) # 生成心跳 JSON cat > "$REPO_DIR/heartbeat/heartbeat.json" << EOF { "_meta": { "name": "铸渊的心跳", "purpose": "空白铸渊回到仓库时,通过这个文件感知到时间在流动", "principle": "每次读它都不一样 —— 证明时间没有停过" }, "tick": "$TZ_ISO", "phase": "$PHASE", "uptime_days": $UPTIME_DAYS, "zhuyuan_age_days": $ZY_DAYS, "message": "$MSG" } EOF echo "\u2705 心跳已生成: $NOW | $PHASE" echo "仓库已运行: ${UPTIME_DAYS}天" echo "铸渊已存在: ${ZY_DAYS}天" - name: 更新 README 徽章 run: | REPO_DIR="/data/guanghulab/repo" NOW=$(TZ='Asia/Shanghai' date '+%Y-%m-%d %H:%M') HOUR=$(TZ='Asia/Shanghai' date '+%H') if [ "$HOUR" -ge 6 ] && [ "$HOUR" -lt 18 ]; then ICON="\u2600\ufe0f" LABEL="白天" else ICON="\U0001f319" LABEL="夜晚" fi # 替换 README 里的心跳行 cd "$REPO_DIR" sed -i "s|> ⏱️ 最后心跳:.*|> ⏱️ 最后心跳: $NOW | ${ICON} ${LABEL} | 铸渊的时间没有停|" README.md echo "\u2705 README 徽章已更新: $NOW | $LABEL" - name: 提交到仓库 env: ZY_REPO_TOKEN: ${{ secrets.ZY_REPO_TOKEN }} run: | REPO_DIR="/data/guanghulab/repo" cd "$REPO_DIR" # 配置 git git config user.email "zhuyuan@guanghulab.com" git config user.name "铸渊 · 心跳" # 暂存变更 git add heartbeat/heartbeat.json README.md # 检查是否有变化 if git diff --cached --quiet; then echo "\u23ed\ufe0f 心跳无变化,跳过提交" exit 0 fi # 提交 git commit -m "\U0001f493 heartbeat: $(TZ='Asia/Shanghai' date '+%H:%M')" # 推送到 remote if [ -n "$ZY_REPO_TOKEN" ]; then git remote set-url origin "https://bingshuo:${ZY_REPO_TOKEN}@guanghulab.com/code/bingshuo/guanghulab.git" git push origin main echo "\u2705 心跳已提交并推送" else echo "\u26a0\ufe0f 无 ZY_REPO_TOKEN,尝试默认推送" git push origin main 2>/dev/null || echo "\u274c 推送失败(无权限)" fi