Перейти к содержимому
Экосистема AI Vibe
← Назад к AI Vibe News

Редакция 15 июля 2026 г.

Разборы

«Вайб — не вердикт»: соло-разработчик и CLI, которому разрешено сказать «не знаю»

«Вайб — не вердикт»: соло-разработчик и CLI, которому разрешено сказать «не знаю».

Соло-разработчик, который собирает утилиты под свою задачу, рано или поздно упирается в инструмент, спешащий подтвердить ваш страх — в эксперименте @copyleftdev показал на KiloCheck другой контракт: честный отказ с confidence: 0.0 вместо «уверенного» ответа. Для тех, кто вайб-кодит обёртки вокруг моделей, это зеркало калибровки: когда «не знаю» полезнее ложной уверенности.

Почему «вайб» не проходит ворота агентных обёрток

Автор проводит жёсткую границу: gut feeling — это vibe, а vibe is not a verdict. KiloCheck не LLM и не агент — детерминированный движок на Rust (~12 МБ, один бинарник), который на этапе check не ходит в сеть. Но метафора из текста попадает в знакомую боль: инструмент, который «guess to please you», и контраст с signed struct, где «нельзя галлюцинировать вердикт» с provenance.

Contracts, not vibes — манифест composable single-purpose tools со stable JSON.

Для обёрток вокруг чатовых API переносимый тезис без подмены фактов: уверенность без evidence — не фича, а дефект дизайна. Copilot, Cursor и терминальные агенты в первоисточнике не названы — переносим только паттерн, который автор сам противопоставляет «чату на всё».

KiloCheck: что собрал соло-разработчик

Продукт называется KiloCheck, CLI — kilo. Репозиторий copyleftdev/kilocheck на GitHub; в примере установки — v0.2.0:

curl -fsSL https://raw.githubusercontent.com/copyleftdev/kilocheck/v0.2.0/scripts/install.sh | sh

Пайплайн данных четырёхстадийный: приём подписанного versioned threat release → normalize typed observations → compile immutable local index → check IP против индекса. Вход cryptographically verified; threat knowledge живёт в signed local snapshot, проверка — lookup без intelligence API.

Модель состояний — не три оттенка пожимания плечами. Различаются пять состояний: missing, unknown, stale, incomplete, unsafe — плюс граница между safe, bad и «не знаю». Обновление снимка — kilo update (в примере вывод содержит Claims 3160); статус — kilo status --json с полями вроде integrity: verified, freshness: fresh.

Утро со спам-рекрутером: цепочка маленьких честных CLI

Сюжет реальный, идентифицирующие детали сняты. Утреннее «холодное» письмо рекрутера с трекинг-ссылкой на вакансию QE в аэрокосмической фирме; подпись с несостыкованным набором профессий. Интуиция кричит scam.

Шаг 1 — dig резолвит хост ссылки в IP. Затем:

kilo check <IP> --json

Ответ: disposition: "unknown", confidence: 0.0, reason_codes: ["NOT_OBSERVED"], recommended_action: "monitor". Инструмент отказывается выдать «страшный» вердикт без evidence.

Контроль автора жёсткий. Известный C2-узел (162.243.103.246 в примере) → critical / block / confidence 0.99 / COMMAND_AND_CONTROL. Публичный резолвер 8.8.8.8 и подозрительный хост — оба NOT_OBSERVED. Движок умеет сказать «плохо», когда данные есть; на подозрительном IP честно фиксирует незнание.

Честный negative не закрыл дело — сместил фокус с инфраструктуры на социальную инженерию. curl (только заголовки) показал редирект через captcha-gate агрегатора; openssl — валидный сертификат легитимного job-traffic агрегатора. Компания из письма реальна, ссылка — affiliate click-tracker. Угроза оказалась спам lead-gen фрилансера в костюме рекрутера, не malware в цепочке.

«Пусть negatives ведут»: урок для цикла vibe-coding

Вывод автора прямой: kilo не поймал scam — его не было, был spam. Ценность — truth about what it knew, line around what it didn't, pointer к месту реального ответа. Отказ 0.0 увёл от «кроличьей норы malware» к сигналу social engineering; если бы инструмент «совпал с настроением», утро ушло бы на разбор job board.

Для соло-цикла с агентами и CLI-обёртками переносимый приём такой:

  • один инструмент — одна typed-задача (dig, kilo, curl, openssl в цепочке расследования);
  • stable JSON и exit codes вместо прозы, которую оператор дочитывает «как хочет»;
  • честный negative как навигация, не как тупик.

Соседи в цепочке — «маленькими честными инструментами». Это близко к практике vibe-coding: не один монолитный «ответь на всё», а composable tools с контрактами — пусть даже без MCP и IDE-rules в исходном посте.

Итог: honesty beats confidence

Материал на Dev.to опубликован 13 июля 2026; оценочное время чтения — 7 минут. У поста на момент публикации — 15 реакций и 9 комментариев; охваты просмотров в открытых метриках не зафиксированы.

Тег на площадке: «Rust CLI for vetting suspicious links». Заголовок держит линию vibe vs verdict; тело — эксперимент, почему honest CLIs beat confident ones. Для ру-соло, который собирает свои утилиты вместо покупки «умного» монолита, это напоминание: калибровка уверенности важнее совпадения с вашим настроением — и в терминале, и в обёртках вокруг моделей, где ложный verdict дороже честного «не знаю».


Источники