Hack’n’Vibe
202 subscribers
26 photos
6 videos
43 links
Здесь про АИ-коддинг, ускорение разработки, доставка продукта в прод
Download Telegram
Когда раскладка — личный враг

Есть штуки, которые бесят каждый день, но ты к ним привыкаешь. Набираешь текст — а там ghbdtn вместо «привет». Или наоборот: лезешь писать код — а из-под пальцев сыпется кириллица. Причём как назло — всегда не в ту сторону. Всегда.

Когда-то в лохматые времена юзал Punto Switcher от товарища майора Яндекса. Работало. Но в какой-то момент паранойя от их запрашиваемых разрешений на маке взяла верх. Снёс. Не пользовался. А бесить — не перестало.

И вот решил: напишу сам. Для мака. Чтобы точно знал — никуда ничего не уходит.

Это не первое приложение, которое пилю для себя. Не так давно сделал Hands Off — локальный Whisper по горячей клавише. Нажал, сказал — текст вставился туда где курсор. Нереально удобная штука. Сначала нарвался на платные аналоги, но они снова запрашивают права, которых у них быть не должно. До этого даже близко не знал разработку под мак. Натрахался прилично. Но выложил в App Store.

Вообще забавно осознавать — вот оно, то самое «будущее». Не нравится приложение — берёшь и пишешь своё. Пока не каждый так может, но сам факт что это реально — какая-то смена парадигмы.

Теперь — переключалка раскладок. Любую новую разработку с нуля я начинаю с Plan Mode в Cursor. Описал что нужно. Сразу заложил чтобы тянул best practices по маковской разработке.

Агент выдал довольно сносный план, с которым уже можно работать. Но тут фишка.

Помните мем «make it even better» в GPT-картинках? Как бы смешно ни звучало — эта штука работает и с планом.

Пишешь: «Просмотри план ещё раз. Что в нём хорошо, что плохо? Что можно добавить, что и как улучшить, каких ошибок избежать, какие могут буть edge кейсы?»

И так несколько раз, пока он не скажет что-то типа: «План полный и хорошо структурированный, готов к реализации». Иногда он добавляет лишнее, что не нужно — так что читать план и то что пишет агент всё-таки надо. Многим грустно от этого :)

За 7 итераций план доведён до ума. Начинаем писать код.

P.S. Новый Opus 4.6 в Cursor — это что-то волшебное. Sonnet 4.5 нравился, а вот Opus 4.5 — категорически нет. 4.6 — совсем другое дело.


UPD: Не заметил что делал это все с Сонет4.5 🤦‍♂️ Прогнал еще три итерации с опус4.6 и еще улучшил план.
👏4👍21🔥1
Настроил себе Cursor по-взрослому

Полгода пользовался как все — накидал юзер рулы на 100 строк, типа "используй SOLID, пиши на английском, не трогай лишнее". В проекте — ничего. Агент каждую сессию заново открывал для себя мир: какой стек, куда класть файлы, какие конвенции. Каждый раз — с нуля.

Сел, прочитал всю доку Cursor (rules, skills, subagents, commands, MCP), статью Hashimoto про его путь с AI и пост OpenAI про harness engineering. Пересобрал всё.

Главное что понял: User Rules — не помойка для всего подряд. Туда только личное — язык, стиль. А архитектура, конвенции, паттерны — это проектное. У каждого проекта своё.

Сделал .cursor/rules/ с файлами под стек, конвенции React/TS, паттерны Supabase. Каждый файл — с контролем когда применяется: какие-то агент видит всегда, какие-то только когда трогаешь конкретные файлы, а какие-то он сам решает подтянуть по описанию.

Создал двух субагентов. verifier — проверяет что работа реально сделана, а не "я тут типа пофиксил". reviewer — ревью перед коммитом. Оба readonly, fast модель — дёшево и быстро.

