133 lines
4.0 KiB
Bash
Executable File
133 lines
4.0 KiB
Bash
Executable File
#!/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 "$@"
|