Synthèse automatique
Fournit un cache clé-valeur limité par TTL et propre à chaque agent via slm_cache_get et slm_cache_set, afin de réutiliser des lectures de fichiers, résultats de recherche ou sorties d’outils répétés au cours d’une session.
Points forts
- Comportement fail-open : toute erreur ou absence renvoie un résultat assimilable à un miss, ce qui permet toujours de revenir à l’opération réelle.
- Espace de noms propre à l’agent avec clés hachées, évitant les collisions entre agents tout en gardant une clé lisible pour l’appelant.
- Flux cache-aside explicite avec TTL configurable et préfixes de clés recommandés pour fichiers, recherches, sorties d’outils et URL.
- Limites de taille explicites (valeurs de 1 Mo, clés de 512 caractères) qui rendent les contraintes de stockage prévisibles.
Limites
- Ne met en cache que les valeurs que l’agent route explicitement via SLM ; il ne peut pas cacher les tours de conversation Claude ni le contexte non routé.
- L’extrait de SKILL.md s’arrête au milieu de la section « Cache when: », donc les conseils sur les cas où le cache est rentable sont incomplets.
- Nécessite la disponibilité des outils/MCP SLM ; sans eux, chaque lecture se comporte comme un miss.
À utiliser lorsqu’un même fichier, résultat de requête ou sortie d’outil coûteuse sera lu plusieurs fois pendant une session d’agent et que l’économie de tokens ou de temps compte.
À éviter pour des données qui changent fréquemment, des lectures uniques ou du contexte conversationnel qui ne peut pas être associé à une clé stable.
Analyse de sécurité
SûrThe skill only documents two KV cache MCP tools plus a narrowly scoped `slm: *` CLI fallback; there is no exfiltration, network callout, obfuscated payload, or safety-disabling behavior, and it explicitly tells the agent not to cache secrets or block on cache failures. The only mild concern is the tenant-wide `slm cache clear` fallback command, which is destructive to cache state but not to user data and is not presented as an automatic action.
- •The documented CLI fallback includes `slm cache clear`, which deletes every cache entry for the tenant; the skill presents it as a manual administrative command rather than an automatic step, but an agent could run it casually and drop all cached state. Low severity since only cache data is lost.
- •The skill encourages persisting file contents and tool output via `slm_cache_set`; it explicitly warns against caching secrets/credentials/tokens, which mitigates the main data-retention concern, but cache entries are still a second copy of whatever is cached for up to the TTL.
Exemples
Read /repo/src/config.py, store it in the cache with key file:/repo/src/config.py for one hour, and whenever I ask about that config for the rest of the session, check the cache first instead of re-reading the file.Run the build_code_graph tool for /repo once, cache the result under tool:build_code_graph:/repo for the session, and reuse the cached value on later questions rather than regenerating the graph.Before searching the repo again for session_init_context, call slm_cache_get with key search:recall:session_init_context; if it is a miss, run the search and store the result with slm_cache_set.name: slm-cache description: KV cache for repeated reads — call slm_cache_get(key) first; on a miss do the expensive operation then slm_cache_set(key, value, ttl_seconds) to store it; on a hit use the returned value directly; always fail-open (hit:false on any error, never raises); saves tokens when the same file, query result, or tool output is read more than once in a session. when_to_use: "cache file, avoid re-reading, repeated read, cache result, cache tool output, save re-read, reuse across session, cache check, cache hit, cache miss" allowed-tools: slm_cache_set, slm_cache_get, Bash(slm:*)
slm-cache — KV Cache for Repeated Reads (Surface B)
Purpose
When the same file, query result, or expensive tool output is needed more than once in a session, fetching it again wastes tokens and time. slm_cache_set stores a result under a stable key; slm_cache_get retrieves it on subsequent calls. The cache is agent-scoped (automatically namespaced by tenant/agent ID), TTL-bounded, and fail-open.
This is an agent-routed cache — it caches results the agent explicitly routes through SLM. It cannot cache Claude conversation turns.
Tool: slm_cache_set
slm_cache_set(
key: str, # required — cache key (max 512 chars)
value: str, # required — value to store (max 1 MB)
ttl_seconds: int = 86400, # time-to-live in seconds (default 24 h)
) -> dict
Return dict
| Key | Type | Meaning |
|-----|------|---------|
| ok | bool | True on success; False on validation error or internal error |
| stored | bool | True when the value was written to the cache |
| note | str | None | Error detail or None on success |
Keys are SHA-256-hashed internally per agent so they do not collide across agents. The raw key string you supply is the only handle you need. The namespace is the calling agent (SLM_AGENT_ID, or the /mcp/<agent> path), not the memory profile, so switching profiles does not give you a fresh cache. A caller on another computer gets its own namespace, keyed by its access key, and can never see a local agent's entries.
Tool: slm_cache_get
slm_cache_get(
key: str, # required — same key used in slm_cache_set
) -> dict
Return dict
| Key | Type | Meaning |
|-----|------|---------|
| ok | bool | True on clean execution (including miss); False on internal error |
| hit | bool | True when the key exists and has not expired |
| value | str | None | The stored value on a hit; None on miss |
| note | str | None | Error detail or None |
value is the string you stored. A miss returns {"ok": true, "hit": false, "value": null, "note": null}. ok: false means something went wrong internally but the miss behaviour is the same — treat both as a cache miss and proceed with the real fetch.
Standard Pattern: Cache-Aside
Always check the cache first, then fill on miss:
# 1. Check cache
cached = await slm_cache_get(key="file:/absolute/path/to/config.json")
if cached["hit"]:
content = cached["value"]
else:
# 2. Expensive operation (file read, search, API call)
content = read_file("/absolute/path/to/config.json")
# 3. Store for the rest of the session
await slm_cache_set(
key="file:/absolute/path/to/config.json",
value=content,
ttl_seconds=3600, # 1 h — adjust to data volatility
)
# 4. Use content
Key Naming Convention
Use a stable, human-readable prefix so keys are recognisable in stats and won't collide accidentally:
| Content type | Suggested prefix | Example |
|---|---|---|
| File read | file: | file:/repo/src/config.py |
| Search result | search: | search:recall:session_init_context |
| Tool output | tool: | tool:build_code_graph:/repo |
| External fetch | url: | url:https://api.example.com/v1/data |
Key length cap: 512 characters. Keys longer than that are rejected (ok: false).
When Caching Pays Off
Cache when:
- You will read the same file more than once in a session.
- A search or recall result is reused across multiple reasoning steps.
- An expensive MCP tool call (graph build, semantic search) produces output that is stable for the session duration.
Do NOT cache:
- Volatile data (live API responses that change minute-to-minute, current timestamps, streaming output).
- Secrets, credentials, tokens, or
ccr_idvalues (CCR already handles its own storage). - Data that must be fresh for correctness — a stale cache is worse than a cache miss.
- Intermediate scratchpad text you will discard.
Fail-Open Guarantee
Neither tool raises an exception. On any internal error:
slm_cache_getreturns{"ok": false, "hit": false, "value": null, ...}— treat as a miss and proceed with the real fetch.slm_cache_setreturns{"ok": false, "stored": false, ...}— log the note if useful, but continue; the value is still available in memory this step.
Never block a task on a cache failure.
TTL Guidance
| Data type | Suggested TTL | |---|---| | Static config / generated file | 86400 s (24 h — the default) | | Session-specific tool output | 3600 s (1 h) | | Rapidly changing API data | Do not cache, or 60–300 s |
Set ttl_seconds to match how long the data remains valid. After expiry slm_cache_get returns a miss automatically.
Secondary CLI (fallback when MCP is unavailable)
Prefer the MCP tools above. If you must use the command line:
slm cache status [--json] [--tenant default]
slm cache clear [--json] [--tenant default]
slm cache invalidate --tag <tag> [--json] [--tenant default]
slm cache ttl --set <seconds> [--semantic <seconds>] [--json] [--tenant default]
slm cache semantic on|off [--json] [--tenant default]
These subcommands control daemon-level cache settings and bulk removal. They do not read or write individual entries — use the MCP tools for that. Entries written by slm_cache_set carry the tag mcp-kv, so slm cache invalidate --tag mcp-kv removes them, and slm cache clear deletes every entry for the tenant.
Related skills
slm-compress— for large content reduction; cache and compress work togetherslm-status— viewcache_kv_hits/cache_kv_missescounters (daemon-persisted totals) fromslm_optimize_stats
SuperLocalMemory v4.2.10 · Qualixar · AGPL-3.0-or-later
Du fichier au premier essai
Le téléchargement contient exactement le contenu affiché sur cette fiche. Cette copie peut différer de la dernière version du dépôt source.
Consulter la source et ses fichiers annexesCe téléchargement contient uniquement SKILL.md. Les scripts, références, modèles et dépendances éventuels ne sont pas inclus. Récupérez les fichiers nécessaires depuis la source en conservant leur arborescence avant de poursuivre.
1. Télécharger le fichier
Télécharger SKILL.mdDepuis la racine d’un projet de test, enregistrez le fichier sous .skill-downloads/kv-cache-for-repeated-reads-mvda87mc/SKILL.md, ou utilisez la commande suivante. Ce dossier sert à examiner la skill avant son installation.
Commande pour macOS/Linux ou WSL : un shell POSIX et curl sont nécessaires. Sous Windows sans WSL, utilisez le bouton de téléchargement et créez le dossier manuellement.
mkdir -p '.skill-downloads/kv-cache-for-repeated-reads-mvda87mc' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/kv-cache-for-repeated-reads-mvda87mc/download' --output '.skill-downloads/kv-cache-for-repeated-reads-mvda87mc/SKILL.md.part' && mv '.skill-downloads/kv-cache-for-repeated-reads-mvda87mc/SKILL.md.part' '.skill-downloads/kv-cache-for-repeated-reads-mvda87mc/SKILL.md'2. Vérifier les prérequis
Lisez SKILL.md avant de l’utiliser. Si le fichier cite des scripts ou services externes, examinez-les et préparez les accès nécessaires dans votre environnement de test.
Outils déclarés par l’auteur (à vérifier dans votre agent) : slm_cache_set, slm_cache_get, Bash(slm:*)
Aucune section de prérequis reconnue dans ce fichier. Cela ne signifie pas qu’il est autonome : les bibliothèques, outils et accès peuvent être cités ailleurs dans le contenu ou dans le dépôt source.
Les plateformes de la fiche sont des indications du catalogue. Les chemins ci-dessous suivent la documentation des outils ; ils ne prouvent pas que cette skill y a été exécutée. Aucune version minimale de ces outils n’est attestée pour cette fiche.
3. Charger la skill
Après vérification, copiez le dossier complet dans le projet avec l’une des commandes ci-dessous, puis ouvrez une nouvelle session de l’outil. La commande s’arrête si un dossier du même nom existe déjà : comparez les fichiers avant de le remplacer.
Claude Code
test -f '.skill-downloads/kv-cache-for-repeated-reads-mvda87mc/SKILL.md' && test -s '.skill-downloads/kv-cache-for-repeated-reads-mvda87mc/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/slm-cache' && cp -R '.skill-downloads/kv-cache-for-repeated-reads-mvda87mc' '.claude/skills/slm-cache'OpenSkills
OpenSkills doit déjà être installé. La procédure locale install/read est contrôlée avec OpenSkills 1.5.0, qui exige Node.js ≥ 20.6.0. Aucun slug du catalogue n’est résolu automatiquement.
Installation officielle d’OpenSkillsopenskills install './.skill-downloads/kv-cache-for-repeated-reads-mvda87mc'openskills read 'kv-cache-for-repeated-reads-mvda87mc'La lecture doit afficher le contenu du fichier installé et son dossier de base. Elle ne lance ni la skill ni ses dépendances.
Pour un agent qui lit AGENTS.md, synchronisez ensuite l’index. Cette commande modifie AGENTS.md : relisez le diff avant de l’utiliser.
openskills syncMode manuel ou autre outil : joignez SKILL.md à une conversation, ou ouvrez-le dans un agent capable de lire les fichiers. Ajoutez les ressources annexes nécessaires. Il n’existe pas de dossier universel reconnu par tous les outils.
4. Faire un premier essai
Utilisez une entrée courte et fictive : un endpoint d’API, un petit document ou un brief d’interface. Dans une nouvelle conversation, joignez le fichier ou donnez son chemin à l’agent, puis adaptez cette demande :
Lis .skill-downloads/kv-cache-for-repeated-reads-mvda87mc/SKILL.md et applique ses instructions à cet exemple : [décrire une entrée de test]. Indique les fichiers, dépendances ou accès qui manquent. Produis le résultat demandé par la skill sans inventer de données ni exécuter de script non examiné.Résultat attendu : une sortie correspondant aux instructions de la skill, ou une liste précise des prérequis manquants. Une simple confirmation de lecture ne valide pas le premier usage. Si une ressource externe est indisponible, ce parcours reste à tester.
Lecteur PDF
Productivite
Lit et extrait le texte de fichiers PDF (rapports, contrats, tableurs). Gère les fichiers locaux, les URL et les pièces jointes WhatsApp. Utilisez-le dès qu'un contenu PDF est nécessaire, même sans demande explicite.
Workflows de messagerie Discord
Productivite
Utilisez l'outil message pour envoyer, modifier et modérer des messages Discord avec des composants interactifs.
Aperçu interactif des verdicts
Productivite
Générer un aperçu HTML interactif des verdicts (garder/supprimer) pour la revue par le mainteneur, puis traiter le JSON de retour.