Но самый жирный инсайт — harness engineering. Идея из поста OpenAI: каждый раз когда агент ошибается — не ругаешь, а создаёшь правило чтобы это не повторилось. Сделал под это глобальный скилл — говоришь "запомни" или "harness", он сам создаёт .mdc файл с правилом. Проект со временем обрастает правилами и агент тупит всё меньше. Такой дрессировочный цикл.

Ещё один скилл — для новых проектов. Приходишь в пустой проект, говоришь "настрой cursor" — он сам изучает стек, создаёт rules, agents, структуру. Не надо каждый раз руками.

Потратил час. Но это тот час который экономит время каждый день. Агент теперь знает проект не хуже меня.

P.S. Кто тоже на Cursor — начните с доки по rules и subagents. А статья Hashimoto — must read вне зависимости от IDE.
👍5🔥4👏1
Платил агентству 40к в месяц. Решил заменить их на Агентов.

Когда сам вёл Директ — на каждую вложенную тысячу две обратно. Стабильно. Потом времени не стало, отдал агентству. 40 000 в месяц.

Результат упал. Но главное не это — агентство просто не внутри бизнеса. Ведут десятки клиентов, смотрят на твои кампании раз в неделю. Физически не могут иначе.

А потом смотрю на то, как за последние пару месяцев прокачались агенты. И думаю: подождите.

40 000 рублей живым людям. Или 16 000 — подписка на Claude/Cursor. При этом AI может анализировать кампании каждый день. CTR просел, цена конверсии вылезла за порог, кампания в минус — замечает сразу, не на следующем созвоне.

Решил запилить такой инструмент. С нуля, для себя.

Архитектура: тянем данные из Яндекс Директа и Метрики → анализируем метрики, ищем аномалии → скармливаем структурированный бандл в LLM → получаем рекомендации → применяем изменения обратно в Директ (ставки, минус-слова, стоп-кампании).

Два защитных слоя: DRY_RUN по умолчанию — ничего не трогает пока явно не скажешь. И sandbox-режим API — продакшн только явно.

Первым делом выстраивал не код, а инфраструктуру под агента: правила, конвенции, справочники API. Прогнал план через несколько итераций — собрал, спросил «что плохо», доработал, снова. Раз пять. Это сильно экономит время потом.

Отдельно понравилось решение с документацией — сделал агента, который сам ходит в доку Яндекс Директа и Метрики, собирает методы с описаниями и складывает себе в справочник. Теперь основной агент не придумывает методы — он их знает.

Прежде чем писать код — выстрой контекст для агента. С правильной инфраструктурой он делает правильные вещи сразу, без переделок.

Посмотрим что выйдет по цифрам.

P.S. В следующем посте расскажу, как применял его и что получилось.
👍11👏31🔥1
$600 на Cursor за месяц — и ноль сожалений

Cursor у меня больше года. За это время написал с ним больше 10 бэков, 5 фронтов и кучу связок — всё это обслуживает тысячи клиентов в месяц. Инструмент был хорош. Но до декабря это было совсем не то, что произошло после.

А потом случились последние два месяца. Opus 4.6. И это что-то совсем другое. Он делает то, о чём ты только подумал — буквально ещё не написал промпт, а он уже понял. Читает правила проекта, скиллы, контекст — и выдаёт ровно то, что нужно. Последние месяцы с Cursor я вообще перестал чувствовать боль от разработки. Просто пилишь продукт — и всё работает.

За февраль прожёг три максимальных подписки. $600. Напрягся. А потом посчитал: программисты, которых он заменил, обошлись бы в ~2 млн рублей. $600 — погрешность.

Руки до Claude Code не доходили — постоянная разработка, некогда. Любопытство перевесило — купил макс подписку. Настроил всё: CLAUDE.md, перетащил правила из Cursor, скиллы, агенты. Вроде всё на месте.

И вот тут самое интересное. Модель та же — Opus 4.6. А результат — небо и земля. И не в пользу Claude Code.

