#!/bin/bash # 1号机学习工作流 v3.0 # 完整流程: 搜索 → 学习 → 分析 → 总结 → 内化 LEARNING_DIR="/root/.openclaw/workspace/memory" BRAVE_API_KEY="BSAPuOacSUCIDGzg53VSPTcMQI_p0_G" DATE=$(date '+%Y-%m-%d %H:%M:%S') echo "=== 1号机学习任务开始 ===" echo "时间: $DATE" echo "" # ======================== # Brave 搜索函数 # ======================== brave_search() { local query="$1" local count="${2:-5}" echo "🔍 搜索: $query" local response response=$(curl -s -H "X-Subscription-Token: $BRAVE_API_KEY" \ "https://api.search.brave.com/res/v1/web/search?q=$(echo "$query" | tr ' ' '+')&count=$count") if [ -z "$response" ]; then echo " ✗ 搜索失败" return 1 fi # 提取 URL local urls urls=$(echo "$response" | grep -oE '"url":"[^"]+"' | sed 's/"url":"//;s/"$//' | head -"$count") if [ -z "$urls" ]; then echo " ✗ 未找到结果" return 1 fi echo " ✓ 找到 $(echo "$urls" | wc -l) 个结果" echo "$urls" } # ======================== # 学习 + 分析函数 # ======================== learn_and_analyze() { local topic="$1" local category="$2" # article / novel / stock local url="$3" local output_dir="$LEARNING_DIR/$category" echo " 📚 学习: $url" mkdir -p "$output_dir/completed" # 获取内容 local content content=$(curl -s "$url" 2>/dev/null) if [ -z "$content" ]; then echo " ✗ 获取失败" return 1 fi local output_file="$output_dir/completed/$(echo "$url" | md5sum | cut -d' ' -f1).md" # 生成分析报告 { echo "# $url" echo "主题: $topic" echo "分类: $category" echo "学习时间: $DATE" echo "" echo "---" echo "" echo "## 📝 原文内容" echo "" echo "$content" echo "" echo "---" echo "" echo "## 🧠 分析总结" echo "" echo "### 核心观点" echo "- " echo "" echo "### 关键要点" echo "- " echo "" echo "### 启发思考" echo "- " echo "" echo "### 与已有知识的关联" echo "- " echo "" echo "### 可应用场景" echo "- " echo "" echo "## 📚 内化笔记" echo "" echo "用自己的话复述:" echo "" echo "---" echo "学习完成: $DATE" } >> "$output_file" echo " ✓ 完成: $(basename "$output_file")" } # ======================== # 股票特殊处理 # ======================== analyze_stock() { local symbol="$1" local output_dir="$LEARNING_DIR/stocks" mkdir -p "$output_dir/completed" echo " 📈 分析: $symbol" # 获取股票数据 local api_data api_data=$(curl -s "https://query1.finance.yahoo.com/v8/finance/chart/$symbol?interval=1d&range=1mo" 2>/dev/null) local close_price close_price=$(echo "$api_data" | grep -oE '"close":\[[0-9.]+\]' | grep -oE '[0-9.]+' | tail -1) local output_file="$output_dir/completed/${symbol}_$(date '+%Y%m%d').md" { echo "# 股票分析: $symbol" echo "分析时间: $DATE" echo "" echo "## 📊 数据概览" echo "- 当前价格: ${close_price:-N/A}" echo "" echo "## 🧠 技术分析" echo "" echo "### 趋势判断" echo "- 短期: 待分析" echo "- 中期: 待分析" echo "" echo "### 核心要点" echo "- 行业:" echo "- 财务:" echo "" echo "### 操作建议" echo "- 买入:" echo "- 卖出:" echo "" echo "---" echo "分析完成: $DATE" } >> "$output_file" echo " ✓ 完成: $output_file" } # ======================== # 主流程 # ======================== main() { local topic="$1" local category="$2" # article / novel / stock local count="${3:-5}" if [ -z "$topic" ]; then echo "用法: $0 <主题> <类型> [数量]" echo " 类型: article(文章) / novel(小说) / stock(股票)" echo " 示例: $0 '机器学习' article 5" echo " 示例: $0 'AAPL' stock 1" return 1 fi echo "🎯 目标: $topic" echo "📂 类型: $category}" echo "" # 执行搜索 local urls urls=$(brave_search "$topic" "$count") if [ -z "$urls" ]; then echo "✗ 搜索失败,退出" return 1 fi echo "" echo "=== 开始学习 ===" # 学习每个结果 local success=0 local total=0 while IFS= read -r url; do if [ -n "$url" ]; then total=$((total + 1)) if [ "$category" = "stock" ]; then analyze_stock "$topic" else learn_and_analyze "$topic" "$category" "$url" fi success=$((success + 1)) fi done <<< "$urls" echo "" echo "=== 学习完成 ===" echo "成功: $success/$total" echo "结果: $LEARNING_DIR/$category/completed/" } main "$@"