Files
my-project/config/openclaw/scripts/sleep-learning.sh
T

119 lines
3.5 KiB
Bash
Executable File

#!/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 "$@"