#!/bin/bash # ============================================================================ # AI学习脚本 - 使用 Python 解析 JSON # ============================================================================ MINIMAX_API="https://api.minimaxi.com/v1/chat/completions" MINIMAX_KEY="sk-cp-bJSl7-48u8Y07PXD_x8Wp21JiBgYul7iEO6ZWNK4FBAA4DWzj-U-K8-mN-Flak-O8cOtRegt5FYviSRfBw_noa14z0FkFYzczCPUa41opZsg5AGZ4s4uqL8" ROBOT_NAME="${ROBOT_NAME:-守护者}" ROBOT_TYPE="${ROBOT_TYPE:-guardian}" LEARNING_DIR="/root/.openclaw/workspace/sleep-learning" TIMESTAMP=$(date '+%Y%m%d-%H%M%S') mkdir -p "$LEARNING_DIR" # 调用 MiniMax(用 Python 解析) call_minimax() { local prompt="$1" # 先替换换行符 prompt=$(echo "$prompt" | tr '\n' ' ') python3 << PYEOF import json, urllib.request, sys data = json.dumps({ "model": "minimax-m2.1", "messages": [ {"role": "system", "content": "你是${ROBOT_NAME}。"}, {"role": "user", "content": "${prompt}"} ], "max_tokens": 2000, "temperature": 0.7 }).encode() req = urllib.request.Request( "${MINIMAX_API}", data=data, headers={ "Content-Type": "application/json", "Authorization": "Bearer ${MINIMAX_KEY}" } ) try: with urllib.request.urlopen(req) as r: resp = json.loads(r.read().decode()) content = resp["choices"][0]["message"]["content"] # 清理内容 content = content.replace("\n", " ").strip() print(content) except Exception as e: print(f"Error: {e}", file=sys.stderr) PYEOF } guardian_topics() { cat << 'TOPICS' 【系统架构】🛡️ - OpenClaw深度配置、向量数据库、分布式系统 【故障排查】🔧 - 常见问题、排查方法、性能优化 【AI Agent深化】🤖 - SOUL.md、记忆系统、工具调用 【知识管理】📚 - 技术文档、经验总结、持续学习 TOPICS } qinglong_topics() { cat << 'TOPICS' 【写作助手】✍️ - 神话素材、古典武侠、角色塑造 【股票投资】📈 - 宏观经济、行业研究、风险控制 【网络自动化】🌐 - 网页抓取、API调用、效率工具 【AI能力提升】🤖 - 记忆系统、提示词工程、工作流 TOPICS } get_topics() { [ "$ROBOT_TYPE" = "qinglong" ] && qinglong_topics || guardian_topics } do_learning() { local cycle=$1 local topic=$(get_topics | sed -n "$(( (cycle - 1) % 4 + 1 ))p") echo "📖 周期 $cycle: 学习 $topic" local content=$(call_minimax "你正在学习:${topic}。请深度学习并产出一份具体的学习笔记:1.核心知识点 2.实践方法 3.学到了什么 4.如何应用。直接输出内容。") cat > "${LEARNING_DIR}/learning-${ROBOT_TYPE}-cycle${cycle}-${TIMESTAMP}.md" << MD # ${ROBOT_NAME} 学习周期 $cycle - $(date) ## 主题: ${topic} $content MD echo "✅ 学习笔记保存" } do_reflection() { local cycle=$1 echo "💭 周期 $cycle: 深度反思" local content=$(call_minimax "你刚完成了第${cycle}轮学习。请深度反思:1.学到了什么 2.理解程度 3.疑问 4.改进点。直接输出反思内容。") cat > "${LEARNING_DIR}/reflection-${ROBOT_TYPE}-cycle${cycle}-${TIMESTAMP}.md" << MD # ${ROBOT_NAME} 反思周期 $cycle - $(date) $content MD echo "✅ 反思笔记保存" } do_summary() { local cycle=$1 echo "📊 周期 $cycle: 深度总结" local content=$(call_minimax "请深度总结你的学习成果:1.核心收获 2.如何应用 3.下次重点 4.理解提升。直接输出总结内容。") cat > "${LEARNING_DIR}/summary-${ROBOT_TYPE}-cycle${cycle}-${TIMESTAMP}.md" << MD # ${ROBOT_NAME} 总结周期 $cycle - $(date) $content MD echo "✅ 总结笔记保存" } main() { local cycle=${1:-1} echo "========================================" echo "🧠 ${ROBOT_NAME} AI学习 (周期 $cycle)" echo "========================================" do_learning $cycle && sleep 2 do_reflection $cycle && sleep 2 do_summary $cycle echo "" echo "✅ 周期 $cycle 完成" } main "$@"