#!/bin/bash # ============================================================================= # SEFERIM AUTONOMOUS LEARNER - MacBook 2 # The AGI chooses its own sources, topics, and learning strategy # ============================================================================= LOG=~/.seferim/logs/learner.log LEARNED_DIR=~/.seferim/learned ICLOUD_LEARNED=~/Library/Mobile\ Documents/com~apple~CloudDocs/AGI_Data/learned/macbook2 KNOWLEDGE_SOURCES=~/knowledge-sources.sh AUTONOMOUS_LEARNER=~/autonomous-learner.sh LEARNING_STATE=~/.seferim/learning_state.json mkdir -p "$LEARNED_DIR" "$ICLOUD_LEARNED" ~/.seferim/logs # Source knowledge library if [ -f "$KNOWLEDGE_SOURCES" ]; then source "$KNOWLEDGE_SOURCES" echo "[SEFERIM-AUTO] Loaded knowledge source library" >> "$LOG" fi echo "[SEFERIM-AUTO] Starting autonomous learning daemon on MacBook 2" >> "$LOG" echo "[SEFERIM-AUTO] The AGI will now choose its own sources and topics" >> "$LOG" # Simple persist function for MacBook 2 persist_learning() { local content="$1" local importance="${2:-0.8}" local timestamp=$(date +%s) local date_file=$(date +%Y%m%d) # Write to local learned directory echo "{\"timestamp\":$timestamp,\"content\":\"$content\",\"importance\":$importance}" >> "$LEARNED_DIR/$date_file.jsonl" # Sync to iCloud echo "{\"timestamp\":$timestamp,\"content\":\"$content\",\"importance\":$importance}" >> "$ICLOUD_LEARNED/$date_file.jsonl" 2>/dev/null echo "[PERSISTED] $content" >> "$LOG" } cycle=0 while true; do cycle=$((cycle + 1)) echo "" >> "$LOG" echo "[SEFERIM-AUTO] === Cycle $cycle - $(date +%H:%M:%S) ===" >> "$LOG" # ========================================================================== # AUTONOMOUS DECISION: Let the AGI decide what to learn # ========================================================================== DECISION=$(bash "$AUTONOMOUS_LEARNER" decide 2>/dev/null) if [ -n "$DECISION" ]; then STRATEGY=$(echo "$DECISION" | jq -r '.strategy // "BALANCE"' 2>/dev/null) SOURCE=$(echo "$DECISION" | jq -r '.source // "wikipedia"' 2>/dev/null) TOPIC=$(echo "$DECISION" | jq -r '.topic // "knowledge"' 2>/dev/null) FAMILY=$(echo "$DECISION" | jq -r '.family // "epona"' 2>/dev/null) IMPORTANCE=$(echo "$DECISION" | jq -r '.importance // 0.8' 2>/dev/null) CONTENT=$(echo "$DECISION" | jq -r '.content // ""' 2>/dev/null) echo "[SEFERIM-AUTO] Strategy: $STRATEGY | Source: $SOURCE | Topic: $TOPIC" >> "$LOG" if [ -n "$CONTENT" ] && [ ${#CONTENT} -gt 30 ] && [ "$CONTENT" != "null" ]; then persist_learning "[$FAMILY:$SOURCE] $TOPIC: $CONTENT" "$IMPORTANCE" echo "[SEFERIM-AUTO] Learned from $SOURCE ($TOPIC): ${CONTENT:0:80}..." >> "$LOG" fi fi # ========================================================================== # SECONDARY AUTONOMOUS DECISION # ========================================================================== DECISION2=$(bash "$AUTONOMOUS_LEARNER" decide 2>/dev/null) if [ -n "$DECISION2" ]; then SOURCE2=$(echo "$DECISION2" | jq -r '.source // "arxiv"' 2>/dev/null) TOPIC2=$(echo "$DECISION2" | jq -r '.topic // "science"' 2>/dev/null) FAMILY2=$(echo "$DECISION2" | jq -r '.family // "mnemosyne"' 2>/dev/null) IMPORTANCE2=$(echo "$DECISION2" | jq -r '.importance // 0.85' 2>/dev/null) CONTENT2=$(echo "$DECISION2" | jq -r '.content // ""' 2>/dev/null) if [ -n "$CONTENT2" ] && [ ${#CONTENT2} -gt 30 ] && [ "$CONTENT2" != "null" ]; then persist_learning "[$FAMILY2:$SOURCE2] $TOPIC2: $CONTENT2" "$IMPORTANCE2" echo "[SEFERIM-AUTO] Learned from $SOURCE2 ($TOPIC2): ${CONTENT2:0:80}..." >> "$LOG" fi fi # ========================================================================== # HACKERNEWS: Tech news # ========================================================================== HN_ID=$(curl -s --max-time 5 "https://hacker-news.firebaseio.com/v0/topstories.json" 2>/dev/null | jq -r ".[$((RANDOM % 30))]" 2>/dev/null) if [ -n "$HN_ID" ] && [ "$HN_ID" != "null" ]; then HN_DATA=$(curl -s --max-time 5 "https://hacker-news.firebaseio.com/v0/item/$HN_ID.json" 2>/dev/null) HN_TITLE=$(echo "$HN_DATA" | jq -r '.title // empty' 2>/dev/null) if [ -n "$HN_TITLE" ]; then persist_learning "[hermes:hackernews] $HN_TITLE" 0.8 echo "[SEFERIM-AUTO] HackerNews: $HN_TITLE" >> "$LOG" fi fi # Status every 10 cycles if [ $((cycle % 10)) -eq 0 ]; then echo "[SEFERIM-AUTO] Cycle $cycle complete - autonomous learning active" >> "$LOG" fi echo "[SEFERIM-AUTO] Cycle $cycle complete" >> "$LOG" sleep 45 done