Install any skill in seconds. Free to start, no credit card required.
Get Started Free →**Purpose**: Provide persistent context across NetClaw sessions through structured facts, semantic search, and entity relationships.
.claude/skills/automateyournetwork-skill-persistent-memory/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 129% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 351% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 47% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 18% | 0% |
| case-18 | ✗→✓ | ▲ Improved | -21% | 0% |
Purpose: Provide persistent context across NetClaw sessions through structured facts, semantic search, and entity relationships.
The Memory skill enables NetClaw to remember information about your network across sessions. Instead of re-explaining your topology, device names, and past issues every time, NetClaw builds a memory that grows smarter with each interaction.
> Memory vs. the RAG Knowledge Base: Memory (memory_* tools, ~/.openclaw/memory/) holds NetClaw's OWN experience — facts, session summaries, decisions, entity relationships. Document content lives in the separate RAG knowledge base (rag skill, rag_* tools, ~/.openclaw/rag/). "Remember this PDF / URL / standard" routes to rag_ingest, not memory_record_fact; "what does the vendor guide say" routes to rag_search, not memory_recall. Operational facts ("PE2 is in maintenance until Friday"), past-session questions, and decision history stay here. Neither store writes into the other.
Store precise facts about network entities with temporal validity:
Search past sessions using natural language:
Record operational decisions with rationale:
Track network topology and dependencies:
| Tool | Purpose | |------|---------| | memory_record_fact | Store a fact with temporal validity | | memory_get_facts | Query current facts for an entity | | memory_invalidate | Mark a fact as no longer current | | memory_timeline | Query historical facts | | memory_store_session | Store session summary for semantic search | | memory_recall | Semantic search across past sessions | | memory_record_decision | Log a decision with rationale | | memory_get_decisions | Query past decisions | | memory_link_entities | Create relationship between entities | | memory_query_graph | Query entity relationships |
memory_record_fact entity="PE2" key="bgp_state" value="established" metadata={"peer": "10.0.0.1"}memory_get_facts entity="PE2"memory_recall query="BGP flapping problem" top_k=5memory_record_decision context="PE2 BGP session flapping" decision="Increased hold timer to 180s" rationale="Reduce flap frequency" entities=["PE2", "RR1"] cr_number="CHG0001234"memory_link_entities subject="PE2" predicate="peers_with" object="RR1"All memory data persists in ~/.openclaw/memory/:
memory.db - SQLite database (facts, decisions, links)chroma/ - ChromaDB vector store (session embeddings)Data is automatically pruned after 1 year.
All memory write operations log to GAIT for audit trail.
Memory enables pattern detection in health checks: > "3rd BGP flap on PE2 this week - want me to investigate?"
Memory directly fulfills Principle #9: "Get smarter every session."
./scripts/memory-enable.sh)bashuvx --from netclaw-memory-mcp memory-mcp-server --help
bashls -la ~/.openclaw/memory/
bashsqlite3 ~/.openclaw/memory/memory.db "SELECT COUNT(*) FROM facts;"
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 7,796 | 11,145 | +43% | 1 | 1 | 0% | 1,176 | 2,690 | +129% | 0 | 0 | — |
case-02 | fail→fail | 6,548 | 12,639 | +93% | 1 | 1 | 0% | 1,226 | 2,206 | +80% | 0 | 0 | — |
case-03 | fail→fail | 13,996 | 6,540 | -53% | 1 | 1 | 0% | 2,003 | 1,393 | -30% | 0 | 0 | — |
case-04 | fail→pass | 3,699 | 14,066 | +280% | 1 | 1 | 0% | 570 | 2,569 | +351% | 0 | 0 | — |
case-05 | fail→pass | 6,344 | 4,659 | -27% | 1 | 1 | 0% | 981 | 1,445 | +47% | 0 | 0 | — |
case-06 | fail→pass | 15,670 | 2,867 | -82% | 1 | 1 | 0% | 1,292 | 1,526 | +18% | 0 | 0 | — |
case-07 | fail→fail | 4,993 | 38,625 | +674% | 1 | 1 | 0% | 772 | 1,590 | +106% | 0 | 0 | — |
case-08 | fail→fail | 9,861 | 5,437 | -45% | 1 | 1 | 0% | 1,649 | 1,405 | -15% | 0 | 0 | — |
case-09 | fail→fail | 4,806 | 8,220 | +71% | 1 | 1 | 0% | 861 | 1,557 | +81% | 0 | 0 | — |
case-10 | fail→fail | 7,122 | 4,498 | -37% | 1 | 1 | 0% | 1,087 | 1,302 | +20% | 0 | 0 | — |
case-11 | fail→fail | 5,699 | 8,369 | +47% | 1 | 1 | 0% | 987 | 1,691 | +71% | 0 | 0 | — |
case-12 | fail→fail | 3,780 | 7,012 | +86% | 1 | 1 | 0% | 566 | 1,451 | +156% | 0 | 0 | — |
case-13 | fail→fail | 19,308 | 6,610 | -66% | 1 | 1 | 0% | 2,273 | 2,160 | -5% | 0 | 0 | — |
case-14 | pass→pass | 12,456 | 10,954 | -12% | 1 | 1 | 0% | 2,165 | 2,944 | +36% | 0 | 0 | — |
case-15 | pass→fail | 3,147 | 5,148 | +64% | 1 | 1 | 0% | 569 | 1,828 | +221% | 0 | 0 | — |
case-16 | pass→pass | 9,451 | 8,072 | -15% | 1 | 1 | 0% | 1,339 | 2,471 | +85% | 0 | 0 | — |
case-17 | fail→fail | 13,074 | 2,459 | -81% | 1 | 1 | 0% | 2,057 | 1,330 | -35% | 0 | 0 | — |
case-18 | fail→pass | 13,202 | 3,727 | -72% | 1 | 1 | 0% | 2,148 | 1,690 | -21% | 0 | 0 | — |
case-19 | pass→pass | 5,332 | 2,690 | -50% | 1 | 1 | 0% | 903 | 1,464 | +62% | 0 | 0 | — |
case-20 | fail→fail | 6,643 | 38,229 | +475% | 1 | 1 | 0% | 923 | 1,809 | +96% | 0 | 0 | — |
case-21 | fail→pass | 6,442 | 1,437 | -78% | 1 | 1 | 0% | 1,108 | 1,248 | +13% | 0 | 0 | — |
case-22 | fail→fail | 7,536 | 8,448 | +12% | 1 | 1 | 0% | 1,157 | 1,590 | +37% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 13 counted toward the lift figure. The other 9 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +23 percentage points is the difference between those two pass rates over the 13 comparable cases. 3 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.