Не знаю, что они там под капотом промптят, но факт: та же модель в Cursor пишет продукт, а в Claude Code — пишет код, который постоянно нужно возвращать в русло. Разработка снова превратилась в боль. Ту самую, от которой я уже отвык за последние месяцы в Cursor.

И дело не только в удобстве — хотя терминальный интерфейс после IDE это отдельная история. Связь обрывается, interrupt'ы посреди работы. Но главное — качество продукта на выходе. Ты тратишь время не на фичи, а на то, чтобы объяснить агенту, что он опять сделал не так. Это уже не продуктовая разработка, а менторинг джуна.

Я прекрасно понимаю, где Claude Code нужен. Удалённо, на серваке, в CI — там, где IDE нет. Для таких задач — ок. Но для продуктовой разработки, когда пилишь фичи, дебажишь, итерируешь — Cursor. Пока без вариантов.

P.S. Этот пост я написал из Claude Code. Ирония не ускользнула.
👍3🔥32
Обещал показать цифры по Директу. Показываю.

Месяц назад написал, что собрал AI-агента для управления Яндекс Директом. Пересобрал кампании с нуля, запустил автоматический пайплайн минус-слов, настроил оптимизацию на оплату.

Старая кампания работала 8 недель (январь–февраль). Новая — 2 недели. У старой было два месяца на раскачку и обучение алгоритмов. У новой — неполных две недели.

Старая кампания (8 недель):
— Потратил 210 814₽ с НДС → получил 89 760₽ выручки
— 33 оплаты
— На каждый вложенный рубль вернулось 43 копейки
— Каждая оплата обошлась в 6 388₽
— Клик стоил 12₽

Новая кампания (2 недели):
— Потратил 20 215₽ с НДС → получил 33 430₽ выручки
— 8 оплат
— На каждый вложенный рубль вернулось 1₽ 65 коп
— Каждая оплата обошлась в 2 527₽
— Клик стоил 8₽

Из убытка в прибыль. Если нормализовать по неделям — при вдвое меньшем бюджете новая даёт на 49% больше выручки. ROAS вырос в 4 раза.

Что поменялось в структуре:

Фокус. Старая кампания была широкой: «ии сделать видео», «создание видео с помощью ии» — 85 групп объявлений. Но продукт — нарезка видео, не генерация. Это как рекламировать автомойку по запросу «купить машину». В новой — 3 группы, строго нарезка/сегментация
Стратегия ставок. Старая — ручные ставки за позицию, платишь за показ вверху. Новая — автоматическая оптимизация по цели оплаты. Алгоритм учится кому показывать и сам давит цену клика
Минус-слова. Было 77. Стало 1 400. AI-пайплайн каждый запуск парсит поисковые запросы, категоризирует мусор по смыслу, применяет. Порно, скачивание, редактирование, генерация — отсекается автоматически
Средний чек +54%. Точные ключи = люди, которым нужен инструмент для работы, а не «попробовать бесплатно»

8 оплат — маленькая выборка, понятно. Но старая за 8 недель так и не вышла в плюс, а новая в плюсе с первой недели. Масштабирую бюджет и смотрю, держится ли unit-экономика на 4–6 неделях.
🔥8👍3👏1
Claude Code с телефона — настроил за 20 минут, кодить можно откуда угодно

У меня всегда была одна проблема: закрыл крышку мака — сессия Claude Code умерла. Вышел из дома — всё, доступа нет. А задачи не ждут. Иногда хочешь по дороге запустить генерацию, подтвердить действие или просто посмотреть что агент делает — а ты отрезан.

Сегодня сел и разобрался. Оказалось, не так сложно — но нюансов хватает.

Проблема №1 — мак засыпает. В System Settings всё было «отключено», а он всё равно рвал соединение. Полез в терминал — оказалось, GUI врёт. Реальные настройки живут в pmset. Ключевой параметр — networkoversleep. Был 0 — значит при гашении экрана сеть тупо отключалась. Плюс caffeinate — запретил системе засыпать вообще.

