Releases: PaulArgoud/mxchat-promptcache
Releases · PaulArgoud/mxchat-promptcache
Release list
v0.8.0 — Widget admin + stockage consolidé + tests CI
Added
- Widget de tableau de bord admin : rend les économies visibles hors WP-CLI (taux de hit + tokens économisés sur 24 h glissantes et depuis l'installation), pour les utilisateurs
manage_options. Sortie entièrement échappée. - Tests automatisés des fonctions pures (
tests/test-functions.php, sans WordPress) — seuils par modèle, détection d'endpoint, parsing d'usage, buckets/fenêtre glissante — branchés dans le CI (nouveau jobtest). Aurait attrapé la régression de seuil corrigée en 0.7.0.
Changed
- Stockage des stats consolidé dans une seule option (
mxchat_pc_store) au lieu d'un transient + une option → 1 lecture + 1 écriture par réponse au lieu de 4. reset(sans--total) conserve désormais le cumulatif.uninstall.phpnettoie la nouvelle clé + les anciennes (installs mises à jour).
Notes
- Taux de hit pondéré par les tokens → robuste aux petits appels utilitaires non cachables (pas d'exclusion heuristique fragile).
- Concurrence : compteurs « best-effort » (suffisant pour de la stat).
Voir le CHANGELOG pour le détail.
v0.7.0 — Seuils corrigés par version + Fable 5 / Mythos 5
Fixed
- Minimums de cache corrigés par version de modèle (source : docs Anthropic « prompt caching », vérifié 2026-06-09). Le plugin appliquait un seuil par famille devenu faux : Opus 4.8 = 1024 (et non 4096), Opus 4.7 = 2048, Sonnet 4.6 = 1024 (et non 2048) →
cache_controln'était pas injecté sur des préfixes pourtant cacheables (caching manqué). Opus 4.6/4.5 et Haiku 4.5 restent à 4096 ; Haiku 3.x et Mythos Preview à 2048.
Added
- Support de Claude Fable 5 et Claude Mythos 5 (
claude-fable-5/claude-mythos-5, minimum 512 tokens) et de Mythos Preview (2048). Constantes de seuil désormais par palier de tokens. uninstall.php: suppression de toutes les données persistées à la désinstallation (optionmxchat_pc_stats_total+ transients), avec prise en charge multisite. La désactivation reste sans effet de bord et préserve les stats.
Docs
readme.txtresynchronisé (figé en 0.4.0 depuis plusieurs versions) ; README et CHANGELOG à jour.
Voir le CHANGELOG pour le détail.
v0.6.0 — Fenêtre glissante réelle + corrections d'audit
Corrections issues d'une relecture du code (stats, seuils, i18n).
Changed
- Fenêtre 24 h réellement glissante. Les stats 24 h étaient un compteur dont la TTL était rafraîchie à chaque écriture → il ne se réinitialisait qu'après >24 h sans trafic (jamais sur un site actif). Remplacé par des buckets horaires purgés et ré-agrégés à chaque lecture.
- Tailles de préfixe en caractères (
mb_strlen) et non plus en octets : estimation token cohérente en UTF-8 multioctet (arabe/hébreu RTL, CJK). - CLI : horodatages via
wp_date()(fuseau WordPress).
Added
- Ventilation par modèle sur le cumulatif :
wp mxchat-pc stats --total --by-model. - Filtre
mxchat_pc_min_messages: seuil de messages avant d'activer le cache historique (défaut 3 ; baisser à 1 pour cacher dès le 1er tour).
Fixed
- Seuils par modèle : suppression d'une clause morte
haiku-3-5(l'ID réel estclaude-3-5-haiku-…). Haiku 3.x correctement traité à 2048 tokens.
Notes
- Compteurs « best-effort » sous forte concurrence (read-modify-write non atomique, stat uniquement) — object cache persistant recommandé en prod.
- Économie de la TTL documentée : ×2 (1 h) vs ×1,25 (5 min).
Voir le CHANGELOG pour le détail.
v0.5.0 — Mesure multi-provider du cache + diagnostic
Added
- Mesure du cache multi-provider.
http_responselit désormais les tokens cachés de tous les providers supportés, pas seulement Anthropic : OpenAI, OpenRouter, xAI, DeepSeek (usage.prompt_tokens_details.cached_tokens) et Gemini (usageMetadata.cachedContentTokenCount). Ces providers cachent automatiquement côté serveur ; le plugin n'injecte rien mais rend visibles leurs économies dans un tableau de bord unifié (wp mxchat-pc stats --by-model). - Diagnostic de cache inefficace.
wp mxchat-pc statsaffiche un avertissement « Écritures de cache > lectures » quand le cache Anthropic est écrit mais peu/pas relu (préfixe instable — shortcode/donnée dynamique dans le system prompt, historique reformaté — ou trafic trop faible).
Changed
- L'injection (
http_request_args) reste strictement réservée à Anthropic ; seule la mesure devient multi-provider.
Notes (vérifié contre MXChat 3.2.8)
- Streaming toujours non cachable : passe par cURL direct, non interceptable ; aucun filtre exposé sur le corps de requête, pas de
cache_controlnatif. Streaming et prompt caching restent mutuellement exclusifs côté chat Claude. - OpenRouter non injectable : MXChat concatène le RAG dans le message
system, ce qui place le contenu volatil en tête de préfixe et défait le cache. OpenRouter est mesuré mais pas injecté.
Voir le CHANGELOG pour le détail.
v0.4.0 — i18n, filters, cumulative stats, CI
Added
- Header de plugin complet : `Plugin URI`, `Author URI`, `Update URI`, `Text Domain`, `Domain Path`, `Requires at least`.
- Internationalisation (i18n) : text-domain `mxchat-promptcache` chargé sur `init`, chaînes WP-CLI wrappées dans `__()`. Génération du `.pot` : `wp i18n make-pot . languages/mxchat-promptcache.pot`.
- Trois filters d'extensibilité :
- `mxchat_pc_should_inject($should, $payload, $args, $url)` — désactiver l'injection pour une requête spécifique.
- `mxchat_pc_min_chars($min, $model, $payload)` — override du seuil minimum.
- `mxchat_pc_ephemeral_control($control)` — override de la structure `cache_control` injectée.
- Statistiques cumulatives depuis l'installation (option `mxchat_pc_stats_total`, non-autoloadée, jamais expirée).
- `wp mxchat-pc stats --total` : affiche le cumulatif depuis l'install en plus du glissant 24 h.
- `wp mxchat-pc reset --total` : reset complet (24 h + cumulatif + debug).
- GitHub Actions CI : `php -l` sur PHP 7.4 / 8.0 / 8.1 / 8.2 / 8.3 à chaque push et PR.
- Badges README : release, license, PHP, WordPress, CI.
Changed
- Bail-out précoce sur les méthodes HTTP non-POST (évite un `json_decode` inutile sur OPTIONS preflight).
- `mxchat_pc_tools_size` : court-circuit dès que le seuil est dépassé (optimisation marginale sur gros tool sets).
- `mxchat_pc_using_extended_ttl` se base désormais sur la sortie de `mxchat_pc_ephemeral_control()` (cohérent avec le filtre).
- Constante `MXCHAT_PC_MIN_MESSAGES = 3` pour documenter le seuil d'activation du cache historique.
Voir le README pour les exemples d'utilisation des filters et la doc complète.
v0.3.0 — Initial public release
Première release publique du plugin.
Fixed
- Critique : seuils minimum corrigés pour Opus 4.x et Haiku 4.5 (4096 tokens, ~16 400 caractères, au lieu de 1024). Avec l'ancien seuil,
cache_controlétait bien injecté mais Anthropic ignorait silencieusement la mise en cache sur ces modèles (cache_creation_input_tokens = 0).
Added
- Caching des
tools(4e breakpoint, le plus stable du préfixe). - Deuxième breakpoint "rolling" sur l'historique : avant-dernier message user en plus du dernier, pour maintenir un hit rate stable au fil de la conversation.
- Statistiques ventilées par modèle Anthropic.
- Commande
wp mxchat-pc stats --by-model. - Commande
wp mxchat-pc debug(détails de la dernière requête : modèle, breakpoints ajoutés, usage retourné). - Détection fine du modèle (Opus / Haiku 4.x / Sonnet 4.6 / Sonnet legacy) pour appliquer le bon seuil minimum.
Changed
- Découplage system / messages : un breakpoint pré-existant sur l'historique n'empêche plus le cache du
system. - Les seuils sont désormais exposés via des constantes (
MXCHAT_PC_MIN_CHARS_OPUS,MXCHAT_PC_MIN_CHARS_SONNET_4_6, etc.) pour faciliter le tuning. - Compteur de breakpoints utilisés pour garantir le plafond Anthropic (4 max).
Installation rapide
```bash
cd wp-content/plugins/
git clone https://github.com/PaulArgoud/mxchat-promptcache.git
wp plugin activate mxchat-promptcache
wp mxchat-pc stats
```
Voir le README pour les détails.