← На главную

Jane Street выпустила TUI-обёртку strace-ui с интерактивным фильтром

02.06.2026 04:05 · hackernews

Разработчикам давно не хватало удобной обёртки для strace. Его вывод — каша, за подпроцессами и тредами сложно следить, а чтобы отфильтровать системные вызовы, приходится перезапускать с флагом для каждого. Всё это исправляет strace-ui — интерактивный терминальный интерфейс.

Утилита назначает процессам короткие ID вместо сырых PID, форматирует структуры, а буферы выводит как hex-дампы. Главные фичи: интерактивный фильтр — нажал h и спрятал любой неинтересный вызов (например, futex или epoll_wait в OCaml-процессе). Можно отслеживать конкретный файловый дескриптор: клавиши > и < прыгают по вызовам с тем же FD, а F сужает фильтр только до него. strace-ui умнее простого числового фильтра — он пытается отследить переиспользование FD и следовать за fork, но при аттаче к уже работающему процессу может ошибаться. Нажатие m открывает man-страницу для любого вызова (например, rt_sigprocmask). Вместо сырых PID подпроцессы и треды получают короткие метки. И DNS-резолвинг: strace-ui показывает не 14<TCP:[55.55.555.555:12345->11.11.11.11:56789]>, а человеческие имена хостов.

Инструмент сделал инженер Jane Street Ян Генри. Идея витала с 2017 года, но реализовать её получилось только сейчас — благодаря фреймворку Bonsai_term. Bonsai изначально создавался для реактивных веб-интерфейсов на OCaml (часть экосистемы Jane Street). Компоненты — чистые конечные автоматы, легко компонуются, инкрементальность предотвращает лишние пересчёты. Потом выяснилось, что ту же логику можно применить к терминалу — так родился Bonsai_term.

Подстегнул развитие Claude Code в феврале 2025. Стало ясно, что хорошо сделанное TUI побеждает тяжёлые IDE за счёт скорости, простоты и вездесущности терминала. В Jane Street построили своего AI-агента AIDE — он стал и демкой Bonsai_term, и полигоном для создания UI-компонентов. Главный секрет — тестирование. Bonsai_term умеет делать screenshot-тесты: интеграционный тест просто выводит состояние интерфейса как текст. Это идеально для AI-агентов — они видят результат своих правок, запускают тесты и получают обратную связь за секунды. Большая часть разработки strace-ui ушла как раз на то, что агент не мог увидеть в тестах: производительность скроллинга, фильтрации и рендеринга.

В Jane Street сейчас ежедневно появляются десятки новых TUI: отладчик с перемещением во времени для торговой системы, утилиты для администрирования Linux, мониторинг CI, управление эвалами агентов. Два примера: proctopus (управление многопроцессными приложениями) и dissect (анализ раздутых бинарников). Возрождение терминала объясняется просто: TUI лёгкие, быстрые, доступны везде, а Bonsai_term позволяет собирать их декларативно, типобезопасно и с общей кодовой базой между бэкендом и фронтендом. И никаких проблем с портированием JavaScript через js_of_ocaml — терминальное приложение работает как обычный OCaml-бинарник.

Попробовать всё это можно: инструкции по установке Bonsai_term, proctopus и strace-ui есть в соответствующих репозиториях. Jane Street рекомендует дать LLM примеры из репозитория и попросить написать expect-тесты — результат будет лучше.

Читать оригинал →