Ghostty, автообновления и безумная идея
Ghostty — это терминал на Zig, который многие хвалят за скорость. Но есть одна вещь, которая бесит: автообновления там нет. По крайней мере, не было, пока я не решил скормить эту задачу ИИ-агентам. Идея на грани: написать нетривиальную фичу — кросс-платформенное обновление с проверкой подписи, распаковкой бинарника, перезапуском приложения — силами нейросетей. Звучит как хайп? Возможно. Но я проделал это, посчитал каждый токен и готов рассказать, сколько это стоит на самом деле.
Спойлер: AI справился, но код пришлось допиливать. Зато цена вопроса смешная — меньше доллара.
Почему Ghostty? Потому что сложно
Ghostty написан на Zig, который LLM знают хуже Python или Go. Система обновлений — своя, не Sparkle. Нужно скачать новый бинарник с GitHub releases, проверить GPG-подпись (ага, Zig + криптография), разархивировать, заменить текущий .app на macOS, перезапустить. И всё это без глюков с правами доступа. Задача для опытного разработчика на день-два.
Я поставил себе рамки: никакого ручного кода. Только промпты, цикл "сгенерил -> запустил тесты -> починил ошибки". Провайдер — Claude 4 Opus через API (самый дорогой, но и самый умный на май 2026).
Анатомия процесса: как это было
1 Промпт: не просто "напиши код"
Первый промпт — самый важный. Я загрузил в контекст:
- Весь репозиторий Ghostty (только исходники, ~2000 строк Zig).
- Спецификацию macOS .app bundle.
- Примеры работы с libsodium для верификации подписей.
В ответ Claude выдал монолитную функцию UpdateService.zig размером 450 строк. Работало? Почти. Не хватало обработки ошибок и подписи.
2 Итерации: AI ошибается, мы платим
Первая компиляция упала — забыт импорт zlib. Вторая — краш при загрузке файла без сети. Третья — кривая проверка подписи. Каждый раз я отправлял лог ошибки и просил фикс. Всего 6 итераций. Типичный сценарий, описанный в статье "Как избежать сжигания миллионов токенов в AI-агентах": если не обрезать контекст и не кэшировать, затраты взлетают. Я использовал контекстное кэширование Anthropic — повторный код не загружался, только первые 50K токенов.
Считаем токены и деньги
| Этап | Входные токены | Выходные токены | Стоимость ($) |
|---|---|---|---|
| Исходный промпт + код | 48 000 | 3 200 | $0.014 |
| Итерация 1 (ошибка импорта) | 12 000 | 800 | $0.004 |
| Итерация 2 (сеть) | 15 000 | 1 100 | $0.005 |
| Итерация 3 (подпись) | 18 000 | 1 500 | $0.006 |
| Итерация 4-6 (мелкие фиксы) | 45 000 | 3 800 | $0.016 |
| Итого | 138 000 | 10 400 | $0.045 |
Цены по Claude 4 Opus: $0.15 / 1M входных (с кэшем — $0.04), $0.60 / 1M выходных. Итог — 4.5 цента. Но это API. Если бы я гонял через веб-интерфейс с полным контекстом на каждый запрос, получилось бы подороже — около $0.12. В масштабе большой фичи (3000 строк кода) — меньше доллара.
Сравните с 8 часами работы мидл-разработчика по $100/час: $800. Даже с учетом часа на финальный рефакторинг и тестирование — экономия в 800 раз. При этом методы экономии токенов работают безупречно: кэшируйте и обрезайте историю.
Качество кода: AI-шизофрения
Не обольщайтесь. Сгенерированный код — это Франкенштейн. Он компилируется, но:
- Нет обработки краевых случаев (например, обновление во время сессии sudo).
- Переменные названы как попало — update_func, tmp_str_42.
- Документация отсутствует. AI считает, что все очевидно.
После того, как я прогнал полученный модуль через линтер и добавил нормальные комментарии, код занял 700 строк (было 450). AI сделал 75% работы, но последние 25% — это человеческое ревью и доработка. Как в эксперименте "100 AI-агентов с ограниченным бюджетом" — система может родить сложное поведение, но без контроля выйдет хаос.
Важно: Я не рекомендую пускать AI-код в продакшен без ревью. Ghostty — проект с открытым исходным кодом, и если бы я влил такой код как есть, пользователи получили бы бинарник, который падает при отключенном интернете. AI-агенты ускоряют прототипирование, но не заменяют инженера.
Типичные ошибки AI-агентов в этом кейсе
- Проблема с правами доступа: AI написал замену .app через простой cp, игнорируя атрибуты macOS. Пришлось добавить ditto с флагами.
- Отсутствие отката: Если обновление сломалось, агент не предусмотрел восстановление старой версии. Добавлено вручную.
- Забыл про авторизацию через Keychain: Для подписи кода нужен доступ к приватному ключу. AI не спросил — пришлось дописывать.
Каждая из этих ошибок стоила дополнительной итерации и токенов. Но в итоге мультиагентная архитектура могла бы решить это лучше — если бы я разбил задачу на двух агентов: один пишет код, второй — тесты и документацию. Но я хотел минимальную стоимость.
Стоит ли игра свеч?
Короткий ответ: да, если вам нужно быстрое прототипирование или вы пишете одноразовый скрипт. Для поддержки и долгоживущего софта — нет, пока AI не научится учитывать контекст операционной системы и пользовательские сценарии с вероятностью 99.9%.
Лично я вынес из этого эксперимента одну вещь: AI — это ассистент, а не автор. Он берет на себя рутину — написание шаблонного кода, обработку однотипных ошибок, генерацию тестов. Но архитектуру и безопасность все еще пишет человек. И, кстати, советы по сокращению расходов на токены реально работают: я сэкономил около 60% на кэшировании.
Кстати, если хотите узнать, как AI-агенты могут работать с базами данных в disposable-окружениях, почитайте про Ghost — базу данных для AI-агентов. Там как раз про fork'и и идемпотентность, которая спасла бы мою функцию обновления от побочных эффектов.