- gateway/rerank.py: catena da RERANK_CHAIN (JSON, per-nodo key+timeout),
cooldown 60s sui nodi falliti, score sigmoide [0,1], degrada con grazia
all'ordine di fusione se tutti i nodi sono giù
- routes: /v1/memories:search applica il rerank post-fusione (fetch esteso a
RERANK_CANDIDATES), risposta con rerank{used,backend,took_ms}, flag
per-query rerank=false; /v1/version espone lo stato rerank
- store: search() accetta limit esteso; models: SearchIn.rerank
- metrics: qmem_rerank_calls_total + durata per backend
- test: 10 nuovi (fallback, cooldown, degradazione, integrazione) — 46 pass
pi-qmem
Memoria centralizzata e condivisa per agenti AI — estensione per pi.
Salva e cerca record semantici (fatti, decisioni, preferenze, episodi) in un Memory Gateway (FastAPI + Qdrant + BGE-M3) ospitato su un server remoto raggiungibile via VPN. Nessun LLM in scrittura: l'agente salva record deliberati e strutturati; il retrieval è vettoriale + filtri metadata.
Installazione
pi install git:git.enne2.net/enne2/pi-qmem
Oppure copia extensions/index.ts in ~/.pi/agent/extensions/pi-qmem/.
Tool
| Tool | Descrizione |
|---|---|
qmem_store |
Salva un record di memoria (text, kind, agent_id, project_id obbligatorio, scope, source, expires_at, supersedes_id, supersede_reason) |
qmem_search |
Ricerca semantica su tutta la conoscenza condivisa (query, kind, project_id, scope, top_k, include_superseded, min_score) |
qmem_correct |
Corregge una memoria falsa: crea un nuovo record che supersede il vecchio (che resta in archivio marcato superseded) |
qmem_meta |
Discovery: panoramica di scope×kind, progetti, agenti e superseduti (per scegliere i filtri di ricerca) |
Comando
/qmem:config — menu interattivo (TUI):
- 🌐 Imposta URL gateway
- 🔑 Cambia API key
- 🔌 Test connessione (verifica URL + validità chiave)
- 📋 Mostra configurazione
- ↩️ Annulla
Modalità CLI rapida: /qmem:config url <URL> | apikey <KEY> | test
Config salvata in ~/.config/pi-qmem/config.json (0600):
{
"url": "https://qmem.enne2.net",
"apiKey": "..."
}
Regole comportamentali (autocontenute)
Le regole vincolanti (obbligo project_id, punteggi, correzione/supersede, discovery, identificazione macchina nei record locali) sono distribuite con l'estensione, senza toccare AGENTS.md:
promptGuidelinessui 4 tool (bullets nelGuidelinesdel system prompt, solo quando i tool sono attivi)before_agent_start→ blocco "Regole pi-qmem" iniettato nel system prompt a ogni turno (solo se i tool qmem sono attivi); include la sezione Identificazione macchina conMACCHINA CORRENTErilevata dinamicamente dall'estensione (os.hostname()+/etc/os-release)- Skill
qmem(skills/qmem/SKILL.md, standard agentskills.io) → procedura completa on-demand, caricabile con/skill:qmem - Manifest:
pi.skillsnel package.json
Gateway (componente server)
La cartella gateway/ contiene il Memory Gateway FastAPI da deployare sul
server (Docker Compose con Qdrant 1.19 + Ollama BGE-M3). Vedi
gateway/README.md per il deploy.
Architettura
pi (estensione) ──HTTPS/VPN──▶ Memory Gateway (FastAPI) ──▶ Qdrant 1.19
│
└──▶ Ollama BGE-M3 (embedding locale)
- Accesso condiviso: una chiave API con accesso completo in lettura/scrittura
agent_idè solo metadata di provenienza, non isolamento- Rate limit, audit log, cleanup automatico dei record scaduti
- Correzioni: i record sono immutabili; correggere una memoria falsa = nuovo record che supersede il vecchio (
qmem_correctoqmem_storeconsupersedes_id). Il vecchio resta in archivio consuperseded_by, escluso dalla ricerca di default (include_superseded=trueper la lineage)
Licenza
MIT