mindwalk
- title
- mindwalk
- type
- toolbox
- summary
- Воспроизводит сессию coding-агента как движение света по 3D-карте затронутого им репозитория
- tags
- go, agentic-coding, visualization, watchlist
- language
- Go
- license
- MIT
- created
- 2026-07-18
- updated
- 2026-07-18
- lang
- ru
- translation_of
- mindwalk
- source_updated
- 2026-07-18
- translated
- 2026-09-01
- translator
- lllm/antigravity/gemini-3.7-flash-medium
mindwalk воспроизводит сессию coding-агента как движение света по 3D-карте вашей кодовой базы. Он считывает логи сессий Claude Code и Codex, отрисовывает репозиторий в виде тёмной ночной карты и проигрывает прогон: файлы, которые агент искал, читал и редактировал, подсвечиваются, а всё, что он проигнорировал, остаётся тёмным. Суть в том, чтобы увидеть форму того, как агент понял задачу: какие части репозитория он счёл относящимися к делу, что именно исследовал перед действиями, соответствовал ли охват задуманному вами масштабу. Необработанный лог JSONL фиксирует те же события, но с первого взгляда на эти вопросы не отвечает. Автор Рико Ю (Ricko Yu, cosmtrek, известный по утилите air для live-reload) говорит, что изначально хотел сравнивать, как разные LLM решают задачу, глядя на траекторию, а не на diff.
Как это работает
Архитектура намеренно разделяет три артефакта по отдельным пакетам:
- Трассировка (trace) - лог сессии, нормализованный в упорядоченный поток событий обращений к файлам. В
internal/adapterлежит по одному адаптеру на формат каждого агента; адаптеры также связывают сессии субагентов в единый граф, поэтому трассировку каждого субагента можно проигрывать отдельно. - Городская карта (citymap) - детерминированная раскладка репозитория (
internal/citymap). Одно и то же дерево всегда даёт одну и ту же карту, благодаря чему повторы разных сессий по одному репозиторию совпадают и их можно сравнивать. - Отчёт (report) - выводы LLM-судьи с привязкой к фактам по одной сессии (
internal/judge). Судья лишь формулирует выводы; вердикты всегда сводятся механически, поэтому отчёты также остаются сопоставимыми между сессиями.
Локальный Go-сервер (internal/server) объединяет все три компонента и раздаёт фронтенд на React/Three.js. Всё приложение поставляется единым бинарником Go со встроенным фронтендом, а просмотр полностью локален - во время просмотра сессии данные наружу не уходят.
Файлы имеют состояние "наиболее глубокого касания", отображаемое цветом: просмотренные - мшисто-зелёным, прочитанные - лунно-синим, отредактированные - тёплым янтарным, нетронутые остаются тёмными. Файлы, затронутые сессией, но уже отсутствующие в репозитории, отображаются каркасными призраками. Панель воспроизведения позволяет прокручивать прогон по гистограмме, где события наблюдения (search, read, exec) находятся в холодной гамме, а события мутации (edit, verify) светятся тёплым, выделяя фазы редактирования. Метки на таймлайне отмечают сжатия контекста, запуск субагентов и ходы пользователя, позволяя переходить к ним по клику. Есть древовидное отображение и рельефный вид treemap, а команда mindwalk map <repo> отрисовывает карту любого репозитория без привязки к сессии, кодируя высотой объём строк кода вместо внимания агента.
Использование
curl -fsSL https://raw.githubusercontent.com/cosmtrek/mindwalk/master/scripts/install.sh | sh
export PATH="$HOME/.local/bin:$PATH"
mindwalk
Без аргументов утилита сканирует каталоги ~/.claude/projects и ~/.codex/sessions, поднимает UI на случайном локальном порту и открывает браузер. Подкоманды закрывают отдельные задачи:
mindwalk serve [--port N] [--claude-dir DIR] [--codex-dir DIR]
mindwalk open <session.jsonl> # one specific session
mindwalk map <repo> # a repo map, no session needed
mindwalk build <repo> # write the citymap JSON
mindwalk trace <session> # write the normalized trace JSON
mindwalk analyze <session> [--judge claude|codex] [--model name]
Оценка сессии - единственная возможность, отправляющая данные вовне, и только если явно запустить analyze или нажать на панель оценки. Для анализа траектории сессии (исследование, границы задачи, блуждания, верификация) запускается ваш собственный CLI claude или codex, отправляя сводку сессии (формулировку пользовательского сообщения, пути к файлам, однострочные выжимки событий) модели вашей учётной записи. Подпроцесс судьи запускается изолированно: без инструментов, без MCP-серверов, без настроек пользователя или проекта. Отчёты кэшируются в ~/.mindwalk/reports, по одному на сессию; при изменении сессии они просто устаревают, а не перезапускаются автоматически.
Ограничения
- Читает логи только Claude Code и Codex; для других форматов агентов требуется новый адаптер.
- История ведётся строго по отдельным сессиям агента - сквозного отображения по всем вашим сессиям пока нет (это запрашивали в треде Show HN).
- Карта строится по репозиторию в его текущем виде, поэтому по проекту, который вы успели удалить, сессия почти ничего не отрисует в виде дерева или рельефа, хотя события на таймлайне останутся.
- Оценка сессии зависит от наличия локального CLI
claudeилиcodexс выполненным входом. - Вопрос о том, окупает ли 3D-вид затраты по сравнению с
git diff, остаётся спорным: мнения в треде на HN разделились между теми, кому пространственный обзор ускоряет работу на больших репозиториях, и теми, кто видит лишние сложности без ощутимой пользы. Инструмент лучше всего воспринимается для оценки и аудита, а не на каждый день.
Входит в watchlist: проект от одного автора, совершенно новый, а ценность предложения всё ещё обсуждается публично. За ним стоит вернуться, чтобы посмотреть, появится ли сквозная история между сессиями и добавятся ли адаптеры помимо Claude Code и Codex.
Связанные страницы: agentsview анализирует сессии агентов в виде метрик и таблиц, где mindwalk визуализирует их в пространстве; re_gent сохраняет активность агента как историю в формате VCS на базе Git для аудита, а не визуализации; сигналы проблем, выявляемые mindwalk (частота ошибок, churn, правки после последней проверки), относятся к тем вещам, за которыми советует следить статья clean-code-coding-agents.
Репозиторий: github.com/cosmtrek/mindwalk - 778 звёзд, лицензия MIT.