Letta: агент и память между разговорами — это продукт Letta Code, где память живёт в MemFS, git-поддерживаемой файловой системе, которую агент просматривает и правит. Память общая для разговоров агента и пополняется, когда он узнаёт устойчивые сведения о вас и своей работе. Ниже — актуальный маршрут, учебный пример и проверки.
Актуальная архитектура и границы версии
Текущий исходный код Letta живёт в репозитории letta-ai/letta-code, и в него входят агентный каркас, интерактивный терминальный интерфейс, App Server, каналы и рантайм, который используют десктопное и веб-приложения. Об этом сообщает README проекта на GitHub. Тот же README называет Letta прежним именем MemGPT и указывает, что проект активно развивается.
Ветка archive в репозитории содержит выведенный из эксплуатации сервер Letta V1 API. Существующие теги и релизы остаются доступными для воспроизводимости, а активным проектам README советует текущий исходный код. Это и есть граница версии: V1 SDK, memory blocks и прежний self-hosted REST-сервер относятся к legacy-слою.
Документация по memory blocks прямо помечена как V1 SDK (legacy). Там описаны блоки persona и human, лимит в символах, поле read_only и операции вида client.blocks.create. Эти материалы объясняют происхождение абстракции, и переносить их импорты в текущий маршрут не нужно.
Текущая документация памяти описывает MemFS и команды /init, /remember, /memory, /doctor, /sleeptime. Веб-приложение по умолчанию запускает агентов в управляемой облачной песочнице, а CLI запускает агентов на вашем компьютере и может использовать ваши ключи API и тарифы coding-планов. Так quickstart разделяет два способа входа.
| Слой | Где описан | Статус |
|---|---|---|
| Letta Code, MemFS | README, configuration/memory | текущий маршрут |
| V1 SDK, memory blocks | v1-sdk/memory/memory-blocks | legacy |
| Сервер V1 API | ветка archive | выведен из эксплуатации |
Полностью заданный вход и ручной эталон
Учебный вход фиксируется целиком, чтобы результат можно было принять или отклонить без догадок. Проект — Atlas, язык ответа — ru, день релиза — Friday, час релиза не задан. Это условные учебные значения.
В Letta Code вы вводите /remember и сообщение: Для проекта Atlas отвечай по-русски. Текущий день релиза — Friday. Час релиза не задан. Затем через /memory смотрите, какие файлы и записи сохранены.
После этого открываете новый разговор и спрашиваете: Какой день и час релиза Atlas? Укажи, на какую запись памяти ты опираешься. Ручной эталон первого шага: Friday, час неизвестен.
Если память отсутствует, честный ответ об отсутствии сведений допустим. Проверка сохранения в этом случае ещё не пройдена: агент не подтвердил, что запись пережила смену разговора.
Вторая запись меняет факт: Для Atlas день релиза изменился с Friday на Thursday. Час по-прежнему не задан. После /memory и нового разговора эталон актуального ответа — Thursday, час неизвестен. Friday допустим как прежнее значение с явной пометкой об устаревании.
| Поле | Значение | Эталон после второй записи |
|---|---|---|
| Текущий факт | день релиза | Thursday |
| Прежний факт | день релиза | Friday, с пометкой |
| Язык | ru | ru |
| Час | не задан | unknown |
Копируемый маршрут и нужные файлы
Документация quickstart даёт два входа. Веб-приложение открывается на chat.letta.com из браузера или с телефона, вход выполняется через аккаунт Letta. CLI ставится командой npm install -g @letta-ai/letta-code и требует Node.js версии 22.19 или выше; запуск — командой letta.
При первом интерактивном запуске CLI автоматически создаётся агент Tutor. Новые аккаунты в веб-приложении тоже начинают в Tutor. Переключение агентов и разговоров идёт из боковой панели, а команды /new, /resume, /agents и /model меняют разговор, агента и модель.
Память инициализируется командой /init: агент осматривает репозиторий, при необходимости спрашивает о стиле работы и может просматривать прошлые сессии через субагентов. Если иерархия памяти разрослась, /doctor проверяет размещение, дубликаты и расход токенов системного промпта.
Для учебного примера нужны два файла-ориентира: репозиторий проекта, куда вы переходите перед запуском, и репозиторий памяти, который вы просматриваете через /memory или по $MEMORY_DIR. Имя конкретного файла и ID блока агент выбирает сам, поэтому заранее объявлять их одинаковыми для каждого запуска нельзя.
cd your-project
letta
/init
/remember Для проекта Atlas отвечай по-русски. Текущий день релиза — Friday. Час релиза не задан
/memory
/new
Какой день и час релиза Atlas? Укажи, на какую запись памяти ты опираешься.
Точные факты, поля и отрицательные случаи
Проверка опирается на отдельные заданные поля. Язык ответа — ru. Текущий день релиза после второй записи — Thursday. Прежний день — Friday. Час — unknown.
Отрицательные случаи перечислены явно. Ответ Friday без пометки об устаревании отклоняется: актуальный эталон — Thursday. Выдуманный час вроде 10:00 отклоняется: час не задан. Утверждение, что все данные остаются локально при облачном подключении, отклоняется как неверное для этого сценария.
Место каждого факта фиксирует сам читатель по реальному выводу /memory. Имя файла, ID блока и результат команды в этом примере не выдумываются. Обновление Friday→Thursday — требование ручного эталона, а результат модели заранее неизвестен.
Если агент отвечает об отсутствии сведений, это допустимый честный ответ, но проверка сохранения не пройдена. Приёмка проходит только тогда, когда новый разговор возвращает Thursday и указывает запись, на которую опирается.
| Проверка | Принимается | Отклоняется |
|---|---|---|
| День релиза | Thursday | Friday без пометки |
| Час | unknown | 10:00 |
| Язык | ru | другой |
| Локальность | по факту подключения | «всё локально» при облаке |
Чужие замеры и выводы о качестве
Сторонние материалы полезны как ориентир по установке, и переносить их числа на этот пример не стоит. Обзор на aifoss.dev разбирает self-hosting Letta с Ollama и отдельно оговаривает ловушку V1: архивный Docker-образ и текущий локальный режим CLI — разные вещи. Сайт финансируется партнёрскими ссылками и не является вендором Letta.
Личный гайд Lillith на nekoweb.org описывает установку, различие локального и облачного режимов, постоянную память, каналы, разрешения инструментов и обслуживание. Это companion-гайд одного пользователя, и он не служит официальным контрактом API или измерением качества памяти.
Тарифы и лимиты берутся из документации Letta. Free-план включает 5 MiB на репозиторий памяти, Pro — 50 MiB на репозиторий; считается размер файлов в последнем снимке ветки или тега, без истории Git, и лимит применяется к каждому репозиторию отдельно, включая общую память. Эти числа относятся к облачному хранилищу памяти Letta.
Замеры скорости, стоимости и «качества памяти» из чужих статей в этот пример не переносятся. Учебный протокол проверяет одно: пережил ли конкретный факт смену разговора и вернул ли агент актуальное значение с указанием записи.
Неизвестные значения и условия отказа
Час релиза не задан, и это нормальное состояние поля. Агент, который называет конкретный час, домысливает данные. Условие приёмки — ответ «unknown» либо честное указание, что сведений нет.
Результат нельзя принять, если новый разговор не видит запись. Причины бывают разные: запись не сохранилась, разговор открыт у другого агента, память не инициализирована. Диагностика начинается с /memory и $MEMORY_DIR, затем /doctor для проверки размещения и дубликатов.
Отдельный случай — конфликт двух записей. Если в памяти остались и Friday, и Thursday, актуальным считается Thursday, а Friday сохраняется как прежнее значение с пометкой. Ответ, который смешивает их без разделения, отклоняется.
При облачном подключении данные агента доступны с разных устройств, и утверждение о полной локальности к этому режиму не подходит. При работе без аккаунта агенты хранятся только на локальном диске и могут требовать ручного резервного копирования — так описывает это quickstart.
Текущие /remember и /memory
Текущий маршрут обучения памяти — команда /remember. Документация памяти приводит пример /remember always use pnpm in this repo: агент сам решает, куда отнести урок, и коммитит обновление в MemFS. Просмотр сохранённого идёт через /memory в CLI или прямым осмотром $MEMORY_DIR.
Команда /init загружает или обновляет память для текущего проекта. Фоновый режим dreaming через /sleeptime или настройки Dream просматривает недавние разговоры и объединяет полезные уроки, не прерывая вашу работу; запуск настраивается по числу шагов агента или при сжатии контекстного окна.
V1 memory blocks с полями label, description, value, limit и read_only остаются в разделе legacy. Там же операции client.blocks.create, attach, retrieve и update, где установка value полностью заменяет содержимое блока, а при параллельной записи побеждает последняя. Core, recall и archival API из V1 не выдаются за гарантию текущего Letta Code.
Промпт для проверки памяти в новом разговоре:
Какой день и час релиза [проект]? Укажи, на какую запись памяти ты опираешься. Если час не задан, ответь unknown. Если актуальный день менялся, назови текущее значение и отдельно прежнее с пометкой об устаревании.
Меняйте [проект] на своё имя, а язык ответа задавайте в самой записи через /remember. Варианты той же задачи: проверить язык ответа, проверить прежнее значение с пометкой, проверить отсутствие домысла о часе, проверить общую память у двух агентов, проверить поведение после /doctor.
Частые вопросы
Что такое Letta простыми словами?
Letta — продукт для агентов с состоянием, которые хранят память и контекст между разговорами. Текущий код живёт в репозитории letta-ai/letta-code, а прежнее имя проекта — MemGPT. Память агента устроена как MemFS, git-поддерживаемая файловая система.
Чем Letta Code отличается от V1 SDK?
V1 SDK и memory blocks помечены в документации как legacy, а сервер V1 API лежит в ветке archive. Текущий маршрут — Letta Code с командами /init, /remember, /memory. Старые импорты letta-client относятся к прежнему слою.
Как научить агента помнить факт между разговорами?
Введите /remember и сообщение с фактом, затем проверьте результат через /memory. Откройте новый разговор командой /new и задайте вопрос о факте. Агент сам решает, в какой файл памяти отнести запись.
Почему агент не помнит прошлый разговор?
Проверьте вывод /memory и содержимое $MEMORY_DIR, затем запустите /doctor для аудита размещения и дубликатов. Убедитесь, что новый разговор открыт у того же агента. Честный ответ об отсутствии сведений означает, что проверка сохранения не пройдена.
Где хранится память Letta и сколько она занимает?
Память хранится в MemFS, git-поддерживаемой файловой системе агента. В облаке Free-план включает 5 MiB на репозиторий памяти, Pro — 50 MiB на репозиторий, без учёта истории Git. Громоздкие данные документация советует держать вне памяти.
