Tots els canvis publicats: el motor, el servidor MCP, la línia d'ordres i l'app.
Terminal12 de setembre del 2026v1.1.0
esfis --import puja la memòria que ja tens escrita
Els assistents ja desen fets en fitxers: un .md per fet, amb frontmatter, dins de ~/.claude/projects/<projecte>/memory/. Bons records, però tancats al projecte on es van escriure.
esfis --import # ~/.claude/projects
esfis --import ~/notes ~/altra/mem # o les carpetes que diguis
Agafa tot .md que tingui description: al frontmatter i el desa; els MEMORY.md, que són índex, se salten. Un type: feedback entra com a instrucció i la resta com a fets.
Detalls
Cada record recorda de quin fitxer ve (source: md:<name>): tornar-hi a passar no duplica res, i un fitxer editat substitueix la versió vella en comptes d'afegir-se-li.
D'una instrucció se'n desa la frase del description, perquè viatja a cada recall. D'un fet, el cos sencer.
El vector surt sempre del description: els embeddings de frase es difuminen en un text llarg, i el cos ja pesa a la meitat lèxica.
App8 de setembre del 2026v1.0.0
esfis 1.0
La primera versió estable. L'app de macOS, la línia d'ordres i el servidor MCP són el mateix binari: ./build-app.sh genera Esfis.app i deixa ~/.esfis/bin/esfis, que és el que criden els assistents.
Novetat
Una finestra i tres pestanyes: Observa (enganxa-hi una conversa i el model en treu els records), Recorda (mira i esborra el que sap de tu) i la configuració, amb la clau d'API al clauer.
Ordres: --recall, --add, --list i --mcp.
Encara no
Sincronització entre dispositius: el magatzem no surt de la màquina.
Linux i Windows: els vectors surten dels models que porta macOS.
MCP28 d’agost del 2026v0.4.0
El servidor MCP, amb quatre eines i dues menes de record
esfis --mcp parla JSON-RPC per l'entrada estàndard i exposa recall, remember, forget i memories. No obre cap port i no vol cap clau.
La política d'extracció viu a la descripció de remember: qui decideix què val la pena desar és l'assistent que ja tens obert, i esfis no fa cap segona crida a cap model.
Novetat
Un record pot ser un fet o una instrucció. Els fets es busquen; les instruccions van al davant de cada recall i al camp instructions de l'initialize, perquè són l'encàrrec que s'ha de seguir tant si la pregunta hi té a veure com si no.
remember no desa una frase que ja hi és gairebé igual: respon quin id ja la conté.
Cada resposta torna els records semblants, perquè l'assistent pugui substituir en comptes d'acumular contradiccions.
Motor12 d’agost del 2026v0.3.0
Una línia per canvi, al costat de la base de dades
Cada canvi al magatzem escriu una línia a ~/.esfis/log.jsonl: add, supersede, forget o delete, amb l'id, la data i d'on ve. S'hi afegeix pel final i no es reescriu mai. En parlem al bloc.
Canvis
forget desactiva el record (active = 0) en comptes d'esborrar-lo.
Un supersede desactiva el vell i l'hi apunta amb superseded_by.
El magatzem es mou d'Application Support a ~/.esfis/, i es migra sola el primer cop.
Motor30 de juliol del 2026v0.2.0
El rànquing passa a fer servir dos senyals
Recuperar ja no és només una cerca de vectors. Ara cada pregunta puntua el magatzem amb BM25 i amb els vectors de NLEmbedding, i combina les dues meitats.
Els cosinus de NLEmbedding s'amunteguen en una banda estreta, o sigui que es puntuen relatius a la resta del magatzem per aquesta pregunta i no contra cap llindar fix. La meitat lèxica és la que diu si el primer candidat val alguna cosa.
Canvis
Els tokens es pleguen sense accents i es tallen a sis caràcters: desplego, desplega i desplegar són el mateix senyal.
Les paraules buides del català, el castellà i l'anglès no compten.
Una pregunta que no toca res retorna zero records, que abans retornava el menys dolent.