Как пересаживаться между Claude Code и Codex без потери контекста
Знакомая ситуация: сидишь в терминале с Claude Code, полтора часа отлаживаешь хитрый баг в распределенной очереди, перебрали пять нерабочих гипотез, наконец нащупали верное решение. Тут сессия разрастается, контекст сжимается, или лимиты упираются в потолок. Переключаешься в Codex или OpenCode в той же папке, и начинается цирк. Новому ассистенту приходится с нуля пересказывать вводные: почему нельзя трогать конфиг NGINX, какие тесты уже упали и какую структуру базы мы выбрали двадцать минут назад.
Проект ai-memory берется решить эту проблему раз и навсегда. Написал его Фабио Акита (известный в сообществе как AkitaOnRails). Идея в том, чтобы дать консольным ИИ-агентам общую долговременную память и автоматическую передачу контекста (handoff) между сессиями и разными моделями.
В чем задумка
Обычно под «памятью для ИИ» понимают векторную базу данных, куда сваливают эмбеддинги сырых логов диалогов. На практике в таких логах тонны мусора: промежуточные вызовы инструментов, повторные запуски тестов, синтаксические ошибки.
Автор ai-memory пошел по другому пути, вдохновившись концепцией Karpathy LLM Wiki. Память здесь устроена как обычная вики из Markdown-файлов в Git-репозитории. Сервер перехватывает события жизненного цикла агентов, очищает их от лишнего шума и при завершении сессии компилирует сжатый итог: что делали, к каким выводам пришли, какие задачи остались открытыми.
Когда вы открываете следующий терминал с другим агентом, инструмент автоматически подсовывает ему структурированную выжимку прямо перед первым промптом. Никаких ручных копирований из буфера обмена.
Под капотом и в терминале
Сервер написан на Rust. Он поднимает локальный сервис с поддержкой протокола MCP (Model Context Protocol), хуками жизненного цикла и встроенным веб-интерфейсом.
Поддерживаются практически все актуальные агентские CLI:
- Claude Code
- OpenAI Codex
- Command Code
- Devin CLI
- OpenCode, Cursor, Zed
- Gemini CLI, Grok Build CLI, Kimi Code, Kiro CLI, Pi / OMP
Данные хранятся локально в одной директории:
<data_dir>/
├── wiki/ # Markdown-страницы под версионным контролем Git
├── raw/ # очищенные сегменты сессий
├── db/ # SQLite с индексами FTS5, сущностями и эмбеддингами
└── logs/ # логи работы
Каждый проект изолируется по пути к репозиторию или через маркерный файл .ai-memory.toml. Если вы работаете с монорепозиторием или несколькими Git worktree, они связываются в единый контекст.
Главные фичи на практике
Бесшовное переключение между агентами
В ai-memory есть режим управляемых сессий ai-memory run. Выглядит это просто:
cd /path/to/project
ai-memory run claude
# Закончили работу в Claude Code, продолжаем задачу в Codex:
ai-memory run codex --yolo
# А потом возвращаемся к сессии через Command Code:
ai-memory run command-code
Агент при старте считывает блок «где мы остановились». Там собраны последние архитектурные решения, открытые вопросы и результаты тестов. Если не указывать имя агента, команда ai-memory run сама подхватит самую свежую активную сессию в текущей папке.
Команда ai-memory continue пойдет еще дальше: ее можно вызвать из любой папки, и она вернет вас в проект, над которым вы работали последним.
Вики вместо свалки логов
Вся база знаний хранится обычным текстом. Ее можно открыть в Obsidian, читать через grep или просматривать во встроенном браузере на порту 127.0.0.1:49374/web.
Если вы хотите зафиксировать важное проектное правило, достаточно сказать агенту: «сохрани в постоянную память, что мы используем NATS JetStream для очередей». Агент вызовет MCP-тул memory_write_page, и в репозитории появится версионированный Markdown-файл.
Поиск по базе знаний гибридный. Сначала отрабатывает полнотекстовый поиск SQLite FTS5, затем сопоставление сущностей и графовые связи между страницами. Если подключить модель эмбеддингов, добавится и векторный поиск.
При этом ai-memory умеет отличать постоянные архитектурные правила от временных заметок из конкретной сессии, отдавая приоритет стабильным страницам из папок _rules/ и decisions/.
Работа без внешних LLM
Интересная деталь: ai-memory запускается вообще без API-ключей к нейросетям. В режиме «zero-LLM» поиск работает через FTS5 и сущности, а саммари сессий собираются по детерминированным правилам.
Если же прописать ключи (Anthropic, OpenAI, Gemini или локальный Ollama через совместимый эндпоинт), инструмент подключает умную консолидацию страниц, поиск противоречий в базе знаний и фоновое самообучение проекта.
Быстрый старт через Docker
Самый быстрый способ развернуть сервер на рабочей машине:
# 1. Запускаем локальный сервер
docker run -d --name ai-memory \
--restart unless-stopped \
-p 127.0.0.1:49374:49374 \
-v ai-memory-data:/data \
-e AI_MEMORY_LLM_PROVIDER=anthropic \
-e ANTHROPIC_API_KEY=sk-ant-... \
akitaonrails/ai-memory:latest
# 2. Подключаем MCP и хуки для Claude Code
ai-memory install-mcp --client claude-code --apply
ai-memory install-hooks --agent claude-code --apply
Для пользователей Arch Linux в AUR лежат готовые пакеты ai-memory-bin с системными юнитами systemd. Под macOS выпускаются нативные бинарники под Apple Silicon и Intel.
Если сервер выносится на домашний сервер или в локальную сеть, безопасность настраивается через Bearer-токены. Сервер слушает запросы, проверяет авторизацию и разграничивает память между несколькими разработчиками через операторские слоты.
Для чего это пригодится
Инструмент решает три конкретные задачи.
Первая — мультиагентная разработка. Одну задачу быстрее набросать в Claude, отрефакторить в Codex, а код-ревью провести через Gemini. Без общего слоя памяти такой воркфлоу превращается в бесконечную рутину копирования контекста.
Вторая — онбординг агента в старый репозиторий. Команда ai-memory bootstrap вычитывает историю коммитов, README и документацию проекта, генерируя стартовые страницы базы знаний.
Третья — локальный аудит. В любой момент можно открыть веб-интерфейс, проверить сгенерированные заметки, откатить неудачную правку через ai-memory restore-page или вычистить устаревшие данные.
Итоги
ai-memory подкупает прагматичным подходом. Вместо того чтобы городить очередной тяжелый стек с внешними векторными базами, автор взял быстрый Rust, надежный SQLite и простой Git с Markdown.
Если вы активно пользуетесь терминальными ИИ-ассистентами и устали каждый день заново объяснять моделям контекст проекта, на репозиторий определенно стоит взглянуть. Начните с локального запуска в связке с вашим основным CLI-агентом, чтобы оценить удобство передачи контекста между задачами.
