Проблема: агенты-«чужаки» и потеря контекста
Каждый раз, когда разработчик переключается между сессиями или машинами, AI-агент (Claude Code, Codex, pi, Hermes) начинает работу с чистого листа. История решений, ошибок и найденных решений теряется. Хотя логи сессий (traces) содержат информацию о том, почему были приняты те или иные решения, они представляют собой лишь архив, по которому невозможно эффективно искать причинно-следственные связи без сложной инфраструктуры.
Решение: funes как слой памяти
funes — это бинарный файл (без зависимостей ML-рантайма), который устанавливается локально и интегрируется с агентами через одну команду: funes add claude. Он создает индекс из существующих сессий, обеспечивая агента инструментами recall (поиск) и get (просмотр полного контекста).
Ключевые технические особенности:
- Локальность и приватность: Векторизация и реранкинг происходят на машине пользователя. Данные не отправляются в облако для обработки.
- Инкрементальное индексирование: Новые ходы сессий добавляются в индекс без пересчета всей истории.
- Единый формат: Поддерживаются Claude Code, Codex, pi и Hermes. Все они пишут в один формат, позволяя одному агенту вспомнить логику другого.
- Точная провенансность: Результат поиска возвращает исходный текст, а не сжатое резюме, с указанием таймстампа, сессии и автора хода.
Архитектура поиска и хранения
В основе funes лежит гибридный поиск. Данные хранятся в локальном формате Lance. При запросе система:
- Парсит трассы в унифицированную структуру «ход-блок».
- Чанкует и эмбеддит данные локально.
- Комбинирует векторный поиск и BM25.
- Реранкирует кандидаты кросс-энкодером.
- Взвешивает результаты по свежести (recency) и добавляет соседние чанки для контекста.
Синхронизация через Hugging Face Hub
Память может быть перенесена между машинами или командами. Команда funes add codex acme/funes-memory привязывает локальную память к приватному датасету на Hugging Face Hub. Перед публикацией происходит сканирование на наличие секретов (credentials redaction). При работе на другой машине данные кэшируются локально для скорости.
Результаты бенчмарков: Recall vs Compaction
Авторы сравнили три подхода к управлению длинными сессиями: компактизацию (сжатие контекста), передачу контекста (handoff) и recall (поиск по памяти). Тестирование проводилось на бенчмарке handoff-vs-recall.
| Метод | Описание | Результат на бенчмарке |
|---|---|---|
| Compaction | Агент сжимает историю в краткое резюме | Неоднозначный. На одной задаче сработал, на другой — нет. При провале важные детали «сплющивались» и терялись. |
| Handoff | Ручная или автоматическая передача контекста новой сессии | Требует явного управления, увеличивает стоимость контекстного окна. |
| Recall (funes) | Агент сам ищет нужные фрагменты в истории | Возвращает исходные фрагменты. Найденное не зависит от качества суммаризации. Позволяет агенту «вспомнить» логику из прошлых сессий. |
Установка доступна через скрипт: curl -fsSL https://huggingface.co/buckets/huggingface/funes/resolve/install.sh | sh.
Источник: Hugging Face blog ↗
