A funes egy nyílt forráskódú eszköz a Hugging Face-től, amely a kódolási ügynökök (Claude Code, Codex, pi, Hermes) munkamenet‑nyomait tartós, lekérdezhető memóriává alakítja. A rendszert helyben futtatja a fejlesztő: minden indexelés, beágyazás és újrarendezés lokálisan történik, a memória pedig Lance formátumban tárolódik. Opcionálisan a memória publikálható egy Hugging Face datasetként (alapértelmezés szerint privát), így követhető és megosztható több gép vagy csapat között.
Mi a probléma, amelyre választ ad?
Sok fejlesztő több gépen dolgozik és különböző kódolási ügynököket használ. Az egyes ügynökök munkamenetei önmagukban archívumok: a korábbi döntések vagy a „miért” elvesznek, amikor a session véget ér. A korábbi cikk „Software Forgets: Agent Traces Are the Memory” megállapította, hogy az ügynökök valójában rögzítik ezt a történetet, de a nyers naplók önmagukban nem elégségesek a hatékony visszakereséshez. A funes ezt a hiányt tölti be: indexelést, visszakeresést, rangsorolást és pontos forráshivatkozást ad a session‑trace‑ekre.
Hogyan működik röviden?
- Telepítés: funes egyetlen bináris, amely alapértelmezésben nem igényel ML runtime-ot. Az install parancs: curl -fsSL https://huggingface.co/buckets/huggingface/funes/resolve/install.sh | sh
- Egy ügynökhöz hozzáadás: például funes add claude (támogatott még: codex, pi, hermes) Az add parancs létrehozza az első indexet, telepíti a recall és get eszközöket, és beállítja az automatizmust, amely az egyes befejezett turnokat indexeli.
- Indexelés: inkrementális; az új futások csak az új turnokat adják hozzá. A korábbi tartalmak szükség szerint visszatölthetők határolt lépésekben.
Mire képes a memória a gyakorlatban?
- recall: amikor egy feladat korábbi döntést, indoklást vagy eredményt érint, az ügynök maga előhívhatja a releváns passage‑eket. A recall az eredeti szöveget adja vissza (nem összefoglalót), és megnevezi a forrást (ügynök, időbélyeg, session, turn). Minden találathoz tartozik egy get parancs, amely megnyitja az adott turn teljes kontextusát.
- ask: emberi kérdezésre szolgáló, olvasó módú parancs; alapértelmezésben a helyi memóriát használja. Példa: funes ask claude "what did we decide about the streaming parser" Vagy egy megosztott memória megadásával: funes ask claude "why is funes append-only" --memory huggingface/funes-memory Az ask egyszeri lekérdezés: nem telepít integrációt és nem változtatja meg az ügynök perzisztens beállítását.
Műszaki részletek és tervezési elvek
- Minden támogatott trace ugyanabba a turn‑and‑block formába kerül, majd chunk‑olás, lokális beágyazás egy rögzített modelllel és Lance datasetbe írás következik.
- A lekérdezés kombinálja a vektoralapú és BM25 keresést, egyesíti a rangsoraikat, majd cross‑encoderrel újrarangsort készít, súlyozza a találatokat frissesség szerint és csatol szomszédos chunkokat.
Ez a felépítés három fontos tulajdonságot ad:
- Egy memória több ügynök között: Claude Code, Codex, pi és Hermes ugyanabba a sémába írnak, a recall átlépi az ügynökök történetét, és minden találat megmondja, melyik ügynök hozta létre.
- Nyers bizonyíték megőrzése: az íráskor nincs desztillálás; a találat mindig visszavezeti a forrásturnra.
- Alapértelmezés szerint lokális recall: fiók vagy Hub‑repo nem kötelező; az indexelés és a beágyazás helyben történik, a tárolás pedig a helyi Lance datasetben zajlik.
Megosztás és működés több gépen
A memória egy dataset, nem egy külső szolgáltatás. Ha szeretnéd, hogy a memória kövesse a munkád, a hozzákötés parancsával publikálhatod: funes add codex acme/funes-memory Ez a bind közzéteszi az aktuális memóriát a megadott helyre, majd a funes helyben indexel minden turnot és session‑határoknál publikál. Ha ugyanazt a parancsot lefuttatod egy másik gépen, a memória „követ” téged. A lokális adat publikálása Hugging Face datasetként történik (alapértelmezés szerint privát). Az indexelés során a hitelesítő adatok már el lesznek takarítva (redacted), és a publikálás további szűrést futtat, hogy eltávolítson minden olyan chunkot, amely titoknak tűnik. A scanner működése részletezve van a SECURITY.md fájlban. A távoli memória olvasásakor funes a dataset fájlokat lokálisan cache‑eli, így a gyakori lekérdezések helyi sebességgel térnek vissza. A Hub adja az ownershipet, hozzáférés‑szabályozást, verziózást és terjesztést; a memória nem lesz egy külön memóriaszolgáltatásba helyezett fiók, és nem kell visszabérelned API‑n keresztül.
Használati forgatókönyvek és előnyök
- Több gép között: minden ügynököt hozzáköthetsz egy memóriához és bármelyik hostról előhívhatod a történetet.
- Csapatban: egy új csapattag ügynöke már az első napon hozzáférhet hónapok döntéseihez, includezve zsákutcákat és indoklásokat, amelyek nem kerültek PR‑be.
- Nyílt forrású projektek mellett: egy karbantartó publikálhatja egy release mögötti sessionöket; ez egy kereshető CLAUDE.md‑hez hasonló réteget ad, ami a projekt történetét és döntéseit őrzi. A publikált memóriák dataset cardot és funes taget kapnak, így felismerhetőek és felfedezhetőek a Hubon. A Hub korábban már adott helyet nyílt súlyoknak és dataseteknek; a funes ezt kiegészíti nyílt, dolgozó memóriákkal.
Mérés: handoff vs. recall vs. compaction
A hosszú munkameneteknél a session mérete megnő, és a kontextus tárolása költséges lehet. A szerzők egy "handoff‑vs‑recall" benchmarkot futtattak két olyan feladattal, amelyek megoldása a korábbi session‑tudás nélkül nem rekonstruálható. Eredmény:
- A compaction (összefoglalás) egy feladaton megoldást adott, a másikon nem; ahol sikertelen volt, a lényeges megállapításokat laposította.
- A recall mindig az eredeti passage‑eket adja vissza, ezért a fontos megállapítások nem vesznek el a summarizálás során.
- Költségben a recall volt a legegyszerűbb: mindkét feladaton olcsóbb volt, egyiknél 8× olcsóbb, a másiknál 4× olcsóbb, mint a kézzel írt handoff.
Hol található, és hogyan járulhatsz hozzá?
A funes kódja nyilvános: github.com/huggingface/funes. A projekt nem találta fel az összes komponensét: nyílt forráskódú embedding modelleket, Lance append‑only dataseteket és a Hub cache/diszkontent‑dedup funkcióit használja. A lényeg a komponensek összeillesztése, hogy az ügynökök számára ténylegesen használható memória jöjjön létre. Hibajegyeket, telepítési problémákat vagy hiányzó agent‑támogatásokat issue‑ként lehet bejelenteni a repo‑ban.
Összegzés
A funes egy praktikus megoldás arra, hogy a kódolási ügynökök által már létrehozott nyers munkamenet‑nyomokat valós memóriává alakítsuk át. Helyi indexelést és lekérdezést kínál, megőrzi a forrásturnokat, és lehetőséget ad a memóriák biztonságos, Hub‑alapú megosztására anélkül, hogy külső memóriaszolgáltatásba kellene támaszkodni. A rendszer célja, hogy a fejlesztők és csapataik ne kezdjenek mindig nulláról, hanem folytathassák a korábbi gondolatmeneteket és döntéseket.



