Initial commit with translated description
This commit is contained in:
109
stats.sh
Normal file
109
stats.sh
Normal file
@@ -0,0 +1,109 @@
|
||||
#!/bin/bash
|
||||
# Memory Stats - Professional memory architecture statistics
|
||||
|
||||
WORKSPACE="${OPENCLAW_WORKSPACE:-$HOME/.openclaw/workspace}"
|
||||
MEMORY_DIR="$WORKSPACE/memory"
|
||||
STATE_FILE="$MEMORY_DIR/.memory-manager-state.json"
|
||||
|
||||
echo "📊 Memory Manager - Statistics"
|
||||
echo ""
|
||||
|
||||
# Count files and sizes by type
|
||||
count_stats() {
|
||||
local dir="$1"
|
||||
local count=$(ls "$dir"/*.md 2>/dev/null | wc -l | tr -d ' ')
|
||||
local size=$(du -sh "$dir" 2>/dev/null | cut -f1)
|
||||
echo "$count|$size"
|
||||
}
|
||||
|
||||
episodic_stats=$(count_stats "$MEMORY_DIR/episodic")
|
||||
semantic_stats=$(count_stats "$MEMORY_DIR/semantic")
|
||||
procedural_stats=$(count_stats "$MEMORY_DIR/procedural")
|
||||
snapshots_stats=$(count_stats "$MEMORY_DIR/snapshots")
|
||||
|
||||
episodic_count=$(echo "$episodic_stats" | cut -d'|' -f1)
|
||||
episodic_size=$(echo "$episodic_stats" | cut -d'|' -f2)
|
||||
|
||||
semantic_count=$(echo "$semantic_stats" | cut -d'|' -f1)
|
||||
semantic_size=$(echo "$semantic_stats" | cut -d'|' -f2)
|
||||
|
||||
procedural_count=$(echo "$procedural_stats" | cut -d'|' -f1)
|
||||
procedural_size=$(echo "$procedural_stats" | cut -d'|' -f2)
|
||||
|
||||
snapshots_count=$(echo "$snapshots_stats" | cut -d'|' -f1)
|
||||
snapshots_size=$(echo "$snapshots_stats" | cut -d'|' -f2)
|
||||
|
||||
# Display breakdown
|
||||
echo "## Memory Architecture Breakdown"
|
||||
echo ""
|
||||
echo "📅 Episodic Memory (What Happened):"
|
||||
echo " Files: $episodic_count"
|
||||
echo " Size: ${episodic_size:-0B}"
|
||||
echo ""
|
||||
echo "🧠 Semantic Memory (What You Know):"
|
||||
echo " Files: $semantic_count"
|
||||
echo " Size: ${semantic_size:-0B}"
|
||||
echo ""
|
||||
echo "⚙️ Procedural Memory (How To):"
|
||||
echo " Files: $procedural_count"
|
||||
echo " Size: ${procedural_size:-0B}"
|
||||
echo ""
|
||||
echo "💾 Snapshots (Backups):"
|
||||
echo " Files: $snapshots_count"
|
||||
echo " Size: ${snapshots_size:-0B}"
|
||||
echo ""
|
||||
|
||||
# Total
|
||||
total_files=$((episodic_count + semantic_count + procedural_count))
|
||||
total_size=$(du -sh "$MEMORY_DIR" 2>/dev/null | cut -f1)
|
||||
|
||||
echo "📦 Total:"
|
||||
echo " Files: $total_files"
|
||||
echo " Size: ${total_size:-0B}"
|
||||
echo ""
|
||||
|
||||
# Compression events
|
||||
if [ -f "$STATE_FILE" ] && command -v jq >/dev/null 2>&1; then
|
||||
warnings=$(jq -r '.warnings // 0' "$STATE_FILE")
|
||||
last_check=$(jq -r '.last_check // "never"' "$STATE_FILE")
|
||||
last_snapshot=$(jq -r '.last_snapshot // "never"' "$STATE_FILE")
|
||||
last_organize=$(jq -r '.last_organize // "never"' "$STATE_FILE")
|
||||
|
||||
echo "## Activity"
|
||||
echo ""
|
||||
echo "Compression events: $warnings"
|
||||
echo "Last check: $last_check"
|
||||
echo "Last snapshot: $last_snapshot"
|
||||
echo "Last organize: $last_organize"
|
||||
echo ""
|
||||
fi
|
||||
|
||||
# Growth rate (episodic entries in last 7 days)
|
||||
recent_episodic=$(find "$MEMORY_DIR/episodic" -name "*.md" -mtime -7 2>/dev/null | wc -l | tr -d ' ')
|
||||
echo "## Growth"
|
||||
echo ""
|
||||
echo "Episodic entries (last 7 days): $recent_episodic"
|
||||
echo "Average: $((recent_episodic / 7)) entries/day"
|
||||
echo ""
|
||||
|
||||
# Health check
|
||||
total_chars=0
|
||||
for dir in episodic semantic procedural; do
|
||||
chars=$(find "$MEMORY_DIR/$dir" -name "*.md" -exec wc -c {} + 2>/dev/null | tail -1 | awk '{print $1}' || echo 0)
|
||||
total_chars=$((total_chars + chars))
|
||||
done
|
||||
|
||||
usage_pct=$((total_chars * 100 / 800000))
|
||||
|
||||
echo "## Memory Health"
|
||||
echo ""
|
||||
if [ "$usage_pct" -ge 85 ]; then
|
||||
echo "Status: 🚨 CRITICAL (${usage_pct}%)"
|
||||
echo "Action: Run organize.sh and snapshot.sh NOW"
|
||||
elif [ "$usage_pct" -ge 70 ]; then
|
||||
echo "Status: ⚠️ WARNING (${usage_pct}%)"
|
||||
echo "Action: Consider running organize.sh"
|
||||
else
|
||||
echo "Status: ✅ Healthy (${usage_pct}%)"
|
||||
echo "Action: None needed"
|
||||
fi
|
||||
Reference in New Issue
Block a user