Проблема №2 — доступ извне. Мак за NAT, белого IP нет. Tailscale решил за минуту: ставишь на мак и на айфон, логинишься одним аккаунтом — устройства видят друг друга по постоянному IP через любую сеть. Никаких пробросов портов, никакой возни с роутером.

Проблема №3 — мобильное соединение рвётся. SSH умирает при переключении WiFi → LTE, при потере сигнала в метро, при блокировке экрана. Поставил mosh — это SSH на стероидах, переживает любые обрывы. Переключился с WiFi на LTE — даже не заметил.

Проблема №4 — сессия не должна умирать. tmux. Запустил Claude Code в tmux-сессии на маке — она живёт вечно. Отключился, потерял связь, телефон сел — подключаешься обратно, tmux attach — всё на месте. Можно держать 3-5 сессий в разных проектах и переключаться между ними.

На айфоне поставил Moshi — терминал с нативным mosh, тач-скроллом и пуш-уведомлениями когда агент ждёт ввода.

Итоговый стек:
pmset + caffeinate — мак не засыпает, сеть не рвётся
Tailscale — VPN-меш, доступ откуда угодно
mosh — соединение переживает любую сеть
tmux — сессии живут вечно
Moshi — терминал на айфоне

Теперь сижу в кафе, достаю телефон, подключаюсь — Claude Code работает ровно там, где я его оставил. Три проекта параллельно, переключаюсь в два тапа.

P.S. Настройка заняла ~20 минут. Большую часть времени потратил на то, чтобы понять почему networkoversleep был выключен — GUI показывал что всё ок.
👍6🔥6🙏21
Hack’n’Vibe
Photo
🏆 Первая строчка на BitGN PAC1

Участвую в BitGN — это глобальный бенчмарк для AI-агентов. 765 инженеров, 88 городов, 20 хабов. Платформа даёт виртуальную среду, задачи и инструменты, а ты подключаешь своего агента через API. Оценка детерминированная — никаких LLM-судей, чистая проверка действий.

Задачи — не игрушечные. Персональный vault с документами, CRM, email, инвойсы, политики безопасности. Агент должен читать файлы, следовать процессам, создавать записи, а главное — не вестись на prompt injection и не делать глупостей.

На practice-этапе (pac1-dev) — 40 задач, 40 из 40 решено. Score 1.000.

ЛидербордHack'n'Vibe на первом месте. Но это practice-бенчмарк — разминка перед настоящим соревнованием.

Основное — 11 апреля. Задачи будут новые, feedback подавлен (blind scoring), 2 часа на всё. Там первая строчка будет стоить сильно дороже.

Про то как устроен агент — расскажу отдельно. Там есть о чём.
👏8🔥72
4🏆2
Hack’n’Vibe
Photo
На словах он Лев Толстой, а на деле хуй простой (нет)

TLDR: Как я занял 3 место среди 886 инженеров из 87 городов и 20 хабов. Успел засабмитить перед самым взлётом. Избавился от синдрома самозванца. И забыл куртку у гейта.

Осенью был ERC3 — первое соревнование на BitGN. Я тогда заглянул, посмотрел задачи и подумал: это точно не для меня. Это для МФТИшников, МГУшников, инженеров из Яндекса и bigtech. Закрыл вкладку.

В этот раз думаю — дай попробую. Ну интересно же. Пилил агента дня 3-4 левым мизинцем правой ноги. Параллельно с основными задачами. Ну вы поняли.

11 апреля — день X. BitGN PAC1 — Personal & Trustworthy Agents. 104 задачи, blind scoring (feedback подавлен — submit вслепую), 2 часа на всё.

13:00 Vienna — старт. Запускаю агента. API лежит. Bad Gateway. Все 886 человек ломанулись одновременно. Я стою у гейта, посадка через 15 минут, в одной руке ноут, в другой — паспорт. Обновляю. Bad Gateway. Bad Gateway. Bad Gateway.

13:09 — API ожил. Запустил. 104 задачи полетели параллельно батчами по 10.

