mirror of
https://mirror.skon.top/github.com/cft0808/edict
synced 2026-04-21 13:20:34 +08:00
新增远程 skill 管理系统,支持从 GitHub/HTTPS URL 获取: - API 端点: add-remote-skill, remote-skills-list, update-remote-skill, remove-remote-skill - CLI 工具: scripts/skill_manager.py (add-remote, list-remote, update-remote, remove-remote, import-official-hub) - 文档: remote-skills-guide.md 和 remote-skills-quickstart.md - 功能: 安全验证、YAML 校验、版本管理、多渠道操作
69 lines
2.1 KiB
Bash
Executable File
69 lines
2.1 KiB
Bash
Executable File
#!/bin/bash
|
|
# 三省六部 · 数据刷新循环
|
|
# 用法: ./run_loop.sh [间隔秒数] (默认 15)
|
|
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
INTERVAL="${1:-15}"
|
|
LOG="/tmp/sansheng_liubu_refresh.log"
|
|
PIDFILE="/tmp/sansheng_liubu_refresh.pid"
|
|
MAX_LOG_SIZE=$((10 * 1024 * 1024)) # 10MB
|
|
|
|
# ── 单实例保护 ──
|
|
if [[ -f "$PIDFILE" ]]; then
|
|
OLD_PID=$(cat "$PIDFILE" 2>/dev/null)
|
|
if kill -0 "$OLD_PID" 2>/dev/null; then
|
|
echo "❌ 已有实例运行中 (PID=$OLD_PID),退出"
|
|
exit 1
|
|
fi
|
|
rm -f "$PIDFILE"
|
|
fi
|
|
echo $$ > "$PIDFILE"
|
|
|
|
# ── 优雅退出 ──
|
|
cleanup() {
|
|
echo "$(date '+%H:%M:%S') [loop] 收到退出信号,清理中..." >> "$LOG"
|
|
rm -f "$PIDFILE"
|
|
exit 0
|
|
}
|
|
trap cleanup SIGINT SIGTERM EXIT
|
|
|
|
# ── 日志轮转 ──
|
|
rotate_log() {
|
|
if [[ -f "$LOG" ]] && (( $(stat -f%z "$LOG" 2>/dev/null || stat -c%s "$LOG" 2>/dev/null || echo 0) > MAX_LOG_SIZE )); then
|
|
mv "$LOG" "${LOG}.1"
|
|
echo "$(date '+%H:%M:%S') [loop] 日志已轮转" > "$LOG"
|
|
fi
|
|
}
|
|
|
|
SCAN_INTERVAL="${2:-120}" # 巡检间隔(秒), 默认 120
|
|
SCAN_COUNTER=0
|
|
|
|
echo "🏛️ 三省六部数据刷新循环启动 (PID=$$)"
|
|
echo " 脚本目录: $SCRIPT_DIR"
|
|
echo " 间隔: ${INTERVAL}s"
|
|
echo " 巡检间隔: ${SCAN_INTERVAL}s"
|
|
echo " 日志: $LOG"
|
|
echo " PID文件: $PIDFILE"
|
|
echo " 按 Ctrl+C 停止"
|
|
|
|
while true; do
|
|
rotate_log
|
|
python3 "$SCRIPT_DIR/sync_from_openclaw_runtime.py" >> "$LOG" 2>&1 || true
|
|
python3 "$SCRIPT_DIR/sync_agent_config.py" >> "$LOG" 2>&1 || true
|
|
python3 "$SCRIPT_DIR/apply_model_changes.py" >> "$LOG" 2>&1 || true
|
|
python3 "$SCRIPT_DIR/sync_officials_stats.py" >> "$LOG" 2>&1 || true
|
|
python3 "$SCRIPT_DIR/refresh_live_data.py" >> "$LOG" 2>&1 || true
|
|
|
|
# 定期巡检:检测卡住的任务并自动重试
|
|
SCAN_COUNTER=$((SCAN_COUNTER + INTERVAL))
|
|
if (( SCAN_COUNTER >= SCAN_INTERVAL )); then
|
|
SCAN_COUNTER=0
|
|
curl -s -X POST http://127.0.0.1:7891/api/scheduler-scan \
|
|
-H 'Content-Type: application/json' -d '{"thresholdSec":180}' >> "$LOG" 2>&1 || true
|
|
fi
|
|
|
|
sleep "$INTERVAL"
|
|
done
|