typesafe-computer-use — открытый инструмент для macOS, который сможет управлять твоим Mac по цели, написанной обычным текстом. Ты напишешь в терминале что-то вроде «зайди на techcrunch и открой страницу оплаты самых дешёвых билетов на ближайшее событие», а скрипт сам прочитает экран, выберет следующее действие и кликнет. Подойдёт разработчикам и энтузиастам, которым нужна автоматизация интерфейса без дорогих запросов к большой модели на каждый шаг.
Главная идея в том, что скриншот не уходит целиком в большую модель. Экран читается детерминированно: скриншот прогоняется через Vision OCR, строки склеиваются в блоки, параллельно из дерева доступности вытаскиваются реальные элементы управления с ролью, подписью и координатами, а через AppleScript определяется активное приложение и URL текущей вкладки. Всё это складывается в один нумерованный список вариантов, и дальше маленький классификатор TypeSafe отвечает на три вопроса: какой тип действия, какой элемент, какой сайт. Большая модель подключается только тогда, когда в поле нужно вписать настоящий текст, предложить URL для перехода в браузере или сформулировать финальный ответ.
Экономика получается заметно другой, чем у фронтир-подхода. По замерам автора на одном и том же скриншоте одно решение стоит около $0.0002 против $0.032 у большой модели по голому скриншоту — примерно в 155 раз дешевле, а задача на 12 шагов выходит в $0.003 вместо $0.40–0.90. Латентность модели — от 0.13 до 0.38 секунды, полный шаг с захватом экрана и OCR занимает около 1.5 секунды. Автор честно оговаривает цену такого подхода: всё, что большая модель додумывает сама, здесь приходится собирать руками как детерминированное состояние — например, разбор дат на экране вынесен в отдельный модуль.
OCR съедает примерно две трети шага и тарифицируется по объёму текста, поэтому в проект встроена экономия на чтении. Каждый шаг читает только активное окно с отступом 8 pt плюс полоску меню над теми же колонками. Новый кадр сравнивается с предыдущим в масштабе 1/8 по тайлам 256 px: неизменившиеся участки переиспользуют прошлые строки, изменившиеся группируются в несколько прямоугольников и читаются по отдельности. Если изменилось больше 60% экрана, произошёл переход между приложениями или окно переехало — область читается целиком. В строке таймингов видно, сколько экрана реально прочитано и сколькими кусками.
Для запуска понадобится macOS 14 или новее, Python 3.12+ и uv, а терминалу нужно выдать права на запись экрана и Accessibility — без первого захват вернёт обои, без второго клики будут молча проглатываться, и режим --act просто откажется стартовать. Обязателен только ключ TYPESAFE_API_KEY, ключ Anthropic опционален и нужен для ввода текста и финального ответа. Браузер по умолчанию — Google Chrome, модели для письма и ответа настраиваются переменными окружения.
Без флага --act команда сделает один шаг «на сухую» и просто напечатает, что собиралась сделать. С флагом — начнёт управлять машиной, по умолчанию до 100 шагов, количество и задержку можно задать вручную. Отдельная команда clicker-inspect покажет аннотированный экран и payload, чтобы понять, что именно увидел классификатор. Остановить живой прогон можно через Ctrl-C или резким движением мыши в левый верхний угол; цикл также остановится сам при уверенности ниже 0.4, после двух пустых шагов подряд или по исчерпании лимита. Когда прогон заканчивается штатно, модель-писатель читает последний экран и печатает результат — либо запрошенную информацию, либо описание ситуации и следующий шаг.