文件预览

organize.sh

查看 Memory Manager 技能包中的文件内容。

文件内容

organize.sh

#!/bin/bash
# Organize - Migrate flat files to semantic/procedural/episodic structure

WORKSPACE="${OPENCLAW_WORKSPACE:-$HOME/.openclaw/workspace}"
MEMORY_DIR="$WORKSPACE/memory"
STATE_FILE="$MEMORY_DIR/.memory-manager-state.json"

echo "🗂️  Memory Organizer"
echo ""

# Initialize if needed
if [ ! -f "$STATE_FILE" ]; then
  ~/.openclaw/skills/memory-manager/init.sh
fi

# Find flat files (not in subdirectories)
FLAT_FILES=$(find "$MEMORY_DIR" -maxdepth 1 -name "*.md" -type f 2>/dev/null)

if [ -z "$FLAT_FILES" ]; then
  echo "✅ No flat files to organize."
  echo ""
  echo "Memory structure already clean:"
  echo "  - Episodic: $(ls "$MEMORY_DIR/episodic"/*.md 2>/dev/null | wc -l | tr -d ' ') entries"
  echo "  - Semantic: $(ls "$MEMORY_DIR/semantic"/*.md 2>/dev/null | wc -l | tr -d ' ') topics"
  echo "  - Procedural: $(ls "$MEMORY_DIR/procedural"/*.md 2>/dev/null | wc -l | tr -d ' ') workflows"
  exit 0
fi

echo "Found $(echo "$FLAT_FILES" | wc -l | tr -d ' ') flat files to organize."
echo ""

# Backup first
mkdir -p "$MEMORY_DIR/legacy"
echo "Creating backup in memory/legacy/..."

for file in $FLAT_FILES; do
  filename=$(basename "$file")
  
  # Skip special files
  if [[ "$filename" == "MEMORY.md" ]] || [[ "$filename" == "README.md" ]]; then
    continue
  fi
  
  # Check if it's a date-based file (episodic)
  if [[ "$filename" =~ ^[0-9]{4}-[0-9]{2}-[0-9]{2}\.md$ ]]; then
    # Move to episodic
    mv "$file" "$MEMORY_DIR/episodic/"
    echo "  → Episodic: $filename"
  else
    # Copy to legacy for manual review
    cp "$file" "$MEMORY_DIR/legacy/"
    echo "  → Legacy (review): $filename"
    echo "     Manual categorization needed. Use:"
    echo "     categorize.sh semantic|procedural|episodic \"$filename\""
    echo ""
  fi
done

# Update state
timestamp=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
if command -v jq >/dev/null 2>&1; then
  jq --arg ts "$timestamp" '.last_organize = $ts' "$STATE_FILE" > "$STATE_FILE.tmp" && mv "$STATE_FILE.tmp" "$STATE_FILE"
fi

echo ""
echo "✅ Organization complete!"
echo ""
echo "Next steps:"
echo "  1. Review files in memory/legacy/"
echo "  2. Use categorize.sh to move them properly"
echo "  3. Run detect.sh to check new usage"
echo ""
echo "Example categorization:"
echo "  ~/.openclaw/skills/memory-manager/categorize.sh semantic moltbook memory/legacy/moltbook-notes.md"