Update git commit capture with better error handling, enhance user prompt hook, extend config parser capabilities, and refine skill docs for dream, health, mcp, pin, and stats skills.
97 lines
3.3 KiB
Markdown
97 lines
3.3 KiB
Markdown
---
|
||
name: mem0-stats
|
||
description: >
|
||
Show memory statistics for the current session and project lifetime.
|
||
Combines local session counters with API-fetched totals.
|
||
TRIGGER: user runs /mem0:stats, or asks "how many memories", "mem0 stats",
|
||
"memory usage", "show memory count".
|
||
---
|
||
|
||
# Mem0 Stats
|
||
|
||
Show session and lifetime memory statistics.
|
||
|
||
## Execution
|
||
|
||
### Step 1: Gather session stats
|
||
|
||
Run the session stats reporter:
|
||
|
||
```bash
|
||
SCRIPT_DIR="${CLAUDE_PLUGIN_ROOT:-${CODEX_PLUGIN_ROOT:-${CURSOR_PLUGIN_ROOT:-}}}/scripts"
|
||
python3 "$SCRIPT_DIR/session_stats.py" peek 2>/dev/null || echo "{}"
|
||
```
|
||
|
||
The `peek` command returns JSON without clearing the stats file (unlike `report`).
|
||
|
||
If the script returns empty or errors, note "No session data available" and continue.
|
||
|
||
### Step 2: Fetch lifetime stats from API
|
||
|
||
Call `get_memories` with:
|
||
- `user_id=<active_user_id>`
|
||
- `app_id=<active_project_id>`
|
||
- `page_size=100`
|
||
|
||
Count the returned memories. Group them by:
|
||
1. `categories[0]` (platform-assigned) — primary grouping
|
||
2. `metadata.type` (agent-assigned) — secondary if no categories
|
||
3. `created_at` date — for age analysis
|
||
|
||
Also run a `search_memories` call with `query="project"`, `limit=1` to measure round-trip latency (time the call).
|
||
|
||
### Step 3: Display
|
||
|
||
Print a compact dashboard with an ASCII histogram for category distribution:
|
||
|
||
```
|
||
## mem0 Stats
|
||
|
||
### This Session
|
||
Memories written: <N>
|
||
Searches run: <N>
|
||
Categories touched: <list>
|
||
|
||
### Project Lifetime (<project_id>)
|
||
Total memories: <N>
|
||
|
||
By category:
|
||
decision ████████████████ 24
|
||
convention ██████████░░░░░░ 15
|
||
anti_pattern ████░░░░░░░░░░░░ 6
|
||
task_learning ███░░░░░░░░░░░░░ 5
|
||
user_preference ██░░░░░░░░░░░░░░ 3
|
||
session_state █░░░░░░░░░░░░░░░ 2
|
||
|
||
By age:
|
||
< 7 days ████████████████ 5
|
||
7–30 days ██████████░░░░░░ 12
|
||
30–90 days ████░░░░░░░░░░░░ 10
|
||
> 90 days ██░░░░░░░░░░░░░░ 8
|
||
|
||
By access count:
|
||
Never accessed ████████████████ 18
|
||
1–5 accesses ████████░░░░░░░░ 10
|
||
6–20 accesses ████░░░░░░░░░░░░ 4
|
||
20+ accesses █░░░░░░░░░░░░░░░ 3
|
||
|
||
Oldest memory: <date>
|
||
Newest memory: <date>
|
||
|
||
### Health
|
||
API latency: <N>ms
|
||
User: <user_id>
|
||
Project: <project_id>
|
||
Branch: <branch>
|
||
```
|
||
|
||
**Histogram rules:**
|
||
- Max bar width: 16 characters. Scale all bars relative to the highest count.
|
||
- Use `█` for filled and `░` for empty. Right-align the count number.
|
||
- Sort categories by count descending. Omit categories with 0 memories.
|
||
- If only 1-2 categories exist, still show the histogram — it provides visual context.
|
||
- **Age buckets:** Compute from `created_at`. Buckets: <7d, 7–30d, 30–90d, >90d.
|
||
- **Access count buckets:** Read `metadata.access_count` (default 0 if absent). Buckets: 0, 1–5, 6–20, 20+.
|
||
|
||
Skip any section with zero data.
|