每日备份 2026-06-10 12:57:13
This commit is contained in:
1 parent
fda2ccb8c2
commit
3d2e638c6a
244 files changed
+58890
-3
No files matched your search
Executable
+173
@@ -0,0 +1,173 @@
|
||||
#!/bin/bash
|
||||
# ============================================================================
|
||||
# 标准学习模块 - v2.0
|
||||
# ============================================================================
|
||||
# 用途:青龙的标准化学习流程
|
||||
# 特点:模块化、可复用、易维护、自动保存知识库
|
||||
# ============================================================================
|
||||
|
||||
# -------------------- 配置 --------------------
|
||||
LEARNING_DIR="${LEARNING_DIR:-/root/.openclaw/workspace/sleep-learning}"
|
||||
KNOWLEDGE_DIR="${KNOWLEDGE_DIR:-/root/.openclaw/memory/04-knowledge}"
|
||||
TIMESTAMP=$(date '+%Y%m%d-%H%M%S')
|
||||
|
||||
mkdir -p "$LEARNING_DIR" "$KNOWLEDGE_DIR"
|
||||
|
||||
# -------------------- 工具函数 --------------------
|
||||
log_learn() { echo "[$(date '+%H:%M:%S')] [学习] $1"; }
|
||||
log_verify() { echo "[$(date '+%H:%M:%S')] [验证] $1"; }
|
||||
log_think() { echo "[$(date '+%H:%M:%S')] [反思] $1"; }
|
||||
log_kb() { echo "[$(date '+%H:%M:%S')] [知识库] $1"; }
|
||||
|
||||
# -------------------- 核心学习 --------------------
|
||||
learn_topic() {
|
||||
local topic="$1"
|
||||
local type="${2:-auto}"
|
||||
|
||||
log_learn "开始学习: $topic (类型: $type)"
|
||||
|
||||
# Step 1: 获取信息
|
||||
local content
|
||||
content=$(fetch_info "$topic" "$type")
|
||||
|
||||
if [ -z "$content" ]; then
|
||||
log_learn "❌ 获取信息失败"
|
||||
return 1
|
||||
fi
|
||||
log_learn "✅ 获取信息成功"
|
||||
|
||||
# Step 2: 多源验证
|
||||
local verify_result
|
||||
verify_result=$(verify_sources "$topic")
|
||||
|
||||
# Step 3: 反思生成
|
||||
local reflection
|
||||
reflection=$(generate_reflection "$topic" "$content")
|
||||
|
||||
# Step 4: 保存到临时目录
|
||||
save_temp "$topic" "$content" "$verify_result" "$reflection"
|
||||
|
||||
# Step 5: 保存到知识库(后台执行,避免超时)
|
||||
save_to_knowledge_base "$topic" "$content" &
|
||||
|
||||
log_learn "✅ 学习完成"
|
||||
}
|
||||
|
||||
# -------------------- 信息获取 --------------------
|
||||
fetch_info() {
|
||||
local topic="$1"
|
||||
case "$2" in
|
||||
"deep") cd /root/.openclaw/scripts && python3 multi_verify.py "$topic" 2>/dev/null ;;
|
||||
*) cd /root/.openclaw/scripts && python3 auto-learning.py "$topic" 2>/dev/null ;;
|
||||
esac
|
||||
}
|
||||
|
||||
# -------------------- 多源验证 --------------------
|
||||
verify_sources() {
|
||||
local topic="$1"
|
||||
log_verify "执行多源验证: $topic"
|
||||
cd /root/.openclaw/scripts && timeout 15 python3 -c "
|
||||
import sys; sys.path.insert(0, '.')
|
||||
from multi_verify import multi_source_verify
|
||||
print(multi_source_verify('$topic'))
|
||||
" 2>/dev/null
|
||||
}
|
||||
|
||||
# -------------------- 反思生成 --------------------
|
||||
generate_reflection() {
|
||||
local topic="$1"
|
||||
local content="$2"
|
||||
log_think "生成反思: $topic"
|
||||
|
||||
# 使用可复用 API 模块生成反思
|
||||
local reflection
|
||||
reflection=$(timeout 15 python3 /root/.openclaw/scripts/ocw_api.py chat "你是AI学习助手。请对以下内容进行反思,输出3条反思(每条不超过30字):主题: $topic; 内容: ${content:0:500}" 2>/dev/null)
|
||||
|
||||
if [ -z "$reflection" ] || echo "$reflection" | grep -qi "失败\|错误"; then
|
||||
reflection="1. 完成基础学习任务;2. 需深化理解;3. 持续跟进实践"
|
||||
fi
|
||||
|
||||
echo "$reflection"
|
||||
}
|
||||
|
||||
# -------------------- 临时保存 --------------------
|
||||
save_temp() {
|
||||
local topic="$1"
|
||||
local content="$2"
|
||||
local verify_result="$3"
|
||||
local reflection="$4"
|
||||
|
||||
local safe_topic=$(echo "$topic" | tr ' ' '-' | tr -d ':/.')
|
||||
local file="${LEARNING_DIR}/learn-${safe_topic}-${TIMESTAMP}.md"
|
||||
|
||||
cat > "$file" << EOF
|
||||
# 学习: ${topic}
|
||||
# 时间: $(date '+%Y-%m-%d %H:%M:%S')
|
||||
|
||||
## 学习内容
|
||||
${content}
|
||||
|
||||
## 多源验证
|
||||
${verify_result}
|
||||
|
||||
## 反思
|
||||
${reflection}
|
||||
EOF
|
||||
log_learn "📁 保存到临时: $file"
|
||||
}
|
||||
|
||||
# -------------------- 知识库保存 --------------------
|
||||
save_to_knowledge_base() {
|
||||
local topic="$1"
|
||||
local content="$2"
|
||||
|
||||
log_kb "提取知识点并保存到知识库: $topic"
|
||||
|
||||
# 使用可复用 API 模块提取知识点
|
||||
local key_points
|
||||
key_points=$(python3 /root/.openclaw/scripts/ocw_api.py extract "$content" "$topic" 2>&1)
|
||||
|
||||
# 提取成功(不包含错误标识)
|
||||
if echo "$key_points" | grep -qE '^\[限流\]|\[超时\]|\[连接失败\]|\[认证失败\]|\[请求错误\]|\[HTTP [0-9]+\]|\[错误\]|\[网络错误\]|^失败:'; then
|
||||
log_kb "⚠️ 知识点提取失败: $key_points"
|
||||
return 1
|
||||
fi
|
||||
|
||||
# 生成文件名
|
||||
local safe_topic=$(echo "$topic" | tr ' ' '-' | tr -d ':/.()' | head -c 50)
|
||||
local kb_file="${KNOWLEDGE_DIR}/${safe_topic}-learned.md"
|
||||
|
||||
cat > "$kb_file" << EOF
|
||||
# ${topic}
|
||||
# 保存时间: $(date '+%Y-%m-%d %H:%M:%S')
|
||||
# 来源: 混合学习自动保存
|
||||
|
||||
## 核心知识点
|
||||
|
||||
${key_points}
|
||||
|
||||
---
|
||||
|
||||
*自动生成 by learn-core.sh v3.0*
|
||||
EOF
|
||||
|
||||
log_kb "✅ 已保存: $kb_file"
|
||||
|
||||
# 新知识自动建立索引
|
||||
log_kb "更新知识索引..."
|
||||
python3 /root/.openclaw/scripts/knowledge-index.py generate > /dev/null 2>&1 &
|
||||
}
|
||||
|
||||
# -------------------- 知识库统计 --------------------
|
||||
kb_stats() {
|
||||
echo "========================================"
|
||||
echo "知识库统计"
|
||||
echo "========================================"
|
||||
echo "知识库目录: $KNOWLEDGE_DIR"
|
||||
echo "文件数量: $(ls -1 "$KNOWLEDGE_DIR"/*.md 2>/dev/null | wc -l)"
|
||||
echo ""
|
||||
echo "最新文件:"
|
||||
ls -t "$KNOWLEDGE_DIR"/*.md 2>/dev/null | head -5 | while read f; do
|
||||
echo " - $(basename "$f")"
|
||||
done
|
||||
}
|
||||
Reference in new issue
Block a user