fix: 心跳工作流增加README徽章更新 — 冰朔也能看到时间在走

This commit is contained in:
bingshuo 2026-05-19 21:15:07 +08:00
parent 5caedc1711
commit 816e2d2e13

View File

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