Инструмент mindwalk визуализирует работу код-агентов — он проигрывает их сессии на 3D-карте репозитория. Проблема в том, что обычный лог показывает, что агент делал, но не как он понимал задачу: какие части кода считал важными, где искал до того, как начал редактировать, и соответствовал ли его след вашему замыслу. Читать сырой JSONL построчно — бессмысленно.
Mindwalk рисует репозиторий как ночную карту города, а сессию проигрывает как свет, движущийся по нему. Там, где агент искал, читал и редактировал файлы, карта светится — всё остальное остаётся тёмным. Сразу видно, как агент понял задачу. Один Go-бинар читает логи Claude Code и Codex, всё работает локально — данные сессии никуда не уходят.
Установка через curl одной строкой, бинар проверяется по контрольной сумме и кладётся в ~/.local/bin. Для Windows — архивы на GitHub Releases. Сборка из исходников: make setup && make build.
Без аргументов mindwalk сканирует ~/.claude/projects и ~/.codex/sessions, открывает UI на случайном локальном порту в браузере. Можно указать порт, отключить открытие браузера или задать папки вручную. Есть команды для отдельной сессии или сборки citymap репозитория.
Визуализация использует два вида карты — радиальное дерево или treemap. Интенсивность свечения показывает, насколько глубоко и часто трогали файл. У каждого файла есть состояние: seen (зелёный), read (белый), edited (тёплый янтарь), unvisited (тёмный). HUD выводит сигналы трения — частоту ошибок, переписанные файлы, правки после последней верификации.
Панель воспроизведения: можно листать сессию по гистограмме с шагом. Наблюдение (поиск, чтение, выполнение) окрашено в холодные тона, мутация (редактирование, проверка) — в тёплые. На шкале времени отмечены сжатия контекста, запуски сабагентов и повороты пользователя — по каждому клик ведёт к моменту. Инспектор показывает историю посещений файла.
Горячие клавиши: пробел — пауза, стрелки — шаг, Home/End — к концам, S — скорость, E — следующее редактирование, X — следующая ошибка, M — следующая метка.
Архитектура держит два артефакта раздельно: trace (нормализованная последовательность событий касания файлов) и citymap (детерминированная раскладка репозитория — одинаковое дерево даёт одинаковую карту). Go-сервер соединяет их и отдаёт фронтенд на React/Three.js. Схемы JSON лежат в schema/.
Правила разработки: адаптеры не знают о рендеринге, генерация карты не зависит от воспроизведения, сервер только соединяет их. Код должен быть gofmt-отформатирован, ручная правка internal/server/static запрещена, меняешь схемы — обновляй schema/ и тесты.