Eszközök

Mesterséges intelligenciával generált szöveg

funes: helyi, megosztható memória kódoló ügynökök számára

A cikk főszereplője a funes nevű, nyílt forráskódú eszköz, amely tartós memóriaréteget ad kódoló ügynököknek, például Claude Code, Codex, pi és Hermes számára.

funes: helyi, megosztható memória kódoló ügynökök számára

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:

  1. 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.
  2. Nyers bizonyíték megőrzése: az íráskor nincs desztillálás; a találat mindig visszavezeti a forrásturnra.
  3. 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.