Дайте на своите агенти за програмиране памет, която притежавате
По-рано тази година Софтуерът забравя: следите на агента са паметта изложи тезата, че кодиращите агенти вече създават записа, който постоянно губим. Докато претърсват кодова база, изпробват подходи, сблъскват се с грешки, четат документация и променят посоката, те оставят подробен отчет не само за това какво се е променило, но и защо.
Макар диагнозата да е правилна, следите са само потенциална памет. Регистрите на сесиите на
агента все още са просто архив. Не можете да използвате grep, за да откриете отговор на
„защо се отказахме от поточния парсер?“ сред десет хиляди хода. За да може един агент да използва тези следи,
докато работи, те се нуждаят от индексиране, извличане, класиране и точен произход.
Това предоставя funes. Това е устойчив слой памет за вашите агенти (Claude Code, Codex, pi и Hermes). Изграден е от сесиите, които вече се намират на вашата машина. Работи локално и става част от обичайния работен процес на агента с една команда. Когато пожелаете, може да се пренесе и в набор от данни на Hugging Face, който притежавате, частен по подразбиране.
Добавете памет към агента, който вече използвате
funes е един двоичен файл. Неговият стандартен бекенд за инференция няма зависимост от ML среда, а вграждането и повторното класиране се извършват на вашата машина. Инсталирайте го:
curl -fsSL https://huggingface.co/buckets/huggingface/funes/resolve/install.sh | sh
След това го добавете към агент:
funes add claude
Тази единствена команда add изгражда първия индекс, предоставя на агента инструменти
recall и get и инсталира автоматизацията, която индексира всеки завършен ход. Индексирането е
инкрементално, като новите изпълнения добавят нови ходове, вместо отново да вграждат цялата история.
По-старото и по-задълбочено съдържание може да се попълва на ограничени стъпки.
Оттам нататък просто работите. Когато дадена задача засяга минало решение, обосновка или откритие,
агентът може сам да използва recall. Не е нужно да си спомняте старата сесия или
да поставяте контекста ѝ в новата.
С добавения funes припомнянето се случва в разговора. Агентът сам използва паметта си и посочва сесията, на която се основава отговорът му.
recall връща оригиналния текст, а не обобщение, и показва точно откъде произлиза
(агента, времевия печат, сесията и хода). Всеки резултат включва команда get, която
отваря целия ход и заобикалящия го контекст.
В основата си един детерминистичен конвейер анализира всяка поддържана следа в една и съща структура от ходове и блокове, разделя я на части, вгражда я чрез фиксиран локален модел и я записва в локален набор от данни Lance. Заявката комбинира векторно търсене и търсене по BM25, слива класиранията им, преразпределя кандидатите чрез крос-енкодер, преоценява ги според актуалността и добавя съседните части.
Този дизайн дава на funes три важни свойства:
- Една памет за всички агенти: Claude Code, Codex, pi и Hermes записват в една и съща
структура.
recallобхваща историите им и всеки резултат показва кой агент го е създал. - Суровите доказателства остават непокътнати: При запис нищо не се свежда до факт. Всеки резултат винаги може да ни върне към хода, който го е породил.
recallе локален по подразбиране: Не са нужни акаунт или хранилище в Hub. Хостван модел не обработва сесиите ви за индексиране; вграждането и повторното класиране се изпълняват на вашата машина, а кодиращият ви агент извършва разсъждението.
Проблемът с агента като непознат вече е решен на една машина. Но паметта става още по-полезна, когато следващият агент работи на друго място.
Паметта е набор от данни, а не услуга
За да следва паметта работата ви, свържете една, когато добавяте funes към агент:
funes add codex acme/funes-memory
Свързването публикува текущата ви памет там. След това funes я поддържа актуална, като индексира всеки ход локално и публикува на границите на сесиите. Агентът извлича информация от нея през цялото време. Изпълнете същата команда на друга машина и паметта ще ви последва.
В основата си локалната памет е набор от данни Lance, а споделената памет е набор от данни на Hugging Face (частен по подразбиране), който притежавате.
Преди нещо да достигне Hub, идентификационните данни вече са били редактирани по време на
индексирането. След това публикуването сканира отново всяка част и задържа всичко, което все още
прилича на секрет. Скенерът зад това е документиран в
SECURITY.md, включително
какво покрива и какво не покрива.
Когато агент чете отдалечена памет, funes кешира файловете на набора от данни локално, така че топлите заявки се връщат към локалната скорост. Hub предоставя собствеността, контрола на достъпа, версийността и разпространението, които вече предоставя за други набори от данни. Паметта ви не се превръща в акаунт в отделна услуга за памет и не я наемате обратно чрез API.
Първо попитайте, после свържете
recall е създаден за агенти. Когато искате сами да зададете въпрос към паметта,
използвайте ask. По подразбиране той чете локалната ви памет:
funes ask claude "какво решихме относно поточния парсер"
Или го насочете към споделена памет. Публикувахме памет за разработката на funes, така че можете да попитате защо funes работи по този начин, без да създавате собствена памет:
funes ask claude "защо funes е само с добавяне" --memory huggingface/funes-memory
funes askе само за четене, едновъпросовият аналог наfunes add. Той извлича пасажите, подава ги на кодиращ агент и връща обоснован отговор, който посочва източниците му. Не инсталира интеграция и не променя постоянната настройка на агента.
Пропускът при извличане не се замазва. Ако пасажите не подкрепят даден отговор, агентът го казва. Можете да преформулирате въпроса или да добавите funes към агента, за да може той да търси в паметта итеративно по време на нормалната работа.
Сменяйте агентите, без да губите нишката
Споделената памет не е обвързана с агента или модела, който я е създал. Започнете задача в Claude Code, продължете я в Codex следващата седмица и вторият агент ще може да си припомни разсъжденията на първия. Използвайте pi с локален модел или модел, предоставян чрез маршрутизатора на Hugging Face, след което се върнете към Claude.
Claude взема решение; хук го индексира; Codex си го припомня в друга сесия. По-старите резултати в демонстрацията са по-ранни записи на същия експеримент: паметта само с добавяне е запомнила и репетициите.
Това има значение в няколко различни мащаба:
- Между вашите машини: Свържете всеки агент към една памет и извличайте историята от хоста, който използвате в момента.
- В екип: Агентът на нов съотборник може да извлече решения от месеци още в първия ден, включително задънени улици и обосновки, които никога не са попаднали в заявка за изтегляне.
- Наред с проект с отворен код: Поддържащият може да публикува сесиите зад дадено
издание, като ги посочи при качването. Представете си го като търсима
CLAUDE.md, която съдържа историята защо проектът е такъв, какъвто е, вместо страница, която някой трябва постоянно да пренаписва. Всеки може да чете публична памет с--memory.
Публикуваните памети съдържат карта на набора от данни и маркера funes, което ги прави разпознаваеми и откриваеми в Hub. Hub вече хоства отворени тегла и набори от данни. funes добавя отворена работна памет. Тя съхранява решенията, неуспешните подходи и обосновката зад даден проект, достъпни за запитване от друг агент и проследими до сесиите, които са ги породили.
Най-евтиният изход от дълга сесия
Дългото проучване раздува сесията, докато всеки ход не започне да струва повече за пренасяне на контекста, отколкото за извършване на работата. Обичайните решения са да оставите агента да компактира и да продължи или да напишете предаване на задачата и да започнете начисто. Припомнянето е трета възможност, затова ги сравнихме в бенчмарка за предаване срещу припомняне: две задачи, чийто отговор не може да бъде възстановен без предходните знания от сесията.
Компресирането е това, което повечето агенти правят по подразбиране, и беше единственото от трите, чийто резултат беше непълен: стигна до отговор при едната задача, но никога не стигна до него при другата. Там, където се провали, обобщението му беше изгладило важните открития. Припомнянето връща самите пасажи, така че дадено откритие не трябва да преживее обобщаването.
Припомнянето беше най-евтино от трите и при двете задачи — 8 пъти по-евтино от писмено предаване при едната и 4 пъти при другата.
По-светлият сегмент на всяка лента е еднократната цена за подготовката на канала, предаването или компресирането, платена преди задаването на първия въпрос и отчетена веднъж. Кръстче обозначава канал, който никога не стига до отговор, и следователно няма цена за успех.
Спрете да започвате от нулата
„Да мислиш означава да забравяш различията, да обобщаваш, да създаваш абстракции.“ — Хорхе Луис Борхес, „Фунес, паметливият“
Вашите агенти вече са написали записа. funes се намира на
github.com/huggingface/funes, на една команда
разстояние от превръщането на този запис в памет, която следващият агент може да прочете,
на която и машина да се намирате.
Изградено с отворен код
funes не изобретява почти нищо от това. Той се опира на модели за вграждане с отворен код, достатъчно добри за локално изпълнение, на наборите от данни на Lance само с добавяне и евтини инкрементални записи, както и на кеширането и дедупликацията на съдържание в Hub за набори от данни. Работата е в това те да бъдат съчетани в памет, която агентът действително може да използва.
funes също е с отворен код. Отворете проблем за всичко — от затруднение при инсталирането до пропуснато припомняне или агент, който бихте искали да бъде поддържан.
Набори от данни, споменати в тази статия 2
Общност
· Регистрирайте се или влезте, за да коментирате
Набори от данни, споменати в тази статия 2
Преведено автоматично от английски. Оригиналната статия е на връзката по-долу.