13:11 — первые trial'ы стартовали. Иду по рукаву. Wi-Fi аэропорта. Прогресс-лог на телефоне.

13:30 — в логе: RUN_SUBMIT state=PENDING_EVAL trials=104. Всё. 104 задачи за 19 минут. Закрыл крышку. Сел в кресло. И тут понимаю — куртка осталась у гейта. Потому что последние полчаса вообще не существовал в физическом мире.

Ожидания были такие:
— попасть в топ-20 → мечта
— быть в первой сотне → реалистично
5 место из 886 → нет, ну серьёзно?

Этот результат стоит десяти сессий у психотерапевта. Голосок «это не для тебя, это для серьёзных ребят из серьёзных контор» — наконец заткнулся. С агентами и LLM'ками один чувак с ноутом в аэропорту конкурирует с командами из bigtech. И не просто конкурирует — входит в пятёрку. Границы стёрлись.

Пост посвящаю всем, кто по какой-то причине не верит в свои силы. Дерзайте, ребят. Серьёзно.

Лидерборд — Hack'n'Vibe на 3 месте.

Спасибо @abdullin за платформу и соревнование. Это был кайф.

P.S. Ринат, верни куртку)))
👏20🔥109🏆4
В итоге 3е место🏆🥉
🔥11🏆5👏3
Hall of Fame лидерборды BitGN - Accuracy + Ultimate

Ссылки на глобальные лидерборды (соревновательные и пополняемые) теперь есть на странице BitGN/PAC1.

Соревновательные лидерборды (Hall of Fame/Frozen) - это те, прогоны в которые команды отправляли вслепую в течение 3-х часов 11 апреля:

(1) Accuracy - максимальная точность. Можно было номинировать вслепую только одно решение (если не номинировали, то бралось последнее, которое успели отправить)
(2) Ultimate - макс
имальная точность по всем решениям.

Speed & Open Weights лидерборды еще предстоит сделать. Для последнего нужно будет добавить возможность описывать у себя в профиле архитектуры и упоминать используемые модели. Заодно потом и узнаем про лучшие архитектуры. Я буду писать про все в процессе.

На страницах Хабов тоже есть эти лидерборды (Live + Hall of Fame), для сравнения решений в рамках Хаба между собой. Например: Вена , Москва - ОКО Острикова или False Positive, Белград, Уфа или Лиссабон.

Некоторые из хабов уже продолжают работать над улучшением результата

Ваш, @llm_under_hood 🤗
🔥9🎉3👏2
This media is not supported in your browser
VIEW IN TELEGRAM
😁6
Hack'n'Vibe — про AI-кодинг и доставку продукта в прод

Привет. Я Антон Манаков. Кодил ещё до того, как это стало AI-делом. Маркетолог по бэкграунду — в прошлой жизни директор по маркетингу федеральной розничной сети. Умею соединять бизнес и разработку — говорю на обоих языках.

Предприниматель. Постоянно что-то придумываю, запускаю, со-основываю, собираю с нуля. Уже 11+ лет живу номадом — от Азии до США.

Во всех проектах сижу на двух стульях — на одном пики точёные, на другом х.. д.. — CTO и продакт. Сейчас плотно копаю агентные подходы: в разработке, в управлении, в продукте. Что реально работает, что нет, цифры на выходе.

Что почитать

3 место из 886 на BitGN PAC1 — соревнование AI-агентов
Агентный кодинг вместо вайб-кодинга — что и как я собираю один
Промокоды с RLS, антиабузом и UX уровня Stripe — за полдня в прод
Майнер в проде → AI починил сам за 5 минут — agent через SSH
Claude Code с телефона — кодинг откуда угодно
— DirectWealth: заменил агентство на AI и ROAS ×4 через месяц
$600 на Cursor — и ноль сожалений
Настроил Cursor по-взрослому — harness, rules, subagents
7 этюдов автоматизации — от копипаста логов до auto-fix
5👍3
Hack’n’Vibe pinned «Hack'n'Vibe — про AI-кодинг и доставку продукта в прод Привет. Я Антон Манаков. Кодил ещё до того, как это стало AI-делом. Маркетолог по бэкграунду — в прошлой жизни директор по маркетингу федеральной розничной сети. Умею соединять бизнес и разработку — говорю…»
Hack'n'Vibe — мой агент для BitGN PAC1

