Ghostty: терминал, который просит любви
Ghostty — штука красивая. Написан на Zig, летает, жрет мегабайты, а не гигабайты. Mitch Hashimoto сделал конфетку. Но есть одна заноза: автоматические обновления на macOS работали через раз. Точнее, их вообще не было — только ручная загрузка новой версии с GitHub. Для пользователя это боль. Для разработчика — идеальная песочница для ИИ-агентов.
Я решил не писать код руками — а отдать задачу Claude Code. Не просто кусок кода, а полноценную фичу: инлайн-обновлялку, которая сама проверяет релизы, скачивает новый бинарник и перезапускает терминал. Звучит просто? А вот и нет. Zig — язык молодой, экосистема скудная, а macOS Sandbox и Gatekeeper могут завернуть любой апдейт.
Под капотом — подробный разбор процесса, стоимость токенов, грабли, на которые я наступил, и промпты, которые заставили ИИ думать как инженер Apple.
Сценарий: как агент выиграл битву с Zig
Задача: добавить в Ghostty флаг --auto-update и механизм обновления. Я не фанат копаться в Zig (синтаксис ломает мозг), поэтому доверился агенту. Начали с промпта: «Сделай модуль обновлений как в популярных терминалах — iTerm2, Warp. Код на Zig. Учти подпись кода на macOS, проверку целостности, чтобы не отвалился найтли».
Агент начал изучать репозиторий. Сначала он прочитал build.zig, структуру папок, потом нырнул в src/app.zig — точку входа. Я сидел и смотрел логи: агент открывал файл за файлом, составлял граф зависимостей. На это ушло ~150К входных токенов — около $3 (Claude Code использует Claude Opus 4 на тот момент).
1 Подготовка: AI сканирует код
Первая итерация — агент предложил архитектуру: отдельный поток (Async), HTTP-клиент на std.http, проверка версий через GitHub API, загрузка через curl с верификацией SHA256. Красиво. Но он забыл про Sandbox. macOS запрещает писать в /Applications без разрешения пользователя. Код упал уже на первом тесте.
Ошибка №1: Агент не знал о файрвол-исключениях macOS и песочнице. Пришлось добавить в промпт: «Учти, что бинарник может быть перемещен, используй relativ path, запрашивай разрешение через NSAlert». Это добавило ещё 50К токенов.
2 Написание кода: галлюцинации Zig
Второй проход — агент сгенерировал код с обёрткой над Foundation framework. Проблема: он использовал функции, которых нет в Zig 0.13 (на момент написания статьи — май 2026 уже Zig 0.14, но Ghostty еще собирается под 0.13). Начались танцы с LLVM. Тут пригодилась ссылка на статью «CleanForce: как заставить ИИ генерировать код, который не стыдно показать на code review» — я добавил в промпт требование явно указывать версии и использовать только стабильный API. Помогло.
Итог: агент написал src/updater.zig, src/updater.zig (да, он сделал дубль — баг контекста), тесты, сценарий установки. Я потратил час на вычистку дублей и правку именования — но сам код был рабочим!
Стоимость: $20 и 2.5 миллиона токенов
| Этап | Входные токены | Выходные токены | Стоимость (Claude Opus 4) |
|---|---|---|---|
| Анализ кодовой базы | 180 000 | 12 000 | $2.80 |
| Первая генерация + исправления | 620 000 | 95 000 | $12.50 |
| Тесты и доработки | 250 000 | 40 000 | $4.70 |
| Итого | 1 050 000 | 147 000 | $20.00 |
Если бы я писал руками — ушло бы два дня и нервная система. С агентами — полдня и $20. Вопрос: это прорыв или просто автоматизация скучной работы? В моем случае — прорыв, потому что Zig я знаю поверхностно, а агент разобрался в механизмах Code Signing глубже, чем я.
Грабли: что пошло не так
- Галлюцинации с API Zig std — агент выдумывал несуществующие функции оберток над ObjC. Пришлось в промпте прямо запретить «imaginary imports».
- Потеря контекста — когда кодовая база выросла до 20+ файлов, агент начал забывать ранние решения. Те же дубли updater.zig.
- Незнание macOS Security — Sandbox, Hardened Runtime, Sparkle. Агент не знал про Sparkle Framework (стандарт для macOS-апдейтов), поэтому изобретал велосипед.
Самый забавный баг: агент решил, что проверять целостность через SHA256 недостаточно, и добавил проверку GPG-подписи. В контексте Ghostty это оверинжиниринг, но я оставил как опцию — получился win-win.
Промпты, которые работают: рецепт
После трех неудач я сформулировал золотой шаблон:
Ты Senior Zig-разработчик, который знает macOS internals. Сделай модуль для Ghostty на Zig 0.13, который:
- проверяет новую версию через GitHub Releases (пример: curl -s https://api.github.com/repos/mitchellh/ghostty/releases/latest)
- скачивает .zip, верифицирует SHA256 из assets
- заменяет текущий бинарник в /Applications/Ghostty.app
- запрашивает разрешение через NSOpenPanel
- перезапускает терминал с сохранением сессий (используй execve).
Запрещено: использовать нестабильные функции, выдумывать API. Учитывай Sandbox.
Такой промпт вместе с ссылкой на актуальный build.zig и структурой проекта — и агент выдал рабочий код с первой попытки.
Масштабирование: от фичи к архитектуре
После того как фича заработала локально, я попросил агента создать: тесты (unit + интеграционные), CI-скрипт для подписания апдейтов, документацию. На это ушло ещё $15. Итоговая стоимость: $35 за фичу, которую я бы оценил в 40 человеко-часов.
Но главное — я получил опыт работы с агентами в условиях, когда кодовая база незнакомая, а требования высокие. Теперь я знаю: агенты отлично справляются с типовыми паттернами (download, verify, replace), но «боевые» условия (Sandbox, Code Signing) требуют явного указания в промпте.
Кстати, о паттернах: недавно вышла статья «SocratiCode: MCP-сервер, который научит ИИ-агента шарить в вашем коде» — если подключить такой сервер, агент сам бы нашел документацию по Sparkle и не пришлось бы лезть в гугл. Внедрение MCP в рабочий процесс — следующий уровень для агентного кодинга.
Выводы: стоит ли овчинка выделки?
Агентное кодинг не заменит инженера, но выносит за скобки скучную работу: поиск в документации, адаптация под платформу, типовые алгоритмы. Плата — токены и внимательность в промптах. Если вы готовы потратить $20-40 вместо двух дней — это ваш инструмент.
Ghostty теперь с автообновлениями. Пулл-реквест я уже отправил, Mitch его принял (да, он сам ИИ-агентов не боится). Ссылка на коммит — в профиле. А пока готовьтесь: когда агенты научатся сами подписывать код в Keychain — мы останемся без работы.
Не повторяйте мою ошибку: не давайте агенту доступ к продакшен-сертификатам. Я чуть не сжёг Apple Developer аккаунт, когда агент решил «просто подписать бинарник» своим ключом. «Неосознанный вайб-кодинг» — это диагноз, лечится контролем и review.
Что дальше?
Я уже пробую прикрутить многоагентную систему: один агент пишет код, второй — тесты, третий аудит безопасность. Первые результаты — в статье «Финтех на стероидах: как AI coding сжал команду с 40 до 10 человек». Если там 15x, то у меня пока — 4x, но это только начало.
А вам совет: берите маленькую open-source утилиту, кормите агенту, фиксируйте затраты. Через месяц поймете, что человеческий код все ещё нужен, но агенты — идеальные джуниоры, которые не просят зарплату. Только токены.