Память для агентов и статусы, которым можно верить
Агент забывает всё, когда заканчивается сессия. В NeuroSquad 0.1.222 появилась «Память»: проведите стрелку — и агент сохранит то, что узнал, и найдёт это через неделю. Хранится у вас на компьютере, ищется по смыслу. А карточки Claude Code больше не зависают в «Работает».
Каждая сессия агента начинается с нуля. Вы объясняете, что в репозитории pnpm, что миграции лежат в db/migrations, что в ветку staging руками никто не пушит, — и следующей сессии или следующему агенту на холсте приходится объяснять заново. Файлы с инструкциями помогают с правилами, которые пишут один раз; с тем, что агент узнаёт по ходу работы, они не помогают.
В NeuroSquad 0.1.222 появилась «Память» — карточка-плагин на mem0, открытом движке памяти (Apache-2.0). Подключённые к ней агенты сохраняют то, что стоит запомнить, и находят это позже — в другой сессии, в другом агенте, после перезапуска. Память хранится у вас на компьютере, в папке данных приложения. Ни аккаунта, ни сервера.
memory_add, и карточка показывает его с именем агента. Второй ход: автоподсказка добавляет к промпту запись о миграциях. Для скриншота агент работает с локальной моделью по сценарию; память, поиск и подсказки — настоящее приложение.Стрелка — это доступ
Как и любой плагин, «Память» — это карточка. Проведите к ней стрелку от агента, и у него появятся шесть инструментов: memory_search, memory_add, memory_list, memory_get, memory_update и memory_delete. Уберите стрелку — и их нет, а записи остаются на карточке. Большинство CLI видят изменение при следующем запросе списка инструментов, без перезапуска. Codex, Kimi Code, Cursor и Crush читают список один раз при старте, поэтому у них инструменты есть с самого начала, а стрелка решает, пройдёт ли вызов.
Записи принадлежат области, а не карточке: этот воркспейс (по умолчанию — общая для всех подключённых здесь агентов), все воркспейсы (для того, что верно везде, например ваших соглашений) или у каждого агента своя (личная память каждого подключённого агента; карточка показывает все). Агент может менять и удалять только то, что записал сам, пока вы не включите «Агенты могут менять любые записи». В описаниях инструментов агентам сказано, что записи — это заметки, а не инструкции, и что секреты в память не кладут.
Поиск по словам и поиск по смыслу
Для поиска mem0 нужна модель эмбеддингов. Нам не хотелось, чтобы карточке что-то требовалось до начала работы, поэтому по умолчанию стоит встроенный индекс по словам: он работает офлайн сразу после добавления карточки и находит записи, у которых с вопросом общие слова или части слов, — «базы» находит «база». Синонимов он не знает, и карточка так и говорит.
Следующий шаг — умный поиск: многоязычная модель предложений paraphrase-multilingual-MiniLM-L12-v2, которая работает на вашем компьютере. Одно нажатие на карточке скачивает около 150 МБ один раз — модель, её токенизатор и среду WebAssembly, — сверяет каждый файл с его SHA-256 и переиндексирует уже сохранённые записи. WebAssembly выбран сознательно: без нативного кода одни и те же файлы работают на Windows и на обоих видах Mac, ничего не нужно пересобирать и подписывать. Можно и иначе — модель эмбеддингов на OpenRouter или на вашем сервере (Ollama, LM Studio, llama.cpp, vLLM).
Почему эта модель
Мы сравнили две модели одного размера на парах текстов на английском, русском и китайском. multilingual-e5-small оценивала связанные и несвязанные пары почти одинаково — от 0,75 до 0,81 и те и другие — и ставила вопрос «какой пакетный менеджер?» ближе к записи о базе данных, чем к записи о pnpm. MiniLM их разводила: около 0,53–0,58 для связанных пар и меньше 0,25 для несвязанных. Именно этот зазор позволяет карточке не показывать неподходящие записи. Но оценки остаются скромными, поэтому для автоподсказок порог строже, чем для поля поиска.
Умный поиск не включён по умолчанию, потому что загрузка 150 МБ при первом использовании заставила бы первый memory_add агента ждать её и потратила бы трафик, о котором никто не просил. Карточка предлагает его там, где это важно, — под числом записей.
Подсказки и сохранение без просьб
Агентам сказано искать в памяти перед работой, которая может зависеть от прежних решений, но делают они это не всегда. Два переключателя на карточке, оба по умолчанию выключены, снимают это с них.
- Автоматические подсказки. Перед каждым промптом подключённого агента по нему ищется в области карточки, и до пяти подходящих записей добавляются к этому ходу с пометкой, что это заметки. Если поиск занимает больше трёх секунд, ход идёт без него. Работает в Claude Code, Codex и Qwen Code через их хук промпта, в OpenCode и Kilo Code через плагин NeuroSquad, в pi и omp через их расширения и в Gemini CLI через отдельный хук.
- Автоматическое сохранение. Когда подключённый агент заканчивает ход, ваш промпт и его итоговый ответ уходят модели для выделения фактов, которую вы выбираете на карточке, — на OpenRouter или на своём сервере. Модель оставляет только долговечные факты, часто ни одного. Без модели переключатель недоступен: иначе каждый промпт сохранялся бы целиком.
Что хранится, решаете вы. Карточка показывает каждую запись с автором — вы, агент или «автоматически», — позволяет исправить или удалить её на месте и показывает историю. Экспорт записывает область в JSON-файл; импорт читает его обратно и до записи показывает предпросмотр: сколько новых, сколько уже есть и будет пропущено. «Отменить» удаляет ровно то, что добавил последний импорт. При удалении воркспейса удаляются его записи, при удалении агента — его личные, и диалог удаления заранее говорит, сколько их.
Статусы Claude Code по транскрипту
Статус карточки — работает, нужен ваш ответ, закончил, ждёт — берётся из хуков CLI. Для Claude Code этого не хватало. Мы прошлись по 14 своим транскриптам Claude Code из NeuroSquad, только по типам событий: в 166 ходах было 14 прерываний, 3 хода закончились лимитом запросов, а 38 промптов набрали, пока Claude ещё работал. Семь последних ходов закончились вообще без хука Stop — после Escape или после ошибки API, — и каждый оставлял карточку в «Работает». Вторая беда — хук Notification: кроме настоящих запросов разрешения он сообщает о законченных субагентах, результатах диалогов и других событиях, и карточка превращала часть из них в «нужен ваш ответ» после хода, который просто закончился.
Claude Code записывает каждый ход в файл транскрипта, а хуки говорят, где он лежит. Теперь каждая карточка Claude, пока агент работает, читает новые строки своего транскрипта и сверяет с ними статус: конец хода, отметка о прерывании или ошибка API новее текущего состояния заканчивают ход; ход, начавшийся после конца, снова переводит карточку в «Работает». В нашем тесте Escape посреди ответа переводит карточку в ожидание примерно за 0,3 секунды. Ошибка API заканчивает ход с «Claude stopped: API error» и всё равно звенит, но очередь промптов в неудавшийся ход не отправляется. «Нужен ваш ответ» теперь бывает только от запроса разрешения или вопроса, а Stop, за которым в очереди стоит промпт, больше не звенит «закончил» между двумя ходами.
Если карточка всё же показывает что-то не то, в её меню есть «Копировать трассу статуса»: последние события и переходы статуса карточки, только типы событий — без промптов, ответов, команд и имён файлов. Вставьте это в сообщение об ошибке, и мы увидим то, что видела карточка.
У плагина есть своя страница — «Память» (mem0) — и руководство в документации; статусы и уведомления описаны в разделе «Уведомления». Полный список изменений — в журнале изменений 0.1.222.



