Files
my-project/config/openclaw/tools/learn-workflow.sh
T

213 lines
4.6 KiB
Bash
Executable File

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