Sakhanda Wire
NVDA $230.86 +1.09% MSFT $512.80 -0.02% GOOGL $338.24 -1.70% META $725.93 +0.10% AMZN $248.23 -0.37%
← До новин

Дайте своїм агентам для програмування пам’ять, якою володієте ви

Дайте своїм агентам для програмування пам’ять, якою володієте ви
Опубліковано 3 вересня 2026 року
Оновити на GitHub
Я працюю на кількох машинах і перемикаюся між агентами для програмування залежно від завдання. Кожен із них зустрічає мої проєкти як незнайомець. Міркування з «минулого вівторка» зникають, коли сеанс завершується. Кожен новий агент на кожному новому хості починає з нуля.

На початку цього року стаття Програмне забезпечення забуває: сліди агентів — це пам’ять довела, що агенти для програмування вже створюють записи, які ми постійно втрачаємо. Коли вони шукають у кодовій базі, випробовують підходи, стикаються з помилками, читають документацію та змінюють напрямок, вони залишають детальний опис не лише того, що змінилося, а й чому.

Хоча діагноз правильний, сліди — це лише потенційна пам’ять. Журнали сеансів агента все ще є просто архівом. Неможливо за допомогою 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, пригадує попереднє рішення та обґрунтовує свою відповідь отриманим сеансом

Після додавання 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 про те, чому вона працює лише на додавання; funes знаходить відповідні сеанси, а агент для програмування відповідає на їхній основі

funes ask — це доступний лише для читання одноразовий аналог funes add. Він знаходить уривки, передає їх агенту для програмування та повертає обґрунтовану відповідь із зазначенням джерел. Він не встановлює інтеграцію й не змінює постійні налаштування агента.

Промах під час пошуку не приховується. Якщо уривки не підтверджують відповідь, агент так і каже. Ви можете перефразувати запитання або додати funes до агента, щоб він міг ітеративно шукати в пам’яті під час звичайної роботи.

Перемикайтеся між агентами, не втрачаючи нитку

Спільна пам’ять не прив’язана до агента або моделі, які її створили. Почніть завдання в Claude Code, продовжіть його наступного тижня в Codex — і другий агент зможе пригадати міркування першого. Використовуйте pi з локальною моделлю або моделлю, яку обслуговує маршрутизатор Hugging Face, а потім поверніться до Claude.

Claude Code обирає модель для створення векторних представлень, а потім Codex пригадує це рішення в окремому сеансі

Claude ухвалює рішення; хук індексує його; Codex пригадує його в іншому сеансі. Старіші результати в демонстрації — це попередні записи того самого експерименту: пам’ять, що працює лише на додавання, запам’ятала й репетиції.

Це важливо в кількох різних масштабах:

  • На різних машинах: Прив’яжіть кожного агента до однієї пам’яті й пригадуйте історію з будь-якого хоста, яким користуєтеся.
  • У межах команди: Агент нового учасника команди може отримати місяці рішень уже в перший день, зокрема невдалі підходи та обґрунтування, які так і не потрапили до запиту на злиття.
  • Поруч із проєктом із відкритим кодом: Мейнтейнер може опублікувати сеанси, що стоять за релізом, зазначивши їх під час надсилання. Уявіть собі доступний для пошуку CLAUDE.md, який містить історію причин, чому проєкт є саме таким, замість сторінки, яку хтось має постійно переписувати. Будь-хто може читати публічну пам’ять за допомогою --memory.

Опубліковані пам’яті містять картку набору даних і тег funes, що робить їх помітними та доступними для пошуку на Hub. Hub уже розміщує відкриті ваги та набори даних. funes додає відкриту робочу пам’ять. У ній зберігаються рішення, невдалі підходи та обґрунтування, що стоять за проєктом; інший агент може виконувати за ними запити, а самі дані можна відстежити до сеансів, які їх породили.

Найдешевший спосіб вийти з довгого сеансу

Тривале дослідження роздуває сеанс, аж поки кожне повідомлення не починає коштувати більше контексту, ніж сама робота. Зазвичай пропонують дозволити агенту стиснути контекст і продовжити або написати передачу контексту та почати заново. Пригадування — третій варіант, тож ми порівняли їх у тесті передачі контексту й пригадування: двох завданнях, відповідь на які неможливо відновити без попередніх знань із сеансу.

Стиснення контексту — це те, що більшість агентів робить за замовчуванням, і це був єдиний із трьох методів, результат якого розділився: на одному завданні він досяг відповіді, а на іншому — ні. Там, де він зазнав невдачі, його резюме сплющило важливі результати. Пригадування повертає самі уривки, тож результату не потрібно переживати процес узагальнення.

Пригадування було найдешевшим із трьох методів на обох завданнях: в 8 разів дешевшим за письмову передачу контексту на одному та в 4 рази — на іншому.

Зважені токени на успішне виконання завдання для п’яти каналів у двох завданнях; пригадування має найкоротший стовпчик в обох випадках

Світліший сегмент кожного стовпчика — це одноразова плата за підготовку каналу, передачі контексту або стиснення, сплачена до першого запитання та врахована один раз. Хрестик позначає канал, який так і не досяг результату, тому в нього немає вартості успішного виконання.

Припиніть починати з нуля

«Мислити — означає забувати відмінності, узагальнювати, створювати абстракції». — Хорхе Луїс Борхес, «Фунес, пам’ятливий»

Ваші агенти вже створили цей запис. funes доступний за адресою github.com/huggingface/funes — одна команда відділяє вас від перетворення цього запису на пам’ять, яку зможе прочитати наступний агент на будь-якій машині, за якою ви опинитеся.

Створено на основі відкритого коду

funes мало що винаходить самостійно. Він спирається на моделі для створення векторних представлень із відкритим кодом, достатньо якісні для локального запуску, на набори даних Lance із режимом лише додавання та дешевими інкрементними записами, а також на кешування й дедуплікацію вмісту наборів даних на Hub. Уся робота полягає в тому, щоб поєднати їх у пам’ять, якою агент справді може користуватися.

funes також має відкритий код. Створіть issue щодо будь-чого: від проблеми з інсталяцією до пропущеного результату пригадування або агента, підтримку якого ви хотіли б бачити.

Набори даних, згадані в цій статті 2

Спільнота

Завантажуйте зображення, аудіо та відео, перетягуючи їх у поле введення тексту, вставляючи або натискаючи тут.
Торкніться або вставте сюди, щоб завантажити зображення

· Зареєструйтеся або увійдіть, щоб коментувати

Набори даних, згадані в цій статті 2

Перекладено автоматично з англійської. Оригінал статті — за посиланням нижче.

Вперше опубліковано виданням Hugging Face

Читати оригінал на Hugging Face ↗

Текст і зображення належать Hugging Face і наводяться тут із зазначенням авторства та посиланням на оригінальну публікацію.

← До новин

Ще новини

Усі останні новини