#!/bin/bash
# Travel Agent 记忆压缩脚本 - 每日凌晨执行
# 功能：将每日日志中的重要信息压缩到长期记忆

set -e

# 配置
WORKSPACE="/root/.openclaw/workspace/travel"
MEMORY_DIR="$WORKSPACE/memory"
LONG_TERM_MEMORY="$WORKSPACE/MEMORY.md"
LOG_FILE="$MEMORY_DIR/memory_compression.log"

# 日期
TODAY=$(date +%Y-%m-%d)
YESTERDAY=$(date -d "yesterday" +%Y-%m-%d)
YESTERDAY_LOG="$MEMORY_DIR/$YESTERDAY.md"

# 日志函数
log() {
    echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" >> "$LOG_FILE"
}

log "========== Travel Agent 记忆压缩开始 =========="

# 1. 检查昨天的日志是否存在
if [ ! -f "$YESTERDAY_LOG" ]; then
    log "⚠️ 昨天的日志文件不存在: $YESTERDAY_LOG"
    log "跳过记忆压缩"
    exit 0
fi

log "✅ 找到昨天的日志: $YESTERDAY_LOG"

# 2. 提取重要内容
IMPORTANT_CONTENT=$(grep -A 50 "^## 重要" "$YESTERDAY_LOG" 2>/dev/null || echo "")

if [ -z "$IMPORTANT_CONTENT" ]; then
    log "ℹ️ 昨天没有标记为重要的内容"
else
    log "✅ 找到重要内容，准备压缩"
fi

# 3. 提取经验教训
LESSONS=$(grep -A 30 "^## 经验教训" "$YESTERDAY_LOG" 2>/dev/null || echo "")

if [ -n "$LESSONS" ]; then
    log "✅ 找到经验教训"
fi

# 4. 更新时间戳（无论是否有内容都更新）
log "📝 更新时间戳..."
if [ -f "$LONG_TERM_MEMORY" ]; then
    CURRENT_TIME=$(date '+%Y-%m-%d %H:%M')
    sed -i "s/最后压缩：.*/最后压缩：$CURRENT_TIME/" "$LONG_TERM_MEMORY" 2>/dev/null || true
    log "✅ 时间戳已更新: $CURRENT_TIME"
fi

# 5. 更新长期记忆
if [ -n "$IMPORTANT_CONTENT" ] || [ -n "$LESSONS" ]; then
    log "📝 更新长期记忆..."

    # 备份
    if [ -f "$LONG_TERM_MEMORY" ]; then
        cp "$LONG_TERM_MEMORY" "$LONG_TERM_MEMORY.bak"
    fi

        # 添加每日摘要
        echo "" >> "$LONG_TERM_MEMORY"
        echo "---" >> "$LONG_TERM_MEMORY"
        echo "" >> "$LONG_TERM_MEMORY"
        echo "## 📅 $YESTERDAY 摘要" >> "$LONG_TERM_MEMORY"
        echo "" >> "$LONG_TERM_MEMORY"

        if [ -n "$IMPORTANT_CONTENT" ]; then
            echo "$IMPORTANT_CONTENT" >> "$LONG_TERM_MEMORY"
            echo "" >> "$LONG_TERM_MEMORY"
        fi

        if [ -n "$LESSONS" ]; then
            echo "$LESSONS" >> "$LONG_TERM_MEMORY"
            echo "" >> "$LONG_TERM_MEMORY"
        fi

        log "✅ 长期记忆已更新"
fi

# 5. 清理超过7天的旧日志
log "🧹 清理旧日志..."
find "$MEMORY_DIR" -name "*.md" -mtime +7 -type f ! -name "MEMORY.md" -exec rm {} \; 2>/dev/null || true
log "✅ 旧日志清理完成"

# 6. 完成
log "========== Travel Agent 记忆压缩完成 =========="
log ""