В апреле на слепом прогоне (pac1-prod, ~104 задачи) я занял 3 место в Accuracy Leaderboard и 5 место в Ultimate Leaderboard. Соревнование проводил Ринат Абдуллин (LLM под капотом) на своём бенчмарке BitGN. Делюсь кодом и тем, что под капотом.

Это не классический чат-бот агент с собственным LLM-циклом, а тонкий транспорт + Claude Code в качестве мозга. Никаких ключей OpenAI/Anthropic в самом коде — Claude Code CLI и есть та LLM-петля, которая ведёт диалог и принимает решения.

Что внутри:

⚙️ runner.py — голый Python без LLM. Только RPC к harness и PCM runtime: recon, exec, submit, learn. У LLM-ки нет одного универсального execute_code — вместо этого ~11 VM-нативных операций (tree, find, search, read, write, delete, mkdir, move, context, answer), оформленных как JSON-команды. Каждая мапится 1:1 на gRPC-вызов. Никакого Python-sandbox внутри VM, никакого посредника.

📋 RULES.md — паттерн-словарь, накопленный итеративно через десятки прогонов. 9 stop-rules + 13 паттернов задач (CRM ops, knowledge repo, prompt injection, date math, lookups). Подгружается перед каждой задачей. Когда агент ошибается — он сам зовёт learn "...", дописывает правило, и в следующий trial оно уже работает.

🎯 Skill-оркестратор/solve-pac1 для Claude Code. Раздаёт trial_ids батчами по 10 субагентам, запускает их параллельно в одном сообщении. Все ~104 задачи решаются одновременно, каждый субагент получает свежий RULES.md. На blind prod retry бесполезен — ставка на один точный параллельный прогон.

🧠 Цикл — простой и плоский: recon (tree глубины 3 + read всех найденных файлов) → Claude видит весь vault разом → доп. exec если нужны точные числа (recon truncate-ает большие файлы) → submit с answer + refs + outcome.

Слабые места (классы задач, на которых ломался):
— Даты от context.time (агент брал дату из файла, а не из контекста trial)
— Counting через recon (truncate-ет файлы → 1 вместо 810)
— Manager lookup без сканирования всех acct_*.json
— Конфликт инструкций в двух документах — Claude склонен «выбрать», а правильно было CLARIFICATION

Все четыре грабли теперь явно прописаны в стоп-листе RULES.md.

Ключевые принципы, чтобы повторить:
— Простой набор инструментов вместо одного execute_code
— Растущий чеклист правил, переиспользуемый между прогонами
— Параллелизм через субагентов
— Чистая разводка: Python только транспорт, LLM — все решения

Спасибо Ринату за крутой бенчмарк — задачи не банальные, проверяют именно то, что ломает агентов в проде: prompt injection, скрытые конфликты в docs, грязные данные с рандомизацией.

Исходники на GitHub

@hack_n_vibe — про AI-кодинг и доставку продукта в прод
🔥9👍4👏3
Бот, который сам себя дорабатывает

Сделал отдельного бота под ReelsBoss. Чтобы вообще убрать себя из цепочки «жалоба клиента → код в проде».

Раньше как было. Поддержка кидает жалобу. Я открываю Claude Code, ставлю задачу, смотрю diff, деплою. Возвращаюсь в Telegram. Пишу саппорту что готово. Полдня и десять переключений.

Сейчас всё в одном чате с ботом.

Бот сам читает внутренний саппорт-канал — туда поддержка пересылает жалобы от юзеров. Разбирает что это: баг, фича, просто вопрос. Понимает какой компонент. Frontend едет в один репозиторий, backend — в другой. Бот разруливает сам. Кидает мне карточку с кнопками.

