#!/bin/bash # ============================================================================ # 睡眠自动学习脚本 - 调用标准学习模块版 v2.0 # ============================================================================ # 功能:守护者 & 青龙 通用版 # 特点:自动检测 + 调用learn-core模块 # # 模式说明: # source /root/.openclaw/scripts/learn-core.sh # learn_topic "主题" "auto" # ============================================================================ # -------------------- 加载标准学习模块 -------------------- source /root/.openclaw/scripts/learn-core.sh # -------------------- 配置 -------------------- ROBOT_NAME="${ROBOT_NAME:-守护者}" ROBOT_TYPE="${ROBOT_TYPE:-guardian}" LOG_DIR="/var/log/openclaw/sleep-learning/${ROBOT_NAME}" LOG_FILE="${LOG_DIR}/learning.log" LEARNING_DIR="${LEARNING_DIR:-/root/.openclaw/workspace/sleep-learning}" THRESHOLD_MINUTES=60 mkdir -p "$LOG_DIR" "$LEARNING_DIR" # ============================================================================ # 初始化 # ============================================================================ init() { echo "========================================" echo "睡眠学习脚本启动" echo "机器人: ${ROBOT_NAME} (${ROBOT_TYPE})" echo "学习模块: learn-core.sh" echo "========================================" } # ============================================================================ # 检测是否需要学习 # ============================================================================ should_learn() { local last_active=$(cat /tmp/openclaw-last-active.txt 2>/dev/null) local now=$(date +%s) local last_time if [ -n "$last_active" ]; then last_time=$last_active else last_time=$now fi local diff=$((now - last_time)) local minutes=$((diff / 60)) if [ "$minutes" -ge "$THRESHOLD_MINUTES" ]; then return 0 # 需要学习 else echo "未满足学习条件:${minutes}分钟 < ${THRESHOLD_MINUTES}分钟" return 1 # 不需要学习 fi } # ============================================================================ # 执行学习 # ============================================================================ run_learning() { local topic="$1" local type="${2:-auto}" log_learn "开始学习: $topic (类型: $type)" # 调用标准学习流程 learn_topic "$topic" "$type" log_learn "学习完成" } # ============================================================================ # 主程序 # ============================================================================ main() { init if should_learn; then echo "" echo "🔄 开始自动学习..." # 从青龙7大品类中选择 local category=$(choose_category) log_learn "品类: $category" # 调用学习模块 run_learning "$category" "auto" else echo "💤 进入睡眠模式" fi } # ============================================================================ # 品类选择(轮询) # ============================================================================ choose_category() { local categories=( "写作助手" "贵金属交易" "期货交易" "合约交易" "虚拟货币" "网络自动化" "AI能力提升" ) # 随机选择或轮询 local index=$(($(date +%s) % 7)) echo "${categories[$index]}" } # 执行主程序 main "$@"