119 lines
3.5 KiB
Bash
Executable File
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 "$@"
|