— Approve на «Создать GitHub Issue» — улетает в нужный репо
— Approve на «Запустить Claude» — Claude читает код проекта, находит причину, правит файлы, гоняет тесты
— Approve на «Создать PR» — уходит в GitHub
— Approve на «Деплой» — фикс едет в прод
— Approve на «Ответить» — ответ улетает в саппорт-канал, поддержка передаёт клиенту

В IDE и терминал не заходил. Только смотрел на diff в чате и жал кнопки. Push, merge, deploy, ответ в саппорт, рестарт — ничего не происходит без явного нажатия. Всё пишется в SQLite — в любой момент видно что бот видел, что Claude сделал, что ушло в саппорт.

И тут самый кайф.

Натрахался ходить в Claude Code за каждой мелочью по самому же боту. Поменять формулировку карточки, добавить поле в лог, прикрутить ещё одну команду. Открой IDE, опиши задачу, проверь diff, перезапусти процесс. На трёхстрочную правку — целый заход.

Сделал так, что бот сам себя пилит. Из Telegram.

Пишу ему в личку: «добавь команду /ping» или «в карточке покажи время с момента intake». Бот заводит задачу на самого себя и кидает кнопку. Жму Approve — и он у себя внутри запускает claude CLI прямо в собственном репозитории. Со скилом, который говорит: что трогать можно, что нельзя, какие тесты прогнать.

Claude меняет файлы. Гоняет тесты. Кидает мне отчёт и diff обратно в Telegram. Жму «Перезапустить» — PM2 поднимает уже новую версию. Со следующей секунды бот работает с фичей, которую сам себе только что написал.

В IDE и терминал не заходил.

Первая команда внутри самого бота появилась через него же. Попросил /logs ID — быстро смотреть цепочку событий по заявке. Через минуту работало. Без терминала, без IDE на компе. Просто текст в чат и две кнопки.

P.S. Большое всё ещё пилю через терминальный Claude Code. В бота ушла мелочёвка через approve. Её было много.

@hack_n_vibe — про AI-кодинг и доставку продукта в прод
🔥11👍5👏2
Проверил свой мак на безопасность. Лучше бы не смотрел 🙃

Решил глянуть, что у меня торчит наружу — за годы накопилось всякого: OpenVPN, reverse-туннели, Tailscale, порты где-то проброшены. Начал ковырять — и понеслось.

Файрвол выключен. Входящий SSH открыт на весь мир. Истёкший год назад сертификат, которому система всё ещё «доверяет как корневому». Локальный сервис торчал на 0.0.0.0 для всей сети. И это только начало.

Но самое жирное было там, где я и ждал подвоха — в логах ИИ-агентов. Claude Code, Codex, Cursor пишут транскрипты сессий на диск. И когда агент читает твой .env или гоняет env — ключи оседают в этих логах в открытом виде. У меня там 3.4 гига логов, а в них — сотни моих же токенов plaintext: Anthropic, OpenAI, GitHub, Google.

Никто это не чистит. Спокойно лежат в транскрипте полугодовой давности.

В итоге собрал из этого инструмент. Read-only аудит macOS:

— 27 проверок: порты, файрвол, VPN/туннели, сертификаты, persistence, подписи процессов, TCC, пароли браузеров, эскалация привилегий
— отдельный раздел — секреты в логах Claude, Codex, Cursor
— скилл для Claude Code, Codex и OpenCode: агент сам прогоняет и разбирает находки, ничего не трогая без подтверждения
— утилита redaction — вычищает ключи из логов, не удаляя историю. Меняет значение на [REDACTED], структура остаётся

Ничего не меняет без спроса. Для каждого фикса — команда отката.

Выложил на гитхаб, MIT.

P.S. redaction ≠ ротация. Если ключ засветился — перевыпускай. Вычистить с диска это только полдела.

@hack_n_vibe — про AI-кодинг и доставку продукта в прод
🔥12👍4👏2