Логику изменения парсера можно час доказывать одному агенту — и потерять весь контекст, как только следующая задача уйдёт другому. Funes локально индексирует сессии агентов, возвращает исходные фрагменты с указанием происхождения и умеет давать общую память Claude Code, Codex, pi и Hermes. Но важно понимать границу его возможностей: Funes находит историю, а решать, применимо ли старое решение сейчас, всё равно должен агент.
Ниже — практическая схема Claude Code → Codex, локальная память без внешней синхронизации, опциональный sync через Hugging Face, подключение универсальных MCP-клиентов и проверки, которые помогают не превратить найденную историю в источник ошибок.
Сначала определите границы памяти
Если вы только оцениваете Funes или работаете с чувствительными репозиториями, начните с локальной памяти. Привязывать датасет Hugging Face стоит лишь тогда, когда одна и та же история нужна на другой машине или нескольким участникам команды.
| Режим | Где хранится | Когда выбирать | Главное ограничение |
|---|---|---|---|
local | Локальный датасет Lance | Один разработчик на одной машине | Память не появится автоматически на другом хосте |
<org>/<repo> | Локальные данные Lance и репозиторий Hugging Face Dataset | Работа с разными агентами или машинами | В следах сессий могут оказаться чувствительный код, промпты, пути или учётные данные |
В политике безопасности Funes указано, что разбор, нарезка на чанки, создание эмбеддингов и реранжирование по умолчанию происходят локально. Данные покидают машину через funes push либо через интеграцию общей памяти, которая публикует их на границе сессии. Память на базе Hub — это репозиторий датасета, поэтому перед первым push обязательно проверьте его видимость.
Для первого пилота выбирайте local. Позже привязку можно изменить, повторно выполнив funes add <agent> <memory>.
Установите Funes и создайте первый индекс
В официальном репозитории Funes есть shell-установщик: он определяет платформу, скачивает бинарный файл с тегом, проверяет checksum релиза и по умолчанию помещает исполняемый файл в PATH, в каталог ~/.local/bin:
curl -fsSL https://huggingface.co/buckets/huggingface/funes/resolve/install.sh | sh
Если команда funes не находится сразу, откройте новый shell, затем проверьте установку:
funes status
В репозитории опубликованы tagged-бинарники для Linux x86_64, Linux aarch64 и macOS Apple Silicon. Если вашей платформы в списке нет, воспользуйтесь инструкцией по сборке из исходников, а не рассчитывайте, что готовый установщик её поддерживает.
Быстрый старт за пять минут
Выполните следующую команду там, где уже есть сессии агента, которые вы хотите сохранить в памяти:
funes add claude
Для Claude Code она может создать первый индекс, зарегистрировать инструменты чтения, установить автоматизацию интеграции и индексировать завершённые ходы. Первый проход ориентирован на текст и, согласно документации, после подтверждения занимает около минуты. Сначала Funes обрабатывает обычный текст и рассуждения, а объёмный вывод инструментов оставляет на потом. (Документация по настройке Funes)
После этого проверьте состояние:
funes status
Чтобы вручную заполнить индекс сессиями Claude или обновить его, используйте:
funes index --harness claude
Без указания пути funes index ищет стандартные каталоги сессий Claude, Codex, pi и Hermes, включая ~/.claude/projects и ~/.codex/sessions. Параметр --harness claude ограничивает поиск Claude Code. В руководстве по индексации также описан примерно 60-секундный текстовый бюджет для обновления без пути: старые сессии и крупные результаты инструментов могут попасть в индекс только на последующих проходах.
Индексация Funes инкрементальная: при повторном запуске уже записанные чанки не получают эмбеддинги заново. Явно указанные пути к транскриптам и Hub-репозитории со следами индексируются полностью, без ограничения бюджета для запуска без пути. (Подробности индексации)
Подключите Funes к Claude Code
Для локальной памяти в Claude Code выполните:
funes add claude local
funes status
local можно не указывать — это значение по умолчанию. Если в терминале доступен HF-токен, Funes может предложить настроить пользовательский репозиторий <user>/funes-memory; для локального пилота отклоните это предложение.
Интеграция с Claude использует плагин только с hooks и отдельную регистрацию MCP. Funes не редактирует settings.json Claude Code: автоматизация индексирует завершённые ходы, а конфигурация общей памяти добавляет публикацию на границах сессии. (Поведение автоматизации)
Откройте Claude Code и проверяйте установку на известном историческом решении, а не только по факту успешной инсталляции:
Найди предыдущее решение по поводу потокового парсера. Если история репозитория его не объясняет, используй Funes recall и укажи сессию, на которую опираешься.
Хороший результат ссылается на более ранний фрагмент, называет сессию и отличает старый эксперимент от текущего состояния репозитория.
Чтобы отключить интеграцию, не удаляя сохранённые данные, выполните:
funes remove claude
В документации по удалению сказано, что команда убирает подключение Funes, но сохраняет локальную память, исходные транскрипты, кеши и опубликованную память.
Подключите к той же памяти Codex
Когда Claude Code уже работает, добавьте Codex в ту же локальную память:
funes add codex local
funes status
Для общей памяти на базе Hub передайте один и тот же идентификатор репозитория обоим агентам:
funes add claude <org>/<repo>
funes add codex <org>/<repo>
У Codex есть легко упускаемый этап доверия. Funes записывает свои hooks в ~/.codex/hooks.json; в самом Codex выполните /hooks, проверьте добавленные Funes записи и пометьте их как trusted. Пока hooks не получили доверия, Codex их пропускает: новые ходы не индексируются, а память не публикуется. Для документированного сценария с привязанной памятью требуется Codex 0.151.0. (Требования к автоматизации Codex)
Проверьте передачу контекста между агентами
Возьмите заметное решение, которое есть в сессии одного агента, но отсутствует у другого:
- В Claude Code найдите решение о парсере и запомните характерный термин из обсуждения.
- Завершите сессию, чтобы успели отработать индексация и автоматизация на границе сессии.
- В Codex спросите об этом термине и попросите привести прежние аргументы.
- Убедитесь, что ответ называет Claude исходным harness и указывает на исходную сессию или ход.
Проверить доказательства можно и прямо в терминале:
funes recall "why did we switch away from the streaming parser"
recall возвращает ранжированные исходные фрагменты, а не сгенерированное резюме. Каждый результат содержит сведения об источнике и сгенерированную команду get; скопируйте её, если нужен контекст соседних ходов.
Если Codex ничего не находит, проверьте версию, состояние доверия в /hooks, вывод funes status и то, не была ли сессия Claude создана до подключения интеграции. Затем повторите запрос с характерным термином из исходного обсуждения.
Подключение pi, Hermes и других MCP-клиентов
Помимо Claude Code и Codex, Funes напрямую поддерживает pi и Hermes. Pi работает через события расширения, Hermes — через shell hooks; для Hermes индексация каждого хода имеет статус beta. (Сведения о поддерживаемых агентах)
Для MCP-совместимого клиента, который не входит в эту четвёрку, запустите Funes как локальный stdio-сервер:
{
"mcpServers": {
"funes": {
"command": "funes",
"args": ["mcp"]
}
}
}
Чтобы привязать сервер к общей памяти, добавьте репозиторий после mcp:
{
"mcpServers": {
"funes": {
"command": "funes",
"args": ["mcp", "<org>/<repo>"]
}
}
}
В документации MCP описаны инструменты recall, get и status. funes mcp работает только на чтение: он не индексирует сессии и не публикует данные. Для этого используйте funes index, funes push или поддерживаемую интеграцию через funes add.
Память, указанная в отдельном MCP-вызове, имеет приоритет над привязкой на уровне сервера. Если не указано ни то ни другое, Funes использует локальную память.
Как использовать recall и не терять доказательства
У Funes есть три разных сценария работы:
| Команда | Результат | Когда использовать |
|---|---|---|
funes recall "…" | Ранжированные исходные фрагменты с происхождением | Когда нужно изучить доказательства |
funes get … | Указанный ход и окружающий контекст | Когда результат релевантен, но неполон |
funes ask <agent> "…" | Один обоснованный ответ на естественном языке | Когда нужен быстрый ответ от Claude или Codex без установки интеграции |
По умолчанию recall возвращает 8 результатов, использует пул из 30 кандидатов после реранжирования, период полураспада давности в 30 дней и 1 соседний чанк. (Параметры и значения по умолчанию для Recall)
Надёжный цикл отладки выглядит так:
- Запустите
funes recall, передав ошибку, название компонента или формулировку решения. - Перейдите по сгенерированной команде
get, чтобы открыть полный ход. - Сверьте найденное решение с текущей веткой.
- Внесите изменение или проведите эксперимент.
- Снова выполните поиск по результату, чтобы следующая сессия могла его найти.
funes ask устроен иначе. Сначала он ищет материалы, затем передаёт выбранные фрагменты и ваш вопрос Claude или Codex для одного ответа. Дочерний агент не получает инструментов, stdin или MCP-серверов и не может повторить поиск, если первое совпадение оказалось слабым. Хотя поиск выполняется локально, вопрос и найденные фрагменты отправляются провайдеру, настроенному для выбранного агента. Поэтому документация по ask рекомендует funes recall для материалов, которые вы не готовы отправлять этому провайдеру.
Как поддерживать память достоверной и пригодной для работы
Funes сохраняет исходные фрагменты и сведения об их происхождении, но не может определить, актуален ли каждый исторический обходной путь.
«Coding-агенты ведут себя гораздо менее странно, когда память — это скучная инфраструктура: локальный индекс, точное происхождение, приватность по умолчанию». — @TheArtemisHunts в X
Небольшой чек-лист для рабочего использования
| Ситуация | Что проверить | Что сделать |
|---|---|---|
| Codex ничего не находит | Доверие к hooks и версию | Выполните /hooks, доверьте записи Funes и убедитесь, что используется Codex 0.151.0 |
| Не видны старые сессии | Область и уровень индексации | Выполните funes index --harness claude или --harness codex; дайте последующим проходам добавить объёмный вывод |
| Заблокирован удалённый push | TruffleHog и scope токена | Установите TruffleHog или задайте FUNES_TRUFFLEHOG; используйте fine-grained токен на запись только на машинах, которые публикуют данные |
| В результате найден секрет | Состояние локальной очистки | Выполните funes scrub, затем повторите push; исходные транскрипты не изменяются |
| Общая удалённая память | Видимость и доверие | Не делайте датасет публичным без явного намерения и считайте найденный сторонний текст недоверенным вводом для агента |
| Последняя сессия не попала в Hub | Момент границы сессии | Перед тем как вывести машину из эксплуатации, выполните funes push <org>/<repo> |
Funes скрывает учётные данные во время индексации и перед публикацией выполняет fail-closed проверку TruffleHog. В документации по push указано, что отсутствие сканера блокирует публикацию; если действующие учётные данные попали в удалённый датасет, немедленно отзовите их и выпустите новые, поскольку очистка в следующем коммите не удалит историю репозитория.
Используйте Hugging Face токены с минимальными правами: scope на запись — для машин, которые публикуют данные, а read-only — для коллег и хостов, которым нужен только поиск. Если две машины публикуют изменения в одну удалённую память, возможна гонка; документация по автоматизации не заявляет о сериализации между машинами.
Что выбрать на практике
Не подключайте сразу все интеграции — лучше начните с одного из этих сценариев:
| Сценарий | Рекомендуемая настройка | Почему |
|---|---|---|
| Один разработчик оценивает постоянную память | funes add claude local | Минимальный риск передачи данных и самый простой откат |
| Планирование в Claude Code, реализация или ревью в Codex | Привяжите обоих к одной памяти local | Сохраняет ход рассуждений между агентами на одном хосте |
| Агенты работают на нескольких машинах | Привяжите обоих к одной приватной памяти <org>/<repo> | Память следует за разработчиком через датасет Hub |
| История командного проекта | Приватный датасет и read-only токены для читателей | Отделяет право публикации от доступа к поиску |
| Неподдерживаемый MCP-агент | funes mcp [memory] | Добавляет доступ на чтение, сохраняя индексацию явным действием |
| Чувствительные исходные материалы | Локальная память и recall | Позволяет избежать удалённой публикации и однократной передачи провайдеру |
FAQ по памяти coding-агентов Funes
Funes работает локально?
По умолчанию Funes обрабатывает и хранит память локально. Это local-first, но не автоматически local-only: push, hooks для общей памяти и ask могут отправлять данные за пределы локального процесса.
Funes работает с Claude Code и Codex?
Да. funes add поддерживает Claude Code и Codex, а также pi и Hermes. Для привязки памяти в Codex нужны версия 0.151.0 и trusted hooks.
Funes индексирует сессии автоматически?
После funes add поддерживаемые интеграции устанавливают автоматизацию индексации каждого хода. Начальная загрузка ограничена по объёму, поэтому старые сессии и крупный вывод инструментов могут потребовать последующих проходов.
Как дать Claude Code и Codex одну память?
Передайте одинаковый аргумент <org>/<repo> для funes add claude и funes add codex. Funes хранит рабочий индекс локально и публикует общий датасет на границах сессий.
Что делать, если Funes находит устаревшее решение?
Изучите его через funes recall, разверните контекст с помощью сгенерированной команды get и перед действием сверьте вывод с текущей веткой. Если первый поиск промахнулся, переформулируйте запрос.
Сохраняет ли funes ask данные на моей машине?
Поиск и реранжирование выполняются локально, но ask отправляет вопрос и найденные фрагменты настроенному провайдеру Claude или Codex. Для чувствительных доказательств используйте recall.
Можно удалить Funes, не удаляя память?
Да. Команды funes remove claude, funes remove codex, funes remove pi и funes remove hermes удаляют подключение интеграции, сохраняя индексированную память и исходные транскрипты.